oracle10g dataguard部署

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;

bb

 

3.2 设置主数据库为归档模式

SQL> archive log list

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> archive log list

bb

3.3 数据文件拷贝

数据文件的拷贝可以分为两种模式:rman 和文件的直接拷贝,由于我们的系统可以停机,所以会采用第二种方式。注意不用拷贝 redo 文件,备用机在启动的时候会自动的创建 redo 文件。控制文件也不用拷贝。

3.31、拷贝主库的数据文件到备库中

SQL> SELECT NAME FROM v$datafile;

bb

SQL> select name from v$tempfile;

bb

把主库的以上数据文件拷贝到备库上同样目录

3.32、创建从库的控制文件

在主库上为从库创建控制文件(不要和主库控制文件重名),然后拷贝到从库

/home/oracle/oracle10g/oradata/ccpbs/ 目录下。(记住这个目录,在下面从库的 spfile 配置中要用到)。

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/HOME/ORACLE/STANDBY.CTL';

bb

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;

bb

生成的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;

bb

先查看日志文件位置:

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;

bb

2 备库 Read-only 模式打开

SQL> alter database open read only;

bb

3 备库回到日志传送模式

SQL> recover managed standby database disconnect from session;

bb

SQL> select status from v$instance;

bb

 

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

状态

bb

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 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20553601/viewspace-1430959/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20553601/viewspace-1430959/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值