Posts

Post check 1

#!/bin/bash export ORACLE_SID=<your_cdb_sid> export ORAENV_ASK=NO . oraenv > /dev/null LOG_DIR=/tmp/post_migration_check mkdir -p "$LOG_DIR" LOGFILE="$LOG_DIR/post_migration_check_$(date +%Y%m%d_%H%M%S).log" exec_sql() { sqlplus -s "/ as sysdba" <<EOF set pages 100 set lines 200 set feedback off set heading on set echo off col name for a20 col open_mode for a20 col restricted for a15 col object_type for a20 col object_name for a40 col owner for a20 col comp_name for a35 col status for a15 col wallet_status for a20 col tablespace_name for a30 col encrypted for a10 col activating_pdbname for a25 $1 exit EOF } check_flag() {   if grep -iq "$2" <<< "$1"; then     echo "$3 : PASSED" | tee -a $LOGFILE   else     echo "$3 : NOT PASSED" | tee -a $LOGFILE   fi } echo "=== Post Migration Certification Checks ===" | tee -a $LOGFILE # Step 1: PDB Open Status echo -e "\n--- Step 1: CDB/PDB O...

Post check

#!/bin/bash # Set Oracle environment export ORACLE_SID=<your_cdb_sid> export ORAENV_ASK=NO . oraenv > /dev/null # Log file setup LOG_DIR=/tmp/post_migration_check mkdir -p $LOG_DIR LOGFILE="$LOG_DIR/post_migration_check_$(date +%Y%m%d_%H%M%S).log" # SQL execution wrapper exec_sql() { sqlplus -s "/ as sysdba" <<EOF set pagesize 500 set linesize 200 set feedback off set echo off $1 exit EOF } echo "=== Post Migration Certification Checks ===" | tee -a $LOGFILE # 1. CDB & PDB open modes echo -e "\n--- 1. CDB & PDB Open Modes ---" | tee -a $LOGFILE exec_sql "SELECT name, open_mode, restricted FROM v\$pdbs;" | tee -a $LOGFILE # 2. PDB violations echo -e "\n--- 2. PDB Plug-in Violations ---" | tee -a $LOGFILE exec_sql "SELECT * FROM pdb_plug_in_violations WHERE status='PENDING';" | tee -a $LOGFILE # 3. Listener parameters echo -e "\n--- 3. Listener Parameter ---" | tee -a $LOGFILE e...

Pdb

 insert_pdb() {   echo "Running PDB onboarding..." | tee -a "$LOGFILE"   TGT_TYPE="Pluggable Database"   HOST_NAME=$(hostname -f)   for ENV_FILE in /home/oracle/*.env; do     source "${ENV_FILE}"     if [[ -z "$ORACLE_SID" || -z "$ORACLE_HOME" ]]; then       echo "Environment variables not set in $ENV_FILE. Skipping..." | tee -a "$LOGFILE"       continue     fi     # Verify if the CDB is running     DB_STATUS=$(ps -ef | grep "[p]mon_${ORACLE_SID}" | wc -l)     if [[ "$DB_STATUS" -eq 0 ]]; then       echo "CDB $ORACLE_SID is not running. Skipping..." | tee -a "$LOGFILE"       continue     fi     echo "Processing CDB: $ORACLE_SID" | tee -a "$LOGFILE"     # Fetch PDBs in NORMAL status     PDBS=$(sqlplus -s / as sysdba <<EOF SET HEAD OFF FEEDBACK OFF SELECT pdb_name FROM cdb_pdbs WHERE pdb_name != 'PDB\...

Sql1

#!/bin/bash LOGFILE="/home/oracle/pdb_output.log" : > $LOGFILE # Clear the log file get_pdb_details() {   echo "CDB_UNIQUE_NAME|PDB_NAME|CPU|SGA_MAX_SIZE_GB|SGA_TARGET_GB|PGA_GB|DB_SIZE_GB" > $LOGFILE   # Iterate over each CDB   for ENV_FILE in /home/oracle/*.env; do     source "${ENV_FILE}"     # Validate environment variables     if [[ -z "$ORACLE_SID" || -z "$ORACLE_HOME" ]]; then       continue     fi     # Check if CDB is running     INSTANCE_STATUS=$(timeout 5 sqlplus -s / as sysdba <<EOF SET HEAD OFF FEEDBACK OFF SELECT instance_name FROM v\$instance WHERE status = 'OPEN'; EXIT; EOF )     if [[ -z "$INSTANCE_STATUS" ]]; then       continue     fi     # Fetch CDB unique name     CDB_UNIQUE_NAME=$(sqlplus -s / as sysdba <<EOF SET HEAD OFF FEEDBACK OFF SELECT value FROM v\$parameter WHERE name = 'db_unique_name'; EXIT; EO...

Sql

get_pdb_details() {   echo "Fetching PDB Details..." | tee -a $LOGFILE   # Iterate over each CDB   for ENV_FILE in /home/oracle/*.env; do     echo "Sourcing environment file: $ENV_FILE" | tee -a $LOGFILE     source "${ENV_FILE}"     # Validate environment variables     if [[ -z "$ORACLE_SID" || -z "$ORACLE_HOME" ]]; then       echo "Environment variables not set in $ENV_FILE. Skipping..." | tee -a $LOGFILE       continue     fi     # Check if CDB is running     INSTANCE_STATUS=$(timeout 5 sqlplus -s / as sysdba <<EOF SET HEAD OFF FEEDBACK OFF SELECT instance_name FROM v\$instance WHERE status = 'OPEN'; EXIT; EOF )     if [[ -z "$INSTANCE_STATUS" ]]; then       echo "CDB $ORACLE_SID is not running. Skipping..." | tee -a $LOGFILE       continue     fi     echo -e "\nProcessing CDB: $ORACLE_SID" | tee -a $LOGFIL...

Join

SELECT      'emcli add_target -name="' || inst1.cluster_dbname || '" -type="rac_database" -host="' ||     inst1.host_name || '" -monitor_mode="1" -properties="ServiceName:' || inst1.SERVICE_NAME ||      '; ClusterName:' || inst1.CLUSTER_NAME || '; instances=' || inst1.tgt_name ||      ':oracle_database;' || inst2.tgt_name || ':oracle_database"' AS emcli_command,     inst1.tgt_name,      inst2.tgt_name,      inst1.cluster_dbname FROM      (SELECT * FROM TEST.OEM_onboard_database_instance) inst1,     (SELECT * FROM TEST.OEM_onboard_database_instance) inst2 WHERE      inst1.cluster_dbname = inst2.cluster_dbname     AND inst1.tgt_name <> inst2.tgt_name     AND inst1.cluster_dbname IN (SELECT DISTINCT cluster_dbname FROM TEST.OEM_onboard_database_instance);

Asm

#!/bin/bash # Set environment variables ORACLE_SID=YOUR_SID ORACLE_HOME=/path/to/oracle_home export ORACLE_SID ORACLE_HOME LOG_DIR=/path/to/logs SQL_DIR=/path/to/sql mkdir -p "$LOG_DIR" mkdir -p "$SQL_DIR" DB_USER="/ as sysdba" # Function to generate SQL data for each target type generate_sql() {   local TARGET_TYPE=$1   local SQL_FILE="$SQL_DIR/${TARGET_TYPE}_data.sql"   local OUTPUT_FILE="/tmp/${TARGET_TYPE}_data.txt"   case "$TARGET_TYPE" in     cluster)       echo "SET HEADING OFF; SET FEEDBACK OFF; SET PAGESIZE 0;" > "$SQL_FILE"       echo "SELECT TARGET_NAME || '|' || HOST_NAME || '|' || CREDENTIALS || '|' || CLUSTER_NAME || '|' || VIP_ADDRESS FROM CLUSTER_TARGETS;" >> "$SQL_FILE"       ;;     # Additional target types can be added here     *)       echo "[ERROR] Unknown target type: $TARGET_TYPE"       return 1       ;;   esac ...