Centos系统搭建ADG

参考:https://blog.csdn.net/demonson/article/details/79277380

参考:https://www.cnblogs.com/Sunnor/p/4515242.html

参考:https://www.cnblogs.com/yaoyangding/p/12181733.html(含dg工作原理和初始参数解释)

部署环境:

主库:192.168.1.102    实例(SID):orclpr

备库:192.168.1.106    实例(SID):orcldg

VirtualBox部署CentOS7.5虚拟机(备库机直接复制的主库机)

原理架构图:

一、前提检查

1.主库设置为归档模式

2.很多人说11g有了active dataguard(ADG),逻辑standby实际上已经没什么用处了

3.主从库硬件最好一致,oracle版本需要一致

  内存检查项:

  #grep MemTotal /proc/meminfo

  交换分区检查项:如果内存在1-2G,swap是1.5倍;2-16G,1倍;大于16G,设置为16G即可

  #grep SwapTotal /proc/meminfo 

  查看共享内存

  #df -h /dev/shm

  查看系统处理器架构,与oracle安装包一致(64位还是32位)

  #uname -m

  临时空间 /tmp必须大于1G

  #df -h /tmp

4.配置环境数据库用户必须有sysdba权限

二、主库配置

2.1判断DG是否已经安装:

  SQL>select * from v$option where parameter = 'Oracle Data Guard';

  如果是true表示已经安装可以配置,否则需要安装相应组件。 

2.2设置主库为强制记录日志:

  默认情况下数据库操作会记录redo log,但是在一些特定的情况下可以使用nologging来不生成redo信息,以下:

    (1)表的批量INSERT(通过/*+APPEND */提示使用“直接路径插入“。或采用SQL*Loader直接路径加载)。表数据不生成redo,但是 
所有索引修改会生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!)。 
    (2)LOB操作(对大对象的更新不必生成日志)。 
    (3)通过CREATE TABLE AS SELECT创建表
    (4)各种ALTER TABLE操作,如MOVE和SPLIT
    (5)在一些表迁移和表空间迁移中,可以使用alter table a nologging;或者alter tablespace snk nologging;在操作完成后再修改回logging状态。
   这里需要多说一句,如果你使用nologging导入大批量数据,以后对这些数据的修改会在redo或者archive log中,但是基准的数据是没有的,所以一旦介质损坏是无法完全恢复的,必须在使用nologging完成切换回logging后,做一次全备或者0级备份。

   (1)强制记录日志:

  sql>alter database force logging;
   (2)检查状态(YEs为强制):

  sql>select name,force_logging from v$database;
   (3)如果需要在主库添加或者删除数据文件时,这些文件也会在备份添加或删除,使用如下:
       sql>alter system set standy_file_management='AUTO';
      默认此参数是manual手工方式

  sql>show parameter standby

2.3开启主库的归档模式

SQL> alter database archivelog; --修改数据库为归档模式,因为dg是通过传送归档日志到备库然后应用来保证主备库一致的。

Database altered.

2.4创建standby log files(备用日志文件)

   从库使用standby log files来保存从主库接收到的重做日志。既然主要是从库在使用,那为什么需要在主库上也建立
standby log files?原因主要由两个:一是主库可能转换为备库,而备库是需要有standby log files的 二是如果主库
建立了standby log files那备库会自动建立。
   建立standby如要注意以下几点:
   <1>standby log files的大小和redo log files一样。
      查询redo log files文件大小(默认50M,3个):select group#,bytes/1024/1024 as M from v$log
   <2>一般而言, standbyredo 日志文件组数要比 primary 数据库的 online redo 日志文件组数至少多一个。
      推荐 standbyredo 日志组数量基于 primary 数据库的线程数(这里的线程数可以理解为 rac 结构中的 rac
      节点数)。
      有一个推荐的公式可以做参考:(每线程的日志组数+1)*最大线程数
      假设现在节点是1个,则=(3+1)*1=4
      如果是双节点       则=(3+1)*2=8
      这里我们创建4个standby logfile:
      另:不建议组号group#紧挨着redo,因为后续redo有可能调整

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo04.log') size 50M; 
Database altered.
 
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M; 
Database altered.
 
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M; 
Database altered.
 
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M;
 
Database altered.
SQL> select group#,type,member from v$logfile;
 
 
    GROUP# TYPE    MEMBER
---------- ------- --------------------------------------------------
         3 ONLINE  /u01/app/oracle/oradata/orcl/redo03.log
         2 ONLINE  /u01/app/oracle/oradata/orcl/redo02.log
         1 ONLINE  /u01/app/oracle/oradata/orcl/redo01.log
         4 STANDBY  /u01/app/oracle/oradata/orcl/redo04.log
         5 STANDBY  /u01/app/oracle/oradata/orcl/redo05.log
         6 STANDBY  /u01/app/oracle/oradata/orcl/redo06.log
         7 STANDBY  /u01/app/oracle/oradata/orcl/redo07.log

 若删除组:

 SQL>alter database drop standby logfile group x; 

 查看standy日志组的信息:

SQL> select group#,sequence#,status, bytes/1024/1024 from v$standby_log;

GROUP# SEQUENCE# STATUS BYTES/1024/1024
---------- ---------- ---------- ---------------
4 0 UNASSIGNED 50
5 0 UNASSIGNED 50
6 0 UNASSIGNED 50
7 0 UNASSIGNED 50

2.5创建主库归档目录

[oracle@oracledb orcl]$ mkdir archivelog  --建立这个目录是为了存放主库的归档日志文件,并且这个目录会和其他数据文件等等一起拷贝到备库。
[oracle@oracledb orcl]$ cd archivelog/
[oracle@oracledb archivelog]$ ls
[oracle@oracledb archivelog]$ pwd
/u01/app/oracle/oradata/orcl/archivelog

  

2.6配置spfile文件

SQL> create pfile from spfile;--这里创建pfile是为了做一些主库参数的配置,并且还得拷贝到备库再次修改成备库的配置。
 
File created.
 
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

修改pfile配置

主库参数详解:

保持同一个Data Guard中所有的DB_NAME相同
DB_NAME=ora11g
 
 为一个数据库指定一个唯一的名称,该参数一经指定就不会发生改动除非DBA主动改动
DB_UNIQUE_NAME=ora11g_primary
 
初始化参数LOG_ARCHIVE_CONFIG用于控制发送归档日志到远程位置、接收远程归档日志,并指定Data  Guard配置的惟一数据库名,默认值为SENDRECEIVENODG_CONFIG

当设置该参数为SEND时,会激活发送归档日志到远程位置;当设置该能数为NOSEND时,会禁止发送归档日志到远程位置;当设置该参数为RECEIVE时,会激活接收远程归档日志;当设置该参数

NORECEIVE时,会禁止接收远程归档日志;当设置该参数为DG_CONFIG时,可以最多指定9个惟一数据库名;当设置该参数为NODG_CONFIG时,会禁止指定惟一数据库名。

LOG_ARCHIVE_CONFIG='DG_CONFIG=(ora11g_primary ,ora11g_standby)'   
 
指定本地归档的路径
LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora11g_primary'
 
指定远端备库的归档路径
LOG_ARCHIVE_DEST_2='SERVICE=ora11g_standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora11g_standby'
 
LOG_ARCHIVE_DEST_n(从110)定义redo文件路径。该参数必须通过locationservice指定归档文件路径。location表示本地路径,service通常是net service name,即接收redo数据的

standby数据库。

注意:每一个LOG_ARCHIVE_DEST_n都有一个对应的LOG_ARCHIVE_DEST_STATE_n参数,该参数拥有以下4个属性值:

ENABLE:默认值,表示允许传输服务

DEFER: 指定对应的log_archive_dest_n参数有效,但暂不使用

ALTERNATE:禁止传输,但是如果其他相关的目的地的连接通通失败,则它将变成enable

RESET:功能与DEFER类似,不过如果传输目的地之前有过错误,它会清除所有错误信息

LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
 
远程登录设置独享模式(z注意保证主备库密码相同)
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
%s log sequence number
%S log sequence number, zero filled %t thread number, RAC的节点中设有THREAD参数, 就是这个值了
%T thread number, zero filled
 ------其中这前4项是可以用在 9I 中的
%a activation ID
%d database ID
%r resetlogs ID that ensures unique names are constructed for the archived log files across multiple incarnations of the database

 Oracle 10g开始,log_archive_format初始化参数必须包含%s, %t  %r,以确保生成的归档重做日志名称唯一。
(原因:10g能做穿越resetlog的恢复,所以要加%r.而9i的不能做穿越resetlog的恢复,所以没有%r的参数)


LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
Primary Database的某些日志没有发送到Standby Database 这时候发生归档裂缝(Archive Gap)
缺失的日志就是裂缝(GAP)。Data Guard 能够自动检测,解决归档裂缝,不需要DBA的介入。这需要配置
FAL_CLIENT,FAL_SERVER这两个参数(FAL:Fetch Archive Log)
FAL这个名字可以看出,这个过程是 Standby Database 主动发起的取日志的过程,Standby Database 就是
FAL_CLIENT,它是从FAL_SERVER中取这些GAP10g中,这个FAL_SERVER可以是Primary Database,也可以是其他的
Standby Database
 
FAL_CLIENTFAL_SERVER两个参数都是Oracle Net NameFAL_CLIENT通过网络向FAL_SERVER发送请求,
FAL_SERVER通过网络向FAL_CLIENT发送缺失的日志
但是这两个连接不一定是一个连接。因此 FAL_CLIENTFAL_SERVER发送请求时,会携带FAL_CLIENT的参数
值,用来告诉FAL_SERVER应该向哪里发送缺少的日志。这个参数也是一个Oracle Net Name 这个NameFAL_SERVER
上定义的,用来指向FAL_CLIENT
FAL_SERVER=ora11g_standby
FAL_CLIENT=ora11g_primary
 
如果Primary数据库数据文件发生修改(如新建)则在standby数据库作相应修改
设为AUTO表示自动管理。设为MANUAL表示需要手工管理(注:重命名修改
是不会传到standby数据库)
STANDBY_FILE_MANAGEMENT=AUTO
orcl.__db_cache_size=637534208
orcl.__java_pool_size=16777216
orcl.__large_pool_size=33554432
orcl.__oracle_base='/u01/app/oracle'
orcl.__pga_aggregate_target=671088640
orcl.__sga_target=989855744
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=134217728
orcl.__streams_pool_size=16777216
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/flash_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_name='orcl'
*.db_unique_name='orclpr'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='orclpr'
*.fal_server='orcldg'
*.log_archive_config='DG_CONFIG=(orclpr,orcldg)'
*.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclpr'
*.log_archive_dest_2='SERVICE=orcldg LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=134217728
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

 用pfile启动主库,并创建spfile

SQL> shutdown immediate
ORA-01109: database not open
 

Database dismounted.
ORACLE instance shut down.
SQL> startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora'
ORACLE instance started.
 
Total System Global Area 1653518336 bytes
Fixed Size		    2253784 bytes
Variable Size		 1006636072 bytes
Database Buffers	  637534208 bytes
Redo Buffers		    7094272 bytes
SQL> create spfile from pfile;
 
File created.

2.7创建静态监听listener和tnsname

主库orclpr:192.168.1.102  

 1 [oracle@oracledb admin]$ cat listener.ora 
 2 # listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
 3 # Generated by Oracle configuration tools.
 4 
 5 LISTENER =
 6   (DESCRIPTION_LIST =
 7     (DESCRIPTION =
 8       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
 9       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
10     )
11   )
12 
13 SID_LIST_LISTENER =
14   (SID_LIST =
15     (SID_DESC =
16     (GLOBAL_DBNAME = orcl)
17     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
18     (SID_NAME = orcl)
19     )
20   )
21 
22 SAVE_CONFIG_ON_STOP_LISTENER = ON
23 ADR_BASE_LISTENER = /u01/app/oracle
 1 [oracle@oracledb admin]$ cat tnsnames.ora 
 2 # tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
 3 # Generated by Oracle configuration tools.
 4 
 5 ORACLEDB =
 6   (DESCRIPTION =
 7     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
 8     (CONNECT_DATA =
 9       (SERVER = DEDICATED)
10       (SERVICE_NAME = oracledb)
11     )
12   )
13 
14 orclpr =
15   (DESCRIPTION =
16     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
17     (CONNECT_DATA =
18       (SERVER = DEDICATED)
19       (SERVICE_NAME = orcl)
20     )
21   )
22 
23 orcldg =
24   (DESCRIPTION =
25     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.106)(PORT = 1521))
26     (CONNECT_DATA =
27       (SERVER = DEDICATED)
28       (SERVICE_NAME = orcl)
29     )
30   )

重启监听服务:

lsnrctl stop
lsnrctl start  
lsnrctl reload

2.8将密码文件和pfile文件同步到备库

[oracle@oracledb dbs]$ pwd
/u01/app/oracle/product/11.2.0/db_1/dbs
[oracle@oracledb dbs]$ scp orapworcl 192.168.1.106:/u01/app/oracle/product/11.2.0/db_1/dbs/
oracle@192.168.1.106's password: 
orapworcl                                                                                        100% 1536     1.5KB/s   00:00    
[oracle@PD dbs]$ scp initorcl.ora 192.168.1.106:/u01/app/oracle/product/11.2.0/db_1/dbs/
oracle@192.168.1.106's password: 
initorcl.ora                                                                             100% 1408    1.4KB/s  00:00

  (1)一般数据库默认就有密码文件,存放在$ORACLE_HOME/dbs/orapwSID  这里为orapworcl
如果没有sql>orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle
       (2)检查REMOTE_LOGIN_PASSWORDFILE值是否为 EXCLUSIVE
        sql>show parameter REMOTE_LOGIN_PASSWORDFILE
如果值不是EXCLUSIVE,则:alter system set remote_login_passwordfile=exclusive scope=spfile;

 

 三、备库配置

3.1修改从主库复制过来的pfile文件

[oracle@oracledb dbs]$ cat initorcl.ora 
orcl.__db_cache_size=637534208
orcl.__java_pool_size=16777216
orcl.__large_pool_size=33554432
orcl.__oracle_base='/u01/app/oracle'
orcl.__pga_aggregate_target=671088640
orcl.__sga_target=989855744
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=134217728
orcl.__streams_pool_size=16777216
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/flash_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4385144832
*.db_unique_name='orcldg'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='orcldg'
*.fal_server='orclpr'
*.log_archive_config='DG_CONFIG=(orclpr,orcldg)'
*.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg'
*.log_archive_dest_2='SERVICE=orclpr LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclpr'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
*.shared_pool_size=134217728
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

  

 3.2修改listence和tnsname文件

 1 [oracle@oracledb admin]$ cat listener.ora 
 2 # listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
 3 # Generated by Oracle configuration tools.
 4 
 5 LISTENER =
 6   (DESCRIPTION_LIST =
 7     (DESCRIPTION =
 8       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
 9       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.106)(PORT = 1521))
10     )
11   )
12 
13 SID_LIST_LISTENER =
14   (SID_LIST =
15     (SID_DESC =
16     (GLOBAL_DBNAME = orcl)
17     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
18     (SID_NAME = orcl)
19     )
20   )
21 
22 ADR_BASE_LISTENER = /u01/app/oracle
 1 [oracle@oracledb admin]$ cat tnsnames.ora 
 2 # tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
 3 # Generated by Oracle configuration tools.
 4 
 5 ORACLEDB =
 6   (DESCRIPTION =
 7     (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
 8     (CONNECT_DATA =
 9       (SERVER = DEDICATED)
10       (SERVICE_NAME = oracledb)
11     )
12   )
13 
14 orclpr =
15   (DESCRIPTION =
16     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
17     (CONNECT_DATA =
18       (SERVER = DEDICATED)
19       (SERVICE_NAME = orcl)
20     )
21   )
22 
23 orcldg =
24   (DESCRIPTION =
25     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.106)(PORT = 1521))
26     (CONNECT_DATA =
27       (SERVER = DEDICATED)
28       (SERVICE_NAME = orcl)
29     )
30   )

重启监听服务:

lsnrctl stop
lsnrctl start  
lsnrctl reload

3.3开始使用RMAN进行ADG

  1 [oracle@oracledb dbs]$ sqlplus / as sysdba
  2  
  3 SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 23 17:26:13 2016
  4  
  5 Copyright (c) 1982, 2013, Oracle.  All rights reserved.
  6  
  7 Connected to an idle instance.
  8  
  9 SQL> startup nomount
 10 ORACLE instance started.
 11  
 12 Total System Global Area 1653518336 bytes
 13 Fixed Size            2253784 bytes
 14 Variable Size         1006636072 bytes
 15 Database Buffers      637534208 bytes
 16 Redo Buffers            7094272 bytes
 17 SQL> exit
 18 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
 19 With the Partitioning, OLAP, Data Mining and Real Application Testing options
20 [oracle@oracledb dbs]$ rman target sys/sa@orclpr auxiliary sys/sa@orcldg 21 22 Recovery Manager: Release 11.2.0.1.0 - Production on Wed Mar 23 17:26:33 2016 23 24 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 25 26 connected to target database: ORCL (DBID=1434698509) 27 connected to auxiliary database: ORCL (not mounted) 28 29 RMAN> duplicate target database for standby from active database nofilenamecheck; 30 31 Starting Duplicate Db at 23-MAR-16 32 using target database control file instead of recovery catalog 33 allocated channel: ORA_AUX_DISK_1 34 channel ORA_AUX_DISK_1: SID=19 device type=DISK 35 36 contents of Memory Script: 37 { 38 backup as copy reuse 39 targetfile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapworcl' auxiliary format 40 '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapworcl' ; 41 } 42 executing Memory Script 43 44 Starting backup at 23-MAR-16 45 allocated channel: ORA_DISK_1 46 channel ORA_DISK_1: SID=40 device type=DISK 47 Finished backup at 23-MAR-16 48 49 contents of Memory Script: 50 { 51 backup as copy current controlfile for standby auxiliary format '/u01/app/oracle/oradata/orcl/control01.ctl'; 52 restore clone controlfile to '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl' from 53 '/u01/app/oracle/oradata/orcl/control01.ctl'; 54 } 55 executing Memory Script 56 57 Starting backup at 23-MAR-16 58 using channel ORA_DISK_1 59 channel ORA_DISK_1: starting datafile copy 60 copying standby control file 61 output file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f tag=TAG20160323T172644 RECID=4 STAMP=907262805 62 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 63 Finished backup at 23-MAR-16 64 65 Starting restore at 23-MAR-16 66 using channel ORA_AUX_DISK_1 67 68 channel ORA_AUX_DISK_1: copied control file copy 69 Finished restore at 23-MAR-16 70 71 contents of Memory Script: 72 { 73 sql clone 'alter database mount standby database'; 74 } 75 executing Memory Script 76 77 sql statement: alter database mount standby database 78 79 contents of Memory Script: 80 { 81 set newname for tempfile 1 to 82 "/u01/app/oracle/oradata/orcl/temp01.dbf"; 83 switch clone tempfile all; 84 set newname for datafile 1 to 85 "/u01/app/oracle/oradata/orcl/system01.dbf"; 86 set newname for datafile 2 to 87 "/u01/app/oracle/oradata/orcl/sysaux01.dbf"; 88 set newname for datafile 3 to 89 "/u01/app/oracle/oradata/orcl/undotbs01.dbf"; 90 set newname for datafile 4 to 91 "/u01/app/oracle/oradata/orcl/users01.dbf"; 92 set newname for datafile 5 to 93 "/u01/app/oracle/oradata/orcl/example01.dbf"; 94 backup as copy reuse 95 datafile 1 auxiliary format 96 "/u01/app/oracle/oradata/orcl/system01.dbf" datafile 97 2 auxiliary format 98 "/u01/app/oracle/oradata/orcl/sysaux01.dbf" datafile 99 3 auxiliary format 100 "/u01/app/oracle/oradata/orcl/undotbs01.dbf" datafile 101 4 auxiliary format 102 "/u01/app/oracle/oradata/orcl/users01.dbf" datafile 103 5 auxiliary format 104 "/u01/app/oracle/oradata/orcl/example01.dbf" ; 105 sql 'alter system archive log current'; 106 } 107 executing Memory Script 108 executing command: SET NEWNAME 109 renamed tempfile 1 to /u01/app/oracle/oradata/orcl/temp01.dbf in control file 110 executing command: SET NEWNAME 111 executing command: SET NEWNAME 112 executing command: SET NEWNAME 113 executing command: SET NEWNAME 114 executing command: SET NEWNAME 115 Starting backup at 23-MAR-16 116 using channel ORA_DISK_1 117 channel ORA_DISK_1: starting datafile copy 118 input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf 119 output file name=/u01/app/oracle/oradata/orcl/system01.dbf tag=TAG20160323T172653 120 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25 121 channel ORA_DISK_1: starting datafile copy 122 input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf 123 output file name=/u01/app/oracle/oradata/orcl/sysaux01.dbf tag=TAG20160323T172653 124 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25 125 channel ORA_DISK_1: starting datafile copy 126 input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf 127 output file name=/u01/app/oracle/oradata/orcl/example01.dbf tag=TAG20160323T172653 128 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15 129 channel ORA_DISK_1: starting datafile copy 130 input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf 131 output file name=/u01/app/oracle/oradata/orcl/undotbs01.dbf tag=TAG20160323T172653 132 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07 133 channel ORA_DISK_1: starting datafile copy 134 input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf 135 output file name=/u01/app/oracle/oradata/orcl/users01.dbf tag=TAG20160323T172653 136 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 137 Finished backup at 23-MAR-16 138 sql statement: alter system archive log current 139 contents of Memory Script: 140 { 141 switch clone datafile all; 142 } 143 executing Memory Script 144 datafile 1 switched to datafile copy 145 input datafile copy RECID=4 STAMP=907262888 file name=/u01/app/oracle/oradata/orcl/system01.dbf 146 datafile 2 switched to datafile copy 147 input datafile copy RECID=5 STAMP=907262888 file name=/u01/app/oracle/oradata/orcl/sysaux01.dbf 148 datafile 3 switched to datafile copy 149 input datafile copy RECID=6 STAMP=907262888 file name=/u01/app/oracle/oradata/orcl/undotbs01.dbf 150 datafile 4 switched to datafile copy 151 input datafile copy RECID=7 STAMP=907262888 file name=/u01/app/oracle/oradata/orcl/users01.dbf 152 datafile 5 switched to datafile copy 153 input datafile copy RECID=8 STAMP=907262888 file name=/u01/app/oracle/oradata/orcl/example01.dbf 154 Finished Duplicate Db at 23-MAR-16 155 RMAN>

过程中遇到的一些问题:

  • [oracle@oracledb dbs]$ rman target sys/sa@orclpr auxiliary sys/sa@orcldg
     登录sysdba账号的话会提示权限不足c
  • connected to target database: ORCL (not mounted)
    connected to auxiliary database: ORCL (not mounted)
   连接不到target database,检查主库数据库状态


3.4打开备库并开启apply service
[oracle@oracledb dbs]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 23 17:48:47 2016
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
SQL> alter database open;
 
Database altered.
 
SQL> select open_mode from v$database;
 
OPEN_MODE
--------------------
READ ONLY
 
SQL> alter database recover managed standby database disconnect from session;
 
Database altered.
3.5 dataguard启动关闭顺序
       (1)监听
          先启从库再起主库
   #lsnrctl start
       (2)启动
          先启从库:
   sql>startup nomount
   sql>alter database mount standby database;
   sql>alter database recover managed standby database using current logfile disconnect from session;
   在启主库
   sql>startup
        (3)关闭:和开启正好相反
           先关主库:
    sql>shutdown immediate
    再关从库:
    sql>alter database recover managed standby database cancel;
    sql>shutdown immediate;


四、检验是否成功
主库orclpr:192.168.1.102
SQL> create table Csong(id number(10),name varchar2(20));
 
Table created.
 
SQL> insert into Csong values(1,'Csong');
 
1 row created.
 
SQL> insert into Csong values(2,'Lyuanyuan');
 
1 row created.
 
SQL> commit;
 
Commit complete.
 
SQL> alter system switch logfile;#强制切换日志
 
System altered.
 
SQL> 

备库orcldg:192.168.1.106

SQL> desc Csong
 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID						    NUMBER(10)
 NAME						    VARCHAR2(20)
 
SQL> select * from Csong;
 
	ID NAME
---------- --------------------
	 1 Csong
	 2 Lyuanyuan

五、搭建过程常见问题
5.1 备库重启后,需要重新启动redo应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
  --启动实时应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
  --这个命令指示备库开始使用备用日志文件进行恢复。它也告诉备库命令完成后回到命令行界面
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
  --此时只是暂时 redo 应用,并不是停止 Standby 数据库,standby 仍会保持接收只不过不会再应用接收到的归档,直到你再次启动 redo 应用为止
重复启动redo应用会报错
ora-01153:an incompatible media recovery is active
此时需要先取消,再启动

5.2 DG和ADG的区别
10g之前的dg备库必须处于Mount状态,才可以接收应用redo log,11g增加的ADG的功能支持,备库处于open状态(默认为read only模式),同时可以接收并应用redo log,是对DG的一个优化。

5.3 若初始化参数LOG_ARCHIVE_DEST_2配置ASYNC传输方式,而系统默认的保护模式是最大性能模式,这种写入可以是不同步的;若需要实时同步主库数据库操作,还得需要配置LGWR SYNC选项,
并选择最大可用或最大保护模式,备库还需要配置standby redo logfile(最大性能模式备库可不配)。
参考该问答论坛:http://www.itpub.net/thread-1879333-1-1.html 以及了解ADG原理

 

posted @ 2021-08-24 23:19  李大风  阅读(492)  评论(0)    收藏  举报