143 lines
4.0 KiB
Plaintext
143 lines
4.0 KiB
Plaintext
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
function usage {
|
||
|
|
echo "Usage: crdb -n|--name <DB_NAME> -v|--version <11.2.0.4|12.1|12.2|19|21>"
|
||
|
|
}
|
||
|
|
|
||
|
|
########
|
||
|
|
# MAIN #
|
||
|
|
########
|
||
|
|
|
||
|
|
# parameter processing
|
||
|
|
while [ "$1" != "" ]; do
|
||
|
|
case $1 in
|
||
|
|
-n | --name ) shift
|
||
|
|
DB_NAME="$1"
|
||
|
|
;;
|
||
|
|
-v | --version ) shift
|
||
|
|
VERSION="$1"
|
||
|
|
;;
|
||
|
|
* ) usage
|
||
|
|
exit 1
|
||
|
|
esac
|
||
|
|
shift
|
||
|
|
done
|
||
|
|
|
||
|
|
if [ -z "${DB_NAME}" ] || [ -z "${VERSION}" ]
|
||
|
|
then
|
||
|
|
usage
|
||
|
|
exit -2
|
||
|
|
fi
|
||
|
|
|
||
|
|
# version/template selection
|
||
|
|
if [ "$VERSION" == "21" ]; then
|
||
|
|
. oraenv <<EOF!
|
||
|
|
SET21
|
||
|
|
EOF!
|
||
|
|
export ORACLE_SID=${DB_NAME}PRD
|
||
|
|
BACKUP_DB_NAME=ASTY
|
||
|
|
BACKUP_DIR=/mnt/yavin4/tmp/_oracle_/orabackup/_keep_/Standalone/21
|
||
|
|
echo "spfile='${ORACLE_BASE}/admin/${ORACLE_SID}/spfile/spfile${ORACLE_SID}.ora'" > ${ORACLE_BASE}/dbs/init${ORACLE_SID}.ora
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ "$VERSION" == "19" ]; then
|
||
|
|
. oraenv <<EOF!
|
||
|
|
SET19
|
||
|
|
EOF!
|
||
|
|
export ORACLE_SID=${DB_NAME}PRD
|
||
|
|
BACKUP_DB_NAME=ASTY
|
||
|
|
BACKUP_DIR=/mnt/yavin4/tmp/_oracle_/orabackup/_keep_/Standalone/19
|
||
|
|
echo "spfile='${ORACLE_BASE}/admin/${ORACLE_SID}/spfile/spfile${ORACLE_SID}.ora'" > ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora
|
||
|
|
fi
|
||
|
|
|
||
|
|
|
||
|
|
if [ "$VERSION" == "11.2.0.4" ]; then
|
||
|
|
. oraenv <<EOF!
|
||
|
|
SET112
|
||
|
|
EOF!
|
||
|
|
export ORACLE_SID=${DB_NAME}PRD
|
||
|
|
BACKUP_DB_NAME=WEDGE
|
||
|
|
BACKUP_DIR=/mnt/yavin4/tmp/_oracle_/orabackup/_keep_/Standalone/11.2.0.4
|
||
|
|
echo "spfile='${ORACLE_BASE}/admin/${ORACLE_SID}/spfile/spfile${ORACLE_SID}.ora'" > ${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora
|
||
|
|
fi
|
||
|
|
|
||
|
|
|
||
|
|
if [ -z "${BACKUP_DIR}" ]
|
||
|
|
then
|
||
|
|
echo "No template found for this database version"
|
||
|
|
exit -1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# admin directories creation
|
||
|
|
mkdir -p ${ORACLE_BASE}/admin/${ORACLE_SID}/adump
|
||
|
|
mkdir -p ${ORACLE_BASE}/admin/${ORACLE_SID}/pfile
|
||
|
|
mkdir -p ${ORACLE_BASE}/admin/${ORACLE_SID}/spfile
|
||
|
|
mkdir -p ${ORACLE_BASE}/admin/${ORACLE_SID}/divers
|
||
|
|
|
||
|
|
# not automaticly created in 11.2.0.4
|
||
|
|
mkdir -p /data/${ORACLE_SID}
|
||
|
|
|
||
|
|
# init and spfile creation
|
||
|
|
cp ${BACKUP_DIR}/init${BACKUP_DB_NAME}PRD.ora ${ORACLE_BASE}/admin/${ORACLE_SID}/pfile/init${ORACLE_SID}.ora
|
||
|
|
sed -i -r "s/${BACKUP_DB_NAME}/${DB_NAME}/" ${ORACLE_BASE}/admin/${ORACLE_SID}/pfile/init${ORACLE_SID}.ora
|
||
|
|
|
||
|
|
echo ${ORACLE_SID}
|
||
|
|
sqlplus /nolog <<EOF!
|
||
|
|
connect / as sysdba
|
||
|
|
create spfile='${ORACLE_BASE}/admin/${ORACLE_SID}/spfile/spfile${ORACLE_SID}.ora' from pfile='${ORACLE_BASE}/admin/${ORACLE_SID}/pfile/init${ORACLE_SID}.ora';
|
||
|
|
startup nomount;
|
||
|
|
EOF!
|
||
|
|
|
||
|
|
# duplicate from template
|
||
|
|
rman auxiliary / <<EOF!
|
||
|
|
run
|
||
|
|
{
|
||
|
|
allocate auxiliary channel aux01 device type disk;
|
||
|
|
allocate auxiliary channel aux02 device type disk;
|
||
|
|
allocate auxiliary channel aux03 device type disk;
|
||
|
|
allocate auxiliary channel aux04 device type disk;
|
||
|
|
allocate auxiliary channel aux05 device type disk;
|
||
|
|
allocate auxiliary channel aux06 device type disk;
|
||
|
|
allocate auxiliary channel aux07 device type disk;
|
||
|
|
allocate auxiliary channel aux08 device type disk;
|
||
|
|
allocate auxiliary channel aux09 device type disk;
|
||
|
|
allocate auxiliary channel aux10 device type disk;
|
||
|
|
duplicate target database to ${DB_NAME} backup location '${BACKUP_DIR}/backupset/';
|
||
|
|
}
|
||
|
|
EOF!
|
||
|
|
|
||
|
|
|
||
|
|
sqlplus /nolog <<EOF!
|
||
|
|
connect / as sysdba
|
||
|
|
shutdown immediate;
|
||
|
|
startup;
|
||
|
|
EOF!
|
||
|
|
|
||
|
|
|
||
|
|
# apply last installed PSU
|
||
|
|
if [ "$VERSION" == "11.2.0.4" ]; then
|
||
|
|
sqlplus /nolog <<EOF!
|
||
|
|
connect / as sysdba
|
||
|
|
@$ORACLE_HOME/rdbms/admin/catbundle psu apply
|
||
|
|
@$ORACLE_HOME/rdbms/admin/utlrp
|
||
|
|
EOF!
|
||
|
|
else
|
||
|
|
cd ${ORACLE_HOME}/OPatch
|
||
|
|
./datapatch
|
||
|
|
sqlplus /nolog <<EOF!
|
||
|
|
connect / as sysdba
|
||
|
|
@$ORACLE_HOME/rdbms/admin/utlrp
|
||
|
|
-- recompile all in PDB$SEED
|
||
|
|
alter pluggable database PDB\$SEED close immediate instances=ALL;
|
||
|
|
alter pluggable database PDB\$SEED open read write instances=ALL;
|
||
|
|
alter session set container=PDB\$SEED;
|
||
|
|
alter session set "_ORACLE_SCRIPT"=true;
|
||
|
|
@?/rdbms/admin/utlrp
|
||
|
|
alter session set "_ORACLE_SCRIPT"=false;
|
||
|
|
alter session set container=CDB\$ROOT;
|
||
|
|
alter pluggable database PDB\$SEED close immediate instances=ALL;
|
||
|
|
alter pluggable database PDB\$SEED open read only instances=ALL;
|
||
|
|
EOF!
|
||
|
|
fi
|
||
|
|
|