应朋友的需求,今天搭建物理DG同时写下文档:
环境介绍:
系统 : RedHat6.3_x64
Oracle:11.2.0.4
这里的做物理DG前提是你已经安装好了Oracle软件,同时DBCA创建好了你的主库。
我是在同一台机器里搭建DG,所以目录跟主库的不一样,如果是双机做,目录就可以一模一样,这样更方便。
主库名:prod
备库名:emrep
搭建物理dg大致一下几步:
1、建主库
2、修改主库和备库参数文件
3、恢复备库
4、启用归档日志应用
一、首先是建立listener和tnsname.因为DG是走监听的。
listener.ora 为主库的监听
listener1.ora为备库的监听。
我这里分别以实例名命名tnsname.ora里面的。
注意:tnsname.ora如果是双机做DG,tnsname.ora就要填写对方的实例。
假如我的是双机。即相互连接。 主库prod的tnsname.ora里面是指向备库emrep。备库的tnsname.ora 里面指向的是主库prod。
如果不明白,刚接触的人,把两个都加上去,以免出错。
点击(此处)折叠或打开
点击(此处)折叠或打开
主库prod操作:
SQL> create pfile from spfile; ---》由于是dbca创建的主库,这里要手动产生PFILE
接下来,修改主库的归档路径,注意修改为归档,需在mount阶段做,dbca创建完成实例后,默认是open;
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1.1257E+10 bytes
Fixed Size 2263336 bytes
Variable Size 5939136216 bytes
Database Buffers 5301600256 bytes
Redo Buffers 14352384 bytes
Database mounted.
SQL> alter system set log_archive_dest_1='location=/u01/app/oradata/prod/archivelog' ;
System altered.
SQL> alter database archivelog;
Database altered.
SQL> alter database force logging; ---》强制记录日志
Database altered.
预先看一下数据库的三文件的位置
点击(此处)折叠或打开
修改主库日志文件组的大小和成员,这里你也可以给每个组添加日志成员,并修改日志成员大小。
点击(此处)折叠或打开
提示:在删除redo log时,要先查看日志的状态。之后status 是inavtive 和unused才可以被删除,CURRENT 表示当前正在使用,既然在使用肯定不能删除啊,
ACTIVE 表示活动状态,切换日志后,虽然不是当前使用的,但是由于日志不可能立即刷新到磁盘,所以这是日志还在被使用状态。
点击(此处)折叠或打开
添加standby logfile
standby logfile 官方给出的standby logfile要比redo log 至少多一组,成员大小一样。
提示:关于standby log 的存放,其实跟redo log的存放类似,要考虑到冗余,分散I/O。并以方便查看和管理 为原则。
SQL> ALTER DATABASE ADD STANDBY LOGFILE
group 4 ('/u01/app/oradata/standbylog/redo04a.log','/u01/app/oradata/standbylog/redo04b.log') size 50M,
group 5 ('/u01/app/oradata/standbylog/redo05a.log','/u01/app/oradata/standbylog/redo05b.log') size 50M,
group 6 ('/u01/app/oradata/standbylog/redo06a.log','/u01/app/oradata/standbylog/redo06b.log') size 50M,
group 7 ('/u01/app/oradata/standbylog/redo07a.log','/u01/app/oradata/standbylog/redo07b.log') size 50M;
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oradata/prod/prod/redo03a.log
/u01/app/oradata/prod/prod/redo02a.log
/u01/app/oradata/prod/prod/redo01a.log
/u01/app/oradata/prod/prod/redo01b.log
/u01/app/oradata/prod/prod/redo03b.log
/u01/app/oradata/prod/prod/redo02b.log
/u01/app/oradata/standbylog/redo04a.log
/u01/app/oradata/standbylog/redo04b.log
/u01/app/oradata/standbylog/redo05a.log
/u01/app/oradata/standbylog/redo05b.log
/u01/app/oradata/standbylog/redo06a.log
MEMBER
--------------------------------------------------------------------------------
/u01/app/oradata/standbylog/redo06b.log
/u01/app/oradata/standbylog/redo07a.log
/u01/app/oradata/standbylog/redo07b.log
14 rows selected.
SQL>
修改init文件
这是修改后的主库prod :
[oracle@newbidb dbs]$ cat initprod.ora
prod.__db_cache_size=5301600256
prod.__java_pool_size=201326592
prod.__large_pool_size=134217728
prod.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
prod.__pga_aggregate_target=4529848320
prod.__sga_target=6777995264
prod.__shared_io_pool_size=0
prod.__shared_pool_size=1073741824
prod.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/prod/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oradata/prod/prod/control01.ctl','/u01/app/oradata/prod/prod/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='prod'
*.diagnostic_dest='/u01/app/oracle'
#*.dispatchers='(PROTOCOL=TCP) (SERVICE=prodXDB)'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(prod,emrep)'
log_archive_dest_1='location=/u01/app/oradata/prod/archivelog --主库的归档路径
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=prod'
DB_UNIQUE_NAME=prod
DB_FILE_NAME_CONVERT='/u01/app/oradata/emrep/emrep/','/u01/app/oradata/prod/prod/' --主备库数据文件转换 巧记 先别人 后自己,先备后主
LOG_FILE_NAME_CONVERT='/u01/app/oradata/emrep/emrep/','/u01/app/oradata/prod/prod/' --主备库日志文件转换
log_archive_dest_2='SERVICE=emrep ASYNC
valid_for=(online_logfiles,primary_role) --备库的归档路径
db_unique_name=emrep'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
FAL_SERVER=emrep -- failed switch
fal_client=prod
*.memory_target=11298406400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
[oracle@newbidb dbs]$
---------------------------分割线----------
cp 主库的pfile文件生成备库的pfile文件
[oracle@newbidb dbs]$ cp initprod.ora initemrep.ora
这是修改后的备库emrep :
[oracle@newbidb dbs]$ cat initemrep.ora
prod.__db_cache_size=5301600256
prod.__java_pool_size=201326592
prod.__large_pool_size=134217728
prod.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
prod.__pga_aggregate_target=4529848320
prod.__sga_target=6777995264
prod.__shared_io_pool_size=0
prod.__shared_pool_size=1073741824
prod.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/emrep/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
control_files='/u01/app/oradata/emrep/emrep/control01.ctl','/u01/app/oradata/emrep/emrep/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='prod'
*.diagnostic_dest='/u01/app/oracle'
#*.dispatchers='(PROTOCOL=TCP) (SERVICE=prodXDB)'
db_unique_name=emrep
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_CONFIG='DG_CONFIG=(prod,emrep)'
log_archive_dest_1='location=/u01/app/oradata/emrep/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=emrep'
log_archive_dest_2='SERVICE=prod valid_for=(online_logfiles,primary_role) db_unique_name=prod'
DB_FILE_NAME_CONVERT='/u01/app/oradata/prod/prod/','/u01/app/oradata/emrep/emrep/'
LOG_FILE_NAME_CONVERT='/u01/app/oradata/prod/prod/','/u01/app/oradata/emrep/emrep/'
FAL_SERVER=prod
fal_client=emrep
*.memory_target=11298406400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
[oracle@newbidb dbs]$
cp 主库的密码文件生成备库的密码文件
[oracle@zhanglin dbs]$ cp orapwprod orapwemrep
备库emrep操作:
登录到备库,用initemrep.ora 打开备库到nomount阶段
[oracle@zhanglin dbs]$ export ORACLE_SID=emrep
[oracle@zhanglin dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Sep 29 12:21:51 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile=/u01/app/oracle/product/11.2.0.4/db_1/dbs/initemrep.ora
ORACLE instance started.
Total System Global Area 1.1257E+10 bytes
Fixed Size 2263336 bytes
Variable Size 5872027352 bytes
Database Buffers 5368709120 bytes
Redo Buffers 14352384 bytes
SQL> !
rman登录同时使用11g新特性duplicate 在线恢复restore 备库
[oracle@zhanglin u01]$ rman target sys/oracle@prod auxiliary sys/oracle@emrep
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Sep 29 12:25:36 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: PROD (DBID=271384494, not open)
connected to auxiliary database: PROD (not mounted)
RMAN> duplicate target database for standby from active database;
由于篇幅较大,这里省略
rman之后实例emrep默认是mount阶段:
SQL> select status from v$instance ;
STATUS
------------
MOUNTED
查看实例emrep的文件路径,如果转换成功,则参数设置正确。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oradata/emrep/emrep/system01.dbf
/u01/app/oradata/emrep/emrep/sysaux01.dbf
/u01/app/oradata/emrep/emrep/undotbs01.dbf
/u01/app/oradata/emrep/emrep/users01.dbf
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oradata/emrep/emrep/control01.ctl
/u01/app/oradata/emrep/emrep/control02.ctl
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oradata/emrep/emrep/redo03a.log
/u01/app/oradata/emrep/emrep/redo02a.log
/u01/app/oradata/emrep/emrep/redo01a.log
/u01/app/oradata/emrep/emrep/redo01b.log
/u01/app/oradata/emrep/emrep/redo03b.log
/u01/app/oradata/emrep/emrep/redo02b.log
/u01/app/oradata/standbylog/redo04a.log
/u01/app/oradata/standbylog/redo04b.log
/u01/app/oradata/standbylog/redo05a.log
/u01/app/oradata/standbylog/redo05b.log
/u01/app/oradata/standbylog/redo06a.log
MEMBER
--------------------------------------------------------------------------------
/u01/app/oradata/standbylog/redo06b.log
/u01/app/oradata/standbylog/redo07a.log
/u01/app/oradata/standbylog/redo07b.log
备库开启日志实时应用
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL>
查看备库emrep当前的归档日志号
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oradata/emrep/archivelog
Oldest online log sequence 8
Next log sequence to archive 0
Current log sequence 10
SQL>
备库alert.log
Primary database is in MAXIMUM PERFORMANCE mode
RFS[4]: Assigned to RFS process 10783
RFS[4]: Selected log 4 for thread 1 sequence 9 dbid 271384494 branch 859556145
Media Recovery Log /u01/app/oradata/emrep/archivelog/1_8_859556145.dbf
Media Recovery Waiting for thread 1 sequence 9 (in transit)
Recovery of Online Redo Log: Thread 1 Group 4 Seq 9 Reading mem 0
Mem# 0: /u01/app/oradata/standbylog/redo04a.log
Mem# 1: /u01/app/oradata/standbylog/redo04b.log
Mon Sep 29 13:56:02 2014
RFS[4]: No standby redo logfiles available for thread 1
Mon Sep 29 13:56:02 2014
Archived Log entry 7 added for thread 1 sequence 9 ID 0x102cffa7 dest 1:
RFS[4]: Opened log for thread 1 sequence 10 dbid 271384494 branch 859556145
Mon Sep 29 13:56:02 2014
Media Recovery Waiting for thread 1 sequence 10 (in transit)
主库:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oradata/prod/archivelog
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10
SQL> 创建一个表空间测试,是否可以传递到备库emrep中:
SQL> create tablespace test datafile '/u01/app/oradata/prod/prod/test.dbf' size 10m;
Tablespace created.
SQL> alter system switch logfile;
System altered.
在备库上查看
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oradata/emrep/emrep/system01.dbf
/u01/app/oradata/emrep/emrep/sysaux01.dbf
/u01/app/oradata/emrep/emrep/undotbs01.dbf
/u01/app/oradata/emrep/emrep/users01.dbf
/u01/app/oradata/emrep/emrep/test.dbf
5 rows selected.
SQL>
说明归档日志成功传递,并成功被备库应用。
至此物理DG搭建成功,后面可以做主备切换:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29494175/viewspace-2120699/ ,如需转载,请注明出处,否则将追究法律责任。