ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle10g+windows2003 dataguard完整配置方案

oracle10g+windows2003 dataguard完整配置方案

原创 Linux操作系统 作者:fengjin821 时间:2009-06-06 17:44:20 0 删除 编辑

感言:历时一个月断断续续的摸索和研究(因为工作原因没有那么多余的时间给我一直研究这玩意儿),参考各类资料(其中主要是10g的document,这玩意儿真是好东西不过全英文看得我两眼发昏)同时在itpub上咨询万能的puber(他们给了我不少的帮助)终于今天整理出了一套完整的方案与大家分享!当然这里面还有很多不足之处还望各位指正!

oracle10g dataguard配置方案:
1、在要创建standby的主机上先创建实例和相应目录(主机安装了10g但未建实例)
C:\Documents and Settings\Administrator>oradim -new -sid orcl
实例已创建
C:\Documents and Settings\Administrator>set orcle_sid=orcl
然后再D:\oracle\product\10.2.0下建立admin,flash_recovery_area,oradata等目录及其子目录。

2、数据库force logging
SQL> alter database force logging;

Database altered

SQL> select force_logging from v$database;

FOR
---
YES

3、将主库设置为archive log状态
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size             100663976 bytes
Database Buffers          184549376 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
SQL> alter database archivelog;

数据库已更改。

SQL> archive log start
已处理的语句
SQL> alter database open
  2  ;

数据库已更改。

SQL> alter system set log_archive_dest_1='location=D:\oracle\product\10.2.0\db_1\database\archive' scope=spfile;

系统已更改。

SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            D:\oracle\product\10.2.0\db_1\database\archive
最早的联机日志序列     2
下一个存档日志序列   4
当前日志序列           4

4、在主库创建standby redo log 大小与主库联机日志大小一样,组数至少比primary中的log file数量大1
SQL> alter database add standby logfile group 4 'D:\oracle\product\10.2.0\oradata\orcl\standbyredo04.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 5 'D:\oracle\product\10.2.0\oradata\orcl\standbyredo05.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 6 'D:\oracle\product\10.2.0\oradata\orcl\standbyredo06.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 7 'D:\oracle\product\10.2.0\oradata\orcl\standbyredo07.log' size 50M;

数据库已更改。

SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

    GROUP#    THREAD#  SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
         4          0          0 YES UNASSIGNED
         5          0          0 YES UNASSIGNED
         6          0          0 YES UNASSIGNED
         7          0          0 YES UNASSIGNED

5、设置主库初始化参数
SQL> create pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.071205' from spfile;

文件已创建。

编辑pfile设置相应参数:
orcl.__db_cache_size=180355072
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=96468992
orcl.__streams_pool_size=0
*.audit_file_dest='D:\oracle\product\10.2.0/admin/orcl/adump'
*.background_dump_dest='D:\oracle\product\10.2.0/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='D:\oracle\product\10.2.0\oradata\orcl\control01.ctl','D:\oracle\product\10.2.0

\oradata\orcl\control02.ctl','D:\oracle\product\10.2.0\oradata\orcl\control03.ctl'
*.core_dump_dest='D:\oracle\product\10.2.0/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='D:\oracle\product\10.2.0/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
###################modified log_archive_dest_1 add "VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary"###############
*.log_archive_dest_1='location=D:\oracle\product\10.2.0\db_1\database\archive\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=primary'
*.open_cursors=300
*.pga_aggregate_target=95420416
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=287309824
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\oracle\product\10.2.0/admin/orcl/udump'
######################new parameters#####################
DB_UNIQUE_NAME=primary
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_MAX_PROCESSES=4
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
FAL_CLIENT = primary
FAL_SERVER = standby
DB_FILE_NAME_CONVERT='standby','primary'
STANDBY_FILE_MANAGEMENT =AUTO
log_file_name_convert='D:\oracle\product\10.2.0\oradata\orcl','D:\oracle\product\10.2.0\oradata\orcl'

6、主库用修改后的pfile创建spfile(创建前最好对spfile做个备份)
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> create spfile='D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA' from pfile
='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.071205';

文件已创建。

7、在主库用RMAN做一个全备
C:\Documents and Settings\Administrator>rman nocatalog target
'sys/admin@orcl as
 sysdba'

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 12月 5 10:14:07 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: ORCL (DBID=1168216473)
使用目标数据库控制文件替代恢复目录

RMAN> run{
2> allocate channel c1 type disk;
3> backup format 'd:\db_bakup\full%u_%s_%p' database
4> include current controlfile;
5> sql 'alter system archive log current';
6> backup filesperset 10 archivelog all format='d:\db_bakup\log%u_%s.bak';
7> release channel c1;
8> }

分配的通道: c1
通道 c1: sid=151 devtype=DISK

启动 backup 于 05-12月-07
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件 fno=00005 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
通道 c1: 正在启动段 1 于 05-12月-07
通道 c1: 已完成段 1 于 05-12月-07
段句柄=D:\DB_BAKUP\FULL01J2R48U_1_1 标记=TAG20071205T102118 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:01:36
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 c1: 正在启动段 1 于 05-12月-07
通道 c1: 已完成段 1 于 05-12月-07
段句柄=D:\DB_BAKUP\FULL02J2R4BU_2_1 标记=TAG20071205T102118 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 05-12月-07

sql 语句: alter system archive log current

启动 backup 于 05-12月-07
当前日志已存档
通道 c1: 正在启动存档日志备份集
通道 c1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =29 记录 ID=1 时间戳=640517123
输入存档日志线程 =1 序列 =30 记录 ID=2 时间戳=640519124
输入存档日志线程 =1 序列 =31 记录 ID=3 时间戳=640519987
输入存档日志线程 =1 序列 =32 记录 ID=4 时间戳=640520583
输入存档日志线程 =1 序列 =33 记录 ID=5 时间戳=640520584
通道 c1: 正在启动段 1 于 05-12月-07
通道 c1: 已完成段 1 于 05-12月-07
段句柄=D:\DB_BAKUP\LOG03J2R4C9_3.BAK 标记=TAG20071205T102304 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 05-12月-07

释放的通道: c1

RMAN>

8、在主库创建备用服务器控制文件
SQL> alter database create standby controlfile as 'D:\db_bakup\standby.ctl';

数据库已更改。

9、拷贝backup,pfile,standby controlfile(将standby.ctl拷贝到备库后复制多份,比如复制改名为CONTROL01.CTL,CONTROL02.CTL,

CONTROL03.CTL),PWD file等到相应的目录
   在备库建立与主库一样的备份目录将备份文件拷贝进去,即前面主库RMAN备份指定目录为D:\db_bakup则在备库也建立相同的D:\db_bakup目

录。(可在rman中通过list backup命令查看)

10、修改standby的pfile

orcl.__db_cache_size=180355072
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=96468992
orcl.__streams_pool_size=0
*.audit_file_dest='D:\oracle\product\10.2.0/admin/orcl/adump'
*.background_dump_dest='D:\oracle\product\10.2.0/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='D:\oracle\product\10.2.0\oradata\orcl\control01.ctl','D:\oracle\product\10.2.0

\oradata\orcl\control02.ctl','D:\oracle\product\10.2.0\oradata\orcl\control03.ctl'
*.core_dump_dest='D:\oracle\product\10.2.0/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='D:\oracle\product\10.2.0/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
###################modified log_archive_dest_1 add "VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary"###############
*.log_archive_dest_1='location=D:\oracle\product\10.2.0\db_1\database\archive\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=standby'
*.open_cursors=300
*.pga_aggregate_target=95420416
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=287309824
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\oracle\product\10.2.0/admin/orcl/udump'
######################new parameters#####################
DB_UNIQUE_NAME=standby
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_2='SERVICE=primary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_MAX_PROCESSES=4
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
FAL_CLIENT = standby
FAL_SERVER = primary
DB_FILE_NAME_CONVERT='primary','standby'
STANDBY_FILE_MANAGEMENT =AUTO
log_file_name_convert='D:\oracle\product\10.2.0\oradata\orcl','D:\oracle\product\10.2.0\oradata\orcl'

11、在备库端还原数据库

SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup nomount pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.0
71114'
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              92275392 bytes
Database Buffers          188743680 bytes
Redo Buffers                7139328 bytes
SQL> alter database mount standby database;

数据库已更改。

C:\Documents and Settings\Administrator>rman nocatalog target /

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 12月 5 10:45:11 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到目标数据库: ORCL (DBID=1168216473, 未打开)
使用目标数据库控制文件替代恢复目录

RMAN> show all;

RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S
NCFORCL.ORA'; # default

RMAN> list backup;


备份集列表
===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
1       Full    663.16M    DISK        00:01:31     05-12月-07
        BP 关键字: 1   状态: AVAILABLE  已压缩: NO  标记: TAG20071205T102118
段名:D:\DB_BAKUP\FULL01J2R48U_1_1
  备份集 1 中的数据文件列表
  文件 LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
  1       Full 503172     05-12月-07 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTE
M01.DBF
  2       Full 503172     05-12月-07 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOT
BS01.DBF
  3       Full 503172     05-12月-07 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAU
X01.DBF
  4       Full 503172     05-12月-07 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS
01.DBF
  5       Full 503172     05-12月-07 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST0
1.DBF

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
2       Full    6.80M      DISK        00:00:03     05-12月-07
        BP 关键字: 2   状态: AVAILABLE  已压缩: NO  标记: TAG20071205T102118
段名:D:\DB_BAKUP\FULL02J2R4BU_2_1
  包括的控制文件: Ckp SCN: 503213       Ckp 时间: 05-12月-07
  包含的 SPFILE: 修改时间: 05-12月-07

BS 关键字  大小       设备类型占用时间 完成时间
------- ---------- ----------- ------------ ----------
3       11.47M     DISK        00:00:03     05-12月-07
        BP 关键字: 3   状态: AVAILABLE  已压缩: NO  标记: TAG20071205T102304
段名:D:\DB_BAKUP\LOG03J2R4C9_3.BAK

  备份集 3 中的已存档日志列表
  Thrd Seq     低 SCN    短时间     下一个 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    29      487188     04-12月-07 498934     05-12月-07
  1    30      498934     05-12月-07 501253     05-12月-07
  1    31      501253     05-12月-07 502088     05-12月-07
  1    32      502088     05-12月-07 503226     05-12月-07
  1    33      503226     05-12月-07 503231     05-12月-07

RMAN> restore database;

启动 restore 于 05-12月-07
启动 implicit crosscheck backup 于 05-12月-07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=150 devtype=DISK
已交叉检验的 3 对象
完成 implicit crosscheck backup 于 05-12月-07

启动 implicit crosscheck copy 于 05-12月-07
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 05-12月-07

搜索恢复区域中的所有文件
正在编制文件目录...
没有为文件编制目录

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正将数据文件00002恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
正将数据文件00005恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\DB_BAKUP\FULL01J2R48U_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\DB_BAKUP\FULL01J2R48U_1_1 标记 = TAG20071205T102118
通道 ORA_DISK_1: 恢复完成, 用时: 00:05:16
完成 restore 于 05-12月-07

RMAN> restore archivelog all;

启动 restore 于 05-12月-07
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=29
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=30
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=31
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=32
通道 ORA_DISK_1: 正在恢复存档日志
存档日志线程 =1 序列=33
通道 ORA_DISK_1: 正在读取备份段 D:\DB_BAKUP\LOG03J2R4C9_3.BAK
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\DB_BAKUP\LOG03J2R4C9_3.BAK 标记 = TAG20071205T102304
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:08
完成 restore 于 05-12月-07

RMAN>


12、分别在主库和备库配置监听并启动
1)配置主库listener.ora如下:
# listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GOLBAL_DBNAME = orcl)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = fengzhu)(PORT = 1521))
    )
  )

2)在备库使用netca配置listener.ora配置如下:
# listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GOLBAL_DBNAME = orcl)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = test)(PORT = 1521))
    )
  )
3)主库和备库的tnsnames.ora都加入以下配置:
PRIMARY =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 190.75.16.243)(PORT = 1521))
    )
    (CONNECT_DATA =
      (service_name = orcl)
    )
  )

STANDBY =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 190.75.16.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (service_name = orcl)
    )
  )

13、备库端创建spfile
SQL> create spfile='D:\oracle\product\10.2.0\db_1\database\SPFILEORCL.ORA' from
pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.071205';

文件已创建。

14、启动备库
SQL> shutdown immediate
ORA-01109: ??????


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              92275392 bytes
Database Buffers          188743680 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。

15、在备库建立standby redo log和online redo log
在备库上建立standby log,大小与主库联机日志大小一样,组数至少大1;(如果是最大性能保护模式,可以不添加standby log,但是建议添

加上,避免损失更多数据)
在备库中不需要建立联机日志,它会自动创建与主库一样的日志的。

首先在主库切换一次日志,使备库中记录的原主库的standby redo log信息被清除。
主库执行:
SQL> alter system switch logfile;

系统已更改。

稍等一会,等在备库中查询v$standby_log没有原来主库standby log的信息返回时,再在备库中添加standby redo log。
SQL> select * from v$standby_log;

未选定行

SQL> alter database add standby logfile group 4 'D:\oracle\product\10.2.0\oradata\orcl\standbyredo04.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 5 'D:\oracle\product\10.2.0\oradata\orcl\standbyredo05.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 6 'D:\oracle\product\10.2.0\oradata\orcl\standbyredo06.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 7 'D:\oracle\product\10.2.0\oradata\orcl\standbyredo07.log' size 50M;

数据库已更改。

SQL>

16、启动redo apply
SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

17、检查物理standby情况
1)在备库检查当前的archivelog
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 SEQUENCE# FIRST_TIME     NEXT_TIME
---------- -------------- --------------
        29 04-12月-07     05-12月-07
        30 05-12月-07     05-12月-07
        31 05-12月-07     05-12月-07
        32 05-12月-07     05-12月-07
        33 05-12月-07     05-12月-07
        34 05-12月-07     05-12月-07

已选择6行。

2)在主库新建一个表,插入数据,然后切换日志
SQL> create table test(id int);

表已创建。

SQL> insert into test values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL>

3)再次检查备库的archivelog
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 SEQUENCE# FIRST_TIME     NEXT_TIME
---------- -------------- --------------
        29 04-12月-07     05-12月-07
        30 05-12月-07     05-12月-07
        31 05-12月-07     05-12月-07
        32 05-12月-07     05-12月-07
        33 05-12月-07     05-12月-07
        34 05-12月-07     05-12月-07
        35 05-12月-07     05-12月-07

已选择7行。
这表示归档成功了。
4)在备库查询数据
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01154: 数据库忙。现在不允许打开, 关闭, 装载和卸载


SQL> alter database recover managed standby database cancel;//恢复数据

数据库已更改。

SQL> alter database open;//建议开到read only状态

数据库已更改。

SQL> select * from test;

        ID
----------
         1
数据库已正常同步了!至此最大性能保护模式下的dataguard配置完成!

18、查看当前data guard处于何种保护模式
SQL> select protection_mode,protection_level from v$database;

19、將standby database 置于恢复模式
SQL>alter database recover managed standby database disconnect from session;

20、配置最大保护模式和最大性能模式切换
1)主库
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size              92275368 bytes
Database Buffers          192937984 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
---------最大性能要设为SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby---------
SQL> alter system set log_archive_dest_2='SERVICE=standby LGWR SYNC AFFIRM VALID
_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby';

系统已更改。

SQL> alter database set standby to maximize protection;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL>  select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PROTECTION   MAXIMUM PROTECTION

2)备库查询

SQL>  select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM PROTECTION   MAXIMUM PROTECTION

21、fail over
主库不能使用,在备库操作。
SQL> conn
sys/admin@standby as sysdba;
已连接。
取消Standby database恢復模式:
如果standby 有 Standby redo logfile

SQL> alter database recover managed standby database finish force;

数据库已更改。

SQL> alter database commit to switchover to primary;

数据库已更改。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01507: 未装载数据库


SQL> shutdown immediate;
ORA-01507: 未装载数据库


ORACLE 例程已经关闭。
SQL> startup open;
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size             109052584 bytes
Database Buffers          176160768 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

22、switchover
1)先查看primary的switchover_status
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE

如果SWITCHOVER_STATUS为to standby则可直接进行switchover,如果为session active则执行以下步骤:
(1)检查是否standby没接收到最新的日志,如果没有则在primary手动切换
SQL> alter system switch logfile;

系统已更改。
然后在standby恢复
SQL> alter database recover managed standby database cancel;

数据库已更改。

(2)检查是否有活动的sql session
SQL> SELECT SID, PROCESS, PROGRAM FROM V$SESSION
  2  WHERE TYPE = 'USER'
  3  AND SID <> (SELECT DISTINCT SID FROM V$MYSTAT);

未选定行
如果有则将session kill
2)如果上述步骤都已执行而primary的switchover_status还是为session active则在正常switchover语句后加上WITH SESSION SHUTDOWN;
(1)primary进行switchover

SQL> alter database commit to switchover to physical standby with session shutdo
wn;

数据库已更改。

(2)重启数据库到mount状态

SQL> shutdown immediate
ORA-01507: 未装载数据库


ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248600 bytes
Variable Size             109052584 bytes
Database Buffers          176160768 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。

查看数据库角色
SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

(3)检查原standby的switchover_status

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
SWITCHOVER PENDING

(4)置于恢复模式
SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

3)切换原standby to primary,如果上述standby的SWITCHOVER_STATUS为to primary则正常切换,否则检查是否有活动sql session,有则kill掉
。再次检查SWITCHOVER_STATUS如果任然不为to primary则在切换语句后加with session shutdown.
(1)切换standby to primary(standby需要置于接收日志的mount状态)
SQL> alter database commit to switchover to primary with session shutdown;
alter database commit to switchover to primary with session shutdown

数据库已更改

(2)重启数据库

SQL> shutdown immediate
ORA-01507: 未装载数据库


ORACLE 例程已经关闭。
SQL> startup open;
ORACLE 例程已经启动。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              92275392 bytes
Database Buffers          188743680 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。

检查数据库角色
SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

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

下一篇: Oracle Expdp Impdp
请登录后发表评论 登录
全部评论

注册时间:2009-04-29

  • 博文量
    191
  • 访问量
    506608