oracle10g+windows2003 dataguard完整配置方案

来源:互联网 发布:阿里云邮箱如何添加 编辑:程序博客网 时间:2024/06/11 00:52
导读:
  感言:历时一个月断断续续的摸索和研究(因为工作原因没有那么多余的时间给我一直研究这玩意儿),参考各类资料(其中主要是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@orclas
  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@standbyas 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

本文转自
http://singlelove1983.blog.163.com/blog/static/50849047200711129933605/
原创粉丝点击