#数据库目录
DBBACKUP_DIR=$backupDB_SDM_dir
#DBBACKUP_DIR="/opt/oracle/C20_spcbackup_20150210103527"
#Recover_date_DB format: YYYY-MM-DD 2018-04-16
#Recover_date_DB=`date +%Y-%m-%d`
#Recover_date_DB='2018-04-19'
dump_directory=$DBBACKUP_DIR/$Recover_date_DB
#数据库ip
DB_IP=$DB_IP_RECOVER_TO
APP_IP=$APP_IP_RECOVER_TO
DB_server_ip=$DB_IP
writeLog $log_file_name "The DB_server_ip is $DB_server_ip ..........." $log_path
#数据库监听端口
DB_Port=$DB_listen_port
#获取数据system用户
DB_System_username="system"
#数据库实例名
DB_instance=$Oracle_instance_name
#数据库System用户密码
DB_System_password=$Oracle_system_pwd
#数据库钱包密码
DB_wallet_password=$Oracle_wallet_pwd
#DB Servicedesk用户和密码
DB_APP_username=$DB_SDM_username
DB_APP_password=$DB_SDM_password
sdm_number=$SDM_Serial_Number
user_list="inoc_sdm_servicedesk_${sdm_number},inoc_sdm_studio_${sdm_number},inoc_sdm_message_${sdm_number},inoc_sdm_archive_${sdm_number},inoc_sdm_si_${sdm_number},inoc_sdm_sdmreport_${sdm_number},inoc_sdm_mostcbb_${sdm_number},inoc_sdm_servicedesk_${sdm_number}_v"
sys_user_list="SYSTEM,SYS,SYSMAN,OUTLN,ORDDATA,APEX_030200,OWBSYS_AUDIT,OWBSYS,PUBLIC,FLOWS_FILES,OLAPSYS,MDDATA,SPATIAL_WFS_ADMIN_USR,SPATIAL_CSW_ADMIN_USR,MGMT_VIEW,APEX_PUBLIC_USER,SCOTT,SELECT_CATALOG_ROLE,EXECUTE_CATALOG_ROLE"
checkBackUpPath
checkDB
grantdumppermission
configDB
importDB
revokeRole
revokedumppermission
updateIP
#校验备份数据dump文件是否存在
checkBackUpPath()
{
if [ $except_flag != "min" ] && [ $except_flag != "more" ] && [ $except_flag != "switch" ]
then
echo "The cmd parameter error!"
exit 1
fi
if [ ! -f ${dump_directory}/checkDB.log ]
then
> ${dump_directory}/checkDB.log
fi
if [ ! -f ${dump_directory}/configDB.log ]
then
> ${dump_directory}/configDB.log
fi
if [ ! -d ./dbscript ];then
mkdir ./dbscript
fi
#chown -R oracle:dba ../BackkupAndRecoverTools
chmod -R a+rwx ../BackupAndRecoverTools
chown -R oracle:dba ${DBBACKUP_DIR}
chmod -R a+rwx ${DBBACKUP_DIR}
cp -avx ./template/* ./dbscript/
chown -R oracle:dba ./dbscript/
}
#校验表连接
checkDB()
{
#check DB_System_username
writeLog $log_file_name "Check ${DB_System_username} connection..." $log_path
su - oracle -c "sqlplus ${DB_System_username}/${DB_System_password}@//${DB_server_ip}:${DB_Port}/${DB_instance} >${dump_directory}/checkDB.log <<EOF
quit;
EOF"
if [ $? -ne 0 ]; then
writeLog $log_file_name "Can not connect to ${DB_System_username}" $log_path
exit 1;
fi
RESULT=`cat ${dump_directory}/checkDB.log |grep -v 'ORA-28011: the account will expire soon' | grep ORA`
if [ "$RESULT" ]
then
writeLog $log_file_name "Can not connect to ${DB_System_username}, please check ${dump_directory}/checkDB.log" $log_path
exit 1;
fi
#rm ${dump_directory}/checkDB.log
writeLog $log_file_name "Connect to ${DB_System_username} successfully" $log_path
}
#恢复操作赋权
grantdumppermission()
{
writeLog $log_file_name "start grant sdm dump permission begin..." $log_path
su - oracle -c "export ORACLE_SID=${DB_instance} ; sqlplus / as sysdba >${dump_directory}/grant_sdm_dump_permission_for_rollback.log <<END
start $INSTALL_HOME/dbscript/impdp/grant_dump.sql;
exit;
END
"
if [ $Oracle_instance_name != $MOST_instance_name ]
then
writeLog $log_file_name "start grant most dump permission begin..." $log_path
sed -i "s#@{DB_MOST_USER}#MOSTCMDB_${sdm_number}#g" $INSTALL_HOME/dbscript/impdp/grant_dump.sql
su - oracle -c "export ORACLE_SID=${MOST_instance_name} ; sqlplus / as sysdba >${dump_directory}/grant_most_dump_permission_for_rollback.log <<END
start $INSTALL_HOME/dbscript/impdp/grant_dump.sql;
exit;
END
"
fi
writeLog $log_file_name "grant dump permission successfully..." $log_path
}
#创建Dump directory
configDB()
{
echo "**************************************"
echo "Starting to execute config_import.sql file..."
echo "**************************************"
writeLog $log_file_name "Starting to execute config_import.sql file..." $log_path
sed -i "s#@{systempassword}#${DB_System_password}#g" $INSTALL_HOME/dbscript/config_import.sql
sed -i "s#@{dbserverip}#${DB_server_ip}#g" $INSTALL_HOME/dbscript/config_import.sql
sed -i "s#@{listenport}#${DB_Port}#g" $INSTALL_HOME/dbscript/config_import.sql
sed -i "s#@{sid}#${DB_instance}#g" $INSTALL_HOME/dbscript/config_import.sql
sed -i "s#@{DumpDir}#${dump_directory}#g" $INSTALL_HOME/dbscript/config_import.sql
chmod -R 777 $INSTALL_HOME/dbscript/config_import.sql
su - oracle -c "export ORACLE_SID=$DB_instance;sqlplus -S /nolog @$INSTALL_HOME/dbscript/config_import.sql >${dump_directory}/configDB.log"
if [ $Oracle_instance_name != $MOST_instance_name ];then
cp ./template/config_import.sql ./dbscript/config_import_most.sql
sed -i "s#@{systempassword}#${DB_System_password}#g" $INSTALL_HOME/dbscript/config_import_most.sql
sed -i "s#@{dbserverip}#${DB_server_ip}#g" $INSTALL_HOME/dbscript/config_import_most.sql
sed -i "s#@{listenport}#${DB_Port}#g" $INSTALL_HOME/dbscript/config_import_most.sql
sed -i "s#@{sid}#${MOST_instance_name}#g" $INSTALL_HOME/dbscript/config_import_most.sql
sed -i "s#@{DumpDir}#${dump_directory}#g" $INSTALL_HOME/dbscript/config_import_most.sql
chmod -R 777 $INSTALL_HOME/dbscript/config_import.sql
su - oracle -c "export ORACLE_SID=$MOST_instance_name;sqlplus -S /nolog @$INSTALL_HOME/dbscript/config_import_most.sql >/${dump_directory}/log/most_configDB"
fi
echo "Fihished to execute config_import.sql file..."
}