现在的位置: 首页 > 综合 > 正文

Logical standby 主备库切换

2013年04月22日 ⁄ 综合 ⁄ 共 5808字 ⁄ 字号 评论关闭

1. Logical standby 主备库切换

 

1.1 确认主库是否能够切换

 

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

 

SWITCHOVER_STATUS

--------------------

SESSIONS ACTIVE

 

1.2 准备将主库切换为逻辑备库

 

SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO LOGICAL STANDBY;

 

Database altered.

 

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

 

SWITCHOVER_STATUS

--------------------

PREPARING SWITCHOVER

 

--这时的状态已经变为准备切换

 

1.3 准备将逻辑备库切换为主库

 

SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO PRIMARY;

 

Database altered.

 

--该语句将会在逻辑备库上开启重做日志传输服务。

 

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

 

SWITCHOVER_STATUS

--------------------

PREPARING SWITCHOVER

 

1.4 确认当前的主库已经准备好接收新主库的重做日志

 

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

 

SWITCHOVER_STATUS

--------------------

TO LOGICAL STANDBY

 

1.5 将主库切换成逻辑备库

 

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;

 

Database altered.

 

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

 

SWITCHOVER_STATUS

--------------------

NOT ALLOWED

 

1.6 将逻辑备库切换成主库

 

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

 

Database altered.

 

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

 

SWITCHOVER_STATUS

--------------------

SESSIONS ACTIVE

 

1.7 在备库上开启SQL Apply

 

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

 

Database altered.

 

如果主备库的SID相同,对换主备库的IP,对换lisener.ora以及init.ora,tnsnames.ora重新启动lisener及数据库就可以了。如果主备库的SID不同,则要进行如下操作。

 

1.8 更换SID

以下更换过程中,主库的SID为IT,备库的SID为ITS

1.8.1 更换主库的SID(在原备库,新的主库上完成)

 

SQL> shutdown immediate;

数据库关闭.

数据库已卸载.

已关闭 ORACLE 执行处理.

 

SQL> startup mount;

ORACLE 执行处理已启动.

 

Total System Global Area  612368384 bytes

Fixed Size                  1298160 bytes

Variable Size             167772432 bytes

Database Buffers          436207616 bytes

Redo Buffers                7090176 bytes

数据库已挂载.

SQL> host nid target=sys/oracle@its dbname=it

 

DBNEWID: Release 10.2.0.4.0 - Production on 星期二 10月 20 16:51:46 2009

 

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

 

已联机至数据库 ITS (DBID=2303471784)

 

联机至服务器版本 10.2.0

 

数据库中的控制文件:

    D:\IT\CONTROLFILE\O1_MF_5FJ2KRKL_.CTL

    D:\FLASHBACK\IT\CONTROLFILE\O1_MF_5FJ2KS3F_.CTL

 

要将数据库 ID 和数据库名称 ITS 变更成 IT? (Y/[N]) => y

 

继续作业

将数据库 ID 从 2303471784 变更成 3211721123

将数据库名称从 ITS 变更成 IT

    控制檔 D:\IT\CONTROLFILE\O1_MF_5FJ2KRKL_.CTL - 已修改

    控制檔 D:\FLASHBACK\IT\CONTROLFILE\O1_MF_5FJ2KS3F_.CTL - 已修改

    资料文件 D:\IT\DATAFILE\O1_MF_SYSTEM_5FJ2HFH4_.DBF - dbid 已变更, 已写入新名称

 

    资料文件 D:\IT\DATAFILE\O1_MF_UNDOTBS1_5FJ2HFN0_.DBF - dbid 已变更, 已写入新名

    资料文件 D:\IT\DATAFILE\O1_MF_SYSAUX_5FJ2HFJ3_.DBF - dbid 已变更, 已写入新名称

 

    资料文件 D:\IT\DATAFILE\O1_MF_USERS_5FJ2HFNZ_.DBF - dbid 已变更, 已写入新名称

    资料文件 D:\IT\DATAFILE\O1_MF_TEMP_5FJ2LO5C_.TMP - dbid 已变更, 已写入新名称

    控制檔 D:\IT\CONTROLFILE\O1_MF_5FJ2KRKL_.CTL - dbid 已变更, 已写入新名称

    控制檔 D:\FLASHBACK\IT\CONTROLFILE\O1_MF_5FJ2KS3F_.CTL - dbid 已变更, 已写入

新名称

    执行处理关闭

 

数据库名称已变更成 IT.

重新启动前请先修改参数文件并产生新的密码文件.

数据库 IT 的数据库 ID 已变更成 3211721123.

此数据库的所有先前备份和存盘重做日志均已无法使用.

数据库已经关闭, 请使用 RESETLOGS 选项开启数据库.

成功变更数据库名称和 ID.

DBNEWID - 成功完成.

 

 

C:\Documents and Settings\Administrator>oradim -del -sid its

执行处理已删除.

 

C:\Documents and Settings\Administrator>oradim -new -sid it -startmode auto -pfile C:\oracle\product\10.2.0\db_1\database\initit.ora

执行处理已建立.

备份原备库上的initits.ora,lisener.ora,tnsnames.ora,密码文件,将原主库,新备库上的initit.ora,lisener.ora,tnsnames.ora,密码文件复制的新主库相应的位置,修改新备库的IP为另一个,将新主库的IP改为原来主库的 IP,重新启动lisener.

 

C:\Documents and Settings\Administrator>set oracle_sid=it

 

C:\Documents and Settings\Administrator>sqlplus /nolog

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期二 10月 20 16:56:32 2009

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

SQL> connect sys as sysdba

输入密码:

联机至闲置的执行处理.

SQL> startup

ORACLE 执行处理已启动.

 

Total System Global Area  612368384 bytes

Fixed Size                  1298160 bytes

Variable Size             167772432 bytes

Database Buffers          436207616 bytes

Redo Buffers                7090176 bytes

数据库已挂载.

ORA-01589: 必须为要开启的数据库使用 RESETLOGS 或 NORESETLOGS 选项

 

 

SQL> alter database open resetlogs;

 

已更改数据库.

 

SQL>

 

 

1.8.2 更换备库的SID(在原主库,新的备库上完成)

 

SQL> shutdown immediate;

数据库关闭.

数据库已卸载.

已关闭 ORACLE 执行处理.

SQL> startup mount;

ORACLE 执行处理已启动.

 

Total System Global Area  612368384 bytes

Fixed Size                  1298160 bytes

Variable Size             167772432 bytes

Database Buffers          436207616 bytes

Redo Buffers                7090176 bytes

数据库已挂载.

 

 

SQL> host nid target=sys/oracle@it dbname=its

 

DBNEWID: Release 10.2.0.4.0 - Production on 星期二 10月 20 17:01:03 2009

 

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

 

已联机至数据库 IT (DBID=3211404984)

 

联机至服务器版本 10.2.0

 

数据库中的控制文件:

    D:\IT\CONTROLFILE\O1_MF_5FJ2KRKL_.CTL

    D:\FLASHBACK\IT\CONTROLFILE\O1_MF_5FJ2KS3F_.CTL

 

要将数据库 ID 和数据库名称 IT 变更成 ITS? (Y/[N]) => y

 

继续作业

将数据库 ID 从 3211404984 变更成 2303506065

将数据库名称从 IT 变更成 ITS

    控制檔 D:\IT\CONTROLFILE\O1_MF_5FJ2KRKL_.CTL - 已修改

    控制檔 D:\FLASHBACK\IT\CONTROLFILE\O1_MF_5FJ2KS3F_.CTL - 已修改

    资料文件 D:\IT\DATAFILE\O1_MF_SYSTEM_5FJ2HFH4_.DBF - dbid 已变更, 已写入新名称

 

    资料文件 D:\IT\DATAFILE\O1_MF_UNDOTBS1_5FJ2HFN0_.DBF - dbid 已变更, 已写入新名

    资料文件 D:\IT\DATAFILE\O1_MF_SYSAUX_5FJ2HFJ3_.DBF - dbid 已变更, 已写入新名称

 

    资料文件 D:\IT\DATAFILE\O1_MF_USERS_5FJ2HFNZ_.DBF - dbid 已变更, 已写入新名称

    资料文件 D:\IT\DATAFILE\O1_MF_TEMP_5FJ2LO5C_.TMP - dbid 已变更, 已写入新名称

    控制檔 D:\IT\CONTROLFILE\O1_MF_5FJ2KRKL_.CTL - dbid 已变更, 已写入新名称

    控制檔 D:\FLASHBACK\IT\CONTROLFILE\O1_MF_5FJ2KS3F_.CTL - dbid 已变更, 已写入

新名称

    执行处理关闭

 

数据库名称已变更成 ITS.

重新启动前请先修改参数文件并产生新的密码文件.

数据库 ITS 的数据库 ID 已变更成 2303506065.

此数据库的所有先前备份和存盘重做日志均已无法使用.

数据库已经关闭, 请使用 RESETLOGS 选项开启数据库.

成功变更数据库名称和 ID.

DBNEWID - 成功完成.

 

将原备库,新主库上备份的initits.ora,lisener.ora,tnsnames.ora,密码文件复制的新备库相应的位置,将新备库的IP改为原来备库的 IP,重新启动lisener.

C:\Documents and Settings\Administrator>oradim -del -sid it

执行处理已删除.

 

C:\Documents and Settings\Administrator>oradim -new -sid its -startmode auto -pfile C:\oracle\product\10.2.0\db_1\database\initits.ora

执行处理已建立.

 

C:\Documents and Settings\Administrator>set oracle_sid=its

 

C:\Documents and Settings\Administrator>sqlplus /nolog

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期二 10月 20 16:56:32 2009

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

SQL> connect sys as sysdba

输入密码:

联机至闲置的执行处理.

SQL> startup

ORACLE 执行处理已启动.

 

Total System Global Area  612368384 bytes

Fixed Size                  1298160 bytes

Variable Size             167772432 bytes

Database Buffers          436207616 bytes

Redo Buffers                7090176 bytes

数据库已挂载.

ORA-01589: 必须为要开启的数据库使用 RESETLOGS 或 NORESETLOGS 选项

 

 

SQL> alter database open resetlogs;

 

已更改数据库.

 

SQL> Alter database start logical standby apply;

 

已更改数据库.

 

SQL>

 

抱歉!评论已关闭.