您的位置:首页 > 数据库 > Oracle

Oracle 11gr2 duplicate active database 搭建物理DG

2014-08-19 01:57 555 查看




源网址:http://blog.sina.com.cn/s/blog_4c98be4501010fip.html



active database特性说明

在进行standby database搭建的时候,可以手工使用rman的duplicate命令搭建,或者通过全备恢复,直接通过rman duplicate自动搭建的方式比传统的手工搭建有如下的好处:
直接拷贝当前在用的主库,不用备份
在创建stnadyb
database的过程中,不影响主库
自动重命名数据文件,包括OMF和目录的结构
自动恢复归档日志,保护主库的同步

 

传统方案:全备+归档日志

此方案搭建DG中间花费的时间都比较多,特别是当要应用比较多的归档日志的时候,不过可控性好,可以熟悉整个中间的过程。

11G R2新方案:duplicate active database

该方案采用duplicate active database方式,直接通过snap镜像的模式,可以不用备份就直接搭建Standby Database,而且减少了中间很多操作的过程,速度上也比较快,在应用归档日志,需要的时间极少。下面是实现环境:

实验环境:

DB_TYPE
IP
DB_NAME
DB_UNIQUE_NAME
Oracle Net Service Name
Primary Database
1.1.1.1
ORCL
ORCL
primary
Standby Database
1.1.1.2
ORCL
ORCL_DR
standby
 

测试结果:

数据传输速率:20M/s

磁盘RAID:RAID5

数据量:100G

RMAN分配并行度:2 #分配多个进程去主库拉取数据,建议不要设置太大

ORACLE 版本:11.2.0.2

完成时间:35min

 

使用Duplicate active database 搭建Standby Database的过程:

Primary DB上的操作

1、primary启动为归档模式,并设置到force logging模式。

    SQL> shutdown immediate

    SQL> startup mount

    SQL> alter database archivelog;

    SQL> alter database open;

    SQL> alter database force logging;

说明:一般主库都是归档模式,需要检查下是否强制日志,所以一般只要做alter database force logging的操作就行了。

SQL> select log_mode,force_logging from v$database;

 

LOG_MODE FOR

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

ARCHIVELOG YES

 

2、设置密码文件

$cd $ORACLE_HOME/dbs

$orapwd file=orapw<$ORACLE_SID> password=<password>

说明:密码文件最好只保持一份

3、修改tnsname.ora 配置

    设置如下:

    $cd $ORACLE_HOME/network/admin/

    $cat listener.ora

    LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = <GamedbIP>)(PORT = 1521))

)

)

 

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(ORACLE_HOME = /u/ora11g/product/11.2.0/db_1)

(SID_NAME = <$ORACLE_SID>)

)

)

 

$cat tnsnames.ora

STANDBY =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = <GamedrIP>)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = <$ORACLE_SID>)

)

)

 

PRIMARY =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = <GamedbIP>)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = <$ORACLE_SID>)

)

)

4、修改初始化参数文件

    SQL>alter system set log_archive_config='DG_CONFIG=(<$ORACLE_SID>,<DRName>)';

    SQL>alter system set log_archive_dest_2='SERVICE=standby ASYNC VALID_FO R=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=<DRName>';

    SQL> alter system set archive_lag_target=900;

SQL> alter system set log_archive_dest_state_2=enable; #这一步等standby搭建完成再使用

 

Standby DB上的操作

安装软件及主机设置步骤省略,参考相应安装指南

1、创建相关目录

    $mkdir –p /u/ora11g/admin/<$ORACLE_SID>/adump

    $mkdir –p /test /<$ORACLE_SID>

2、创建数据文件相关目录

    如果采用raw device,配置对应的raw,同Primary DB文件等保持一致。

$mkdir –p /u/ora11g/oradata/<$ORACLE_SID>

3、准备Standby DB的初始化参数。

$cd $ORACLE_HOME/dbs

$vi init<$ORACLE_SID>.ora

*.archive_lag_target=900

*.audit_file_dest='/u/ora11g/admin/<$ORACLE_SID>/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/u/ora11g/oradata/<$ORACLE_SID>/db_ctl01.ctl','/u/ora11g/oradata/<$ORACLE_SID>/db_ctl02.ctl','/u/ora11g/oradata/<$ORACLE_SID>/db_ctl03.ctl'#Restore
Controlfile

*.cursor_sharing='FORCE'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_files=1000

*.db_name='<$ORACLE_SID>'

*.db_recovery_file_dest='/u/ora11g/fast_recovery_area'

*.db_recovery_file_dest_size=5218762752

*.db_unique_name='<DRName>'

*.diagnostic_dest='/u/ora11g'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=<$ORACLE_SID>XDB)'

*.fal_client='STANDBY'

*.fal_server='PRIMARY'

*.filesystemio_options='ASYNCH'

*.job_queue_processes=30

*.log_archive_config='DG_CONFIG=(<$ORACLE_SID>,<DRName>)'

*.log_archive_dest_1='LOCATION=/arch/<$ORACLE_SID>'

*.log_archive_format='<$ORACLE_SID>_%t_%s_%r.arc'

*.log_archive_max_processes=10

*.open_cursors=5000

*.pga_aggregate_target=1736441856

*.processes=1500

*.remote_login_passwordfile='EXCLUSIVE'

*.sec_case_sensitive_logon=FALSE

*.session_cached_cursors=1000

*.sessions=1655

*.sga_max_size=40000m

*.sga_target=40000m

*.shared_pool_size=1258291200

*.standby_file_management='AUTO'

*.undo_retention=16800

*.undo_tablespace='UNDOTBS1'

4、配置listener.ora及tnsnames.ora文件

参考Primary DB中的信息并修改对应Listener.ora里面的IP,然后启动Listener

    $lsnrctl start

 

5、恢复数据库

1)启动到nomount

sqlplus / as sysdba

SQL>create spfile from pfile;

SQL>startup nomount;

 

2)恢复数据库

rman target sys/password @primary auxiliary sys/password@standby nocatalog

rman>duplicate target database for standby from active database nofilenamecheck;

说明:

A.参数nofilenamecheck表示当主从库目录一致时要加入,否则报错

B.该过程包括恢复控制文件,口令文件,启动到mount状态下。

 

6、.添加Standby Redo Logfiles

$mkdir –p /test/<$ORACLE_SID>/stby

$sqlplus / as sysdba

alter database add standby logfile group 34 ('/test/<$ORACLE_SID>/db_stb_redo04.log') size 500m;

其它类似

 

8、启动Data Guard同步

 

说明:有可能在启动的时候报system表空间和控制文件记录的内容出现不一致,这个时候最好的方法就是,去主库拷贝最近的归档过来,同时在启用实时应用前最好先将归档拷贝过来。

SQL> alter database open read only;

SQL>recover standby database;

输入AUTO恢复

再执行上面的

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

 

    此时记得执行Primary DB设置中的第6步,启动主库到备库的日志传输;

    后面根据alert_<$ORACLE_SID>.log日志确认同步的状态。

 

特别说明:

默认的一般都要手工拷贝Primary DB上的归档日志到Standby DB上应用到最近的时间点再开始同步,避免造成Primary Db上报归档错误,影起前端业务在线波动;

 

该方法适用于ORACLE 11GR2的版本,同时经过观察,对主库业务和网络影响不大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: