Welcome

首页 / 数据库 / MySQL / Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4]

Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4]
Primary: 11.2.0.1 单机,Site A。
Standby: 11.2.0.1 单机,Site B、Site C。
当前DG环境示意图:

需求:升级至11.2.0.4
升级思路:
主库暂停归档传输;备库安装新版本软件,备库启动到mount;主库安装软件,主库升级数据库,主库启用归档传输,备库开启日志恢复。注意:
11g新版本软件安装到一个新目录下,注意copy之前的spfile、密码文件、network file等(监听配置文件的静态监听部分需要修改);
备库只升级软件版本。数据库升级是通过主库升级后通过应用主库归档完成升级和同步的。
  • 1.主库暂停归档向备库传输
  • 2.备库在新目录下安装新版本软件
  • 3.备库启动到mount状态
  • 4.主库安装软件,升级数据库
  • 5.主库启用归档向备库传输
  • 6.备库开启日志恢复
  • 7.检查备库、主库升级情况
  • 8.定时任务检查修正

1.主库暂停归档向备库传输

show parameter log_archive_dest_state_X
alter system set log_archive_dest_state_X=defer scope=both sid="*";这里是暂停Site A的主库的log_archive_dest_state_2和log_archive_dest_state_3show parameter log_archive_dest_state_2show parameter log_archive_dest_state_3alter system set log_archive_dest_state_2=defer scope=both sid="*";alter system set log_archive_dest_state_3=defer scope=both sid="*";

2.备库在新目录下安装新版本软件

2.1 关闭数据库,监听。shutdown immediatelsnrctl stop2.2 备库在新目录下安装Oracle 11.2.0.4 软件。
两个备库操作方法一样,以Site C为例:
--Site C:--创建新的$ORACLE_HOME目录$ mkdir -p /u01/app/oracle/product/11.2.0.4/dbhome_1--编辑oracle用户环境变量,修改ORACLE_HOME变量值为新的目录vi ~/.bash_profileexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1

3.备库启动到mount状态

环境变量修改为新目录 ORACLE_HOME 11.2.0.4
新目录注意copy之前的spfile和network file(tnsnames.ora listener.ora)等两个备库操作方法一样,以Site C为例:
--Site C:--network file(tnsnames.ora listener.ora sqlnet.ora)[oracle@oracle2 admin]$ cp /u01/app/oracle/product/11.2.0/network/admin/*.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/--SPFILEcp /u01/app/oracle/product/11.2.0/dbs/spfileorcl.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/启动数据库到mount状态,启动监听。

4.主库安装软件,升级数据库

安装、升级相关过程:4.1 备份数据库
升级是一个很大的动作,升级前需要事先备份数据库。--rman.sqlmore rman.sql run{allocate channel d1 TYPE disk;allocate channel d2 TYPE disk;allocate channel d3 TYPE disk;allocate channel d4 TYPE disk;backup as compressed backupset database format "/home/oradata/rman/data_%d_%T_%s.bak" plus archivelog format "/home/oradata/rman/arch_%d_%T_%s.bak";release channel d1;release channel d2;release channel d3;release channel d4; } --rman.shcat rman.sh#!/bin/bashexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0export ORACLE_SID=orclexport LD_LIBRARY_PATH=$ORACLE_HOME/libexport PATH=$PATH:$ORACLE_HOME/bin:$HOME/binrman target / @/home/oradata/rman/rman.sql log=/home/oradata/rman/rman.log --nohup 执行 备份数据库nohup sh rman.sh &4.2 关闭数据库,监听
停止监听,关闭数据库:$ lsnrctl stopSQL> shutdown immediate 4.3 新目录下安装新版本软件
主库:./runInstaller 图形安装新版本软件(upgrade)。
root需要执行的脚本按提示执行。
注意,监听程序不需要配置。4.4 旧版本软件执行升级检查
在11.2.0.1的sqlplus 执行11.2.0.4的utlu112i.sql,进行升级检查。$ sqlplus / as sysdba SQL> startup SQL> SPOOL upgrade_info.logSQL> @/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlu112i.sql SQL> SPOOL OFF根据提示修正不符合升级条件的地方。--purge DBA_RECYCLEBIN; select count(*) from DBA_RECYCLEBIN; purge DBA_RECYCLEBIN; --EXECUTE dbms_stats.gather_dictionary_stats;EXECUTE dbms_stats.gather_dictionary_stats;4.5 升级前确认无效对象数量select count(*) from dba_objects where status<>"VALID"; 这里是0。--正常关闭数据库:shutdown immediate4.6 新版本软件对应的环境变量
修改环境变量中指定11.2.0.4,并用source或者重新使用oracle用户登录生效export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME= /u01/app/oracle/product/11.2.0.4/dbhome_14.7 新版本软件环境,spfile,密码文件和网络配置相关文件
copy 参数文件spfile, network file「tnsnames.ora listener.ora sqlnet.ora」, 密码文件,--拷贝参数文件spfile:[oracle@oracle1 ~]$ cp /u01/app/oracle/product/11.2.0/dbs/spfileorcl.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/--拷贝密码文件:[oracle@oracle1 ~]$ cp /u01/app/oracle/product/11.2.0/dbs/orapworcl /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/orapworcl--拷贝网络配置相关文件「tnsnames.ora listener.ora sqlnet.ora」[oracle@oracle1 ~]$ cp /u01/app/oracle/product/11.2.0/network/admin/*.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/--修正DG listener.ora 中静态监听内容(ORACLE_HOME),然后重启监听文件SID_LIST_LISTENER=(SID_DESC=(GLOBAL_DBNAME = orcl)(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/dbhome_1)(SID_NAME = orcl))4.8 升级数据库--upgrade模式打开数据库SQL> startup UPGRADESQL> @?/rdbms/admin/catupgrd.sqlSQL> startupSQL> @?/rdbms/admin/utlu112s.sqlSQL> select count(*) from dba_objects where status<>"VALID"; 460SQL> @?/rdbms/admin/utlrp.sql0SQL> shutdown immediateSQL> startup

5.主库启用归档向备库传输

show parameter log_archive_dest_state_X
alter system set log_archive_dest_state_X=enable scope=both sid="*";alter system set log_archive_dest_state_2=enable scope=both sid="*";alter system set log_archive_dest_state_3=enable scope=both sid="*";show parameter log_archive_dest_state_2show parameter log_archive_dest_state_3

6.备库开启日志恢复

备库mount状态下开启日志恢复,等待恢复完成,终止日志恢复然后将数据库在open状态后再开启日志恢复。--mount状态下开启日志恢复startup mountalter database recover managed standby database disconnect from session;--等待恢复完成...--取消日志恢复alter database recover managed standby database cancel;--打开数据库alter database open;--open状态下开启日志恢复alter database recover managed standby database using current logfile disconnect from session;

7.检查备库、主库升级情况

select ACTION_TIME,ACTION,NAMESPACE,VERSION,ID from registry$history;select ACTION_TIME,ACTION,NAMESPACE,VERSION,ID from registry$historyACTION_TIME ACTION NAMESPACEVERSIONID--------------------------------------------------------------------------- ------------------------------ ------------------------------ ------------------------------ ----------08-FEB-17 03.39.36.894771 AMVIEW INVALIDATE 828960108-FEB-17 03.39.36.926136 AMUPGRADESERVER 11.2.0.4.0

8.定时任务检查修正

检查各机器是否有定时任务,比如这里有定时任务有定期删除归档的任务。
需要根据新环境的变量修改脚本中ORACLE_HOME变量值。
以Site A为例,确认对应变量都是新版本数据库的变量值:[oracle@oracle1 admin]$ crontab -l0 0 * * * sh /home/oradata/scripts/delarch.sh > /dev/null 2&>1#[oracle@oracle1 admin]$ cat/home/oradata/scripts/delarch.sh#!/bin/bashexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1export ORACLE_SID=orclexport PATH=$PATH:$ORACLE_HOME/bin:$HOME/binrman target / @/home/oradata/scripts/delarch.sql log=/home/oradata/scripts/delarch.log [oracle@oracle1 admin]$ cat /home/oradata/scripts/delarch.sqlcrosscheck archivelog all;delete noprompt archivelog all completed before "sysdate-7";[oracle@oracle1 admin]$ 至此,Oracle DataGuard 从版本11.2.0.1成功升级到版本11.2.0.4。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址