ITPub博客

首页 > 数据库 > Oracle > 实验: RHEl5.4 配置Oracle 10G DataGuard

实验: RHEl5.4 配置Oracle 10G DataGuard

原创 Oracle 作者:Torvalds0310 时间:2014-05-07 15:23:37 0 删除 编辑
配置Physical Standby DB
实验环境:
Primary: oracle1(192.168.100.11) - prod_dg - prod_dg
Standby: oracle2(192.168.100.12) - std_dg - stg_dg

实验步骤:
1. 在主库上设置归档模式,开始force logging
a. Enable Forced Logging
SQL> alter database force logging;

b. Enable Archive.
SQL> archive log list;
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database archivelog; (or noarchivelog)
SQL> alter database open;

2. 在主库上添加standby redolog goup(日志文件大小和组数必须大于等于当前的relog)
alter database add standby logfile thread 4 '/u01/app/oracle/oradata/prod_dg/redo04.log' size 100M;
alter database add standby logfile thread 5 '/u01/app/oracle/oradata/prod_dg/redo05.log' size 100M;
alter database add standby logfile thread 6 '/u01/app/oracle/oradata/prod_dg/redo06.log' size 100M;
alter database add standby logfile thread 7 '/u01/app/oracle/oradata/prod_dg/redo07.log' size 100M;

3. 配置主库和备库的监听器 -> listener.ora
Primary DB:
配置静态监听listener,分别设置service name prod and proddg
[oracle@oracle1 admin]$ cat listener.ora
LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=oracle1)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=prod)
      (ORACLE_HOME=/u01/app/oracle/product/10.2.0/dbhome_1)
      (SID_NAME=prod_dg))
    (SID_DESC=
      (GLOBAL_DBNAME=proddg)
      (ORACLE_HOME=/u01/app/oracle/product/10.2.0/dbhome_1)
      (SID_NAME=prod_dg))
    (SID_DESC=
      (SID_NAME=prod_dg)
      (ORACLE_HOME=/u01/app/oracle/product/10.2.0/dbhome_1)
      (PROGRAM=extproc)))

Standby DB:
配置静态监听listener,设置service name std
[oracle@oracle2 admin]$ cat listener.ora
LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=oracle2)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=std)
      (ORACLE_HOME=/u01/app/oracle/product/10.2.0/dbhome_1)
      (SID_NAME=std_dg))
    (SID_DESC=
      (SID_NAME=std_dg)
      (ORACLE_HOME=/u01/app/oracle/product/10.2.0/dbhome_1)
      (PROGRAM=extproc)))

4. 配置主备库本地监听 -> tnsnames.ora
Primary DB:
[oracle@oracle1 admin]$ cat tnsnames.ora
prod=
 (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=oracle1)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=prod)))
std_dg=
 (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=oracle2)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=std)))

Standdy DB:
[oracle@oracle2 admin]$ cat tnsnames.ora
std=
 (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=oracle2)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=std)))
prod_dg=
 (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=oracle1)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=prod)))

5. 配置主库的parameter file.
Primary DB parameter files:
DB_NAME=prod_dg
DB_UNIQUE_NAME=prod_dg
LOG_ARCHIVE_CONFIG='DG_CONFIG=(prod_dg,std_dg)'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/prod_dg/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=prod_dg'
LOG_ARCHIVE_DEST_2='SERVICE=std_dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=std_dg'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30
FAL_SERVER=prod_dg
FAL_CLIENT=std_dg
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/prod_dg/','/u01/app/oracle/oradata/std_dg/'
LOG_FILE_NAME_CONVERT='/u01/app/oracle/prod_dg/arch/','/u01/app/oracle/std_dg/arch/'
STANDBY_FILE_MANAGEMENT=AUTO

6. 配置主库的parameter file.
Standby DB parameter file:
[oracle@oracle2 dbs]$ cat initstd_dg.ora
control_files='/u01/app/oracle/oradata/std_dg/control01.ctl','/u01/app/oracle/oradata/std_dg/control02.ctl'
db_block_size=8192
db_name='prod_dg'
db_unique_name='std_dg'
db_recovery_file_dest='/u01/app/oracle/db_recovery'
db_recovery_file_dest_size=6G
fal_client='STD_DG'
fal_server='PROD_DG'
log_archive_config='DG_CONFIG=(prod_dg,std_dg)'
log_archive_dest_1='LOCATION=/u01/app/oracle/std_dg/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=std_dg'
log_archive_dest_2='SERVICE=prod_dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=prod_dg'
log_archive_dest_state_1='ENABLE'
log_archive_dest_state_2='ENABLE'
log_archive_max_processes=30
log_file_name_convert='/u01/app/oracle/prod_dg/arch/','/u01/app/oracle/std_dg/arch/'
db_file_name_convert='/u01/app/oracle/oradata/prod_dg/','/u01/app/oracle/oradata/std_dg/'
processes=1000
pga_aggregate_target=100M
sessions=1200
sga_target=200M

7. 设置备库的口令文件
[oracle@oracle2 dbs]$ orapwd file=orapwdstd_dg password=oracle

8. 备份主库的控制文件到备库
a. 主库备份
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/std_dg.ctl';
SQL> ALTER DATABASE OPEN;
[oracle@oracle1 tmp]$ scp std_dg.ctl oracle2:/tmp/

b. 备库恢复
[oracle@oracle1 tmp]$ cp std_dg.ctl /u01/app/oracle/oradata/std_dg/control01.ctl
[oracle@oracle1 tmp]$ cp std_dg.ctl /u01/app/oracle/oradata/std_dg/control02.ctl

9. 备份主库并恢复到备库
a. 备份主库
RMAN> backup database;

b. copy备份到备库
oracle@oracle1 2014_05_06]$ scp o1_mf_n* oracle2:/tmp/

c. 在备库上恢复
[oracle@oracle2 tmp]$ mv o1_mf_n* /u01/app/oracle/db_recovery/
此时我们已经有了参数文件,控制文件,可以启动数据库到mount状态
SQL> startup mount;
RMAN> rman target /
RMAN> catalog start with '/u01/app/oracle/db_recovery’;
RMAN> restore database;

10.  Start Redo Apply.
On the standby database, issue the following command to start Redo Apply:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

11. 确认physical standby的数据是否正常工作
a. 确认已经归档的redo logfile.
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 SEQUENCE# FIRST_TIME            NEXT_TIME
---------- ------------------- -------------------
      5 2014-05-05 05:07:01 2014-05-06 03:18:17
      6 2014-05-06 03:18:17 2014-05-07 01:28:30
      7 2014-05-07 01:28:30 2014-05-07 02:52:04

b. 在主库上做一次日志切换 -> 在主库上操作
SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.

c. 确认新的redo是不是已经归档到备库上 -> 在备库上操作
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 SEQUENCE# FIRST_TIME            NEXT_TIME
---------- ------------------- -------------------
      5 2014-05-05 05:07:01 2014-05-06 03:18:17
      6 2014-05-06 03:18:17 2014-05-07 01:28:30
      7 2014-05-07 01:28:30 2014-05-07 02:52:04
      8 2014-05-07 02:52:04 2014-05-07 03:04:27

d. 确认新归档的redo logfile是否已经应用
SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 SEQUENCE# APP
---------- ---
      5 YES
      6 YES
      7 YES
      8 YES

未完实验:
a. 设置Logical Standby
b. 主备库的切换
c. 数据文件备份,数据库备份
d. 数据文件和日志文件管理

未完待续.....

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29048127/viewspace-1155982/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-03-05

  • 博文量
    4
  • 访问量
    54411