dataguard配置及数据测试

1、环境

1.1 基本配置

CentOS release 6.9 (Final)

oracle 11.2.0.4

主库

备库

主机名db1

主机名db2

192.168.84.13

192.168.84.12

ORACLE_SID=icdc

ORACLE_SID=aux1

ORACLE_BASE=/opt/app/oracle

ORACLE_BASE=/opt/app/oracle

ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1

ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1

1.2 准备就绪

1、主库:安装数据库软件,安装dbca,安装netca

2、从库:安装数据库软件,不安装dbca,安装netca

2、安装dataguard

2.1 主库打开强制日志模式

select force_logging from v$database;

alter database force logging;

2.2 主库要打开归档模式

archive  log list;

如果没有打开,执行以下操作:

 SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP MOUNT;
  SQL> ALTER DATABASE ARCHIVELOG;
  SQL> ALTER DATABASE OPEN;

2.3 修改主库的本地归档路径

mkdir -p /home/oracle/arc_icdc_dest1

alter system set log_archive_dest_1='location=/home/oracle/arc_icdc_dest1/ valid_for=(online_logfiles,primary_role) db_unique_name=icdc';

激活主库的本地归档路径

alter system set log_archive_dest_state_1='enable';

2.4 主库要启用远程归档路径

从库的唯一服务名:aux1srv

从库的实例名(SID):aux1

alter system set log_archive_dest_2='service=aux1srv valid_for=(online_logfiles,primary_role) db_unique_name=aux1';

激活远程归档路径

alter system set log_archive_dest_state_2='enable';

2.5 主库要打开dataguard开关

alter system set log_archive_config='dg_config=(icdc,aux1)';

2.6 为从库准备口令文件

[oracle@db1dbs]$scp orapwicdc root@192.168.84.12:/opt/app/oracle/product/11.2.0/dbhome_1/dbs/orapwaux1    

 [root@db2 ~]# chown -R oracle.oinstall /opt/app/oracle/product/11.2.0/dbhome_1/dbs/

2.7 为从库准备参数文件

查看主库的数据文件路径:SQL> select name from v$datafile;

将以下文件保存在新建的从库里边

[oracle@db2 dbs]$ vim initaux1.ora

*.audit_file_dest='/opt/app/oracle/admin/aux1/adump'

*.audit_trail='db'

*.compatible='11.2.0.4.0'

*.control_files='/home/oracle/oradata/aux1/control01.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='icdc' #主备都不变的名字

*.db_recovery_file_dest='/opt/app/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4385144832

*.diagnostic_dest='/opt/app/oracle'

*.log_archive_config='dg_config=(icdc,aux1)'

*.log_archive_max_processes=5

*.memory_target=1560281088

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

db_unique_name='aux1'

log_archive_dest_3='location=/home/oracle/arc_aux1_dest3/ valid_for=(standby_logfiles,standby_role) db_unique_name=aux1'

log_archive_dest_state_3='enable'

standby_file_management=auto

db_file_name_convert='/home/oracle/oradata/icdc','/home/oracle/oradata/aux1'

log_file_name_convert='/home/oracle/oradata/icdc','/home/oracle/oradata/aux1'

2.8 在从库中准备相关的目录

mkdir -p /opt/app/oracle/admin/aux1/adump

mkdir -p /home/oracle/oradata/aux1

mkdir -p /opt/app/oracle/fast_recovery_area

mkdir -p /home/oracle/arc_aux1_dest3

2.9  在从库创建spfile,启动实例到nomount

[oracle@db2 dbs]$ export ORACLE_SID=aux1

[oracle@db2 dbs]$ sqlplus / as sysdba

SQL> startup nomount

2.10 监听程序配置并重启

从库配置监听程序

[oracle@db2 admin]$ cat listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = aux1.example.com)

      (ORACLE_HOME = /opt/app/oracle/product/11.2.0/dbhome_1)

      (SID_NAME = aux1)

    )

  )

LISTENER =

  (DESCRIPTION =

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

)

主库配置监听程序

[oracle@db1 admin]$ cat listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = icdc.example.com)

      (ORACLE_HOME = /opt/app/oracle/product/11.2.0/dbhome_1)

      (SID_NAME = icdc)

    )

  )

LISTENER =

  (DESCRIPTION =

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

)

[oracle@db1 admin]$ cat tnsnames.ora

ICDC =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = icdc)

    )

  )

aux1srv =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = aux1.example.com)

    )

  )

2.11 在主库测试监听配置

[oracle@db1 ~]$ sqlplus sys/hongjun123@aux1srv as sysdba

SQL> show parameter name

2.12 在主库启动rman复制从库

从库的由来:它是由rman复制主库出来的,不是自己创建的

rman target / auxiliary sys/hongjun123@aux1srv

RMAN> duplicate target database for standby from active database;

结束之后:

2.13 查看当前从库状态

SQL> select status from v$instance;

STATUS

------------

MOUNTED

2.14 在主从库都添加standby log

SQL> select * from v$logfile;

SQL> select * from v$log;

根据以上连个命令确定log日志的路径及大小,必须要和主库一样大

alter database add standby logfile '/home/oracle/oradata/aux1/redo04.log' size 52428800;

alter database add standby logfile '/home/oracle/oradata/aux1/redo05.log' size 52428800;

alter database add standby logfile '/home/oracle/oradata/aux1/redo06.log' size 52428800;

2.15 在主库切换日志

alter system switch logfile;

启动管理恢复后再检查

select sequence#,applied from v$archived_log;

2.16 在从库启动和关闭管理恢复

启动:

实时同步数据

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

延迟数据同步

alter database recover managed standby database disconnect from session;

关闭:

SQL> alter database recover managed standby database cancel;

2.17 从库的最终状态

Mount状态,启动管理恢复

2.18 简单测试主从是否成功

最简单的方法,备库查看最新的归档日志是否apply,如果applied是yes则正常同步
主库sqlplus>alter system switch logfile;
备库sqlplus>select SEQUENCE#,applied,FIRST_TIME,NEXT_TIME  from v$archived_log order by 1 desc;

3 数据验证dataguard配置

最后,我们在主库上创建一个表并插入一些数据,然后模拟日志切换,最后在备库上验证数据的传输情况。

3.1 主库上建测试表

SQL> create table hj(id number);

Table created.

SQL> insert into hj values(520);

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> commit;

Commit complete.

SQL> select * from randy;

        ID

----------

         1

         1

         1

3.2 主库上模拟日志切换

SQL> alter system archive log current;

3.3 以只读模式打开备库,验证数据

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter database open read only;

Database altered.

SQL> select * from hj;

 

        ID

----------

         1

         1

         1

 

3.4 恢复备库的standby状态

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

Database altered.

Oracle11g一个重大的功能改进就是DATA GUARD可以在打开的情况下应用归档。这个功能使得STANDBY数据库可以轻松的替PRIMARY来分担查询的压力。

温馨提示:

强制切换主备状态(如果主库停机,连接失败,无法恢复了,这是直接强制将备库启动为主库进行运行)
SQL>alter database activate physical standby database; 

SQL> alter database open;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值