1 创建物理备库准备工作
1.1 修改RAC数据库为FORCE LOGGING
SQL> select force_logging from v$database;
FOR
---
NO
SQL>
SQL> ALTER DATABASE FORCE LOGGING; //详细记录日志
Database altered.
SQL> select force_logging from v$database;
FORCE_LOG
---------
YES
1.2 查询online的redo log
注:通常我们设置生产库的每个redo大小为512M~2048M之间,并且大于等于三组
SQL> set linesize 150;
set pagesize 50;
column MB format a5;
column STATUS format a12;
column MEMBER format a50;
select l.GROUP#,l.THREAD#,l.BYTES/1024/1024||'MB' MB,l.STATUS, lf.TYPE,lf.MEMBER from v$log l,v$logfile lf where l.GROUP#=lf.GROUP#;
GROUP# THREAD# MB STATUS TYPE MEMBER
--------- ------- ---- -------- ------ -------------------
3 1 50MB CURRENT ONLINE /oradata/orcl/redo03.log
2 1 50MB INACTIVE ONLINE /oradata/orcl/redo02.log
1 1 50MB INACTIVE ONLINE /oradata/orcl/redo01.log
1.3 编辑hosts文件主机名解析配置
1.3.1 编辑主库的/etc/hosts文件
[root@db11g ~]# vim /etc/hosts
192.168.56.90 db11g
192.168.56.99 db10g
编辑备库主机db10g的/etc/hosts文件
[root@db10g ~]# vim /etc/hosts
192.168.56.90 db11g
192.168.56.99 db10g
1.4 设置备库主机监听
编辑listener.ora文件,编辑后,启动或重载监听,查看是否启动服务
$ vi $ORACLE_HOME/network/admin/listener.ora
添加并确认以下内容:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.99)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_ORACLE = /u02/app/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcldg)
(ORACLE_HOME =/u02/app/oracle/product/10.2.0/db_1)
(SID_NAME = orcldg)
)
)
启动监听
[oracle@db10g ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 11-MAR-2017 19:11:40
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Starting /u02/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for IBM/AIX RISC System/6000: Version 11.2.0.4.0 - Production
System parameter file is /u02/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Log messages written to /u02/app/oracle/product/11.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.99)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.99)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production
Start Date 11-MAR-2017 19:11:40
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP ON
Listener Parameter File /u02/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u02/app/oracle/product/11.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.99)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcldg" has 1 instance(s).
Instance "orcldg", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfull
1.5 编辑tnsnames.ora文件
1.5.1 主库tnsnames.ora文件编辑
[oracle@db11g dbs]$
vi $ORACLE_HOME/network/admin/tnsnames.ora
添加内容:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db11g)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcldg=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.99)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCLDG)
)
)
1.5.2 备库主机dg10g编辑tnsnames.ora文件
[oracle@db10g dbs]$
vi $ORACLE_HOME/network/admin/tnsnames.ora
添加内容:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db11g)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcldg=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.99)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCLDG)
)
)
验证tnsname配置
主库:[oracle@db11g dbs]$ tnsping orcldg
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 20-MAR-2017 14:23:40
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
/u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.99)(PORT = 1521))) (CONNECT_DATA = (SID = ORCLDG)))
OK (10 msec)
备库:[oracle@db10g ~]$ tnsping orcl
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 28-MAR-2017 15:03:13
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = db11g)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (20 msec)
1.6 主库初始化参数检查与设置
1.6.1 查看数据库DB_NAME
SQL> set linesize 150;
show parameters DB_NAME
NAME TYPE VALUE
db_name string orcl
SQL>
1.6.2 查看数据库DB_UNIQUE_NAME和归档模式
SQL> set linesize 150;
show parameters DB_UNIQUE_NAME
NAME TYPE VALUE
db_unique_name string ORCL
SQL>
SQL> select DB_UNIQUE_NAME,NAME,LOG_MODE from v$database;
DB_UNIQUE_NAME NAME LOG_MODE
------------------------------ --------- ------------
ORCL ORCL ARCHIVELOG
SQL>
1.6.3 查看LOG_ARCHIVE_CONFIG参数,并设置
查看归档设置
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/oracle/backup/arch
Oldest online log sequence 16
Next log sequence to archive 18
Current log sequence 18
SQL> set linesize 150;
show parameters LOG_ARCHIVE_CONFIG
NAME TYPE VALUE
log_archive_config string
SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldg)';
System altered.
SQL> set linesize 150;
show parameters LOG_ARCHIVE_CONFIG
NAME TYPE VALUE
log_archive_config string DG_CONFIG=(orcl,orcldg)
1.6.4 查看控制文件路径
SQL> set linesize 150;
show parameters CONTROL_FILES
NAME TYPE VALUE
control_files string /oradata/orcl/control01.ctl, /Oradata/orcl/control02.ctl
1.6.5 主库查看并设置归档参数
修改归档参数LOG_ARCHIVE_DEST_1和LOG_ARCHIVE_DEST_2:
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/backup/arch(添加自己归档日志路径) VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl';
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcldg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg';
System altered.
查看当前归档参数:
SQL> set linesize 150;
show parameters LOG_ARCHIVE_DEST_1
NAME TYPE VALUE
log_archive_dest_1 string LOCATION=/home/oracle/backup/a
rch VALID_FOR=(ALL_LOGFILES,AL
L_ROLES) DB_UNIQUE_NAME=orcl
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string
log_archive_dest_13 string
log_archive_dest_14 string
log_archive_dest_15 string
log_archive_dest_16 string
log_archive_dest_17 string
NAME TYPE VALUE
log_archive_dest_18 string
log_archive_dest_19 string
SQL> show parameters LOG_ARCHIVE_DEST_2
NAME TYPE VALUE
log_archive_dest_2 string SERVICE=primary LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl
1.6.6确认LOG_ARCHIVE_DEST_STATE_1、LOG_ARCHIVE_DEST_STATE_2参数为" enable "
SQL> show parameters LOG_ARCHIVE_DEST_STATE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_1 string ENABLE
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string DEFER
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
SQL>
归档路径启用方法:
SQL> alter system set log_archive_dest_state_2=ENABLE;
System altered.
SQL>
归档路径禁用方法:
SQL> alter system set log_archive_dest_state_2=defer;
System altered.
SQL>
1.6.6 确认REMOTE_LOGIN_PASSWORDFILE参数为"EXCLUSIVE"
SQL> show parameters REMOTE_LOGIN_PASSWORDFILE
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
remote_login_passwordfile string EXCLUSIVE
查看并设置LOG_ARCHIVE_MAX_PROCESSES参数
SQL> show parameters LOG_ARCHIVE_MAX_PROCESSES
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 2
SQL> alter system set LOG_ARCHIVE_MAX_PROCESSES=5;
System altered.
SQL> show parameters LOG_ARCHIVE_MAX_PROCESSES
NAME TYPE VALUE
log_archive_max_processes integer 5
1.6.7 设置switch over参数FAL_SERVER,FAL_CLIENT
注:主库的服务端是备库,客户端是主库;备库的服务端是主库,客户端是备库;不要混淆。
SQL> alter system set FAL_SERVER=orcldg;
System altered.
SQL> show parameters FAL_SERVER
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_server string ORCLDG
SQL>
SQL> alter system set FAL_CLIENT=orcl;
System altered.
SQL> show parameters FAL_CLIENT
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string ORCL
1.6.8 设置数据文件名、redo log文件名转换参数
SQL> alter system set DB_FILE_NAME_CONVERT='/oradata/orcl/','/oradata/orcldg' scope=spfile;
System altered.
SQL> alter system set LOG_FILE_NAME_CONVERT='/oradata/orcl/','/oradata/orcldg' scope=spfile;
System altered.
1.6.9 设置备用文件管理方式参数
SQL> show parameters STANDBY_FILE_MANAGEMENT
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
SQL>
SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO;
System altered.
SQL> show parameters STANDBY_FILE_MANAGEMENT
NAME TYPE VALUE
-
standby_file_management string AUTO
1.6.10 重启数据库,使修改的参数生效 (可忽略该步骤)
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
启动所有节点实例:
SQL> startup
ORACLE instance started.
Total System Global Area 5.3447E+10 bytes
Fixed Size 2265864 bytes
Variable Size 1.3556E+10 bytes
Database Buffers 3.9863E+10 bytes
Redo Buffers 26480640 bytes
Database mounted.
Database opened.
1.7 全备份主库
run{
allocate channel c1 device type disk;
backup database format '/home/oracle/backup/full_%d_%T_%s_%p.bak';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup archivelog all format '/home/oracle/backup/arch_%d_%T_%s_%p.bak';
release channel c1;
}
1.8 备份当前控制文件为STANDBY模式
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY format '/home/oracle/backup/controlfile_%d_%T.bak';
1.9 传输RMAN备份到备库主机
在备库上创建一个接收目录
mkdir -p /home/oracle/backup
Scp * 192.168.56.99:/home/oracle/backup
1.10 传输密码文件到备库主机,并重命名
注:搭建DG完成后,可能会出现主库无法连接到备库的情况,原因之一是口令文件存在问题;可以重新传输口令文件进行尝试,或者备库口令文件权限可以改为777。
cd /u01/app/oracle/product/11.2.0/db_1/dbs
scp orapworcl 192.168.56.99:/u02/app/oracle/product/11.2.0/db_1/dbs/orapworcldg
2 创建物理备库
2.1 编辑.profile文件设置ORACLE_SID环境变量
[oracle@db10g ~]$ vim .bash_profile
PATH=$PATH:$HOME/bin
export PATH
ORACLE_BASE=/u02/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
ORACLE_SID=orcldg
ORACLE_UNQNAME=orcldg
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export ORACLE_HOME ORACLE_BASE ORACLE_SID PATH
修改完成后一定要退出oracle用户,重新进来,使环境变量生效
2.2 从自动备份的控制文件和spfile参数文件的备份集中恢复spfile参数文件
进入DUMMY,恢复参数文件
RMAN> restore spfile to '/home/oracle/orcldg.ora' from '/home/oracle/backup/spfile_ORCL_20150512_8093_1.bak';
2.3 编辑备库pfile初始化参数文件
在SQL*PLUS中通过恢复的spfile参数文件创建pfile初始化参数文件
$ sqlplus / as sysdba
Shutdown immediate
SQL> create pfile='/home/oracle/init.ora' from spfile='/home/oracle/orcldg.ora';
File created.
编辑pfile初始化参数文件
$ vi /home/oracle/init.ora
修改后:
orcl.__sga_target=1056964608
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=285212672
orcl.__streams_pool_size=0
*.audit_file_dest='/u02/app/oracle/admin/orcldg/adump'
*.audit_sys_operations=FALSE
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/oradata/orcldg/control01.ctl','/oradata/orcldg/control02.ctl'#Restore Controlfile
*.db_block_size=8192
*.db_domain=''
*.db_file_name_convert='/oradata/orcl/','/oradata/orcldg/'
*.db_name='orcl'
*.db_unique_name='orcldg'
*.diagnostic_dest='/u02/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='ORCLDG'
*.fal_server='ORCL'
*.job_queue_processes=1000
*.log_archive_config='DG_CONFIG=(orcl,orcldg)'
*.log_archive_dest_1='LOCATION=/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg'
*.log_archive_dest_2='SERVICE=orcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.log_archive_max_processes=5
*.log_file_name_convert='/oradata/orcl/','/oradata/orcldg/','/oradata/orcl/','/oradata/orcldg/srl/'(在备库上创建这个目录)
*.memory_target=1605369856
*.open_cursors=300
*.processes=1200
*.remote_login_passwordfile='EXCLUSIVE'
*.service_names=''
*.sessions=1325
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
2.4 备库主机创建必需的目录
$ cd /u02/app/oracle/admin/orcl
$ ls
adump cdump
2.5 创建spfile动态初始化参数文件
$ sqlplus / as sysdba
SQL> create spfile from pfile='/home/oracle/init.ora';
File created.
2.6 启动数据库到nomount阶段
SQL> startup nomount
2.7 RMAN恢复创建备库
2.7.1 恢复控制文件
RMAN> RESTORE STANDBY CONTROLFILE from '/home/oracle/backup/controlfile_ORCL_20170312.bak';
2.7.2 mount数据库
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
2.7.3 查看数据库表空间、数据文件、redo log文件
2.7.3.1 RMAN查看表空间、数据文件
RMAN> report schema;
using target database control file instead of recovery catalog
RMAN-06139: WARNING: control file is not current for REPORT SCHEMA
Report of database schema for database with db_unique_name ORCLDG
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 760 SYSTEM *** /oradata/orcldg/system01.dbf
2 720 SYSAUX *** /oradata/orcldg/sysaux01.dbf
3 295 UNDOTBS1 *** /oradata/orcldg/undotbs01.dbf
4 16 USERS *** /oradata/orcldg/users01.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 20 TEMP 32767 /oradata/orcldg/temp01.dbf
2.7.3.2 SQL*PLUS中查询永久表空间,数据文件
$ sqlplus / as sysdba
SQL> set linesize 150;
set pagesize 200;
column TBS_NAME format a20;
column DBF_NAME format a60;
select tbs.NAME TBS_NAME,dbf.NAME DBF_NAME from v$tablespace tbs,v$datafile dbf where tbs.TS#=dbf.TS#;
TBS_NAME DBF_NAME
-------------------- ------------------------------------------------------------
SYSTEM /oradata/orcldg/system01.dbf
SYSAUX /oradata/orcldg/sysaux01.dbf
UNDOTBS1 /oradata/orcldg/undotbs01.dbf
USERS /oradata/orcldg/users01.dbf
2.7.3.3 SQL*PLUS中查询临时表空间,数据文件
SQL> set linesize 150;
column TBS_NAME format a20;
column DBF_NAME format a60;
select tbs.NAME TBS_NAME,dbf.NAME DBF_NAME from v$tablespace tbs,v$tempfile dbf where tbs.TS#=dbf.TS#;
TBS_NAME DBF_NAME
-------------------- ------------------------------------------------------------
TEMP /oradata/orcldg/temp01.dbf
2.7.3.4 SQL*PLUS中查询redo log 文件
SQL> set linesize 150;
set pagesize 50;
column TYPE format a8;
column MEMBER format a60;
select lf.GROUP#,l.THREAD#,lf.TYPE,l.BYTES/1024/1024 MB,lf.MEMBER from v$logfile lf,v$log l where lf.GROUP#=l.GROUP#;
GROUP# THREAD# TYPE MB MEMBER
---------- ---------- -------- ---------- ------------------------------------------------------------
3 1 ONLINE ########## /oradata/orcldg/redo03.log
2 1 ONLINE ########## /oradata/orcldg/redo02.log
1 1 ONLINE ########## /oradata/orcldg/redo01.log
2.7.3.5 创建数据文件,redo log存放的目录
$ pwd
/oradata/standby
$ mkdir datafile onlinelog tempfile
$ ls
control datafile onlinelog tempfile
$
2.7.4 RMAN重载数据库
注:重载数据库前,先同步元数据,使控制文件元数据和实际存在数据同步。
RMAN> crosscheck backup;
RMAN> crosscheck archivelog all;
RMAN> delete expired backup;
RMAN> delete expired archivelog all;
RMAN> catalog start with '/home/oracle/backup';
注:接下来的步骤为重载数据库,重载数据库前一定要检查好控制文件中记录的数据库物理结构,保证在备库的实际位置与控制文件记录位置一致。
RMAN>restore database
2.7.5 列出备份的所有归档日志
记录所有线程最后一个归档日志信息
RMAN> list backup of archivelog all;
2.7.6 恢复数据库
以每个线程最后一个归档日志Next SCN最大的值为恢复结束点恢复:
RMAN> recover database until scn 5614038512;
2.8 主备库添加sdandby redo log
2.8.1 SQL*PLUS中为备库添加sdandby redo log
创建适当数量的Standby Redo Log组数
公式如下:
如果主库是单实例数据库:Standby Redo Log组数=主库redo日志组总数+1
如果主库是RAC数据库:Standby Redo Log组数=(所有节点中redo日志组数最大值 + 1) * RAC节点数
从上面日志组查询结果可见,此主数据库是两节点的RAC数据库,每个节点包含四组日志。因此Standby Redo Log组数=(4+1)*2=10。
需要创建四组Standby Redo Log日志。
确认数据库参数MAXLOGFILES和MAXLOGMEMBERS不会限制Standby Redo Log创建
MAXLOGFILES和MAXLOGMEMBERS这两参数是在使用“CREATE DATABASE”语句创建数据库时做的限制,用于限制数据库日志文件的最大数量和日志组中成员的最大数量。
如果在创建数据库时没有注意这个问题会导致Standby Redo Log无法创建的问题,解决方法只能是重新创建主库或者重新创建主库的控制文件。所以,一定要做好前期的规划。
备库:
alter database add standby logfile thread 1 group 21 '/oradata/orcldg/srl/srl21' size 50m;
alter database add standby logfile thread 1 group 22 '/oradata/orcldg/srl/srl22' size 50m;
alter database add standby logfile thread 1 group 23 '/oradata/orcldg/srl/srl23' size 50m;
alter database add standby logfile thread 1 group 24 '/oradata/orcldg/srl/srl24' size 50m;
2.8.2 备库确认添加的sdandby redo log
SQL> set linesize 150;
set pagesize 50;
column MB format a5;
column STATUS format a12;
column MEMBER format a50;
select sl.GROUP#,sl.THREAD#,sl.BYTES/1024/1024||'MB' MB,sl.STATUS, lf.TYPE,lf.MEMBER from v$standby_log sl,v$logfile lf where sl.GROUP#=lf.GROUP#;
GROUP# THREAD# MB STATUS TYPE MEMBER
---------- ---------- ----- ------------ -------- --------------------------------------------------
21 1 50MB ACTIVE STANDBY /oradata/orcldg/srl/srl21
22 1 50MB UNASSIGNED STANDBY /oradata/orcldg/srl/srl22
23 1 50MB UNASSIGNED STANDBY /oradata/orcldg/srl/srl23
24 1 50MB UNASSIGNED STANDBY /oradata/orcldg/srl/srl24
2.8.3 主库添加standby redo log
alter database add standby logfile thread 1 group 21 '/oradata/orcl/sr121' size 50m;
alter database add standby logfile thread 1 group 22 '/oradata/orcl/sr122' size 50m;
alter database add standby logfile thread 1 group 23 '/oradata/orcl/sr123' size 50m;
alter database add standby logfile thread 1 group 24 '/oradata/orcl/sr124' size 50m;
2.8.4 主库确认添加的standby redo log
SQL> set linesize 150;
set pagesize 50;
column MB format a5;
column STATUS format a12;
column MEMBER format a50;
select sl.GROUP#,sl.THREAD#,sl.BYTES/1024/1024||'MB' MB,sl.STATUS, lf.TYPE,lf.MEMBER from v$standby_log sl,v$logfile lf where sl.GROUP#=lf.GROUP#;
GROUP# THREAD# MB STATUS TYPE MEMBER
---------- ---------- ----- ------------ ------- --------------------------------------------------
21 1 50MB UNASSIGNED STANDBY /oradata/orcl/srl21
22 1 50MB UNASSIGNED STANDBY /oradata/orcl/sr122
23 1 50MB UNASSIGNED STANDBY /oradata/orcl/sr123
24 1 50MB UNASSIGNED STANDBY /oradata/orcl/sr124
2.9 物理备库启用恢复管理
打开数据库
SQL> alter database open;
Database altered.
注:如果提示需要介质恢复,说明数据文件恢复不一致,可再次备份主库归档日志到备库继续进行恢复,同样需要指定SCN号进行恢复。
查询备库状态
SQL> set linesize 150;
column DBNAME format a6;
column DBUNAME format a10;
column cftype format a8;
column OPEN_MODE format a20;
column DATABASE_ROLE format a18;
select name dbname,db_unique_name dbuname,controlfile_type cftype,database_role,open_mode from v$database;
DBNAME DBUNAME CFTYPE DATABASE_ROLE OPEN_MODE
------ ---------- -------- ------------------ --------------------
ORCL ORCLDG STANDBY PHYSICAL STANDBY READ ONLY
SQL>
注:从该步骤起,需要根据不同的数据库版本进行不同的操作,11g数据库可做成ADG模式,即数据库以read_only状态打开并实时应用日志;
10g数据库为了不影响主库性能,只能做成归档模式,即数据库启动到mount状态并应用归档日志,主库归档日志可设置为20min切换一次,不要低于20分钟,否则会影响主库性能。
10g归档模式:
开启日志应用进程:
SQL> startup mount force;
ORACLE instance started.
Total System Global Area 2.6223E+10 bytes
Fixed Size 2131528 bytes
Variable Size 2684357048 bytes
Database Buffers 2.3522E+10 bytes
Redo Buffers 14643200 bytes
Database mounted.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
Database altered.
SQL>
#############################################################################################
11g ADG模式:
SQL> startup force;
ORACLE instance started.
Total System Global Area 2.6223E+10 bytes
Fixed Size 2131528 bytes
Variable Size 2684357048 bytes
Database Buffers 2.3522E+10 bytes
Redo Buffers 14643200 bytes
Database mounted
Database opened.
开启日志应用进程:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
Database altered.
SQL>
#############################################################################################
备库查询:
SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=1;
RECOVERY_MODE
---------------------------------------------------------------------
MANAGED REAL TIME APPLYs
2.10 物理备库后续工作
2.10.1 修改备库文件管理参数为自动
注:备库修改参数standby_file_management为AUTO后,将无法更改备库的任何数据文件属性,若需更改,需切换为manual。
SQL> alter system set standby_file_management=AUTO;
System altered.
2.10.2 查看备库是否生成redo log
$ ls -l /oradata/orcldg/
2.10.3 查看备库状态
SQL> set linesize 150;
column DBNAME format a6;
column DBUNAME format a10;
column cftype format a8;
column OPEN_MODE format a20;
column DATABASE_ROLE format a18;
select name dbname,db_unique_name dbuname,controlfile_type cftype,open_mode,database_role from v$database;
DBNAME DBUNAME CFTYPE OPEN_MODE DATABASE_ROLE
------ ---------- -------- -------------------- ------------------
ORCL ORCLDG STANDBY MOUNTED PHYSICAL STANDBY
SQL>
2.10.4 查询备库恢复管理进程情况
SQL> SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY;
PROCESS STATUS
--------- ------------
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
MRP0 WAIT_FOR_LOG
6 rows selected.
SQL>
2.10.5 备库查询重做数据传输和应用滞后
SQL> set linesize 150;
set pagesize 20;
column name format a13;
column value format a20;
column unit format a30;
column TIME_COMPUTED format a30;
select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');
NAME VALUE UNIT TIME_COMPUTED
------------- -------------------- ------------------------------ ------------------------------
transport lag +00 00:00:00 day(2) to second(0) interval 03/28/2017 16:12:09
apply lag +00 00:00:00 day(2) to second(0) interval 03/28/2017 16:12:09