首页 > 开发 > 综合 > 正文

单机上配置9i standby

2024-07-21 02:33:51
字体:
来源:转载
供稿:网友

  成功完成9i standby配置(参考fenng的大作后补充修正版本)
  
  环境:windows 2000+Oracle 9.2.0.4;主库名为test,备库名为pstandby
  
  1、首先确认PRimary数据库是否在归档模式下,假如不是请自己调整,这里略过。
  
  SQL>; archive log list
  数据库日志模式      存档模式
  自动存档       启用
  存档终点      D:/oracle/oradata/test/Archive
  最早的概要日志序列   45
  下一个存档日志序列  47
  当前日志序列      47
  
  2、激活Primary Database的Forced Logging
  
  SQL>; ALTER DATABASE FORCE LOGGING;
  
  3、设置Primary Database的本地归档地址,假如已经设置过无须重复;
  
  SQL>; ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=D:/oracle/oradata/test/Archive' SCOPE=BOTH;
  
  4、关闭primary database,复制主数据库的数据文件(可以不包括在线日志和临时文件)到备用库的对应位置,本例为D:/oracle/oradata/pstandby(该目的目录需要提前建立,类似需要提前建立的目录还有d:/oracle/admin/pstandby/下的pfile目录)
  
  5、使primary database处于mount状态时,为Standby 数据库创建控制文件(注重这个控制文件的名字不要和Primary的控制文件名字重复 )
  
  SQL>; ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'D:/oracle/oradata/pstandby/PSTANDBY.CTL';
  
  6、为Standby数据库预备初始化参数文件名字
  
  SQL>; CREATE PFILE='d:/oracle/admin/pstandby/pfile/initpstandby' FROM SPFILE;
  
  7、修改Physical Standby Database和Primary Database的初始化参数文件(该步骤非凡重要)
  
  备库initpstandby.ora 一些可能出现错误的参数设置
  *****************************************************************
  *.control_files='D:/oracle/oradata/pstandby/PSTANDBY.CTL'
  *.db_name='test'
  *.instance_name='pstandby'
  *.log_archive_dest_1='LOCATION=D:/oracle/oradata/pstandby/archive'
  *.lock_name_space='pstandby'
  *.standby_file_management=AUTO
  *.remote_archive_enable=TRUE
  *.standby_archive_dest='D:/oracle/oradata/pstandby/archive'
  *.db_file_name_convert=('D:/oracle/oradata/test','D:/oracle/oradata/pstandby')
  *.log_file_name_convert=('D:/oracle/oradata/test','D:/oracle/oradata/pstandby')
  *.fal_server='PRIMARY'
  *.fal_client='STANDBY'
  *************************************************************************
  
  主库inittest.ora 一些可能出现错误的参数设置
  *************************************************************************
  *.db_name='test'
  *.instance_name='test'
  *.log_archive_dest_1='LOCATION=D:/oracle/oradata/test/archive'
  *.db_file_name_convert=('D:/oracle/oradata/test','D:/oracle/oradata/pstandby')
  *.log_file_name_convert=('D:/oracle/oradata/test','D:/oracle/oradata/pstandby')
  *.fal_server='PRIMARY'
  *.fal_client='STANDBY'
  *.lock_name_space='test'
  *.standby_file_management=AUTO
  *.remote_archive_enable=TRUE
  ***********************************************************************
  
  8、为Standby Database创建一个Windows服务,并且在tnsnames.ora下增加网络服务
  
  C:/Documents and Settings/Administrator>;oradim -NEW -SID Pstandby -STARTMODE manual
  
  tnsnames.ora文件
  ************************************************************************
  TEST =
   (DESCRipTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = JIWEI_Office)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = test)
    )
   )
  
  PSTANDBY =
   (DESCRIPTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = JIWEI_OFFICE)(PORT = 1521))
    )
    (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = test) --此处不能为pstandby
    )
   )
  ****************************************************************************
  
  9、为Standby Database重新生成一个新的SPFILE
  
  可参考执行如下操作:
  C:/Documents and Settings/Administrator>;set oracle_sid=pstandby
  C:/Documents and Settings/Administrator>;sqlplus /nolog
  SQL>; connect / as sysdba
  SQL>; CREATE SPFILE FROM PFILE='d:/oracle/admin/pstandby/pfile/initpstandby';
  
  10、启动物理Standby数据库
  
  C:/Documents and Settings/Administrator>;set oracle_sid=pstandby
  C:/Documents and Settings/Administrator>;sqlplus /nolog
  SQL>; connect / as sysdba
  SQL>; STARTUP NOMOUNT;
  SQL>; ALTER DATABASE MOUNT STANDBY DATABASE;
  SQL>; ALTER DATABASE OPEN READ ONLY; (standby数据库只能用read only的模式打开)
  此处假如错误:
  ERROR at line 1:
  ORA-01154: database busy. Open, close, mount, and dismount not allowed now
  请执行备用库的不完全恢复
  SQL>; recover managed standby database cancel;
  Media recovery complete.
  
  SQL>; alter database open read only;
  Database altered.
  
  11、在Standby数据库上,初始化Log Apply 服务:
  
  SQL>; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM session;(后台会话,相当于nohup(&),即使网络断开也不会中断而且可以立即返回到用户执行其他操作,但他仍然是守护的影子进程等待主数据库传送的日志一旦发现就自动恢复)
  
  12、在Primary database上激活到standby的日志归档
  
  SQL>; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=Pstandby' SCOPE=BOTH;
  SQL>; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;
  
  13、在Primary database启动远程归档
  
  SQL>; ALTER SYSTEM ARCHIVE LOG CURRENT;
  
  14、安装完的的验证:
  
  在standby database下, 查询V$ARCHIVED_LOG
  (其实也可以直接到相关目录下查看Log是否创建):
  
  SQL>; SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
  SEQUENCE# FIRST_TIME NEXT_TIME
  ---------- ---------- ----------
      14 12-9? -05 12-9? -05
      15 12-9? -05 12-9? -05
      16 12-9? -05 12-9? -05
      17 12-9? -05 12-9? -05
      18 12-9? -05 12-9? -05
      19 12-9? -05 12-9? -05
      20 12-9? -05 12-9? -05
      21 12-9? -05 12-9? -05
      ....
  
  假如在配置过程中,发现无法传送归档日志,并且在alter.log中有错误ORA-12154: TNS: 无法处理服务名
  
  请查看tnsnames.ora文件配置,不要忘记启动lsnrctl。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表