data guard如何在主库宕掉的情况下,将逻辑备库转换成主库?有人知道吗?

解决方案 »

  1.   


    4.  Data Guard 主备库切换
    Data Guard的主备库切换分为2种,switchover和failover。遇到突发事件,基本都是采用failover切换。 在主备库切换完成后应该修改数据库服务器的IP地址,如将10.85.8.205的服务器IP地址改为10.85.8.203。或者进Sfcallset,将数据库服务器的IP地址改为10.85.8.205,即备库的地址.这样才能保证系统的正常运作。
     
    4.1 . switchover
     
    一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUARD环境中的所有物理和逻辑STANDBY都可以继续工作。
     
    主库:
    1.查看switchover状态
    SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
          to standby
    2.切换成备库
    SQL> Alter database commit to switchover to physical standby with session shutdown;
    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
         Database altered.
     
    3启动到mount和应用日志状态
    SQL> SHUTDOWN IMMEDIATE
    SQL> startup nomount;
    SQL> alter database mount standby database;
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
     
    4.查看数据库模式
    SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;
    SQL>select status,database_mode from v$archive_dest_status;
     
    备库:
     
    1.查看switchover状态
    SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
        TO PRIMARY
    2.切换成主库
    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
    Database altered.
    SQL> shutdown immediate;
    SQL> startup;
    SQL> alter system switch logfile;
    3.查看数据库模式
    SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;
    SQL>select status,database_mode from v$archive_dest_status;
     
     
    4.2  Failovers:
    FAILOVER切换一般是PRIMARY数据库发生故障后的切换,这种情况是STANDBY数据库发挥其作用的情况。这种切换发生后,可能会造成数据的丢失。而且这个过程不是可逆的,DATA GUARD环境会被破坏。由于PRIMARY数据库已经无法启动,所以FAILOVER切换所需的条件并不多,只要检查STANDBY是否运行在最大保护模式下,如果是的话,需要将其置为最大性能模式,否则切换到PRIMARY角色也无法启动。
     
     
    1.查看是否有日志GAP,没有应用的日志:
       SQL> SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG;
     SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
      如果有,则拷贝过来并且注册
    SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE '路径';
    重复查看直到没有应用的日志:
    2.然后停止应用归档:
      SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
      Database altered.
    3.下面将STANDBY数据库切换为PRIMARY数据库:
      SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
      Database altered.
      SQL> SELECT DATABASE_ROLE FROM V$DATABASE;
      DATABASE_ROLE
      ----------------
      PHYSICAL STANDBY
      SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
      Database altered.
    SQL> ALTER DATABASE OPEN;
     Database altered.
     
     检查数据库是否已经切换成功:
      SQL> SELECT DATABASE_ROLE FROM V$DATABASE;
      DATABASE_ROLE
      ----------------
      PRIMARY
     ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716
      

  2.   

    tianlesoftware,你好:
      很详细,有没有逻辑dataguard的资料,你给的是物理dataguard。