oracle 10g DG 安装配置说明V2

来源:互联网 发布:数据分析相关工作职位 编辑:程序博客网 时间:2024/05/16 08:31

一.环境

1.      软件环境

1.1. 系统 centos 5.5 x64

1.2. Databases 10.2.0.5

1.3. DG 物理模式

 

2.      环境规划

 

PRIMARY

STANDBY

 

 

 

HOSTNAME

dg1

dg2

 

 

 

IP

192.168.0.176

192.168.0.176

 

 

 

SID

mt

mt

 

 

 

SERVICE_NAME

mt1

mt2

 

 

 

DB_UNIQUE_NAME

mt1

mt2

 

 

 

 

 

3.      准备工作

3.1. 俩台机器安装centos 5.5x64

3.2. 俩台机器安装数据库,PRIMARY创建mt , STANDBY不需要安装实例

3.3 设置host文件

 

192.168.0.176  dg1

192.168.0.176  dg2

添加到俩台主机/etc/hosts

二.PRIMARY 配置

1.      确认主库处于归档模式,如果为非归档则必须改为归档模式

SQL>archive log list;

Databaselog mode              No Archive Mode

Automaticarchival             Disabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldestonline log sequence     1

Currentlog sequence           2

 

改为归档模式

[root@dg1~]# mkdir /u01/archivelog

[root@dg1~]# chown oracle.oinstall /u01/archivelog/

 

进入sqlplus

 

SQL>  shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLEinstance shut down.

SQL>startup mount;

ORACLEinstance started.

TotalSystem Global Area  285212672 bytes

FixedSize                  2020192 bytes

VariableSize             109055136 bytes

DatabaseBuffers          167772160 bytes

RedoBuffers                6365184 bytes

Databasemounted.

SQL>alter system set log_archive_dest_1='location=/u01/archivelog' scope =both;

Systemaltered.

 

SQL>alter database archivelog;

Databasealtered.

 

SQL>alter database open;

Databasealtered.

 

SQL>archive log list;

Databaselog mode              Archive Mode

Automaticarchival             Enabled

Archivedestination            /u01/archivelog

Oldestonline log sequence     0

Next logsequence to archive   1

Currentlog sequence           1

 

 

2.      将primary 数据库置为FORCE LOGGING 模式

SQL>alter database force logging;

Database altered.

(在DataGuard环境下,如果主库不加alter database force logging . 主库用工具做大量数据插入而不到日志中去,此时插入的数据不会同步到DataGuard数据库。加入alter database forcelogging则数据都会同步过去,即使在归档模式下,也有可能会有一些nologging 的操作不产生redo,这是DG不允许的,因此必须启用数据库强制记录redo

)

 

3.      添加standbylogfile

3.1 查看当前redo log

SQL> select * from v$logfile;

3.2 添加standbylogfile(日志传输为ARCH模式添加。最高性能模式可有可无)

 SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/mt/redo04.log')  size 50M;

Database altered.

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 5('/u01/app/oracle/oradata/mt/redo05.log') size 50M;

Database altered.

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/mt/redo06.log')  size 50M;

Database altered.

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 7('/u01/app/oracle/oradata/mt/redo07.log') size 50M;

Database altered.

添加备用日志文件是规则:备用日志最少应该比redo log 多一个。推荐的备重做日志数依赖于主数据库上的线程数。(每线程日志文件最大数目 + 1 ) * 线程数。

standby的时候有两种传递日志的方式,一种是常见的archivr log,由ARCH的后台进程控制传递到standby数据库,还有一种是和redo log一样的传递方式,由产生redo log的后台进程控制,就需要standby log

在最大可用和最大保护模式,因为是采用LGWR SYNC进行redo的传送,一定要用standby logfile,但是建议在最大性能模式也添加standby logfile,据说在失败切换时可以恢复更多的数据

 

4.      配置网络

4.1 配置listener.ora

[root@dg1admin]# more listener.ora

 

SID_LIST_LISTENER=

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME =/u01/app/oracle/product/10.2.0)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME =mt)

      (ORACLE_HOME=/u01/app/oracle/product/10.2.0)

      (SID_NAME = mt)

    )

  )

 

LISTENER=

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1))

      (ADDRESS = (PROTOCOL = TCP)(HOST =dg1)(PORT = 1521))

    )

  )

4.2 配置tnsnames.ora

    [root@dg1 admin]#more listener.ora

MT1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.176)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = mt)

    )

  )

MT2 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.177)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = mt)

    )

  )

ORCL =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST =dg1)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

 

EXTPROC_CONNECTION_DATA=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1))

    )

    (CONNECT_DATA =

      (SID = PLSExtProc)

      (PRESENTATION = RO)

    )

  )

5.      修改PRIMARY 参数文件

5.1 在线修改

altersystem set standby_archive_dest='/u01/archivelog'  scope =spfile;

altersystem set standby_file_management=auto scope =spfile;

altersystem set fal_server=mt1  scope =spfile;

altersystem set fal_client=mt2  scope =spfile;

altersystem set log_archive_dest_1='location=/oradata/archivelog'  scope =spfile;

alter system set log_archive_dest_2='service=mt2' VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=mt2'  scope =both;

5.2 参数说明

•DB_UNIQUE_NAME=primary       --show parameter DB_UNIQUE_NAME确认主库名称

•LOG_ARCHIVE_CONFIG=‘DG_CONFIG=(primary,standby)‘    --此处为主库网络连接串(tnsnames.ora)

•LOG_ARCHIVE_DEST_1=‘LOCATION=/u01/primary/archive    --主库的归档日志路径 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary‘ –主库的DB_UNIQUE_NAME

•LOG_ARCHIVE_DEST_2=‘SERVICE=standbyLGWR SYNC AFFIRM --此处为备库网络连接串(tnsnames.ora)      VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=standby‘  –备库的DB_UNIQUE_NAME

•LOG_ARCHIVE_DEST_STATE_1=ENABLE

•LOG_ARCHIVE_DEST_STATE_2=ENABLE

•REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

•FAL_SERVER=standby                 --网络异常恢复后将延迟的归档日志传输到备库

•FAL_CLIENT=primary

•DB_FILE_NAME_CONVERT='/u01/primary/oradata','/u01/standby/oradata‘   

•LOG_FILE_NAME_CONVERT='/u01/primary/oradata','/u01/standby/oradata‘

       说明:‘/u01/primary/oradata’为主库数据\日志文件路径;‘/u01/standby/oradata‘为备库数据\日志文件路径

•STANDBY_FILE_MANAGEMENT=AUTO          --主库创建表空间或数据文件,那么这些修改直接同步到备库,无须手工操作.

 

6.      生成新的spfile

SQL>create pfile from spfile;

 

Filecreated.

oracle会优先使用spfilemt.ora, 如果没有就用Initmt.ora,所以可以先把spfilemt.ora删除,或者再生成个新的spfilemt.ora

 

三.standby 配置

1.      复制PRIMARY 密码文件到STANDBY

[oracle@dg1~]$ cd /u01/app/oracle/product/10.2.0/dbs

[oracle@dg1 dbs]$ scporapwmt oracle@192.168.0.177:/u01/app/oracle/product/10.2.0/dbs

oracle@192.168.0.177'spassword:

orapwmt                                                                                                                                                      100%1536     1.5KB/s   00:00   

 

为了保证SYS的密码相同,或者如果知道主库SYS密码则直接修改备库SYS密码

 

2.      修改standby 参数文件

拷贝PRIMARY 参数文件到standby

[oracle@dg1 dbs]$scp  initmt.oraoracle@192.168.0.177:/u01/app/oracle/product/10.2.0/dbs

oracle@192.168.0.177'spassword:

initmt.ora                                                                                                                                                  100% 1592     1.6KB/s  00:00   

修改如下几个参数

log_archive_dest_2='service=mt2'DB_FILE_NAME_CONVERT='/u01/archivelog/oradata','/u01/archivelog/oradata' 

LOG_FILE_NAME_CONVERT='/u01/archivelogoradata','/u01/archivelog/oradata'

3.      配置standby 网络配置

3.1  配置listener.ora

[oracle@dg1admin]$ scp listener.ora  oracle@192.168.0.177:/u01/app/oracle/product/10.2.0/network/admin/

修改HOST 为dg2

3.2  配置tnsnames.ora

[oracle@dg1 admin]$ scp tnsnames.ora oracle@192.168.0.177:/u01/app/oracle/product/10.2.0/network/admin/

    修改HOST为dg2

4.      迁移PRIMARY 数据库的数据文件、控制文件

有俩种方法

4.1 文件物理拷贝(需要停Primary)

4.1.1 Primary上创建standby 数据库所需的控制文件

SQL>alter database create standby controlfile as '/u01/standby.ctl';

4.1.2拷贝控制文件、数据文件、log目录到standby

停止Primary

SQL>shutdown immediate

Databaseclosed.

Databasedismounted.

ORACLEinstance shut down.

 

Log目录

[oracle@dg1 oracle]$ cd /u01/app/oracle

[oracle@dg1 oracle]$ scp -r admin/mt  oracle@192.168.0.177:/u01/app/oracle/admin/

 

控制文件

[oracle@dg1 oracle]$ scp -r /u01/standby.ctl   oracle@192.168.0.177:/u01/app/oracle/oradata/mt/

 

数据文件

[oracle@dg1 oracle]$ scp -r oradata/mt  oracle@192.168.0.177:/u01/app/oracle/oradata/

 

[root@dg2 mt]# cd /u01/app/oracle/oradata/mt

[root@dg2mt]# rm -rf control0*

[oracle@dg2mt]$ cp standby.ctl  control01.ctl

[oracle@dg2mt]$ cp control01.ctl control02.ctl

[oracle@dg2mt]$ cp control01.ctl control03.ctl

 

2.2 RMAN (不需要停Primary)

    主库备份数据文件 归档

[oracle@oracle1~]$ rman target /

RecoveryManager: Release 10.2.0.1.0 - Production on Wed Oct 9 08:51:29 2013

Copyright(c) 1982, 2005, Oracle.  All rightsreserved.

connectedto target database: TEST (DBID=2126483265)

 

RMAN>run

2>{allocate channel c1 type disk;

3>allocate channel c2 type disk;

4>backup database format '/u01/rman/full_%d_%T_%s_%p';

5> sql'alter system archive log current';

6>backup archivelog all format '/u01/rman/arh_%d_%T_%s_%p' delete input;

7> }

 

主库备份控制文件

alterdatabase create standby controlfile as '/u01/standby.ctl';

 

 

拷贝备份的数据文件、归档、控制文件到备库目录

 

备库还原控制文件、数据文件

[oracle@oracle2 ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Wed Oct 909:11:57 2013

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

connected to target database (not started)

RMAN> startup nomount;

Oracle instance started

Total System Global Area    167772160 bytes

Fixed Size                    1218316 bytes

Variable Size                67111156 bytes

Database Buffers             96468992 bytes

Redo Buffers                  2973696 bytes

 

RMAN> restore controlfile from '/u01/rman/1.ctl';

Starting restore at 09-OCT-13

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=156 devtype=DISK

 

channel ORA_DISK_1: copied control file copy

output filename=/u01/app/oracle/oradata/test/control01.ctl

output filename=/u01/app/oracle/oradata/test/control02.ctl

output filename=/u01/app/oracle/oradata/test/control03.ctl

Finished restore at 09-OCT-13

 

RMAN> alter database mount;

database mounted

released channel: ORA_DISK_1

 

RMAN> run

2> {allocate channel c1 type disk;

3> allocate channel c2 type disk;

4> restore database;

5> }

 

关闭备库启动到stanby

SQL> shutdown immediate;

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

 

SQL> startup nomount;

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size                 1218316 bytes

Variable Size             67111156 bytes

Database Buffers          96468992 bytes

Redo Buffers               2973696 bytes

SQL> alter database mount standby database;

Database altered.

 

备库rman恢复归档

[oracle@oracle2 ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Wed Oct 909:15:43 2013

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

connected to target database: TEST (DBID=2126483265, not open)

RMAN> recover database;

 

备库开启同步进程

alter database recover managed standby database disconnect fromsession;

至此,Data Guard 的操作已经完成,下面来开始验证。

 

四.启动验证

4.1   在备库将实例启动到mount 状态

SQL> startupnomount;

ORACLE instancestarted.

Total SystemGlobal Area  918552576 bytes

Fixed Size                  2025040 bytes

VariableSize             247466416 bytes

DatabaseBuffers          662700032 bytes

RedoBuffers                6361088 bytes

SQL>  alter database mount standby database;

Databasealtered.

SQL> recover managed standby databaseusing current logfile disconnect from session; 开始实时应用redo log

Databasealtered.

4.2   在备库启动监听

[oracle@dg2 mt]$ lsnrctl start

4.3   在主库上启动

SQL> startup

ORACLE instancestarted.

 

Total SystemGlobal Area  918552576 bytes

Fixed Size                  2025040 bytes

VariableSize             247466416 bytes

DatabaseBuffers          662700032 bytes

RedoBuffers                6361088 bytes

Databasemounted.

Database opened.

 

4.4   在主库启动监听

[oracle@dg1 oracle]$ lsnrctl start

4.5   查看主库一些状态

4.5.1         进程

SQL> selectprocess from v$managed_standby;

PROCESS

---------

ARCH

ARCH

LGWR

4.5.2         进程一些相关状态

SQL> selectprocess,client_process,sequence#,status from v$managed_standby;

PROCESS   CLIENT_P SEQUENCE# STATUS

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

ARCH      ARCH              0 CONNECTED

ARCH      ARCH             31 CLOSING

LGWR      LGWR             32 WRITIN

4.5.3         归档日志最大序列号

SQL> selectmax(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

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

            31

4.5.4         日志应用情况

select name,creator,sequence#,applied,completion_time from v$archived_log;

4.5.5         查询数据块角色和保护级别

SQL> selectdatabase_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_statusfrom v$database;

DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE  PROTECTION_MODE

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

PROTECTION_LEVEL     SWITCHOVER_STATUS

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

PRIMARY          mt1                            READ WRITE MAXIMUMAVAILABILITY

MAXIMUMAVAILABILITY SESSIONS ACTIVE

4.5.6         查询DG 错误信息

select error from v$archive_dest;

4.5.7         查看orace 错误信息

tail -f /u01/app/oracle/admin/mt/bdump/alert_mt.log

4.6   查看备库一些状态

4.6.1         进程

SQL> select process from v$managed_standby;

PROCESS

---------

ARCH

ARCH

MRP0

RFS

RFS

RFS

4.6.2         6 rows selected.进程一些相关状态

SQL> select process,client_process,sequence#,statusfrom v$managed_standby;

 

PROCESS   CLIENT_P SEQUENCE# STATUS

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

ARCH      ARCH             31 CLOSING

ARCH      ARCH              0 CONNECTED

MRP0      N/A              32 APPLYING_LOG

RFS       LGWR             32 IDLE

RFS       ARCH              0 IDLE

RFS       UNKNOWN           0 IDLE

 

6 rows selected.

 

4.6.3         归档日志最大序列号

SQL> selectmax(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

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

            31

4.6.4         日志应用情况

select name,creator,sequence#,applied,completion_time fromv$archived_log;

4.6.5         查询数据块角色和保护级别

SQL> selectdatabase_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_statusfrom v$database;

 

DATABASE_ROLE    DB_UNIQUE_NAME                 OPEN_MODE  PROTECTION_MODE

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

PROTECTION_LEVEL     SWITCHOVER_STATUS

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

PHYSICAL STANDBYmt2                           MOUNTED    MAXIMUM AVAILABILITY

MAXIMUMAVAILABILITY SESSIONS ACTIVE

4.6.6         查询DG 错误信息

select error from v$archive_dest;

4.6.7         查看orace 错误信息

tail -f /u01/app/oracle/admin/mt/bdump/alert_mt.log

4.6.8         查看日志应用模式

SQL>  select recovery_mode fromv$archive_dest_status where dest_id=2;

 

RECOVERY_MODE

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

MANAGED REALTIME APPLY

 

 

五.保护模式切换

1.      最大可用模式

1.1. 查看当前保护模式

SQL>  select protection_mode,protection_level fromv$database;

PROTECTION_MODE      PROTECTION_LEVEL

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

MAXIMUM PERFORMANCE  MAXIMUMPERFORMANCE

当前为最大性能模式

1.2. 修改配置文件

修改initmt.ora文件

LOG_ARCHIVE_DEST_2='SERVICE=mt2 LGWR SYNC ARRIRM  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=mt2'

1.3. 更改保护模式

1.3.1.       关闭数据库

SQL>shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLE instance shut down.

1.3.2.       打开数据库到mount

SQL>startup mount;

ORACLEinstance started.

 

TotalSystem Global Area  918552576 bytes

FixedSize                  2025040 bytes

VariableSize             247466416 bytes

DatabaseBuffers          662700032 bytes

RedoBuffers                6361088 bytes

Database mounted.

1.3.3.       修改模式为最大可用

SQL> alter database set standby database to maximizeavailability;

1.3.4.       打开数据库验证

SQL>alter database open;

Databasealtered.

 

SQL>  select protection_mode from v$database;

PROTECTION_MODE

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

MAXIMUM AVAILABILITY

 

2.      最大保护模式

2.1. 查看当前保护模式

SQL>  select protection_mode from v$database;

PROTECTION_MODE

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

MAXIMUMAVAILABILITY

当前为最大可用模式

2.2. 修改配置文件

修改initmt.ora文件

LOG_ARCHIVE_DEST_2='SERVICE=mt2 LGWR SYNC ARRIRM  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=mt2'

2.3. 更改保护模式

2.3.1.       关闭数据库

SQL>shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLE instance shut down.

2.3.2.       打开数据库到mount

SQL>startup mount;

ORACLEinstance started.

 

TotalSystem Global Area  918552576 bytes

FixedSize                  2025040 bytes

VariableSize             247466416 bytes

DatabaseBuffers          662700032 bytes

RedoBuffers                6361088 bytes

Database mounted.

2.3.3.       修改模式为最大保护

SQL> alter database set standby database to maximize protection;;

2.3.4.       打开数据库验证

SQL>alter database open;

Databasealtered.

 

SQL>select protection_mode from v$database;

PROTECTION_MODE

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

MAXIMUM PROTECTION

SQL>

 

3.      最大性能模式

3.1. 查看当前保护模式

SQL> select protection_mode,protection_level from v$database;

 

PROTECTION_MODE     PROTECTION_LEVEL

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

MAXIMUM PROTECTION   MAXIMUMPROTECTION

当前为最大保护模式

3.2. 修改配置文件

修改initmt.ora文件

LOG_ARCHIVE_DEST_2='SERVICE=mt2 LGWR SYNC ARRIRM  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=mt2'

3.3. 更改保护模式

3.3.1.       关闭数据库

SQL>shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLE instance shut down.

3.3.2.       打开数据库到mount

SQL>startup mount;

ORACLEinstance started.

 

TotalSystem Global Area  918552576 bytes

FixedSize                  2025040 bytes

VariableSize             247466416 bytes

DatabaseBuffers          662700032 bytes

RedoBuffers                6361088 bytes

Database mounted.

3.3.3.       修改模式为最大性能

SQL> alter database set standby database to maximize performance;

3.3.4.       打开数据库验证

SQL>alter database open;

Databasealtered.

 

SQL>select protection_mode from v$database;

PROTECTION_MODE

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

MAXIMUM PERFORMANCE

SQL>

 

六.物理standby 转换为逻辑standby

1.      主备库Switchover

1.1.  主库检查是否支持switchover操作,转换备库

SQL>select switchover_status from v$database;

SWITCHOVER_STATUS

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

SESSIONSACTIVE

如果switchover_status 为TO STANDBY 则执行

alterdatabase commit to switchover to physical standby;

若为SESSIONS ACTIVE表示当前会话处于ACTIVE,则执行

SQL> alterdatabase commit to switchover to physical standby  with session shutdown;

Databasealtered.

1.2. 关闭主库,启动到mount状态查看状态

SQL> shutdownimmediate;

ORA-01507:database not mounted

ORACLEinstance shut down.

 

SQL> startup mount;

ORACLE instance started.

Total System Global Area 918552576 bytes

Fixed Size                 2025040 bytes

Variable Size            247466416 bytes

Database Buffers         662700032 bytes

Redo Buffers               6361088 bytes

Database mounted.

 

SQL> recover managed standby database using current logfiledisconnect from session;

Media recovery complete.

 

SQL> SELECT NAME,OPEN_MODE,DATABASE_ROLE,DB_UNIQUE_NAME FROMV$DATABASE;

NAME      OPEN_MODE  DATABASE_ROLE    DB_UNIQUE_NAME

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

MT        MOUNTED    PHYSICAL STANDBY mt1

可见状态已经转换为standby

1.3. 备库检查状态,并前转换为主库

SQL>select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

 

SQL> alter database commit to switchover to primary;

Database altered.

 

SQL> alter database open;

1.4. 查看状态

SQL>SELECT NAME,OPEN_MODE,DATABASE_ROLE,DB_UNIQUE_NAME FROM V$DATABASE;

 

NAME      OPEN_MODE DATABASE_ROLE    DB_UNIQUE_NAME

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

MT        READ WRITEPRIMARY          mt2

1.5. 切换log 验证

原备库

SQL>alter database open;

Database altered.

SQL>Alter system switch logfile;

System altered.

 

SQL> select max(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

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

            58 

         原主库

              SQL> select max(sequence#)from v$archived_log;

MAX(SEQUENCE#)

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

              58

2.      恢复到原来状态

2.1. 主库检查是否支持switchover操作,转换备库

SQL>select switchover_status from v$database;

SWITCHOVER_STATUS

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

SESSIONSACTIVE

如果switchover_status 为TO STANDBY 则执行

alterdatabase commit to switchover to physical standby

若为SESSIONS ACTIVE表示当前会话处于ACTIVE,则执行

SQL> alterdatabase commit to switchover to physical standby  with session shutdown;

Databasealtered.

2.2. 关闭主库,启动到mount状态查看状态

SQL>shutdown immediate;

ORA-01507:database not mounted

ORACLEinstance shut down.

 

SQL> startup mount;

ORACLE instance started.

Total System Global Area 918552576 bytes

Fixed Size                 2025040 bytes

Variable Size            247466416 bytes

Database Buffers         662700032 bytes

Redo Buffers               6361088 bytes

Database mounted.

 

 

 

SQL> recover managed standby database using current logfiledisconnect from session;

Media recovery complete.

 

SQL> SELECT NAME,OPEN_MODE,DATABASE_ROLE,DB_UNIQUE_NAME FROMV$DATABASE;

NAME      OPEN_MODE  DATABASE_ROLE    DB_UNIQUE_NAME

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

MT        MOUNTED    PHYSICAL STANDBY mt2

可见状态已经转换为standby

2.3. 备库检查状态,并前转换为主库

SQL>select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

 

SQL> alterdatabase commit to switchover to primary with session shutdown;

 

Database altered.

 

SQL>startup;

2.4. 查看状态

SQL>SELECT NAME,OPEN_MODE,DATABASE_ROLE,DB_UNIQUE_NAME FROM V$DATABASE;

 

NAME      OPEN_MODE DATABASE_ROLE    DB_UNIQUE_NAME

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

MT        READ WRITEPRIMARY          mt1

2.5. 切换log 验证

原备库

SQL>Alter system switch logfile;

System altered.

 

SQL> select max(sequence#) from v$archived_log;

 

MAX(SEQUENCE#)

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

            58 

         原主库

             SQL> select max(sequence#)from v$archived_log;

MAX(SEQUENCE#)

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

              58