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_3
show parameter log_archive_dest_state_2
show parameter log_archive_dest_state_3
alter 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 immediate
lsnrctl
stop
2.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_profile
export 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/
--SPFILE
cp
/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.sql
more 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.sh
cat rman.sh
#!/bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=
$ORACLE_BASE/product/11.2.0
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=
$ORACLE_HOME/lib
export PATH=
$PATH:
$ORACLE_HOME/bin:
$HOME/bin
rman target / @/home/oradata/rman/rman.sql
log=/home/oradata/rman/rman.log
--nohup 执行 备份数据库
nohup sh rman.sh &
4.2 关闭数据库,监听
停止监听,关闭数据库:
$ lsnrctl
stop
SQL>
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.log
SQL> @
/u01/app
/oracle/product
/11.2.0.4/dbhome_1
/rdbms/admin/utlu112i.sql
SQL> SPOOL OFF