暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

oracle11.2.0.4 rac+dg

原创 袁子建 2019-10-25
1766
一.前提条件
1.数据库已经安装完
2.主备库的数据库版本一致
3.主库一节点配置
[root@node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#Use for oracle11g RAC
#Public ip
192.168.6.2   node1
192.168.6.3   node2
#Virtual ip
192.168.6.4   node1-vip
192.168.6.5   node2-vip
#Private ip
172.16.6.2    node1-priv
172.16.6.3    node2-priv
#Scan ip
192.168.6.6 scan-ip
主库二节点配置
[root@node2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#Use for oracle11g RAC
#Public ip
192.168.6.2   node1
192.168.6.3   node2
#Virtual ip
192.168.6.4   node1-vip
192.168.6.5   node2-vip
#Private ip
172.16.6.2    node1-priv
172.16.6.3    node2-priv
#Scan ip
192.168.6.6 scan-ip
备库配置
[oracle@node3 ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.7 node3 oracle
二.主库开启数据库归档
startup mount
alter database archivelog;
alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';
alter system set log_archive_dest_1='LOCATION=+fra_arc' scope=spfile sid='*';
alter database open;

三.主库启用强制日志模式
alter database force logging;

四.主库添加standby_log;
1.先查看本地日志组
SYS@orcl1> select thread#,group#,members,bytes/1024/1024 from v$log;

   THREAD#     GROUP#	 MEMBERS BYTES/1024/1024
---------- ---------- ---------- ---------------
	 1	    1	       2	      50
	 1	    2	       2	      50
	 2	    3	       2	      50
	 2	    4	       2	      50
2.主库添加6组standby log文件(一般比主库多一组)
SYS@orcl1> alter database add standby logfile thread 1 group 5 size 50m,group 6 size 50m,group 7 size 50m;
SYS@orcl1> alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m;
3.主库查看添加的日志组
SYS@orcl1> select group#,thread#,bytes/1024/1024,status from v$standby_log;

    GROUP#    THREAD# BYTES/1024/1024 STATUS
---------- ---------- --------------- ----------
	 5	    1		   50 UNASSIGNED
	 6	    1		   50 UNASSIGNED
	 7	    1		   50 UNASSIGNED
	 8	    2		   50 UNASSIGNED
	 9	    2		   50 UNASSIGNED
	10	    2		   50 UNASSIGNED


五.修改主库参数
1.修改主库参数
SYS@orcl1> alter system set log_archive_config='DG_CONFIG=(orcl,orclstd)' scope=both sid='*';
SYS@orcl1> alter system set log_archive_dest_1='LOCATION=+fra_arc VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=both sid='*';
SYS@orcl1> alter system set log_archive_dest_2='SERVICE=orclstd ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstd' scope=both sid='*';
SYS@orcl1> alter system set log_archive_dest_state_1=enable scope=both sid='*';
SYS@orcl1> alter system set log_archive_dest_state_2=enable scope=both sid='*';
SYS@orcl1> alter system set db_file_name_convert='/u02/oradata/orclstd','+DATA/orcl/datafile','/u02/oradata/orclstd','+DATA/orcl/tempfile' scope=spfile sid='*';
SYS@orcl1> alter system set log_file_name_convert='/u02/oradata/orclstd','+DATA/orcl/onlinelog','/u02/oradata/orclstd','+fra_arc/orcl/onlinelog' scope=spfile sid='*';
SYS@orcl1> alter system set standby_file_management=AUTO scope=both sid='*';
SYS@orcl1> alter system set fal_server='orclstd' scope=both sid='*';

2.查看参数
SYS@orcl1> select name, value from v$parameter where name in ('db_name','db_unique_name','log_archive_config', 'log_archive_dest_1','log_archive_dest_2','log_archive_dest_state_1','log_archive_dest_state_2','remote_login_passwordfile','log_archive_format','log_archive_max_processes','fal_server','db_file_name_convert', 'log_file_name_convert', 'standby_file_management');
NAME                                   VALUE
db_file_name_convert				   /u02/oradata/orclstd, +DATA/orcl/datafile,  /u02/oradata/orclstd, +DATA/orcl/tempfile
log_file_name_convert				   /u02/oradata/orclstd, +DATA/orcl/onlinelog, /u02/oradata/orclstd, +FRA_ARC/orcl/onlinelog
log_archive_dest_1				       LOCATION=+FRA_ARC/orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl
log_archive_dest_2				       SERVICE=orclstd LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstd
log_archive_dest_state_1			   enable
log_archive_dest_state_2			   enable
fal_server					           orclstd
log_archive_config				       DG_CONFIG=(orcl,orclstd)
log_archive_format				       %t_%s_%r.arc
log_archive_max_processes			   8
standby_file_management 			   AUTO
remote_login_passwordfile			   EXCLUSIVE
db_name 					           orcl
db_unique_name                         ORCL

六.主库配置监听
1.修改hosts文件
一节点
[root@node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#Use for oracle11g RAC
#Public ip
192.168.6.2   node1
192.168.6.3   node2

#Virtual ip
192.168.6.4   node1-vip
192.168.6.5   node2-vip

#Private ip
172.16.6.2    node1-priv
172.16.6.3    node2-priv

#Scan ip 
192.168.6.6 scan-ip

#添加备库解析
192.168.6.7 node3 oracle
二节点
[root@node2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#Use for oracle11g RAC
#Public ip
192.168.6.2   node1
192.168.6.3   node2

#Virtual ip
192.168.6.4   node1-vip
192.168.6.5   node2-vip

#Private ip
172.16.6.2    node1-priv
172.16.6.3    node2-priv

#Scan ip 
192.168.6.6 scan-ip
#添加备库解析
192.168.6.7 node3 oracle

一节点
grid用户下操作
[grid@node1 ~]$ vim $ORACLE_HOME/network/admin/listener.ora
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))            # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))                # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON                # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
#添加如下配置信息,ORACLE_HOME指的是oracle用户下的ORACLE_HOME绝对路径
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl1)
    )
  )
oracle用户下操作
[oracle@node1 ~] vim $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = scan-ip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
#添加备库解析信息
orclstd =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = node3)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
二节点
grid用户下操作
[grid@node1 ~]$ vim $ORACLE_HOME/network/admin/listener.ora
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))                # line added by Agent
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))            # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON                # line added by Agent
#添加如下配置信息,ORACLE_HOME指的是oracle用户下的ORACLE_HOME绝对路径
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl2)
    )
  )
oracle用户下操作
[oracle@node2 ~] vim $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = scan-ip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
#添加备库解析信息
orclstd =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = node3)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

八.主库密码拷贝
服务器双节点密码拷贝
scp orapworcl1 node2:/u01/app/oracle/product/11.2.0/dbhome_1/dbs
scp orapworcl2 node1:/u01/app/oracle/product/11.2.0/dbhome_1/dbs

九.修改备库host文件
[oracle@node3 ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.7 node3 oracle
192.168.6.6 scan-ip oracle

十.配置备库监听,并启动监听
1.编辑listener.ota
[oracle@node3 admin]$ vim listener.ota
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = node3)(PORT = 1521))
      )
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (SID_NAME = orclstd)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
    )
  )
2.编辑tnsnames.ora
[oracle@node3 admin]$ vim tnsnames.ora 
orcl =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = scan-ip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

orclstd =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = node3)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
3.启动监听
lsnrctl start
十一.配置备库密码文件
1.拷贝主库密码文件到备库
scp orapworcl1 node3:/u01/app/oracle/product/11.2.0/dbhome_1/dbs
2.修改密码文件
mv orapworcl1 orapworcstd

十二.创建备库pfile
vim initorclstd.ora
*.audit_file_dest='/u01/app/oracle/admin/orclstd/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u02/oradata/orclstd/control01.ctl','/u01/app/oracle/fast_recovery_area/orclstd/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_unique_name='orclstd'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=10737418240
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclstdXDB)'
*.fal_server='orcl'
*.log_archive_config='DG_CONFIG=(orclstd,orcl)'
*.log_archive_dest_1='LOCATION=/u02/oradata/orclstd_archive_log VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclstd'
#*.log_archive_dest_2='SERVICE=orcl LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl OPTIONAL PROPEN=15 MAX_FAILURE=10 NET_TIMEOUT=30'
*.log_archive_dest_2='SERVICE=orcl ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='+DATA/orcl/onlinelog','/u02/oradata/orclstd','+FRA_ARC/orcl/onlinelog','/u02/oradata/orclstd'
*.db_file_name_convert='+DATA/orcl/datafile','/u02/oradata/orclstd','+DATA/orcl/tempfile','/u02/oradata/orclstd' 
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=8
*.open_cursors=300
*.pga_aggregate_target=536870912
*.processes=150
*.remote_login_passwordfile='exclusive'
*.standby_file_management='AUTO'
*.sga_target=2147483648
*.service_names='orcl'

十三.oracle用户下创建相应的目录
mkdir -p /u01/oracle/app/admin/orclstd/adump
mkdir -p /u02/oradata/orclstd
mkdir -p /u01/app/oracle/fast_recovery_area/orclstd

十四.启动备库到nomount
startup nomount

十五.主库一节点登录rman连接主备库
rman target sys/newcapec@orcl auxiliary sys/newcapec@orclstd
duplicate target database for standby from active database nofilenamecheck;

十六.打开备库
alter database open

十七.修改主备库rman策略
主库:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
CONFIGURE BACKUP OPTIMIZATION on;
CONFIGURE CONTROLFILE AUTOBACKUP on;
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
备库:
CONFIGURE BACKUP OPTIMIZATION on;
CONFIGURE CONTROLFILE AUTOBACKUP on;
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

十八.
开启redo应用(实时同步)commit
自Oracle Database 12.1起,USING CURRENT LOGFILE子句已弃用
11.2.0.4
alter database recover managed standby database using current logfile disconnect from session;日志实时应用
alter database recover managed standby database using current logfile disconnect;日志实时应用
12.2.0.1
alter database recover managed standby database disconnect;

十九.添加dg_apply_log.sql
CREATE OR REPLACE TRIGGER dg_apply_log
   after startup on database
BEGIN
DECLARE
   database_role varchar(20);
BEGIN
   select database_role into database_role from v$database;
   /* dbms_output.put_line('database_role');*/
   IF database_role = 'PHYSICAL STANDBY'
      THEN
      EXECUTE IMMEDIATE 'alter database recover managed standby database using current logfile disconnect from session';
      DBMS_OUTPUT.put_line('Physical standby database real time apply set complete!');
   ELSE
      DBMS_OUTPUT.put_line(database_role);
   END IF;
END;
END dg_apply_log;
/
最后修改时间:2020-05-29 11:17:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

暂无图片
获得了228次点赞
暂无图片
内容获得123次评论
暂无图片
获得了352次收藏