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\$SEED' AND status = 'NORMAL';
EXIT;
EOF
)
if [ -z "$PDBS" ]; then
echo "No PDBs in NORMAL status for $ORACLE_SID. Skipping..." | tee -a "$LOGFILE"
continue
fi
for PDB_NAME in $PDBS; do
TGT_NAME="${ORACLE_SID}_${PDB_NAME}"
DEFAULT_SERVICE_NAME="$PDB_NAME"
IS_APPLICATION_PDB="NO"
IS_APPLICATION_ROOT="NO"
CONTAINER_NAME="$ORACLE_SID"
ONBOARDED="YES" # Added a default value for ONBOARDED
echo "Onboarding PDB: $PDB_NAME" | tee -a "$LOGFILE"
sqlplus -s "$DB_USER/$DB_PASS@$DB_SID" <<EOF
INSERT INTO TEST.OEM_ONBOARD_PDB
(TGT_NAME, TGT_TYPE, HOST_NAME, ONBOARDED, ONBOARD_DT, DEFAULT_SERVICE_NAME, IS_APPLICATION_PDB, IS_APPLICATION_ROOT, CONTAINER)
VALUES
('$TGT_NAME', '$TGT_TYPE', '$HOST_NAME', '$ONBOARDED', SYSDATE, '$DEFAULT_SERVICE_NAME', '$IS_APPLICATION_PDB', '$IS_APPLICATION_ROOT', '$CONTAINER_NAME');
COMMIT;
EXIT;
EOF
echo "PDB onboarding completed for: $TGT_NAME" | tee -a "$LOGFILE"
done
done
}
Comments
Post a Comment