设为首页 收藏本站
查看: 804|回复: 0

[经验分享] oracle10g dataguard部署

[复制链接]

尚未签到

发表于 2015-12-19 14:16:18 | 显示全部楼层 |阅读模式
1、部署环境:
  Oracle 10G DataGuard
  主库:HOSTNAME: primary IP: 139.0.0.31 SID=ccpbs
  备库:HOSTNAME: standby IP: 139.0.0.32 SID=ccpbs
  oracle version:10.2.0.1
  OS platform : OEL5.4
  VMware 运行 主备虚拟机
  Data Guard 默认是 maximize performance, 可以用以下语句来进行模式间的切换。
  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {PROTECTION |
  AVAILABILITY | PERFORMANCE};
  修改主数据库保护模式需要重启数据库才能生效。
  select protection_mode,protection_level from v$database;
  
2、准备工作
  1、在主备机分别安装 OEL5.4 操作系统分别设置 HOSTNAME 为 “odd”、
  “even”;
  2、在主备机上分别安装 oracle 10gR2 数据库,安装时注意选择“高级”,只安装“数据库软件;”
  3、只在主机上用 dbca 新建数据库实例,选择默认选项,SID 名和 SERVICE 名设定为
  “ccpbs”;
  
  参数规划:
  数据库
  db_name
  sid
  instance_name
  service_names
  db_unique_name
  fal_server
  fal_client
  主库
  ccpbs
  ccpbs
  ccpbs
  pri
  pri
  stdby
  pri
  备库
  ccpbs
  ccpbs
  ccpbs
  Stdby
  stdby
  pri
  stdby
  
  
3、正式开始配置
3.1 设置主数据库为 force logging 模式
  $ sqlplus / nolog;
  SQL> conn / as sysdba;
  SQL> alter database force logging;
DSC0000.png   
3.2 设置主数据库为归档模式
  SQL> archive log list
  SQL> shutdown immediate
  SQL> startup mount
  SQL> alter database archivelog;
  SQL> archive log list
   DSC0001.png
3.3 数据文件拷贝
  数据文件的拷贝可以分为两种模式:rman 和文件的直接拷贝,由于我们的系统可以停机,所以会采用第二种方式。注意不用拷贝 redo 文件,备用机在启动的时候会自动的创建 redo 文件。控制文件也不用拷贝。
  
3.31、拷贝主库的数据文件到备库中
  SQL> SELECT NAME FROM v$datafile;
DSC0002.png
  SQL> select name from v$tempfile;
DSC0003.png
  把主库的以上数据文件拷贝到备库上同样目录
  
3.32、创建从库的控制文件
  在主库上为从库创建控制文件(不要和主库控制文件重名),然后拷贝到从库
  /home/oracle/oracle10g/oradata/ccpbs/ 目录下。(记住这个目录,在下面从库的 spfile 配置中要用到)。
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/HOME/ORACLE/STANDBY.CTL';

DSC0004.png
3.33 从库创建 admin 目录
  将主库的 /home/oracle/oracle10g/admin/ccpbs 目录及文件夹拷贝到从库的相同目录。
3.34 在从库上创建密码文件
  缺省情况下, linux 下的格式是 orapwSID(大小写敏感)
  在$ORACLE_HOME/dbs目录下,创建密码文件:
  orapwd file=orapwccpbs password=oracle
  建议直接拷贝主库该位置的文件到备库对应位置。
  
3.35 创建从库 flash_recovery_area 目录
  在 /home/oracle/oracle10g目录中创建 flash_recover_area 目录,该目录参数在从库中有设定,为*.db_recovery_file_dest 项的值,如果没有会出错。
3.4修改 spfile 文件
  说明:我们在这里需要先根据 spfile生成 pfile 文件,然后修改好对应的参数值,再依据 pfile 生成 spfile 文件。
3.41、创建 pfile 文件
  在主库上创建 pfile 文件
  SQL> CREATE PFILE FROM SPFILE;
DSC0005.png
  生成的pfile文件,默认格式为 initSID.ora,此处为initccpbs.ora
  文件路径为/home/oracle/oracle10g/product/10.2.0/db_1/dbs
  将主库生成的pfile文件,拷贝到从库相同目录下。
  
  修改主库的 initccpbs.ora 文件如下,红色部分为需要新加入的内容,蓝色部分是特别需要注意的部分:
  --------------------------initccpbs.ora----------------------------------------------------------------
  ccpbs.__db_cache_size=188743680
  ccpbs.__java_pool_size=4194304
  ccpbs.__large_pool_size=4194304
  ccpbs.__shared_pool_size=83886080
  ccpbs.__streams_pool_size=0
  *.audit_file_dest='/home/oracle/oracle10g/admin/ccpbs/adump'
  *.background_dump_dest='/home/oracle/oracle10g/admin/ccpbs/bdump'
  *.compatible='10.2.0.1.0'
  *.control_files='/home/oracle/oracle10g/oradata/ccpbs/control01.ctl','/home/oracle/oracle10g/oradata/ccpbs/control02.ctl','/home/oracle/oracle10g/oradata/ccpbs/control03.ctl'
  *.core_dump_dest='/home/oracle/oracle10g/admin/ccpbs/cdump'
  *.db_block_size=8192
  *.db_domain=''
  *.db_file_multiblock_read_count=16
  *.db_name='ccpbs'
  *.db_recovery_file_dest='/home/oracle/oracle10g/flash_recovery_area'
  *.db_recovery_file_dest_size=2147483648
  *.dispatchers='(PROTOCOL=TCP) (SERVICE=ccpbsXDB)'
  *.job_queue_processes=10
  *.nls_language='SIMPLIFIED CHINESE'
  *.nls_territory='CHINA'
  *.open_cursors=300
  *.pga_aggregate_target=94371840
  *.processes=300
  *.remote_login_passwordfile='EXCLUSIVE'
  *.sessions=335
  *.sga_target=285212672
  *.undo_management='AUTO'
  *.undo_tablespace='UNDOTBS1'
  *.user_dump_dest='/home/oracle/oracle10g/admin/ccpbs/udump'
  *.db_unique_name='pri'
  *.fal_server='stdby'
  *.fal_client='pri'
  *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(pri,stdby)'
  *.log_archive_dest_1='LOCATION=/home/oracle/arch1/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pri'
  *.LOG_ARCHIVE_DEST_2='SERVICE=stdby LGWR ASYNC=40960 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stdby'
  *.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
  *.log_archive_dest_state_2='ENABLE'
  *.standby_archive_dest='/home/oracle/arch1/'
  *.standby_file_management='AUTO'
  ------------------------------------------------------------------------------------------
  修改从库的 initccpbs.ora文件加入如下:
  ----------------------------------------initccpbs.ora--------------------------------------------------
  ccpbs.__db_cache_size=188743680
  ccpbs.__java_pool_size=4194304
  ccpbs.__large_pool_size=4194304
  ccpbs.__shared_pool_size=83886080
  ccpbs.__streams_pool_size=0
  *.audit_file_dest='/home/oracle/oracle10g/admin/ccpbs/adump'
  *.background_dump_dest='/home/oracle/oracle10g/admin/ccpbs/bdump'
  *.compatible='10.2.0.1.0'
  *.control_files='/home/oracle/oracle10g/oradata/ccpbs/stdby.ctl'
  *.core_dump_dest='/home/oracle/oracle10g/admin/ccpbs/cdump'
  *.db_block_size=8192
  *.db_domain=''
  *.db_file_multiblock_read_count=16
  *.db_name='ccpbs'
  *.db_recovery_file_dest='/home/oracle/oracle10g/flash_recovery_area'
  *.db_recovery_file_dest_size=2147483648
  *.dispatchers='(PROTOCOL=TCP) (SERVICE=ccpbsXDB)'
  *.job_queue_processes=10
  *.nls_language='SIMPLIFIED CHINESE'
  *.nls_territory='CHINA'
  *.open_cursors=300
  *.pga_aggregate_target=94371840
  *.processes=300
  *.remote_login_passwordfile='EXCLUSIVE'
  *.sessions=335
  *.sga_target=285212672
  *.undo_management='AUTO'
  *.undo_tablespace='UNDOTBS1'
  *.user_dump_dest='/home/oracle/oracle10g/admin/ccpbs/udump'
  *.db_unique_name='stdby'
  *.fal_server='pri'
  *.fal_client='stdby'
  *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(pri,stdby)'
  *.log_archive_dest_1='LOCATION=/home/oracle/arch1/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stdby'
  *.LOG_ARCHIVE_DEST_2='SERVICE=pri LGWR ASYNC=40960 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pri'
  *.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
  *.log_archive_dest_state_2='ENABLE'
  *.log_file_name_convert='/home/oracle/arch1','/home/oracle/arch1'
  *.standby_archive_dest='/home/oracle/arch1/'
  *.standby_file_management='AUTO' ------------------------------------------------------------------------------------------
3.42、创建 spfile 文件
  从库:备份原spfile文件,将修改完成的 pfile 重新生成spfile文件
  SQL> CREATE SPFILE FROM PFILE;
  
  从库:
  SQL>CREATE SPFILE FROM PFILE;
  启动从库到mount状态
  SQL>startup mount;
  
3.5创建备机redo日志
  因为我们使用 LGWR 所以我们要创建 standby redo 日志。
  一定要日志注意的大小,要和主库一样。
  万一加错了日志可以使用下面的语句进行删除。
  ALTER DATABASE DROP LOGFILE GROUP 8;
DSC0006.png
  先查看日志文件位置:
  SQL>select * from v$logfile;
  再添加:
  SQL> alter database add standby logfile group 4 /home/oracle/oracle10g/oradata/ccpbs/redo04.log size 50m;
  SQL> alter database add standby logfile group 5 /home/oracle/oracle10g/oradata/ccpbs/redo05.log size 50m;
  SQL> alter database add standby logfile group 6 /home/oracle/oracle10g/oradata/ccpbs/redo06.log size 50m;
  SQL> alter database add standby logfile group 7 /home/oracle/oracle10g/oradata/ccpbs/redo07.log size 50m;
  
3.6配置网络,修改 listener.ora ,tnsnames.ora
3.61 配置
  先在主从库上分别用 netca 命令配置监听和本地服务名,再分别编辑主、从库的 listener.ora,tnsnames.ora,参数以下
  主库的 listener.ora 文件如下:
  ######################################################################################################
  # listener.ora Network Configuration File: /home/oracle/oracle10g/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 = /home/oracle/oracle10g/product/10.2.0/db_1)
        (PROGRAM = extproc)
      )
        (SID_DESC=
           (GLOBAL_DBNAME=ccpbs)
           (ORACLE_HOME=/home/oracle/oracle10g/product/10.2.0/db_1)
        (SID_NAME=ccpbs)
        )
    )
  
  LISTENER =
    (DESCRIPTION_LIST =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = odd)(PORT = 1521))
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
    ) ######################################################################################################
  主库的 tnsnames.ora 文件如下:
  ######################################################################################################
  # tnsnames.ora Network Configuration File: /home/oracle/oracle10g/product/10.2.0/db_1/network/admin/tnsnames.ora
  # Generated by Oracle configuration tools.
  
  CCPBS =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 139.0.0.31)(PORT = 1521))
      )
      (CONNECT_DATA =
        (SERVICE_NAME = ccpbs)
      )
    )
  
  pri =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 139.0.0.31)(PORT = 1521))
      )
      (CONNECT_DATA =
        (SERVICE_NAME = ccpbs)
      )
    )
  
  stdby =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 139.0.0.32)(PORT = 1521))
      )
      (CONNECT_DATA =
        (SERVICE_NAME = ccpbs)
      )
    )
  
  EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      (CONNECT_DATA =
        (SID = PLSExtProc)
        (PRESENTATION = RO)
      )
    ) ######################################################################################################
  在上面配置完成之后,需要在主、备机上重启监听服务
  $ Lsnrctl stop
  $ lsnrctl start
  可以使用 lsnrctl status
  命令查看监听器状态
3.62 测试网络配置
  如果配置成功,在主机上测试
  $ tnsping pri
  $ tnsping stdby 也能得到相似结果
  $ sqlplus sys/oracle@pri as sysdba;
  $ sqlplus sys/oracle@stdby as sysdba; 也能得到相似结果
  
  在备机上执行上面四条指令也能得到正确的结果,则说明网络配置成功。
  
3.7启动主备服务
  上面配置完成后先将主、备数据库关闭
  SQL> shutdown immediate;
  然后分别在主、备机上重启监听器
  CMD> lsnrctl stop
  CMD> lsnrctl start
  然后依次打开主库和备库
3.71 主库
  SQL> CONN / AS SYSDBA
  SQL> STARTUP
3.72 备库
  SQL> STARTUP MOUNT;
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT
  FROM SESSION;
  到次为止,最关键的时刻来了,我们要测试看是否配置成功,如果成功的话在主机上的归档
  就能顺利传到
3.73 测试归档
  1. 测试主库产生的归档日志是否能正常传送到归档日志
  在主机上
  SQL>archive log list;
  SQL>alter system archive log current;
  SQL>archive log list;
  主库进行日志切换:
  SQL>Alter system switch logfile;
  然后分别查看主库和备库的 /home/oracle/arch1 目录下是否产生了同样的归档日志
  文件。
  select max(sequence#) from v$archived_log;
  select max(sequence#) from v$log_history;
  select group#,sequence#,archived,status from v$log;
  select name,sequence#,applied from v$archived_log;
  select sequence#,applied from v$archived_log;
  若不同步,
  1. 看 log 日志, archive 是否有丢失
  2. 可以在备库做如下操作:
  alter database recover managed standby database cancel;
  alter database recover managed standby database disconnect from session;
  
  
4、日常维护
4.1 正确打开主库和备库
  主库:
  SQL> CONN / AS SYSDBA
  SQL> STARTUP
  
  备库:
  SQL> STARTUP MOUNT;
  SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
  
4.2 正确关闭顺序
  备库:
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
  SQL>SHUTDOWN IMMEDIATE;
  
  主库
  SQL>SHUTDOWN IMMEDIATE;
  
4.3  备库Read-only模式打开
  当前主库正常 OPEN 状态、备库处于日志传送状态.
  1 在备库停止日志传送
  SQL> recover managed standby database cancel;
DSC0007.png
  2 备库 Read-only 模式打开
  SQL> alter database open read only;
DSC0008.png
  3 备库回到日志传送模式
  SQL> recover managed standby database disconnect from session;
DSC0009.png
  SQL> select status from v$instance;
DSC00010.png
   
4.4  日志传输状态监控
  1 主库察看当前日志状况
  SQL> select sequence#,status from v$log;
  2 备库察看 RFS(Remote File Service)接收日志情况和 MRP 应用日志同步主库
  情况
  SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS
  FROM V$MANAGED_STANDBY;
  3 察看备库是否和主库同步
  SQL> SELECT ARCHIVED_THREAD#, ARCHIVED_SEQ#, APPLIED_THREAD#,
  APPLIED_SEQ# FROM V$ARCHIVE_DEST_STATUS;
  4 察看备库已经归档的 redo
  SQL> SELECT REGISTRAR, CREATOR, THREAD#, SEQUENCE#, FIRST_CHANGE#,
  NEXT_CHANGE# FROM V$ARCHIVED_LOG;
  5 察看备库已经应用的 redo
  SQL> SELECT THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#
  FROM V$LOG_HISTORY;
  6 察看备库接收,应用 redo 数据过程.
  SQL> SELECT MESSAGE FROM V$DATAGUARD_STATUS;
  
4.5  备库归档目录维护
  1 找到备库归档目录
  SQL> show parameter log_archive_dest_1
  2 维护策略
  每周 2,4,7 删除已经应用的归档文件
  
5、主库正常切换
5.1人工干预正常切换
  1 在主库端检验数据库可切换状态
  SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  SWITCHOVER_STATUS:TO STANDBY 表示可以正常切换.
  如果 SWITCHOVER_STATUS 的值为 SESSIONS ACTIVE,表示当前有会话处于 ACTIVE
  状态
DSC00011.png
  2 开始主库正常切换
  如果 SWITCHOVER_STATUS 的值为 TO STANDBY 则:
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
  如果 SWITCHOVER_STATUS 的值为 SESSIONS ACTIVE 则:
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
  成功运行这个命令后,主库被修改为备库
  3 重启先前的主库
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP MOUNT;
  4 在从库验证可切换状态
  主库未执行切换命令时的从库可切换状态如下:
  SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  SWITCHOVER_STATUS
  -----------------
  NOT ALLOWED
  主库执行切换命令后的从库可切换状态如下:
  SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  SWITCHOVER_STATUS
  -----------------
  TO_PRIMARY
  1 row selected
  5 将目标备库转换为主库
  如果 SWITCHOVER_STATUS 的值为 TO STANDBY 则:
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
  如果 SWITCHOVER_STATUS 的值为 SESSIONS ACTIVE 则:
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
  成功运行这个命令后,备库被修改为主库
  6 重启目标备库
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP;
  7 先前主库启动日志传送进程
  SQL> alter database recover managed standby database disconnect;
  总结: 这样主库的一次正常切换完成.切换后的状态,原先的主库变为备库,原先的备库变为主库.
   
6、主库灾难切换
6.1 人工干预主库灾难切换
  从库:
  SQL>alter database recover managed standby database cancel;
  SQL>shutdown immediate
  SQL>startup mount
  SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
  SQL>alter database recover managed standby database finish;
  -- switch
  SQL>alter database commit to switchover to primary with session shutdown;
  -- open
  SQL>shutdown immediate
  SQL>startup 
  
  
  
  
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 139.0.0.32)(PORT = 1521))
      )
      (CONNECT_DATA =
        (SERVICE_NAME = ccpbs)
      )
    )
  
  EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      (CONNECT_DATA =
        (SID = PLSExtProc)
        (PRESENTATION = RO)
      )
    ) ######################################################################################################
  在上面配置完成之后,需要在主、备机上重启监听服务
  $ Lsnrctl stop
  $ lsnrctl start
  可以使用 lsnrctl status
  命令查看监听器状态
3.62 测试网络配置
  如果配置成功,在主机上测试
  $ tnsping pri
  $ tnsping stdby 也能得到相似结果
  $ sqlplus sys/oracle@pri as sysdba;
  $ sqlplus sys/oracle@stdby as sysdba; 也能得到相似结果
  
  在备机上执行上面四条指令也能得到正确的结果,则说明网络配置成功。
  
3.7启动主备服务
  上面配置完成后先将主、备数据库关闭
  SQL> shutdown immediate;
  然后分别在主、备机上重启监听器
  CMD> lsnrctl stop
  CMD> lsnrctl start
  然后依次打开主库和备库
3.71 主库
  SQL> CONN / AS SYSDBA
  SQL> STARTUP
3.72 备库
  SQL> STARTUP MOUNT;
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT
  FROM SESSION;
  到次为止,最关键的时刻来了,我们要测试看是否配置成功,如果成功的话在主机上的归档
  就能顺利传到
3.73 测试归档
  1. 测试主库产生的归档日志是否能正常传送到归档日志
  在主机上
  SQL>archive log list;
  SQL>alter system archive log current;
  SQL>archive log list;
  主库进行日志切换:
  SQL>Alter system switch logfile;
  然后分别查看主库和备库的 /home/oracle/arch1 目录下是否产生了同样的归档日志
  文件。
  select max(sequence#) from v$archived_log;
  select max(sequence#) from v$log_history;
  select group#,sequence#,archived,status from v$log;
  select name,sequence#,applied from v$archived_log;
  select sequence#,applied from v$archived_log;
  若不同步,
  1. 看 log 日志, archive 是否有丢失
  2. 可以在备库做如下操作:
  alter database recover managed standby database cancel;
  alter database recover managed standby database disconnect from session;
  
  
4、日常维护
4.1 正确打开主库和备库
  主库:
  SQL> CONN / AS SYSDBA
  SQL> STARTUP
  
  备库:
  SQL> STARTUP MOUNT;
  SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
  
4.2 正确关闭顺序
  备库:
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
  SQL>SHUTDOWN IMMEDIATE;
  
  主库
  SQL>SHUTDOWN IMMEDIATE;
  
4.3  备库Read-only模式打开
  当前主库正常 OPEN 状态、备库处于日志传送状态.
  1 在备库停止日志传送
  SQL> recover managed standby database cancel;

  2 备库 Read-only 模式打开
  SQL> alter database open read only;

  3 备库回到日志传送模式
  SQL> recover managed standby database disconnect from session;

  SQL> select status from v$instance;

  
  
4.4  日志传输状态监控
  1 主库察看当前日志状况
  SQL> select sequence#,status from v$log;
  2 备库察看 RFS(Remote File Service)接收日志情况和 MRP 应用日志同步主库
  情况
  SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS
  FROM V$MANAGED_STANDBY;
  3 察看备库是否和主库同步
  SQL> SELECT ARCHIVED_THREAD#, ARCHIVED_SEQ#, APPLIED_THREAD#,
  APPLIED_SEQ# FROM V$ARCHIVE_DEST_STATUS;
  4 察看备库已经归档的 redo
  SQL> SELECT REGISTRAR, CREATOR, THREAD#, SEQUENCE#, FIRST_CHANGE#,
  NEXT_CHANGE# FROM V$ARCHIVED_LOG;
  5 察看备库已经应用的 redo
  SQL> SELECT THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#
  FROM V$LOG_HISTORY;
  6 察看备库接收,应用 redo 数据过程.
  SQL> SELECT MESSAGE FROM V$DATAGUARD_STATUS;
  
4.5  备库归档目录维护
  1 找到备库归档目录
  SQL> show parameter log_archive_dest_1
  2 维护策略
  每周 2,4,7 删除已经应用的归档文件
  
5、主库正常切换
5.1人工干预正常切换
  1 在主库端检验数据库可切换状态
  SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  SWITCHOVER_STATUS:TO STANDBY 表示可以正常切换.
  如果 SWITCHOVER_STATUS 的值为 SESSIONS ACTIVE,表示当前有会话处于 ACTIVE
  状态

  2 开始主库正常切换
  如果 SWITCHOVER_STATUS 的值为 TO STANDBY 则:
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
  如果 SWITCHOVER_STATUS 的值为 SESSIONS ACTIVE 则:
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
  成功运行这个命令后,主库被修改为备库
  3 重启先前的主库
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP MOUNT;
  4 在从库验证可切换状态
  主库未执行切换命令时的从库可切换状态如下:
  SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  SWITCHOVER_STATUS
  -----------------
  NOT ALLOWED
  主库执行切换命令后的从库可切换状态如下:
  SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  SWITCHOVER_STATUS
  -----------------
  TO_PRIMARY
  1 row selected
  5 将目标备库转换为主库
  如果 SWITCHOVER_STATUS 的值为 TO STANDBY 则:
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
  如果 SWITCHOVER_STATUS 的值为 SESSIONS ACTIVE 则:
  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
  成功运行这个命令后,备库被修改为主库
  6 重启目标备库
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP;
  7 先前主库启动日志传送进程
  SQL> alter database recover managed standby database disconnect;
  总结: 这样主库的一次正常切换完成.切换后的状态,原先的主库变为备库,原先的备库变为主库.
  
5.2 通过运行脚本实现主库正常切换
  
  
6、主库灾难切换
6.1 人工干预主库灾难切换
  从库:
  SQL>alter database recover managed standby database cancel;
  SQL>shutdown immediate
  SQL>startup mount
  SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
  SQL>alter database recover managed standby database finish;
  -- switch
  SQL>alter database commit to switchover to primary with session shutdown;
  -- open
  SQL>shutdown immediate
  SQL>startup 
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-153363-1-1.html 上篇帖子: Oracle数据库性能常见指标 下篇帖子: Oracle 11g SQL性能的新特性(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表