1.备库备份oracle_home目录
备份oracle_home目录的主要目地是为了一旦补丁应用失败可以立即进行回滚。
[oracle@slave ~]$ du -sh $ORACLE_HOME
##进入oraclehome目录 cd $ORACLE_HOME/ cd .. ls
##压缩db_1目录的内容完成oracle数据库软件备份
tar -cvzf db_home.tar.g dbhome_1/
......
ls
查看压缩后的目录
du -sh db_home.tar.g
2.备库关闭数据库服务及监听程序
注意:如果主备在生产期间需要停止备库的同步服务
##关闭数据库 sqlplus / as sysdba shu immediate exit ##关闭监听 lsnrctl stop
3.备库升级Opatch
##删除当前Opatch目录
rm -rf OPatch/ ##将opatch压缩包和补丁包上传到soft目录下 cd /soft ls
unzip -d $ORACLE_HOME p6880880_190000_Linux-x86-64.zip
##查看OPatch版本
/opt/oracle/product/19c/dbhome_1/OPatch/opatch version
4.备库应用35943157补丁
#解压补丁
cd /soft ls
unzip p35943157_190000_Linux-x86-64.zip
......
cd 35943157/ ls
$ORACLE_HOME/OPatch/opatch prereq -help
##检查补丁是否冲突
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail
##应用补丁
$ORACLE_HOME/OPatch/opatch apply
##一直输入y回车
##检查补丁应用情况
$ORACLE_HOME/OPatch/opatch lsinv
......
5.主库备份 oracle_home目录、上传补丁包
cd /soft lscd $ORACLE_HOME/ cd .. ls tar -cvzf db_home.tar.g dbhome_1/
6.主库关闭数据库及监听程序
##关闭数据库
sqlplus / as sysdba shu immediate exit
##关闭监听
lsnrctl stop
7.主库升级Opatch
升级操作与备库相同(主库注册补丁后切换至备库,备库自动完成补丁的注册)
主库再进行3,4
##注册前的检查
##先启动监听 lsnrctl start ##启动数据库 sqlplus / as sysdba startup exit cd $ORACLE_HOME/OPatch ./datapatch -prereq
##检查完成开始注册补丁
./datapatch -verbose
漫长的等待...
##注册完成无报错
8.编译无效对象
cd $ORACLE_HOME/rdbms/admin sqlplus /nolog SQL> CONNECT / AS SYSDBA SQL> @utlrp.sql
9.检查主库的补丁注册情况
SQL> select VERSION,VERSION_FULL from dba_registry;
10.备库切换主库完成补丁注册
Oracle 19c单实例的ADG主备切换
前提准备:(主备库打开监听)
lsnrctl start
主备切换开始时,主库启动到open 状态,备库启动到mount状态
1.主库
sqlplus / as sysdba SQL>startup SQL> select name,open_mode,switchover_status from v$database; SQL> alter system switch logfile; SQL> alter system archive log current; SQL> alter database commit to switchover to physical standby with session shutdown; SQL> shutdown abort SQL> startup mount SQL> alter database open; SQL> select switchover_status from v$database;
2、备库在主库启动时,备库在mount状态
sqlplus / as sysdba SQL>startup mount SQL> alter database commit to switchover to primary with session shutdown; 这里可能会出现错误: ORA-16139: media recovery required。 下面有解决方法 解决完后,可以不要再次执行了。直接执行下面的命令。 SQL> alter database open; SQL> select name,open_mode,switchover_status from v$database;
⚫️出现了ORA-16139: media recovery required错误处理
怀疑可能是由于有日志未应用造成的,执行如下语句查询:
SQL> select APPLIED,SEQUENCE# from v$archived_log; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; Database altered. SQL> alter database commit to switchover to primary; Database altered.
3、新备库(原主库)启用实时日志应用
SQL> alter database recover managed standby database using current logfile disconnect from session; SQL> select name,open_mode,switchover_status from v$database;
4、新主库切换日志
SQL> alter system switch logfile;
5、分别查看当前主备库切换后当前日志序列号
主库: SQL> archive log list 备库: SQL> archive log list
主:
备:
6、查看当前主备库状态
主库: SQL> select name,open_mode,switchover_status from v$database; 备库: SQL> select name,open_mode,switchover_status from v$database;
主:
备:
##检查备库补丁注册情况
SQL> select VERSION,VERSION_FULL from dba_registry;
补丁升级完成!!!