diff --git a/data-platform/exadata-cloud-at-customer/README.md b/data-platform/exadata-cloud-at-customer/README.md index a739b4b9f..3c7627a02 100644 --- a/data-platform/exadata-cloud-at-customer/README.md +++ b/data-platform/exadata-cloud-at-customer/README.md @@ -1,6 +1,6 @@ # Exadata Cloud@Customer -Reviewed: 16.09.2025 +Oracle Exadata Cloud@Customer brings the performance, automation, and economics of Exadata Database Service and the fully managed Autonomous AI Database into enterprise data centers. It’s the simplest way for customers to start using cloud database resources in their data centers and help address strict data residency requirements. Exadata Cloud@Customer incorporates unique optimizations that let Oracle AI Database workloads run faster with less management and lower costs so organizations can get more value from their data. # Useful Links @@ -14,8 +14,6 @@ Reviewed: 16.09.2025 - [What’s New in ADB-D on Exadata Cloud@Customer](https://docs.oracle.com/en-us/iaas/exadata/doc/adb-okv-integration.html) -![Alt text](Specialistdivider1small.jpg?raw=true "Subsections") - - [ExaCC Infra](https://github.com/oracle-devrel/technology-engineering/tree/main/data-platform/exadata-cloud-at-customer/exacc-infra) - [ExaCC Network](https://github.com/oracle-devrel/technology-engineering/tree/main/data-platform/exadata-cloud-at-customer/exacc-network) @@ -24,6 +22,8 @@ Reviewed: 16.09.2025 - [ExaCC Value](https://github.com/oracle-devrel/technology-engineering/tree/main/data-platform/exadata-cloud-at-customer/exacc-value) +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/Specialistdivider1small.jpg b/data-platform/exadata-cloud-at-customer/Specialistdivider1small.jpg deleted file mode 100644 index 5b105d7c1..000000000 Binary files a/data-platform/exadata-cloud-at-customer/Specialistdivider1small.jpg and /dev/null differ diff --git a/data-platform/exadata-cloud-at-customer/exacc-infra/README.md b/data-platform/exadata-cloud-at-customer/exacc-infra/README.md index 46bf8ae9d..18b5832c2 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-infra/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-infra/README.md @@ -1,6 +1,6 @@ # Exadata Cloud@Customer Infrastructure -Reviewed: 16.09.2025 +Assests, best practices and how-to's regarding the infrastructure components of the ExaDB-C@C services. # Useful Links @@ -42,6 +42,8 @@ Reviewed: 16.09.2025 [Oracle ACFS Snapshot Use Cases on Exadata (Doc ID 2761360.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=274346774362287&id=2761360.1&_afrWindowMode=0&_adf.ctrl-state=jgdocci36_4) +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-infra/data-collection/LICENSE b/data-platform/exadata-cloud-at-customer/exacc-infra/data-collection/LICENSE new file mode 100644 index 000000000..46c0c79d9 --- /dev/null +++ b/data-platform/exadata-cloud-at-customer/exacc-infra/data-collection/LICENSE @@ -0,0 +1,35 @@ +Copyright (c) 2025 Oracle and/or its affiliates. + +The Universal Permissive License (UPL), Version 1.0 + +Subject to the condition set forth below, permission is hereby granted to any +person obtaining a copy of this software, associated documentation and/or data +(collectively the "Software"), free of charge and under any and all copyright +rights in the Software, and any and all patent rights owned or freely +licensable by each licensor hereunder covering either (i) the unmodified +Software as contributed to or provided by such licensor, or (ii) the Larger +Works (as defined below), to deal in both + +(a) the Software, and +(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if +one is included with the Software (each a "Larger Work" to which the Software +is contributed by such licensors), + +without restriction, including without limitation the rights to copy, create +derivative works of, display, perform, and distribute the Software and make, +use, sell, offer for sale, import, export, have made, and have sold the +Software and the Larger Work(s), and to sublicense the foregoing rights on +either these or other terms. + +This license is subject to the following condition: +The above copyright notice and either this complete permission notice or at +a minimum a reference to the UPL must be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/data-platform/exadata-cloud-at-customer/exacc-infra/data-collection/README.md b/data-platform/exadata-cloud-at-customer/exacc-infra/data-collection/README.md new file mode 100644 index 000000000..bbb6ced33 --- /dev/null +++ b/data-platform/exadata-cloud-at-customer/exacc-infra/data-collection/README.md @@ -0,0 +1,21 @@ +# Exadata Cloud@Customer Data Collection + +Scripts and instructions for collecting data on existing workloads with AWR Miner and EMCC extracts. + +# When to use this asset? + +See the instruction document within the .zip file in the /files folder. + +# How to use this asset? + +See the instruction document within the .zip file in the /files folder. + +Reviewed: + +# License + +Copyright (c) 2025 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](https://github.com/oracle-devrel/technology-engineering/blob/main/LICENSE) for more details. diff --git a/data-platform/exadata-cloud-at-customer/exacc-infra/assets/Oracle_EMCC_sizing_extracts_25.2.0.zip b/data-platform/exadata-cloud-at-customer/exacc-infra/data-collection/files/Oracle_EMCC_sizing_extracts_25.2.0.zip similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-infra/assets/Oracle_EMCC_sizing_extracts_25.2.0.zip rename to data-platform/exadata-cloud-at-customer/exacc-infra/data-collection/files/Oracle_EMCC_sizing_extracts_25.2.0.zip diff --git a/data-platform/exadata-cloud-at-customer/exacc-infra/single-node-vm-cluster/README.md b/data-platform/exadata-cloud-at-customer/exacc-infra/single-node-vm-cluster/README.md index 87ad55f02..22429f600 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-infra/single-node-vm-cluster/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-infra/single-node-vm-cluster/README.md @@ -1,5 +1,3 @@ -Reviewed: 16.09.2025 - # Exadata Cloud@Customer Single Node VM Cluster With this enhancement, you can deploy and run multiple single-instance databases in a single-node cluster without RAC licenses being required. @@ -16,6 +14,8 @@ Run each single instance database as a singleton workload or PDB in a shared RAC Run each single instance database as a singleton workload or PDB in a dedicated CDB Run each single instance database as a two–node cluster, but shut down unnecessary instances +Reviewed: + # Useful Links * [About Single-Node VM Cluster](https://docs.oracle.com/en-us/iaas/exadata/doc/ecc-manage-vm-clusters.html#GUID-F528AA9C-2130-4E15-B8DE-DF65FD580789) diff --git a/data-platform/exadata-cloud-at-customer/exacc-infra/vm-serial-consol-access/README.md b/data-platform/exadata-cloud-at-customer/exacc-infra/vm-serial-consol-access/README.md index e5cd9d241..1b18ebf96 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-infra/vm-serial-consol-access/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-infra/vm-serial-consol-access/README.md @@ -1,5 +1,3 @@ -Reviewed: 16.09.2025 - # Exadata Cloud@Customer VM Serial Console Access Announcing the General Availability (GA) of VM Serial Console Access for Exadata Cloud@Customer. With this new feature, customers can: @@ -8,16 +6,17 @@ Announcing the General Availability (GA) of VM Serial Console Access for Exadata - Access the virtual serial console via SSH (via proxy and hypervisor) - Terminate the serial console connection when the required actions have been completed -# Key Benefit +## Key Benefit This new feature allows customers to access the serial console of their Virtual Machines in case a need arises for emergency debugging. Use cases include accessing GRUB to fix boot issues or accessing the VM when SSH access is unavailable. Typical reasons for this access include accidentally changing or deleting keys, killing or a processes is in a tucked state, and having firewall issues on the VM, among many others. -# Additional Links: +# Useful Links: - [What's New announcement in product documentation](https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-whats-new-in-exadata-cloud-at-customer-gen2.html#GUID-303FAF7D-A607-4D3F-95BB-25A477E3F09A) - Proper OCI user permissions are required to create a serial console connection - see [product documentation](https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-policy-details.html#GUID-CBEEA1B3-8CFC-4E9C-ACA8-6675F4582920) for details +Reviewed: # License diff --git a/data-platform/exadata-cloud-at-customer/exacc-infra/vm-serial-consol-history-and-cloud-shell-integration/README.md b/data-platform/exadata-cloud-at-customer/exacc-infra/vm-serial-consol-history-and-cloud-shell-integration/README.md index 8cb6cbfb9..174429ad2 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-infra/vm-serial-consol-history-and-cloud-shell-integration/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-infra/vm-serial-consol-history-and-cloud-shell-integration/README.md @@ -1,19 +1,17 @@ -Reviewed: 16.09.2025 - # Exadata Cloud@Customer VM Serial Console History and Cloud Shell Integration Announcing the General Availability (GA) of Serial Console History and Cloud Shell Integration for Exadata Database Service on Cloud@Customer. These features expand upon the functionality of the serial console access features that we had announced previously. With these new features, customers can easily connect to the serial console of their VMs in order to perform corrective actions and can review/audit previous activities carried out via the serial console by users. -# Key Benefits +## Key Benefits These features automate certain common administrative tasks related to the usage of the VM serial console for simplicity and convenience, saving precious time and reducing guesswork for our users. -# Console History +## Console History Customers can now conveniently audit administrative activities undertaken via the serial console. The console history information is available directly from the OCI console by any tenancy user who has been granted the proper permissions. This will simplify auditing and allow customers to easily comply with internal security audit policies. -# Cloud Shell integration +## Cloud Shell integration Cloud Shell integration for the serial console allows users who have been granted proper permissions to easily connect to the VM Serial Console directly from the OCI Cloud Shell. This feature simplifies access and eliminates the need for a user to connect from their local system via SSH to OCI. Some customers have network policies that block such access without granting exceptions. Now, with OCI Cloud Shell integration, customers can easily connect "at-a-click" from the OCI Console without having to work around any networking restrictions manually. -# Additional Links: +# Useful Links: [What's New announcement in product documentation](https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-whats-new-in-exadata-cloud-at-customer-gen2.html#GUID-2A3DD1C7-D1D7-4288-A1AA-19334C0516B4) @@ -21,6 +19,8 @@ Cloud Shell integration for the serial console allows users who have been grante OCI Cloud Shell [product documentation](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/devcloudshellintro.htm) +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-network/README.md b/data-platform/exadata-cloud-at-customer/exacc-network/README.md index 2ee4d3883..d841aaf57 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-network/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-network/README.md @@ -1,6 +1,6 @@ # Exadata Cloud@Customer Networking -Reviewed: 16.09.2025 +Network connection related ExaDB-C@C information. # Useful Links @@ -12,6 +12,8 @@ Reviewed: 16.09.2025 - [Using Data Guard](https://docs.oracle.com/en/engineered-systems/exadata-cloud-at-customer/ecccm/ecc-using-data-guard.html) +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-security/README.md b/data-platform/exadata-cloud-at-customer/exacc-security/README.md index 78ce2d961..1b3bb69cd 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-security/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-security/README.md @@ -1,6 +1,6 @@ # Exadata Cloud@Customer Security -Reviewed: 16.09.2025 +Security related information for ExaDB-C@C. # Useful Links @@ -12,6 +12,8 @@ Reviewed: 16.09.2025 - [Operator Access Control Technical Brief](https://www.oracle.com/uk/a/ocom/docs/engineered-systems/exadata/oracle-operator-access-control-tech-brief.pdf) +Reviewed: 16.09.2025 + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-security/okv-integration/README.md b/data-platform/exadata-cloud-at-customer/exacc-security/okv-integration/README.md index 19b1efcf7..22235cde2 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-security/okv-integration/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-security/okv-integration/README.md @@ -1,5 +1,3 @@ -Reviewed: 16.09.2025 - # Exadata Cloud@Customer Oracle Key Vault (OKV) integration Oracle Key Vault is a full-stack, security-hardened software appliance built to centralize the management of keys and security objects within the enterprise. @@ -12,6 +10,8 @@ Integrate your on-premises Oracle Key Vault (OKV) with Oracle Exadata Database S - [Customer-Managed Keys in Exadata Database Service on Cloud@Customer](https://docs.oracle.com/en-us/iaas/exadata/doc/manage-encryption-keys-on-external-devices.html#GUID-084AA149-AD28-43D5-AB7A-B5B8980810B2) +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/README.md b/data-platform/exadata-cloud-at-customer/exacc-value/README.md index 824b192ae..b16c22db0 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-value/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-value/README.md @@ -1,29 +1,29 @@ # Exadata Cloud@Customer Value -Reviewed: 16.09.2025 +Value-add for ExaDB-C@C. # Videos A short video series covering different aspects of the Oracle Exadata Cloud@Customer - the best platform for running your Oracle Databases in the cloud behind your firewall. **Episode 1 - Introductions to Exadata Cloud@Customer:** -[![Episode 1 - Introduction](images/Ep1_TN.jpg "Episode 1 - Introduction")](https://lnkd.in/gb9pHt8Z) +[![Episode 1 - Introduction](files/images/Ep1_TN.jpg "Episode 1 - Introduction")](https://lnkd.in/gb9pHt8Z) **Episode 2 - Exadata Cloud@Customer Networking:** -[![Episode 2 - Networking](images/Ep2_TN.jpg "Episode 2 - Networking")](https://lnkd.in/e2YcMUn5) +[![Episode 2 - Networking](files/images/Ep2_TN.jpg "Episode 2 - Networking")](https://lnkd.in/e2YcMUn5) **Episode 3 - VM Clusters on Exadata Cloud@Customer:** -[![Episode 3 - VM Clusters](images/Ep3_TN.jpg "Episode 3 - VM Clusters")](https://lnkd.in/gdTmDbFw) +[![Episode 3 - VM Clusters](files/images/Ep3_TN.jpg "Episode 3 - VM Clusters")](https://lnkd.in/gdTmDbFw) **Episode 4 - Exadata Cloud@Customer X11M Introduction:** -[![Episode 4 - X11M](images/Ep4_TN.jpg "Episode 4 - X11M")](https://lnkd.in/e7C96jBx) +[![Episode 4 - X11M](files/images/Ep4_TN.jpg "Episode 4 - X11M")](https://lnkd.in/e7C96jBx) **Episode 5 - Autonomous Database on Exadata Cloud@Customer:** -[![Episode 5 - X11M](images/Ep5_TN.jpg "Episode 5 - Autonomous Database")](https://lnkd.in/eQkZzKvk) +[![Episode 5 - X11M](files/images/Ep5_TN.jpg "Episode 5 - Autonomous Database")](https://lnkd.in/eQkZzKvk) The below videos are showcasing best practices and how-to's with a technical and hands-on approach. **Learn how to optimize Exadata Database Service performance using IORM (I/O Resource Manager):** -[![IORM](images/Ep5_TN.jpg "Exadata Database Service Resource Management – IORM")](https://youtu.be/vXkWR6Uc0vM) +[![IORM](files/images/Ep5_TN.jpg "Exadata Database Service Resource Management – IORM")](https://youtu.be/vXkWR6Uc0vM) # Useful Links @@ -33,6 +33,8 @@ The below videos are showcasing best practices and how-to's with a technical and - [Oracle PaaS and IaaS Universal Credits Service Description](https://www.oracle.com/oce/dc/assets/CONT66B9F94D4751422F8C46B87B9FECB5B1/native/oracle-paas-and-iaas-universal-credits-service-descriptions.pdf) +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/LICENSE b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/LICENSE new file mode 100644 index 000000000..46c0c79d9 --- /dev/null +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/LICENSE @@ -0,0 +1,35 @@ +Copyright (c) 2025 Oracle and/or its affiliates. + +The Universal Permissive License (UPL), Version 1.0 + +Subject to the condition set forth below, permission is hereby granted to any +person obtaining a copy of this software, associated documentation and/or data +(collectively the "Software"), free of charge and under any and all copyright +rights in the Software, and any and all patent rights owned or freely +licensable by each licensor hereunder covering either (i) the unmodified +Software as contributed to or provided by such licensor, or (ii) the Larger +Works (as defined below), to deal in both + +(a) the Software, and +(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if +one is included with the Software (each a "Larger Work" to which the Software +is contributed by such licensors), + +without restriction, including without limitation the rights to copy, create +derivative works of, display, perform, and distribute the Software and make, +use, sell, offer for sale, import, export, have made, and have sold the +Software and the Larger Work(s), and to sublicense the foregoing rights on +either these or other terms. + +This license is subject to the following condition: +The above copyright notice and either this complete permission notice or at +a minimum a reference to the UPL must be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/README.md b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/README.md new file mode 100644 index 000000000..135292d91 --- /dev/null +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/README.md @@ -0,0 +1,52 @@ +# Exadata Cloud@Customer Configuration Collection Scripts + +A script utilising the OCI Python SDK to collect the information on an existing ExaDB-C@C or ExaDB-D configuration. + +# When to use this asset? + +The asset is designed to collect configuration options and settings of resources on an ExaDB-C@C and/or ExaDB-D environment. This configuration options include Exadata Infrastructure and VM cluster related settings mainly. + +# How to use this asset? + +To be able to run the scripts you have to have a working Python 3.7 or higher environment installed with the Oracle Cloud Infrastructure Python SDK installed. + +To run the script you have to setup up the following: + +- working API Keys for your OCI account +- a minimum READ policy set for the resources, we need collecting information on +- configuration file under the following path by default: $HOME/.oci/config +- the above configuration file is the same as the one used by OCI CLI + +Run the script with the following command: + +``` +python exccbb_iude.py +``` +The script has a help functionality included as the following: + +``` +exccbb_iude.py -h +usage: exccbb_iude.py [-h] [--oconfigf OCONFIGF] [--oproname OPRONAME] [--custname CUSTNAME] [--restype {CS,CC,ALL}] + +options: + -h, --help show this help message and exit + --oconfigf, -of OCONFIGF + OCI Configuration File Path + --oproname, -on OPRONAME + OCI Profile Name [profile_name, DEFAULT] + --custname, -cn CUSTNAME + Customer Name + --restype, -rt {CS,CC,ALL} + Exadata Cloud Service Type [CS, CC, ALL] +``` +The above script is creating JSON file with all the configuration information which can be shared with Oracle for further analysis. + +Reviewed: + +# License + +Copyright (c) 2026 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](https://github.com/oracle-devrel/technology-engineering/blob/main/LICENSE) for more details. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/files/exccbb_iude.py b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/files/exccbb_iude.py new file mode 100644 index 000000000..a3c888ee6 --- /dev/null +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-configuration-collection/files/exccbb_iude.py @@ -0,0 +1,577 @@ +# ------------------------------------------------------------------------------------------------------- +# exccbb_iude.py +# ------------------------------------------------------------------------------------------------------- +# Version 0.6 +# ------------------------------------------------------------------------------------------------------- +# Release Notes +# 2026-01-20: grolla@oracle +# --- v0.6: testing +# 2025-12-20: grolla@oracle +# --- v0.5: added AVMC analysis +# 2025-12-10: grolla@oracle +# --- v0.4: extended for both ExaDB-D and ExaDB-C@C +# 2025-10-30: grolla@oracle +# --- v0.3: added the options to get info from multiple regions +# --------- include in the config file the field "regions" equal to comma separated list of regions +# 2025-10-20: grolla@oracle +# --- v0.2: Improvement in error managements +# 2025-10-20: grolla@oracle +# --- v0.1: First Release +# ------------------------------------------------------------------------------------------------------- +# Installation Notes +# Requirements: +# - Python 3.7 or higher +# - OCI SDK +# To install OCI SDK: +# - pip install oci +# ------------------------------------------------------------------------------------------------------- +import os +import logging +import datetime +import argparse +import oci +import json +import sys + + +VERSION = "0.6" +SUFFIX = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") +OUT_FILE = "" +HTML_FILE = "" +CSV_FILE = "" +JSON_FILE = "" + + +def env_config(running_path, customer): + # create LOG directory + log_path = "/LOG" + log_pfix = "".join(["/exccbb_iude_log_", customer, "_"]) + log_exte = ".log" + log_sign = "exaccbb_iude" + out_path = "/OUT" + out_pfix = "".join(["/exccbb_iude_out_", customer, "_"]) + out_exte = ".json" + htm_pfix = "".join(["/exccbb_iude_out_", customer, "_"]) + htm_exte = ".html" + csv_pfix = "".join(["/exccbb_iude_out_", customer, "_"]) + csv_exte = ".csv" + + try: + if os.path.exists("".join([running_path, log_path])): + print(f"{datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S')},000 - exaccbb_iude - INFO - LOG Folder already exists under {running_path}, skipping creation") + else: + os.mkdir("".join([running_path, log_path])) + except Exception as error_a: + print(f"{datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S')},000 - exaccbb_iude - CRITICAL - Unable to create LOG folder in {running_path}. Exiting. [Error 1]") + print(error_a) + exit(1) + + try: + if os.path.exists("".join([running_path, out_path])): + print(f"{datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S')},000 - exaccbb_iude - INFO - OUT Folder already exists under {running_path}, skipping creation") + else: + os.mkdir("".join([running_path, out_path])) + except Exception as error_a: + print(f"{datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S')},000 - exaccbb_iude - CRITICAL - Unable to create LOG folder in {running_path}. Exiting. [Error 2]") + print(error_a) + exit(2) + + # configuring logger + try: + logfile = "".join([log_pfix, SUFFIX, log_exte]) + logdir = "".join([running_path, log_path]) + logfile = "".join([logdir, logfile]) + + global JSON_FILE + JSON_FILE = "".join([running_path, out_path, out_pfix, SUFFIX, out_exte]) + + global HTML_FILE + HTML_FILE = "".join([running_path, out_path, htm_pfix, SUFFIX, htm_exte]) + + global CSV_FILE + CSV_FILE = "".join([running_path, out_path, csv_pfix, SUFFIX, csv_exte]) + + logger = logging.getLogger("exacclogger") + logger.setLevel(logging.DEBUG) + + formatter = logging.Formatter('%(asctime)s - '+log_sign+' - %(levelname)s - %(message)s') + + file_handler = logging.FileHandler(logfile) + file_handler.setLevel(logging.DEBUG) + file_handler.setFormatter(formatter) + + console_handler = logging.StreamHandler() + console_handler.setLevel(logging.INFO) # You can set the desired log level for console output + console_handler.setFormatter(formatter) + logger.addHandler(console_handler) + logger.addHandler(file_handler) + + logger.info('Logging initialized, starting the script.') + + return logger + + except Exception as error_a: + print("CRITICAL: Something went wrong trying to configure the logging. Exiting. [Error 3]") + print(error_a) + exit(3) + + +def get_exadb_details(infra_type, logger, config, regions): + logger.info(f"Starting retrieving information for Exadata Cloud Service Infrastructure") + + try: + if infra_type == "ALL": + services = ["CS", "CC"] + else: + services = [] + services.append(infra_type) + + global_json = [] + + # printing tenancy information + identity_client = oci.identity.IdentityClient(config) + + try: + get_tenancy_response = identity_client.get_tenancy( + tenancy_id=config['tenancy']) + tenancy_name = get_tenancy_response.data.name + except Exception: + tenancy_name = "NA" + + for service in services: + logger.info(f"Searching for all the Exadata Infrastructure Resources, type {service}...") + + infra_type = service + + if infra_type == "CS": + query_text_infra = "query cloudexadatainfrastructure resources" + elif infra_type == "CC": + query_text_infra = "query exadatainfrastructure resources" + else: + logger.error(f"Infrastructure Type [{infra_type}] not recognized. Exiting. [Error 4]") + exit(4) + + + + for region in regions: + + # setting region for config + config["region"] = region + + logger.info(f"Checking in region {region}...") + + resource_search_client = oci.resource_search.ResourceSearchClient(config) + + # specify in the search query the resources, testing done using cloud exainfra and vmclusters + search_resources_response = resource_search_client.search_resources( + search_details=oci.resource_search.models.StructuredSearchDetails( + type="Structured", + query=query_text_infra), + limit=514, + tenant_id=config['tenancy'] + ) + + json_search = json.loads(str(search_resources_response.data)) + + db_client = oci.database.DatabaseClient(config) + + infras_json = [] + + # looping throught all the infras, and search for the vmcs + for search in json_search['items']: + + infra_ocid = search['identifier'] + + logger.info(f"Retrieving details for Exadata Infrastructure with OCID: {infra_ocid}") + + if infra_type == "CS": + infra_detail_response = db_client.get_cloud_exadata_infrastructure( + cloud_exadata_infrastructure_id=infra_ocid + ) + elif infra_type == "CC": + infra_detail_response = db_client.get_exadata_infrastructure( + exadata_infrastructure_id=infra_ocid + ) + else: + logger.error(f"Infrastructure Type [{infra_type}] not recognized. Exiting. [Error 5]") + exit(5) + + j_infra = json.loads(str(infra_detail_response.data)) + + comp_id = j_infra["compartment_id"] + + list_maintenance_runs_response = db_client.list_maintenance_runs( + compartment_id=comp_id, + target_resource_id=infra_ocid, + lifecycle_state="SCHEDULED" + ) + + QUA_SCHED = "NA" + QUA_SCHED_TG_DB = "NA" + QUA_SCHED_TG_ST = "NA" + QUA_SCHED_SCHED = "NA" + MON_SCHED = "NA" + MON_SCHED_TG_DB = "NA" + MON_SCHED_TG_ST = "NA" + MON_SCHED_SCHED = "NA" + + for maint in list_maintenance_runs_response.data: + maint_j = json.loads(str(maint)) + if maint_j["maintenance_subtype"] == "QUARTERLY": + QUA_SCHED = maint_j["maintenance_subtype"] + QUA_SCHED_TG_DB = maint_j["target_db_server_version"] + QUA_SCHED_TG_ST = maint_j["target_storage_server_version"] + QUA_SCHED_SCHED = maint_j["time_scheduled"] + elif maint_j["maintenance_subtype"] == "SECURITY_MONTHLY": + MON_SCHED = maint_j["maintenance_subtype"] + MON_SCHED_TG_DB = maint_j["target_db_server_version"] + MON_SCHED_TG_ST = maint_j["target_storage_server_version"] + MON_SCHED_SCHED = maint_j["time_scheduled"] + + # build filter for specific infra + if infra_type == "CS": + query_text_vmcs = f'query cloudvmcluster resources where cloudExadataInfrastructureId="{infra_ocid}"' + + elif infra_type == "CC": + query_text_vmcs = f'query vmcluster resources where ExadataInfrastructureId="{infra_ocid}"' + else: + logger.error(f"Infrastructure Type [{infra_type}] not recognized. Exiting. [Error 6]") + exit(6) + + logger.info("Retrieving all the VM Cluster for the parent infrastructure") + + search_resources_response = resource_search_client.search_resources( + search_details=oci.resource_search.models.StructuredSearchDetails( + type="Structured", + query=query_text_vmcs), + limit=514, + tenant_id=config['tenancy'] + ) + + vmc_search_j = json.loads(str(search_resources_response.data)) + + if "exascale_config" in j_infra: + if j_infra["exascale_config"] is None: + exascale_alloc = 0 + exascale_avail = 0 + else: + exascale_alloc = round(j_infra["exascale_config"]["total_storage_in_gbs"] / 1024, 2) + exascale_avail = round(j_infra["exascale_config"]["available_storage_in_gbs"] / 1024, 2) + else: + exascale_alloc = 0 + exascale_avail = 0 + + if infra_type == "CS": + free_cpu = round(j_infra['max_cpu_count'] - j_infra['cpu_count'], 2) + free_lst = round(j_infra['max_db_node_storage_in_gbs'] - j_infra['db_node_storage_size_in_gbs'], 2) + free_est = round(j_infra['max_data_storage_in_tbs'] - j_infra['data_storage_size_in_tbs'], 2) - exascale_alloc + elif infra_type == "CC": + free_cpu = round(j_infra['max_cpu_count'] - j_infra['cpus_enabled'], 2) + free_lst = round(j_infra['max_db_node_storage_in_g_bs'] - j_infra['db_node_storage_size_in_gbs'], 2) + free_est = round(j_infra['max_data_storage_in_t_bs'] - j_infra['data_storage_size_in_tbs'], 2) - exascale_alloc + else: + logger.error("Wrong Infra type, exiting. [Error 7]") + exit(7) + + free_mem = round(j_infra['max_memory_in_gbs'] - j_infra['memory_size_in_gbs'], 2) + + # looping for vmcs + vmcs_arr = [] + n_node = 0 + cpu_core_count = 0 + + for vmc in vmc_search_j['items']: + + vmc_ocid = vmc['identifier'] + + logger.info(f"Retriving details for VM Cluster with OCID: {vmc_ocid}") + + if infra_type == "CS": + vmc_detail_response = db_client.get_cloud_vm_cluster( + cloud_vm_cluster_id=vmc_ocid + ) + elif infra_type == "CC": + vmc_detail_response = db_client.get_vm_cluster( + vm_cluster_id=vmc_ocid + ) + else: + logger.error(f"Infrastructure Type [{infra_type}] not recognized. Exiting. [Error 8]") + exit(8) + + # find the databases that are running in this vmcluster + query_dbs = f'query database resources where vmClusterId="{vmc_ocid}"' + + search_resources_response = resource_search_client.search_resources( + search_details=oci.resource_search.models.StructuredSearchDetails( + type="Structured", + query=query_dbs), + limit=514, + tenant_id=config['tenancy'] + ) + + dbs_search_j = json.loads(str(search_resources_response.data)) + + n_dbs_per_vmc = len(dbs_search_j['items']) + + vmc_j = json.loads(str(vmc_detail_response.data)) + + if infra_type == "CS": + n_node = vmc_j["node_count"] + storage_size_in_tbs = round(vmc_j["storage_size_in_gbs"]/1024, 2) + cpu_core_count = vmc_j["cpu_core_count"] + elif infra_type == "CC": + n_node = len(vmc_j["db_servers"]) + storage_size_in_tbs = vmc_j["data_storage_size_in_tbs"] + cpu_core_count = vmc_j["cpus_enabled"] + else: + logger.error("Wrong Infra type, exiting. [Error 9]") + exit(9) + + if "storage_management_type" in vmc_j: + storage_management_type = vmc_j["storage_management_type"] + + if vmc_j["storage_management_type"] == "EXASCALE": + # get info from adb + get_exascale_db_storage_vault_response = db_client.get_exascale_db_storage_vault( + exascale_db_storage_vault_id=vmc_j["exascale_db_storage_vault_id"] + ) + data_storage_size_in_tbs = round(get_exascale_db_storage_vault_response.data.high_capacity_database_storage.total_size_in_gbs/1024,2) + elif vmc_j["storage_management_type"] == "ASM": + data_storage_size_in_tbs = vmc_j["data_storage_size_in_tbs"] + else: + storage_management_type = "Error" + data_storage_size_in_tbs = vmc_j["data_storage_size_in_tbs"] + else: + storage_management_type = "Error" + data_storage_size_in_tbs = vmc_j["data_storage_size_in_tbs"] + + vmcs_dict = {"display_name": vmc_j["display_name"], + "vmc_ocid": vmc_j["id"], + "node_count": n_node, + "license_model": vmc_j["license_model"], + "lifecycle_state": vmc_j["lifecycle_state"], + "dbs_number": n_dbs_per_vmc, + "cpu_core_count": cpu_core_count, + "gi_version": vmc_j["gi_version"], + "system_version": vmc_j["system_version"], + "storage_size_in_tbs": storage_size_in_tbs, + "storage_management_type": storage_management_type, + "data_storage_size_in_tbs": data_storage_size_in_tbs, + "db_node_storage_size_in_gbs": vmc_j["db_node_storage_size_in_gbs"], + "is_local_backup_enabled": vmc_j["is_local_backup_enabled"], + "is_sparse_diskgroup_enabled": vmc_j["is_sparse_diskgroup_enabled"], + "memory_size_in_gbs": vmc_j["memory_size_in_gbs"]} + + vmcs_arr.append(vmcs_dict) + + if infra_type == "CS": + query_text_avmcs = "query cloudautonomousvmcluster resources where lifeCycleState != 'TERMINATED'" + elif infra_type == "CC": + query_text_avmcs = "query autonomousvmcluster resources where lifeCycleState != 'TERMINATED'" + else: + logger.error(f"Infrastructure Type [{infra_type}] not recognized. Exiting. [Error 10]") + exit(10) + + search_resources_response = resource_search_client.search_resources( + search_details=oci.resource_search.models.StructuredSearchDetails( + type="Structured", + query=query_text_avmcs), + limit=514, + tenant_id=config['tenancy'] + ) + + avmc_search_j = json.loads(str(search_resources_response.data)) + + avmcs_arr = [] + + for avmc in avmc_search_j['items']: + + vmc_ocid = avmc['identifier'] + + logger.info(f"Retriving details for Autonomous VM Cluster with OCID: {vmc_ocid}") + + if infra_type == "CS": + avmc_detail_response = db_client.get_cloud_autonomous_vm_cluster( + cloud_autonomous_vm_cluster_id=vmc_ocid + ) + elif infra_type == "CC": + avmc_detail_response = db_client.get_autonomous_vm_cluster( + autonomous_vm_cluster_id=vmc_ocid + ) + else: + logger.error(f"Infrastructure Type [{infra_type}] not recognized. Exiting. [Error 11]") + exit(11) + + avmc_j = json.loads(str(avmc_detail_response.data)) + + same_infra = 0 + + if infra_type == "CS": + if avmc_j["cloud_exadata_infrastructure_id"] == infra_ocid: + same_infra=1 + elif infra_type == "CC": + if avmc_j["exadata_infrastructure_id"] == infra_ocid: + same_infra = 1 + else: + logger.error(f"Infrastructure Type [{infra_type}] not recognized. Exiting. [Error 12]") + exit(12) + + if same_infra == 1: + avmcs_dict = {"display_name": avmc_j["display_name"], + "avmc_ocid": avmc_j["id"], + "node_count": n_node, + "license_model": avmc_j["license_model"], + "lifecycle_state": avmc_j["lifecycle_state"], + "cpu_core_count": cpu_core_count, + "data_storage_size_in_tbs": avmc_j["autonomous_data_storage_size_in_tbs"] + } + avmcs_arr.append(avmcs_dict) + + if infra_type == "CS": + cpu_count = j_infra['cpu_count'] + max_db_node_storage_in_gbs = round(j_infra['max_db_node_storage_in_gbs'], 4) + max_data_storage_in_tbs = round(j_infra['max_data_storage_in_tbs'], 4) + activated_storage_count = j_infra['activated_storage_count'] + elif infra_type == "CC": + cpu_count = j_infra['cpus_enabled'] + max_db_node_storage_in_gbs = round(j_infra['max_db_node_storage_in_g_bs'], 4) + max_data_storage_in_tbs = round(j_infra['max_data_storage_in_t_bs'], 4) + activated_storage_count = j_infra['storage_count'] + else: + logger.error("Wrong Infra type, exiting. [Error 13]") + exit(13) + + infra_dict = {"tenancy_name": tenancy_name, + "region": region, + "display_name": j_infra['display_name'], + "ocid": j_infra['id'], + "infra_type": infra_type, + "compute_model": j_infra['compute_model'], + "lifecycle_state": j_infra['lifecycle_state'], + "shape": j_infra['shape'], + "exascale_alloc": exascale_alloc, + "exascale_avail": exascale_avail, + "compute_count": j_infra['compute_count'], + "activated_storage_count": activated_storage_count, + "db_server_version": j_infra['db_server_version'], + "storage_server_version": j_infra['storage_server_version'], + "quarterly_schedule": QUA_SCHED, + "quarterly_schedule_tg_db": QUA_SCHED_TG_DB, + "quarterly_schedule_tg_st": QUA_SCHED_TG_ST, + "quarterly_schedule_sched": QUA_SCHED_SCHED, + "monthly_schedule": MON_SCHED, + "monthly_schedule_tg_db": MON_SCHED_TG_DB, + "monthly_schedule_tg_st": MON_SCHED_TG_ST, + "monthly_schedule_sched": MON_SCHED_SCHED, + "max_cpu_count": j_infra['max_cpu_count'], + "cpu_count": cpu_count, + "free_cpu": free_cpu, + "max_memory_in_gbs": j_infra['max_memory_in_gbs'], + "memory_size_in_gbs": j_infra['memory_size_in_gbs'], + "free_mem": free_mem, + "max_db_node_storage_in_gbs": max_db_node_storage_in_gbs, + "db_node_storage_size_in_gbs": round(j_infra['db_node_storage_size_in_gbs'], 2), + "free_lst": free_lst, + "max_data_storage_in_tbs": max_data_storage_in_tbs, + "data_storage_size_in_tbs": round(j_infra['data_storage_size_in_tbs'], 2), + "free_est": free_est, + "vm_clusters": vmcs_arr, + "avm_clusters": avmcs_arr + } + + infras_json.append(infra_dict) + + global_json.append(infras_json) + temp_json = {"items": global_json} + + try: + global JSON_FILE + + if len(temp_json) == 0: + logger.warning( + f"No Infrastructure details retrieved for the {infra_type} Service. Please review the info provided.") + else: + f = open(JSON_FILE, "a+") + f.write(json.dumps(temp_json)) + f.close() + logger.info(f"{JSON_FILE} properly written") + + return json.dumps(global_json) + + except Exception as error_a: + logger.error(f"Unable to open the Json File for writing the details. Exiting. [Error 14]") + logger.debug(error_a) + exit(14) + except Exception as error_b: + logger.error(f"Unable to retrieve the Exadata Infrastructure details. Exiting. [Error 15]") + logger.debug(error_b) + exit(15) + + + +if __name__ == '__main__': + # configuring environment for logging + + py_maj = sys.version_info[0] + py_min = sys.version_info[1] + + if py_maj < 3: + print("CRITICAL: Unsupported Python version, minimum Python3.7") + exit(99) + if py_min < 7: + print("CRITICAL: Unsupported Python version, minimum Python3.7") + exit(99) + + parser = argparse.ArgumentParser() + parser.add_argument("--oconfigf", "-of", default="DEF_PATH", help="OCI Configuration File Path", required=False) + parser.add_argument("--oproname", "-on", default="0", help="OCI Profile Name [profile_name, DEFAULT]", required=False) + parser.add_argument("--custname", "-cn", default="CUST_EXAMPLE", help="Customer Name", required=False) + parser.add_argument("--restype", "-rt", default="CS", choices=['CS', 'CC', 'ALL'], help="Exadata Cloud Service Type [CS, CC, ALL]", required=False) + + args = parser.parse_args() + + running_path = os.path.realpath(os.path.dirname(__file__)) + + logger = env_config(running_path, args.custname) + + logger.info('ExaCC Black Belt - Infrastructure Usage Details Extractor') + logger.info(f'Version {VERSION}') + logger.info("Opening OCI Tenancy Config File...") + + profile_list = [] + config_file = "" + + try: + if args.oproname == "0": + proname = "DEFAULT" + else: + proname = args.oproname + + if args.oconfigf != "DEF_PATH": + if os.path.exists(args.oconfigf): + config_file = args.oconfigf + else: + logger.error(f"unable to open parse OCI Configuration file. Exiting. [Error 16]") + exit(16) + + if len(config_file) > 0: + config = oci.config.from_file(file_location=config_file, profile_name=proname) + else: + config = oci.config.from_file(profile_name=proname) + + key_in_dict = "regions" + regions = [] + + if key_in_dict in config: + regions = config[key_in_dict].split(",") + else: + regions.append(config["region"]) + + exadb_json_details = get_exadb_details(args.restype, logger, config, regions) + + logger.info("Data retrival completed successfully!") + + except Exception as error: + logger.error("Something went wrong in parsing input parameters. Exiting. [Error 17]") + logger.error(error) + exit(17) diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/README.md b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/README.md index 1ae15ee17..8d0b32b9d 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/README.md @@ -1,5 +1,3 @@ -Reviewed: 16.09.2025 - # Exadata Cloud@Customer - Health Check ## Introduction @@ -40,7 +38,9 @@ Below is a list with the instructions on how to retrieve the solution data usefu * [AHF Reports](https://github.com/oracle-devrel/technology-engineering/tree/main/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-ahf-report) * [AWR Dumps](https://github.com/oracle-devrel/technology-engineering/tree/main/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-awr-dump) -## License +Reviewed: + +# License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-ahf-report/README.md b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-ahf-report/README.md index 9c991a149..820d2e32c 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-ahf-report/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-ahf-report/README.md @@ -1,5 +1,3 @@ -Reviewed: 16.09.2025 - # AHF Reports - Customer Guide **NOTE**: Before generating the AHF reports it is important to install the latest version of the AHF suite. @@ -411,6 +409,7 @@ To generate the AHF Insight Report, please, follow the below instructions. From Date : 10/24/2024 12:55:39 - To Date : 10/24/2024 14:55:39 Report is generated at : /u02/oracle.ahf/data/repository/collection_Thu_Oct_24_14_55_45_UTC_2024_node_all/custexcclu2-l9lkn1_insights_2024_10_24_14_56_36.zip +Reviewed: ## License diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-awr-dump/README.md b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-awr-dump/README.md index 63824c441..a2b4265cb 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-awr-dump/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-healthcheck/healthcheck-awr-dump/README.md @@ -215,6 +215,8 @@ NOTE: The scripts ask for Begin/End Snap which should be midnight to the next mi End of AWR Extract +Reviewed: + ## License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-mos-note-list/README.md b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-mos-note-list/README.md index 72673413a..bf9f58e96 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-mos-note-list/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-mos-note-list/README.md @@ -1,9 +1,6 @@ -Reviewed: 16.09.2025 - # Exadata Cloud@Customer MOS Note List -# -Collecting all ExaDB-C@C relevant My Oracle Support (MOS) notes +## Collecting all ExaDB-C@C relevant My Oracle Support (MOS) notes To provide an easily accessible repository pointing to MOS notes and keeping this repository up-to-date. @@ -15,7 +12,7 @@ The ExaDB-C@C Specialist Team is updating the list manually and refreshing it as - [2333222.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2333222.1)- Exadata Cloud Service Software Versions: Grid, OS and DB versions -- [2768569.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2768569.1) - Exadata Database Service API/CLI Alignment Matrix]: Feature and functionality comparison of the different ExaDB-C@C management tools +- [2768569.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2768569.1) - Exadata Database Service API/CLI Alignment Matrix: Feature and functionality comparison of the different ExaDB-C@C management tools - [2997504.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2997504.1) - Patching Guidelines For Lower Database Versions (Upgrade Support Required) @@ -47,6 +44,8 @@ The ExaDB-C@C Specialist Team is updating the list manually and refreshing it as - [2940064.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2940064.1) - (ODyS) Oracle Dynamic Scaling on Kubernetes: Setting up Dynamic Scaling on Kubernetes +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/README.md b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/README.md index b539070f0..e9bd51c9b 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/README.md @@ -1,7 +1,5 @@ # Exadata Cloud@Customer Public references -Reviewed: 06.08.2024 - - [Advania, Infromation Technology, Sweden](https://github.com/oracle-devrel/technology-engineering/tree/main/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/Adviana-Island-ExaDBCC.pdf) - [Banque Internationale A Luxemburg (BIL), Financial Services, Luxemburg](https://github.com/oracle-devrel/technology-engineering/tree/main/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/BIL-ExaDBCC.pdf) @@ -16,6 +14,8 @@ Reviewed: 06.08.2024 - [HUS, Healthcare, Finland](https://github.com/oracle-devrel/technology-engineering/tree/main/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/HUS-yhtyma-ExaDBCC.pdf) +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/Advaina-Island-ExaDBCC.pdf b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/Advaina-Island-ExaDBCC.pdf similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/Advaina-Island-ExaDBCC.pdf rename to data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/Advaina-Island-ExaDBCC.pdf diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/BIL-ExaDBCC.pdf b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/BIL-ExaDBCC.pdf similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/BIL-ExaDBCC.pdf rename to data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/BIL-ExaDBCC.pdf diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/EOPYY-ExaDBCC.pdf b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/EOPYY-ExaDBCC.pdf similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/EOPYY-ExaDBCC.pdf rename to data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/EOPYY-ExaDBCC.pdf diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/El-Sewedy-Electric-ExaDBCC.pdf b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/El-Sewedy-Electric-ExaDBCC.pdf similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/El-Sewedy-Electric-ExaDBCC.pdf rename to data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/El-Sewedy-Electric-ExaDBCC.pdf diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/Ellevio-AB-ExaDBCC.pdf b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/Ellevio-AB-ExaDBCC.pdf similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/Ellevio-AB-ExaDBCC.pdf rename to data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/Ellevio-AB-ExaDBCC.pdf diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/HUG-ExaDB-C@C-Use-Case-Slide-Approved-SP.pdf b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/HUG-ExaDB-C@C-Use-Case-Slide-Approved-SP.pdf similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/HUG-ExaDB-C@C-Use-Case-Slide-Approved-SP.pdf rename to data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/HUG-ExaDB-C@C-Use-Case-Slide-Approved-SP.pdf diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/HUG-ExaDBCC.pdf b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/HUG-ExaDBCC.pdf similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/HUG-ExaDBCC.pdf rename to data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/HUG-ExaDBCC.pdf diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/HUS-yhtyma-ExaDBCC.pdf b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/HUS-yhtyma-ExaDBCC.pdf similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/assets/HUS-yhtyma-ExaDBCC.pdf rename to data-platform/exadata-cloud-at-customer/exacc-value/exacc-references/files/HUS-yhtyma-ExaDBCC.pdf diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-training/README.md b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-training/README.md index 4b79fe573..61d6289ec 100644 --- a/data-platform/exadata-cloud-at-customer/exacc-value/exacc-training/README.md +++ b/data-platform/exadata-cloud-at-customer/exacc-value/exacc-training/README.md @@ -1,7 +1,5 @@ # Exadata Cloud@Customer Training -Reviewed: 02.07.2025 - ## Oracle MyLearn At [Oracle Mylearn](https://www.oracle.com/uk/education/training/) Here you can find Training, certification, Oracle guided learning, skill development etc. Some content is free and some you need to buy a subscription for/pay for. @@ -44,6 +42,8 @@ There are other YouTube channels which have relevant training videos published, - [Oracle Universiy](https://shop.oracle.com/apex/f?p=dstore:2:0::NO:RIR,2:PROD_HIER_ID:38022788136100320034918191) +Reviewed: + # License Copyright (c) 2025 Oracle and/or its affiliates. diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/images/Ep1_TN.jpg b/data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep1_TN.jpg similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/images/Ep1_TN.jpg rename to data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep1_TN.jpg diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/images/Ep2_TN.jpg b/data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep2_TN.jpg similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/images/Ep2_TN.jpg rename to data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep2_TN.jpg diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/images/Ep3_TN.jpg b/data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep3_TN.jpg similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/images/Ep3_TN.jpg rename to data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep3_TN.jpg diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/images/Ep4_TN.jpg b/data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep4_TN.jpg similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/images/Ep4_TN.jpg rename to data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep4_TN.jpg diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/images/Ep5_TN.jpg b/data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep5_TN.jpg similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/images/Ep5_TN.jpg rename to data-platform/exadata-cloud-at-customer/exacc-value/files/images/Ep5_TN.jpg diff --git a/data-platform/exadata-cloud-at-customer/exacc-value/images/IORM_TN.jpg b/data-platform/exadata-cloud-at-customer/exacc-value/files/images/IORM_TN.jpg similarity index 100% rename from data-platform/exadata-cloud-at-customer/exacc-value/images/IORM_TN.jpg rename to data-platform/exadata-cloud-at-customer/exacc-value/files/images/IORM_TN.jpg