前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4]

Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4]

作者头像
Alfred Zhao
发布2019-05-24 20:28:55
9070
发布2019-05-24 20:28:55
举报

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环境示意图:

DG环境
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

代码语言:javascript
复制
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 关闭数据库,监听。

代码语言:javascript
复制
shutdown immediate
lsnrctl stop

2.2 备库在新目录下安装Oracle 11.2.0.4 软件。 两个备库操作方法一样,以Site C为例: --Site C:

代码语言:javascript
复制
--创建新的$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:

代码语言:javascript
复制
--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 备份数据库 升级是一个很大的动作,升级前需要事先备份数据库。

代码语言:javascript
复制
--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 关闭数据库,监听 停止监听,关闭数据库:

代码语言:javascript
复制
$ lsnrctl stop
SQL> shutdown immediate 

4.3 新目录下安装新版本软件 主库:

./runInstaller 图形安装新版本软件(upgrade)。 root需要执行的脚本按提示执行。 注意,监听程序不需要配置。

4.4 旧版本软件执行升级检查 在11.2.0.1的sqlplus 执行11.2.0.4的utlu112i.sql,进行升级检查。

代码语言:javascript
复制
$ 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

根据提示修正不符合升级条件的地方。

代码语言:javascript
复制
--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 升级前确认无效对象数量

代码语言:javascript
复制
select count(*) from dba_objects where status<>'VALID'; 
这里是0。

--正常关闭数据库:
shutdown immediate

4.6 新版本软件对应的环境变量 修改环境变量中指定11.2.0.4,并用source或者重新使用oracle用户登录生效

代码语言:javascript
复制
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME= /u01/app/oracle/product/11.2.0.4/dbhome_1

4.7 新版本软件环境,spfile,密码文件和网络配置相关文件 copy 参数文件spfile, network file「tnsnames.ora listener.ora sqlnet.ora」, 密码文件,

代码语言:javascript
复制
--拷贝参数文件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 升级数据库

代码语言:javascript
复制
--upgrade模式打开数据库
SQL> startup UPGRADE

SQL> @?/rdbms/admin/catupgrd.sql

SQL> startup

SQL> @?/rdbms/admin/utlu112s.sql

SQL> select count(*) from dba_objects where status<>'VALID'; 
460
SQL> @?/rdbms/admin/utlrp.sql
0

SQL> shutdown immediate
SQL> startup

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

show parameter log_archive_dest_state_X alter system set log_archive_dest_state_X=enable scope=both sid='*';

代码语言:javascript
复制
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_2
show parameter log_archive_dest_state_3

6.备库开启日志恢复

备库mount状态下开启日志恢复,等待恢复完成,终止日志恢复然后将数据库在open状态后再开启日志恢复。

代码语言:javascript
复制
--mount状态下开启日志恢复
startup mount
alter 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;

代码语言:javascript
复制
select ACTION_TIME,ACTION,NAMESPACE,VERSION,ID from registry$history

ACTION_TIME                                                                 ACTION                         NAMESPACE                      VERSION                                ID
--------------------------------------------------------------------------- ------------------------------ ------------------------------ ------------------------------ ----------
08-FEB-17 03.39.36.894771 AM                                                VIEW INVALIDATE                                                                                 8289601
08-FEB-17 03.39.36.926136 AM                                                UPGRADE                        SERVER                         11.2.0.4.0

8.定时任务检查修正

检查各机器是否有定时任务,比如这里有定时任务有定期删除归档的任务。 需要根据新环境的变量修改脚本中ORACLE_HOME变量值。 以Site A为例,确认对应变量都是新版本数据库的变量值:

代码语言:javascript
复制
[oracle@oracle1 admin]$ crontab -l
0 0 * * * sh /home/oradata/scripts/delarch.sh > /dev/null 2&>1#

[oracle@oracle1 admin]$ cat  /home/oradata/scripts/delarch.sh
#!/bin/bash
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
rman target / @/home/oradata/scripts/delarch.sql log=/home/oradata/scripts/delarch.log 

[oracle@oracle1 admin]$ cat /home/oradata/scripts/delarch.sql
crosscheck archivelog all;
delete noprompt archivelog all completed before "sysdate-7";

[oracle@oracle1 admin]$ 

至此,Oracle DataGuard 从版本11.2.0.1成功升级到版本11.2.0.4。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.主库暂停归档向备库传输
  • 2.备库在新目录下安装新版本软件
  • 3.备库启动到mount状态
  • 4.主库安装软件,升级数据库
  • 5.主库启用归档向备库传输
  • 6.备库开启日志恢复
  • 7.检查备库、主库升级情况
  • 8.定时任务检查修正
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档