oracle的physical dataguard的配置过程

条件:

本测试两台服务器,采用centos6.5 

一台创建oracle数据库,主机名centosorcl,ip: 192.168.193.100 SID:ORCL

一台只安装了oracle软件,主机名centosorcl_dg,ip 192.168.193.110

Orcl: 主库(192.168.193.100 )的tnsnames 

Orcl_dg: 备库(192.168.193.110 )的tnsnames 

 

1设置数据库归档模式

检查是否处于归档模式:

SQL> archive log list 

 

如果不是归档模式则设置归档模式,需要关闭数据库并置为mount状态

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog

 

再执行查询发现已经为归档模式,见上图

 

2设置数据库为force logging模式

SQL> alter database force logging

 

ORA-12920:说明已经设置为force loggging模式,如果要停止force logging,则执行SQL>alter database no force logging

3创建standby数据库控制文件

SQL> alter database create standby controlfile 

as /opt/oracle/oradata/orcl/standby.ctl;

文件名随便取(sql中的文件名与下图sql中不一致,特说明)

 

SQL> alter database open

 

4配置主库监听listenter.oratnsnames.ora

Listener.ora


增加SID_LIST

Tnsnames.ora增加DRCL_DG配置

 

然后将这两个文件传送至standby数据库的对应位置

$ scp  $ORACLE_HOME/network/admin/listener.ora 

  oracle@192.168.193.110:/opt/oracle/11.2/network/admin/  

注:IP可用主机名代替,需在/etc/hosts文件中配置standbyip与主机名对应

并修改listener.ora中的主机名HOST,更改为本机iptnsnames.ora不用更改

SID_NAME与主服务器一样

 

因为standby服务器没有创建数据库,可以连接主库的数据库,测试上述配置是否准确

sqlplus /nolog

SQL> conn system@manager@orcl  (或者SQL>  tnsping orcl/tnsping orcl_dg

 

启动监听

lsnrctl start 

查看监听

$ ps -ef |grep tns

 

4创建primary数据库客户端初始化文件和密码文件

SQL> create pfile from spfile

/opt/oracle/product/11.2.0/db_1/dbs$ORACLE_HOME/dbs)目录下将多出一个init+SID.ora的文件

 

将该文件复制一份,作为恢复初始化数据库备份(可省略)

$ cp initorcl.ora initorcl.ora.bak

 

修改客户端初始化文件

vi initorcl.ora

底部增加如下:

DB_UNIQUE_NAME=orcl
LOG_ARCHIVE_CONFIG=’DG_CONFIG=(orcl,orcl_dg)’
LOG_ARCHIVE_DEST_1=’LOCATION=/opt/oracle/oradata/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl’  
LOG_ARCHIVE_DEST_2=’SERVICE=orcl_dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARIY_ROLE) DB_UNIQUE_NAME=orcl_dg’
LOG_ARCHIVE_FORMAT=’%t_%s_%r.arc’
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
FAL_SERVER=orcl_dg
FAL_CLIENT=orcl
STANDBY_FILE_MANAGEMENT=AUTO


#archive目录没有则创建

④ 创建密码文件

orapwd file=/opt/oracle/product/11.20/db_1/dbs/orapworcl password=verysafe entries=30

   密码文件名格式:orapw+SID(UNIX) ,不然报ORA-01031  insufficient privileges主库备库密码文件需要一致.WIN(pwd+SID)

将主库数据拷贝至standby库 

主要拷贝的地方:

 位置1$ORACLE_BASE/oradata

scp -r /opt/oracle/oradata/orcl 192.168.193.110:/opt/oracle/oradata/

位置2$ORACLE_BASE/admin

scp -r /opt/oracle/admin/orcl 192.168.193.110:/opt/oracle/admin/

位置3$ORACLE_HOME/dbs

scp $ORACLE_HOME/dbs/initorcl.ora 192.168.193.110:$ORACLE_HOME/dbs/

scp $ORACLE_HOME/dbs/orapworcl.ora 192.168.193.110:$ORACLE_HOME/dbs/

注:拷贝时保持目录结构相同

6修改刚才拷贝至standby服务器的文件

①$ cd /opt/oracle/oradata/orcl 

 

control01.ctl删除,将standby.ctl 改名为control01.ctl

rm control01.ctl

mv standby.ctl control01.ctl

 

② $ vi $ORACLE_HOME/dbs/initorcl.ora  修改初始化文件(红色部分)

DB_UNIQUE_NAME=orcl_dg

LOG_ARCHIVE_CONFIG=’DG_CONFIG=(orcl_dg,orcl)’

LOG_ARCHIVE_DEST_1=’LOCATION=/opt/oracle/oradata/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl’  

LOG_ARCHIVE_DEST_2=’SERVICE=orcl LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARIY_ROLE) DB_UNIQUE_NAME=orcl

LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

FAL_SERVER=orcl

FAL_CLIENT=orcl_dg

STANDBY_FILE_MANAGEMENT=AUTO

 

7启动主库

删除$ORACLE_HOME/dbs/spfileorcl.ora

rm spfileorcl.ora                                    #今日该文件目录

sqlplu /nolog

SQL> conn /as sysdba

SQL> create spfile from pfile                         #创建spfile文件

startup 

 

8 standby数据库创建spfile

sqlplu /nolog

SQL> conn /as sysdba

SQL> create spfile from pfile

SQL> quit 

查看SID是否与主库一样

ps -ef |grep SID

env |grep SID

 

 

验证

sqlplu /nolog

SQL> conn /as sysdba

SQL> startup nomount

报错如下 没有找到db_recovery_file_dest 目录

找到查看 $ORACLE_HOME/dbs/initorcl.ora

然后创建此目录 再执行 SQL> startup nomount ,成功

SQL> ALTER database mount standby database 

报错:

日志路径(oracle 11g):

$ORACLE_BASE/diag/rdbms/orcl_dg/orcl/alert

$ORACLE_BASE/diag/rdbms/orcl_dg/orcl/trace

 

根据日志查看是找不到:

/opt/oracle/flash_recovery_area/orcl/control02.ctl

然后将

/opt/oracle/oradata/orcl/conrol01.ctl拷贝过来并改名control02.ctl

再次执行SQL> ALTER database mount standby database  成功

 

①SQL> select name ,database_role from v$database

主库查询结果

Standby库查询结果

 

②stanby 数据库准备接受主库redo数据

SQL> Alter database recover managed standby database disconnect from session;

 

加速日志传输 在primary库执行

 创建表并插入测试数据后执行

SQL> Alter system switch logfile;

 

④standby数据库查看归档日志

SQL>select sequence#,first_time,next_time from v$archived_log order by sequence#;

说明日志已经传输到standby

 

standby上执行

SQL> select sequence#,applied from v$archived_log order by sequence#;

 

发现全部是NO,日志没有应用。稍等一下再试试发现全部变成YES了。

如果还是NO,就是有问题了。然后请查看日志判断错误信息(位置见上文) 

Redo文件查看:

SQL> show parameter log_file_name_convert;    查看日志路径 

SQL> select group#,member from v$logfile;  查看具体文件

SQL> select group#,members,status from v$log;  查看日志状态

取消日志应用,检查同步数据是否完成

SQL> alter database recover managed standby database cancel;

SQL> ALTER DATABASE OPEN READ ONLY;

SQL> select * from dgtest ;          #dgtest需要同步的表

 

至此,physical dataguard就配置结束了,物理dg的日志恢复与查询是互斥的,所以对于想对主备数据库实现读写分离的朋友就不能使用物理dg

启动时候先启动从库,再启动主库,关闭时候则相反

 


 详细文档点击------> 戳这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值