Oracle 10g使用RMAN創建physical standby

  1.試驗環境
  SQL> select * from v$version;
  BANNER
  ----------------------------------------------------------------
  Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
  PL/SQL Release 10.2.0.1.0 - Production
  CORE 10.2.0.1.0 Production
  TNS for Linux: Version 10.2.0.1.0 - Production
  NLSRTL Version 10.2.0.1.0 - Production
  2.確認主庫處于歸檔模式
  SQL> archive log list;
  Database log mode Archive Mode
  Automatic archival Enabled
  Archive destination /u02/arch
  Oldest online log sequence 154
  Next log sequence to archive 156
  Current log sequence 156
  3.創建備庫instance
  windows平台利用oradim工具創建一個新的instance,
  unix/linux平台設置新的ORACLE_SID即可
  4.准備好主備庫的參數文件
  主庫:
  orcl.__db_cache_size=184549376
  orcl.__java_pool_size=4194304
  orcl.__large_pool_size=4194304
  orcl.__shared_pool_size=88080384
  orcl.__streams_pool_size=0
  *.audit_file_dest='/u01/oracle/admin/orcl/adump'
  *.background_dump_dest='/u01/oracle/admin/orcl/bdump'
  *.compatible='10.2.0.1.0'
  *.control_files='/u01/oracle/oradata/orcl/control01.ctl','
  /u01/oracle/oradata/orcl/control02.ctl','
  /u01/oracle/oradata/orcl/control03.ctl'
  *.core_dump_dest='/u01/oracle/admin/orcl/cdump'
  *.db_block_size=8192
  *.db_domain=''
  *.db_file_multiblock_read_count=16
  *.db_name='orcl'
  *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
  *.job_queue_processes=10
  *.log_archive_dest_1='LOCATION=/u02/arch'
  *.log_archive_format='%t_%s_%r.dbf'
  *.nls_language='SIMPLIFIED CHINESE'
  *.nls_territory='CHINA'
  *.open_cursors=300
  *.pga_aggregate_target=94371840
  *.processes=150
  *.remote_login_passwordfile='EXCLUSIVE'
  *.sga_target=285212672
  *.undo_management='AUTO'
  *.undo_tablespace='UNDOTBS1'
  *.user_dump_dest='/u01/oracle/admin/orcl/udump'
  #################################
  db_unique_name=node1
  service_names=orcl
  log_archive_config='dg_config=(node1,node2)'
  log_archive_dest_2='service=dbstandby
  valid_for=(online_logfiles,primary_role) db_unique_name=node2'
  log_archive_dest_state_1=enable
  log_archive_dest_state_2=enable
  fal_server=dbstandby
  standby_file_management=AUTO
  備庫:
  orcl.__db_cache_size=184549376
  orcl.__java_pool_size=4194304
  orcl.__large_pool_size=4194304
  orcl.__shared_pool_size=88080384
  orcl.__streams_pool_size=0
  *.audit_file_dest='/u01/oracle/admin/orcl/adump'
  *.background_dump_dest='/u01/oracle/admin/orcl/bdump'
  *.compatible='10.2.0.1.0'
  *.control_files='/u01/oracle/oradata/orcl/control01.ctl','
  /u01/oracle/oradata/orcl/control02.ctl','
  /u01/oracle/oradata/orcl/control03.ctl'
  *.core_dump_dest='/u01/oracle/admin/orcl/cdump'
  *.db_block_size=8192
  *.db_domain=''
  *.db_file_multiblock_read_count=16
  *.db_name='orcl'
  *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
  *.job_queue_processes=10
  *.log_archive_dest_1='LOCATION=/u02/arch'
  *.log_archive_format='%t_%s_%r.dbf'
  *.nls_language='SIMPLIFIED CHINESE'
  *.nls_territory='CHINA'
  *.open_cursors=300
  *.pga_aggregate_target=94371840
  *.processes=150
  *.remote_login_passwordfile='EXCLUSIVE'
  *.sga_target=285212672
  *.undo_management='AUTO'
  *.undo_tablespace='UNDOTBS1'
  *.user_dump_dest='/u01/oracle/admin/orcl/udump'
  #################################
  db_unique_name=node2
  service_names=orcl
  log_archive_config='dg_config=(node1,node2)'
  log_archive_dest_2='service=dbprimary
  valid_for=(online_logfiles,primary_role) db_unique_name=node1'
  log_archive_dest_state_1=enable
  log_archive_dest_state_2=enable
  fal_server=dbprimary
  fal_client=dbstandby
  standby_file_management=AUTO
  5.生成password file
  c:/>orapwd file=d:/oracle/ora92/DATABASE/PWDtest.ORA password=pass
  或者直接將主庫上的密碼文件copy一份到備庫上
  6.配置網絡
  配置主備庫的listener.ora,tnsnames.ora。修改完listener.ora後需要重啓監聽器。
  主庫:
  listener.ora
  SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (SID_NAME = PLSExtProc)
  (ORACLE_HOME = /u01/oracle/product/10.2.0)
  (PROGRAM = extproc)
  )
  )
  LISTENER =
  (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = s1.gti.com)(PORT = 1521))
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
  )
  )
  tnsnames.ora
  dbprimary =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.131)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = orcl)
  )
  )
  dbstandby =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = orcl)
  )
  )
  備庫:
  listener.ora
  SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (SID_NAME = orcl)
  (ORACLE_HOME = /u01/oracle/product/10.2.0)
  )
  )
  LISTENER =
  (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521))
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
  )
  )
  tnsnames.ora
  dbprimary =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.131)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = orcl)
  )
  )
  dbstandby =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = orcl)
  )
  )
  7.使用rman備份主庫
  [oracle@s1 ~]$ rman target /
  Recovery Manager: Release 10.2.0.1.0 - Production on Thu May 29 19:52:37 2008
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  connected to target database: ORCL (DBID=1171867028)
  RMAN> backup full format='/u02/db_%U'
  database include current controlfile for standby;
  ...................
  8.歸檔主庫當前日志
  SQL> alter system archive log current;
  System altered.
  9.啓動備庫到nomount
  sqlplus "/ as sysdba"
  Connected to an idle instance.
  SQL> startup nomount
  Total System Global Area 285212672 bytes
  Fixed Size 1218992 bytes
  Variable Size 96470608 bytes
  Database Buffers 184549376 bytes
  Redo Buffers 2973696 bytes
  10.利用rman恢複備庫
  [oracle@s1 ~]$ rman target /
  Recovery Manager: Release 10.2.0.1.0 - Production on Thu May 29 19:53:21 2008
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  connected to target database: ORCL (DBID=1171867028)
  RMAN> connect auxiliary sys/a@dbstandby
  connected to auxiliary database: ORCL (DBID=1171867028, not mount)
  RMAN> duplicate target database for standby nofilenamecheck;
  .............................
  如果第8步沒有歸檔當前日志,duplicate時可能出現錯誤:
  RMAN-05507: standby controlfile checkpoint (710256) is more recent than duplicat
  ion point in time (709530)
  至此,備庫創建成功。
  11.將備庫置于自動恢複狀態
  SQL> conn / as sysdba
  Connected.
  SQL>alter database recover managed standby database disconnect from session;
  Media recovery complete.
  12.switchover
  物理STANDBY的SWITCHOVER切換會把當前的一個物理STANDBY切換爲PRIMARY數據庫,而PRIMARY數據庫且變成物理STNADBY數據庫。
  一般SWITCHOVER切換都是計劃中的切換,特點是在切換後,不會丟失任何的數據,而且這個過程是可逆的,整個DATA GUARD環境不會被破壞,原來DATA GUARD環境中的所有物理和邏輯STANDBY都可以繼續工作。
  在進行DATA GUARD的物理STANDBY切換前需要注意:
  確認主庫和從庫間網絡連接通暢;
  確認沒有活動的會話連接在數據庫中;
  PRIMARY數據庫處于打開的狀態,STANDBY數據庫處于MOUNT狀態;
  確保STANDBY數據庫處于ARCHIVELOG模式;
  如果設置了REDO應用的延遲,那麽將這個設置去掉;
  確保配置了主庫和從庫的初始化參數,使得切換完成後,DATA GUARD機制可以順利的運行。
  主庫:
  [oracle@s1 ~]$ sqlplus "/ as sysdba"
  SQL*Plus: Release 10.2.0.1.0 - Production on Thu May 29 19:55:02 2008
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  Connected to:
  Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
  With the Partitioning, OLAP and Data Mining options
  SQL> alter database commit to switchover to physical standby;
  Database altered.
  SQL> shutdown immediate;
  ORA-01507: database not mounted
  ORACLE instance shut down.
  SQL> startup nomount
  ORACLE instance started.
  Total System Global Area 285212672 bytes
  Fixed Size 1218992 bytes
  Variable Size 96470608 bytes
  Database Buffers 184549376 bytes
  Redo Buffers 2973696 bytes
  SQL> alter database mount standby database;
  Database altered.
  SQL> alter database recover managed standby database disconnect from session;
  Database altered.
  備庫:
  SQL> alter database commit to switchover to primary;
  Database altered.
  SQL> shutdown immediate;
  ORA-01109: database not open
  Database dismounted.
  ORACLE instance shut down.
  SQL> startup
  ORACLE instance started.
  Total System Global Area 285212672 bytes
  Fixed Size 1218992 bytes
  Variable Size 96470608 bytes
  Database Buffers 184549376 bytes
  Redo Buffers 2973696 bytes
  Database mounted.
  Database opened.
  SQL>
  至此完成自由切換。