ITPub博客

首页 > 数据库 > Oracle > ORACLE 11gR2 11.2.0.4 一步一步 物理DG

ORACLE 11gR2 11.2.0.4 一步一步 物理DG

Oracle 作者:yy418408247 时间:2016-06-22 14:29:49 0 删除 编辑

应朋友的需求,今天搭建物理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。
如果不明白,刚接触的人,把两个都加上去,以免出错。

点击(此处)折叠或打开

  1. [oracle@zhanglin admin]$ cat listener.ora
  2. # listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/listener.ora
  3. # Generated by Oracle configuration tools.

  4. LISTENER1 =                                 ----备库监听,端口号1523
  5.   (DESCRIPTION =
  6.     (ADDRESS = (PROTOCOL = TCP)(HOST = zhanglin)(PORT = 1523))   ---host 既可以是主机名,也可以是主机IP,如果是双机,建-
  7.   )                                                                    议使用IP

  8. SID_LIST_LISTENER =
  9.   (SID_LIST =
  10.     (SID_DESC =
  11.       (GLOBAL_DBNAME = prod)
  12.       (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
  13.       (SID_NAME = prod)
  14.     )
  15.   )

  16. SID_LIST_LISTENER1 =
  17.   (SID_LIST =
  18.     (SID_DESC =
  19.       (GLOBAL_DBNAME = emrep)
  20.       (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
  21.       (SID_NAME = emrep)
  22.     )
  23.   )

  24. ADR_BASE_LISTENER1 = /u01/app/oracle

  25. LISTENER =                      ----主库监听  端口号1521
  26.   (DESCRIPTION =
  27.     (ADDRESS = (PROTOCOL = TCP)(HOST = zhanglin)(PORT = 1521))
  28.   )

  29. ADR_BASE_LISTENER = /u01/app/oracle
tnsname.ora 文件内容:

点击(此处)折叠或打开

  1. [oracle@zhanglin admin]$ cat tnsnames.ora
  2. # tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/tnsnames.ora
  3. # Generated by Oracle configuration tools.

  4. PROD =
  5.   (DESCRIPTION =
  6.     (ADDRESS_LIST =
  7.       (ADDRESS = (PROTOCOL = TCP)(HOST = zhanglin)(PORT = 1521))
  8.     )
  9.     (CONNECT_DATA =
  10.       (SERVICE_NAME = prod)
  11.     )
  12.   )

  13. EMREP =
  14.   (DESCRIPTION =
  15.     (ADDRESS_LIST =
  16.       (ADDRESS = (PROTOCOL = TCP)(HOST = zhanglin)(PORT = 1523))
  17.     )
  18.     (CONNECT_DATA =
  19.       (SERVICE_NAME = emrep)
  20.     )
  21.   )



主库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.

预先看一下数据库的三文件的位置

点击(此处)折叠或打开

  1. SQL> select name from v$datafile;

  2. NAME
  3. --------------------------------------------------------------------------------
  4. /u01/app/oradata/prod/prod/system01.dbf
  5. /u01/app/oradata/prod/prod/sysaux01.dbf
  6. /u01/app/oradata/prod/prod/undotbs01.dbf
  7. /u01/app/oradata/prod/prod/users01.dbf

  8. SQL> select name from v$controlfile;
  9. NAME
  10. --------------------------------------------------------------------------------
  11. /u01/app/oradata/prod/prod/control01.ctl
  12. /u01/app/oradata/prod/prod/control02.ctl

  13. SQL> select member from v$logfile;
  14. MEMBER
  15. --------------------------------------------------------------------------------
  16. /u01/app/oradata/prod/prod/redo03.log
  17. /u01/app/oradata/prod/prod/redo02.log
  18. /u01/app/oradata/prod/prod/redo01.log

 

修改主库日志文件组的大小和成员,这里你也可以给每个组添加日志成员,并修改日志成员大小。

点击(此处)折叠或打开

  1. SQL> alter database drop logfile group 1;
  2. Database altered.
  3. SQL> alter database add logfile group 1 (\'/u01/app/oradata/prod/prod/redo01a.log\',\'/u01/app/oradata/prod/prod/redo01b.log\') size 50m;
  4. Database altered.
  5. SQL> alter database drop logfile group 3;
  6. Database altered.
  7. SQL> alter database add logfile group 3 (\'/u01/app/oradata/prod/prod/redo03a.log\',\'/u01/app/oradata/prod/prod/redo03b.log\') size 50m;
  8. Database altered.
  9. SQL> alter system switch logfile;

提示:在删除redo log时,要先查看日志的状态。之后status 是inavtive 和unused才可以被删除,CURRENT 表示当前正在使用,既然在使用肯定不能删除啊,
ACTIVE 表示活动状态,切换日志后,虽然不是当前使用的,但是由于日志不可能立即刷新到磁盘,所以这是日志还在被使用状态。


点击(此处)折叠或打开

  1. SQL> set line190
  2. SQL> col MEMBER format a48
  3. SQL> col STATUS format a10
  4. SQL> select a.GROUP#,a.BYTES/1024/1024,a.MEMBERS,a.STATUS,b.member from v$log a,v$logfile b where a.GROUP#=b.GROUP# order by b.GROUP#;

  5.     GROUP# A.BYTES/1024/1024 MEMBERS STATUS MEMBER
  6. ---------- ----------------- ---------- ---------- ------------------------------------------------
  7.          1 50 2 CURRENT /u01/app/oradata/prod/prod/redo01a.log
  8.          1 50 2 CURRENT /u01/app/oradata/prod/prod/redo01b.log
  9.          2 50 1 ACTIVE /u01/app/oradata/prod/prod/redo02.log
  10.          3 40 2 UNUSED /u01/app/oradata/prod/prod/redo03b.log
  11.          3 40 2 UNUSED /u01/app/oradata/prod/prod/redo03a.log
  12. SQL> alter system switch logfile;
  13. SQL> alter database drop logfile group 2;

  14. Database altered.
  15. SQL> ! rm -rf /u01/app/oradata/prod/prod/redo02.log

  16. SQL> alter database add logfile group 2 (\'/u01/app/oradata/prod/prod/redo02a.log\',\'/u01/app/oradata/prod/prod/redo02b.log\') size 50m;

  17. Database altered.


添加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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
游戏是我的全部图景,我将演绎所有的游戏角色,我是每个活着角色的传奇。 --开心研

注册时间:2014-02-19

  • 博文量
    44
  • 访问量
    63770