Linux6.4+Oracle11.2.0.4搭建DG
admin
2023-04-14 21:41:56
0

试验环境描述

硬件信息

本次测试环境使用的虚拟环境如下图所示,使用VMware Workstation 11搭建的两台Oracle Linux 6.4 64位操作系统,通过两台机器桥接到一块虚拟网卡。

Linux6.4+Oracle11.2.0.4搭建DG

系统信息

服务器一(主)

服务器二(备)

主机名:zhanky

IP  192.168.214.10

数据库版本: oracle   11.2.0.4

库名:zky  TNSNAMEDGZ        

主机名:zhanky

IP  192.168.214.11

数据库版本: oracle   11.2.0.4

库名:zky  TNSNAMEDGB        

DG故障切换示意

         主备库正常情况客户端访问流量访问主库,数据自动同步到备库。当主库出现故障时,管理员手动将备库切换为主库。此时客户端访问备库实现业务不中断正常访问。

Linux6.4+Oracle11.2.0.4搭建DG

测试流程

         我们模仿正式环境,先将primary服务器准备好,然后在standby服务器上只安装数据库软件。在本次测试中我们使用rman的方式来备份数据库,然后在standby上面还原。关键实施步骤如下

Primary

1、  打开归档模式,开启强制记录日志

2、  创建日志组

3、  添加静态监听,添加tns

4、  生成密码文件

5、  生成pfile添加DG内容

6、  重启通过pfile启动,更新spfile

7、  通过rman duplicate备份

8、  生成控制文件

Standby

1、  将备份文件拷贝到standby对应的位置

2、  将密码文件考到对应的位子

3、  将监听文件修改后考到对应的位置,然后开启监听

4、  pfile文件更改后拷贝到standby

5、  通过oradim创建实例,加载更改的pfilenomount模式

6、  pfile更新到spfile,然后重启数据库

7、  通过rman 回复数据库,完成后open

8、  将控制文件替换

9、  然后启用DG到备库模式


DG主服务器设置

检查数据库归档

查看归档日志是否开启     

SQL> archive   log list

Linux6.4+Oracle11.2.0.4搭建DG

上图看出库开启了归档模式。如果没有开启则按照以下步骤开启归档模式

SQL>   shutdown immediate

SQL>   startup mount

SQL>   alter database archivelog;

SQL>   alter database force logging;

SQL>   alter database open;

Linux6.4+Oracle11.2.0.4搭建DG

创建日志组

创建日志组

[oracle@zhanky /]$ mkdir   /u01/archive

SQL> alter database add   standby logfile group 4 '/u01/archive/STAN04.LOG' size 50m;

SQL> alter database add standby logfile group 5 '/u01/archive/STAN05.LOG'   size 50m;

SQL> alter database add standby logfile group 6 '/u01/archive/STAN06.LOG'   size 50m;

SQL> alter database add standby logfile group 7 '/u01/archive/STAN07.LOG'   size 50m;

Linux6.4+Oracle11.2.0.4搭建DG

检查密码文件

密码文件要拷贝到DG备库,保持两边密码文件一致。

[oracle@zhanky ~]$ ls /u01/app/oracle/product/11.2.0/db_1/dbs/

Linux6.4+Oracle11.2.0.4搭建DG

如果没有密码文件可以手动创建

SQL>   orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky password=manager   entries=10

建议设置密码永不过期

SQL> alter profile default limit password_life_time unlimited;

配置监听文件

配置静态监听,在listener.ora文件中添加静态监听

[oracle@zhanky ~]$ vi   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

SID_LIST_LISTENER=

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = zky)

      (ORACLE_HOME   =/u01/app/oracle/product/11.2.0/db_1)

      (SID_NAME = zky)

    )

  )

Linux6.4+Oracle11.2.0.4搭建DG

注意linux环境中更改侦听需要先stop在修改,不然会导致侦听服务无法正常启动关闭

配置TNS文件

配置tnsname.ora,设置DG主和DG备服务器监听

[oracle@zhanky ~]$ vi   /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

DGZ =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL =   TCP)(HOST = 192.168.214.10)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = zky)

    )

  )

DGB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL =   TCP)(HOST = 192.168.214.11)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = zky)

    )

  )

Linux6.4+Oracle11.2.0.4搭建DG

配置DG参数

下面开始配置dg文件了,配置完成后记得重启数据库。

SQL> alter system set   db_unique_name=dgz scope=spfile;

SQL> alter system set   LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGZ,DGB)' scope=both;

SQL> alter system set   LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/zky/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=DGZ' scope=spfile;

SQL> alter system set   LOG_ARCHIVE_DEST_2= 'service=DGB lgwr async   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=DGB' scope=both;

SQL> alter system set   LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=both;

SQL> alter system set   LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both;

SQL> alter system set   FAL_SERVER='DGZ' scope=both;

SQL> alter system set   STANDBY_FILE_MANAGEMENT=AUTO scope=both;

SQL> alter system set   DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/zky/','/u01/app/oracle/oradata/zky/'   scope=spfile;

SQL> alter system set   LOG_FILE_NAME_CONVERT='/u01/archive/','/u01/archive/' scope=spfile;

Linux6.4+Oracle11.2.0.4搭建DG

创建参数文件

创建参数文件供备库用

SQL> create pfile='/u01/zk.int' from spfile;

Linux6.4+Oracle11.2.0.4搭建DG


DG备服务器设置

复制文件

将密码文件和参数文件拷贝到DG备库对应的位置并赋予读写权限

[oracle@zhanky ~]$ scp   oracle@192.168.214.10:/u01/zk.int /u01/bk.int

[oracle@zhanky ~]$ scp   oracle@192.168.214.10:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky   /u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky

[oracle@zhanky ~]$ chmod 777   /u01/bk.int

[oracle@zhanky ~]$ chmod   777 /u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky

Linux6.4+Oracle11.2.0.4搭建DG

创建文件夹

[oracle@zhanky /]$ mkdir -p   /u01/archive/

[oracle@zhanky /]$ mkdir -p   /u01/app/oracle/admin/zky/adump/

[oracle@zhanky /]$ mkdir -p   /u01/app/oracle/oradata/zky/

[oracle@zhanky /]$ mkdir -p   /u01/app/oracle/fast_recovery_area/zky/

Linux6.4+Oracle11.2.0.4搭建DG 

配置监听文件

配置静态监听,在listener.ora文件中添加静态监听

[oracle@zhanky ~]$ vi   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

SID_LIST_LISTENER=

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = zky)

      (ORACLE_HOME   =/u01/app/oracle/product/11.2.0/db_1)

      (SID_NAME = zky)

    )

  )

Linux6.4+Oracle11.2.0.4搭建DG

注意linux环境中更改侦听需要先stop在修改,不然会导致侦听服务无法正常启动关闭

配置TNS文件

配置tnsname.ora,设置DG主和DG备服务器监听

[oracle@zhanky ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

DGZ =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL =   TCP)(HOST = 192.168.214.10 )(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = zky)

    )

  )

DGB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL =   TCP)(HOST = 192.168.214.11)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = zky)

    )

  )

Linux6.4+Oracle11.2.0.4搭建DG

配置DG参数

将复制过来的参数文件更改下列红色标识的地方

[oracle@zhanky ~]$ vi   /u01/bk.int

db_unique_name=dgb scope=spfile;

LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGZ,DGB)'   scope=both;

LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/zky/   VALID_FOR=(ALL_LOGFILES,ALL_ROLES)    DB_UNIQUE_NAME=DGZ' scope=spfile;

LOG_ARCHIVE_DEST_2=   'service=DGB lgwr async   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=DGB' scope=both;

FAL_SERVER='DGZ' scope=both;

完成更改后,进入数据库创建spfile,重启到nomount状态准备还原数据库

[oracle@zhanky /]$ sqlplus / as sysdba

SQL> create spfile from   pfile='/u01/bk.int';

SQL> startup nomount;

Linux6.4+Oracle11.2.0.4搭建DG

还原数据库

[oracle@zhanky ~]$ rman   target sys/manager@DGZ auxiliary sys/manager@DGB

RMAN> duplicate target   database for standby from active database nofilenamecheck;

Linux6.4+Oracle11.2.0.4搭建DG

提示:还原数据库要在nomount模式

 

DG配置

将库配置为standby库,开启到只读模式,开启实时应用日志。

SQL> shutdown immediate

SQL> startup nomount;

SQL> alter database mount standby   database;

SQL> alter database open read only;

SQL> alter database recover managed   standby database using current logfile disconnect from session;

Linux6.4+Oracle11.2.0.4搭建DG

测试DG同步

主库插入

SQL> create table zkydg as(select username   from dba_users where username='SYSTEM');

Linux6.4+Oracle11.2.0.4搭建DG

备库查询

SQL> select * from zkydg;

Linux6.4+Oracle11.2.0.4搭建DG


测试切换主备库

主库操作

SQL> alter database commit to   switchover to physical standby with session    shutdown;

SQL> startup nomount;

SQL> alter database mount standby   database;

SQL> alter database open read only;

SQL> alter database recover managed   standby database using current logfile disconnect from session;

 Linux6.4+Oracle11.2.0.4搭建DG

查看切换状态

SQL> select   switchover_status from v$database;

Linux6.4+Oracle11.2.0.4搭建DG

备库操作

SQL> alter database recover managed   standby database cancel;

SQL> alter database commit to   switchover to primary;

SQL> shutdown immediate

SQL> startup

Linux6.4+Oracle11.2.0.4搭建DG

测试切换是否成功DG同步

新主库插入

SQL>    create table zkydgqh as(select username from dba_users where   username='SYS');

Linux6.4+Oracle11.2.0.4搭建DG

老主库查询

SQL> select * from zkydgqh;

Linux6.4+Oracle11.2.0.4搭建DG


常用检查命令

查看切换状态

SQL> select   switchover_status from v$database;

Linux6.4+Oracle11.2.0.4搭建DG

查看是否同步

SQL> SELECT   SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

Linux6.4+Oracle11.2.0.4搭建DG

强制切换为主库

         当主库挂了无法控制时,可直接在备库上强制接管数据库

SQL> RECOVER MANAGED   STANDBY DATABASE FINISH force;

 

SQL> shutdown immediate
SQL> startup nomount;
SQL> alter database mount standby   database;
SQL> alter database open read only;
SQL> alter database recover managed   standby database using current logfile disconnect from session;


相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...