首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

单机-单机DG搭建-DG切换测试

【环境说明-虚机】

主库:10.1.1.11 ygdg(oracle 11.2.0.4)

备库:10.1.1.12 ygdgbk(oracle 11.2.0.4)

【创建主库】

1、创建pfile

cat init.oragrep -v ^#grep -v ^$ >initygdg.ora

db_name='ygdg'

memory_target=1024M

processes=150

audit_file_dest='/u01/app/oracle/admin/ygdg/adump'

audit_trail='db'

db_block_size=8192

db_domain=''

diagnostic_dest='/u01/app/oracle'

dispatchers='(PROTOCOL=TCP)(SERVICE=ygdgXDB)'

open_cursors=300

remote_login_passwordfile='EXCLUSIVE'

undo_tablespace='UNDOTBS1'

control_files='/u01/app/oracle/oradata/ygdg/control01.ctl'

compatible='11.2.4.0'

解释:

$ORACLE_HOME/dbs该目录下有init.ora,将其当成一个创建pfile模板

过滤#和空行 cat init.oragrep -v ^#grep -v ^$ >initSID.ora

如果不是很放心的话,可以根据已有数据库的spfile来进行更改

pfile越简单,出错的概率越小

memory_target=1024M 看业务情况是80%or60%

processes=150 启动进程个数

audit_file_dest='$ORACLE_BASE/admin/SID/adump' 审计存在位置

audit_trail='db' 审计内容

db_block_size=8192 数据块大小

diagnostic_dest='$ORACLE_BASE' 诊断目录位置,告警文件、trace文件等

dispatchers='(PROTOCOL=TCP)(SERVICE=ORCLXDB)' 共享server建立调度器

open_cursors=300 打开游标个数

remote_login_passwordfile='EXCLUSIVE' sys用户远程连接认证,用口令文件,EXCLUSIVE代表允许远程登录

undo_tablespace='UNDOTBS1'

control_files='/u01/app/oracle/oradata/SID/control01.ctl' 刚开始建立时建一个就好了

compatible='11.2.0'

其中$ORACLE_BASE/admin/SID/adump和/u01/app/oracle/oradata/SID这两个目录可能没有

用oracle用户 mkdir -p /u01/app/oracle/oradata/SID生成

mkdir -p不用逐级创建

2、创建口令文件

/u01/app/oracle/product/11.2.0/db_1/dbs目录下

orapwd file=orapwygdg entries=3 password=oracle

解释:

利用orapwd工具创建

/u01/app/oracle/product/11.2.0/db_1/dbs目录下

orapwd file=orapwSID entries=3(几个用户可以访问) password=oracle

3、启动实例

export ORACLE_SID=ygdg

sqlplus / as sysdba

startup nomount;

show parameter name;

show parameter spfile;

create spfile from pfile;

startup force nomount;

4、创建database

cd /home/oracle

vi cr_ygdg.sql

create database ygdg

USER SYS IDENTIFIED BY oracle

USER SYSTEM IDENTIFIED BY oracle

LOGFILE GROUP 1 ('/u01/app/oracle/oradata/ygdg/redo01a.log') SIZE 100M BLOCKSIZE 512,

GROUP 2 ('/u01/app/oracle/oradata/ygdg/redo02a.log') SIZE 100M BLOCKSIZE 512

MAXLOGFILES 3

MAXLOGMEMBERS 2

MAXLOGHISTORY 1

MAXDATAFILES 100

CHARACTER SET zhs16gbk

EXTENT MANAGEMENT LOCAL

DATAFILE '/u01/app/oracle/oradata/ygdg/system01.dbf' SIZE 1G REUSE

SYSAUX DATAFILE '/u01/app/oracle/oradata/ygdg/sysaux01.dbf' SIZE 325M REUSE

DEFAULT TABLESPACE users DATAFILE '/u01/app/oracle/oradata/ygdg/users01.dbf' SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED

DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/u01/app/oracle/oradata/ygdg/temp01.dbf' SIZE 20M REUSE

UNDO TABLESPACE undotbs1 DATAFILE '/u01/app/oracle/oradata/ygdg/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

注意:

建库前期做好存储规划,原则数据文件、redo日志文件、归档日志文件

尽量不要放在相同存储上,不管是从安全还是从性能考虑

解释:

MAXLOGFILES指定重做日志文件的最大个数,最少2个;

MAXLOGMEMBERS指定重做日志文件中每个组的成员的最大个数,2个绰绰有余,但每组成员尽量放不同存储上,组越多,消耗IO越多;

MAXLOGHISTORY指定控制文件可记载的重做日志历史的最大个数;

MAXDATAFILES指定数据文件的最大个数;

CHARACTER SET zhs16gbk支持语言,根据要访问的客户端来选择;

EXTENT MANAGEMENT LOCAL区的管理方式为本地管理;

UNDO TABLESPACE undotbs1,其中undotbs1要跟pfile里面名一致

5、启动数据库

sqlplus / as sysdba

select status from v$instance;

status:started

@/home/oracle/cr_ygdg.sql

select status from v$instance;

status:open

解释:此时库创建成功,但不能用,只是骨架

6、创建数据字典

vi cr_dict.sql

@?/rdbms/admin/catalog.sql

@?/rdbms/admin/catproc.sql

conn system/oracle

@?/sqlplus/admin/pupbld.sql

exit

export ORACLE_SID=ygdg

sqlplus / as sysdba

select status from v$instance;

运行@/home/oracle/cr_dict.sql

解释:

数据字典是整个数据库的核心

@?/rdbms/admin/catalog.sql

--creates the data dictionary and public synonyms for many of its views, and grants PUBLIC access to the synonyms

@?/rdbms/admin/catproc.sql

--runs all scripts required for or used with PL/SQL.

conn system/oracle

@?/sqlplus/admin/pupbld.sql

--install the SQL*Plus PRODUCT_USER_PROFILE tables

过程中会报错,完了后测试下:desc product_user_profile;

如果要使用默认用户scott,则还需要运行下面脚本:@?/rdbms/admin/utlsampl.sql

测试:conn scott/tiger

user_< all_< dba_

user_:数据字典表,只是该用户所拥有的对象信息

all_:该用户有权限访问的所有对象信息,包括自己拥有的和别人赋权给它的

dba_:数据字典表所有对象信息,只有sys用户能访问

熟悉数据库要学会访问各种数据字典表,其主要由表和视图组成。

desc dict:可以查看数据库所有数据字典信息select * from dict;

【DG搭建—配置主库】

1、主库设为归档模式

SQL> archive log list;

数据库日志模式存档模式

2、配置主库为force logging

SQL> alter database force logging;

Database altered.

3、为主库添加standby redo log

standby redo log创建原则:

a)确保standby redo log的大小与主库online redo log的大小一致

b)主库为单实例数据库:standby redo log组数=主库日志组总数+1

SQL> select group#,THREAD#,MEMBERS,BYTES from v$log;

GROUP# THREAD# MEMBERS BYTES

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

alter database add standby logfile group 3 ('/u01/app/oracle/oradata/ygdg/redo03a.log') size 100m;

alter database add standby logfile group 4 ('/u01/app/oracle/oradata/ygdg/redo04a.log') size 100m;

alter database add standby logfile group 5 ('/u01/app/oracle/oradata/ygdg/redo05a.log') size 100m;

4、修改主库参数文件

SQL> show parameter name;

NAMETYPE VALUE

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

cell_offloadgroup_namestring

db_file_name_convertstring

db_namestring ygdg

db_unique_namestring ygdg

global_namesboolean FALSE

instance_namestring ygdg

lock_name_spacestring

log_file_name_convertstring

processor_group_namestring

service_namesstring ygdg

alter system set db_unique_name='ygdg' scope=spfile;

alter system set log_archive_config='DG_CONFIG=(ygdg,ygdgbk)';

alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/ygdg/arch db_unique_name=ygdg valid_for=(ALL_LOGFILES,ALL_ROLES)';

alter system set log_archive_dest_2='SERVICE=ygdgbk LGWR ASYNC db_unique_name=ygdgbk valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)'; alter system set log_archive_dest_state_1=enable;

alter system set log_archive_dest_state_2=enable;

alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;

alter system set db_file_name_convert='/u01/app/oracle/oradata/ygdgbk/','/u01/app/oracle/oradata/ygdg' scope=spfile;

alter system set log_file_name_convert='/u01/app/oracle/oradata/ygdgbk/','/u01/app/oracle/oradata/ygdg' scope=spfile;

alter system set standby_file_management='AUTO';

alter system set fal_server='ygdgbk';

alter system set fal_client='ygdg';

解释:

log_archive_config先自己后对端

log_archive_dest_1指的是本地日志位置

log_archive_dest_2指的是对端

db_file_name_convert中数据文件位置要尽可能相同

log_file_name_convert中日志文件位置要尽可能相同

fal_server指对端

fal_client指自己

5、主库创建监听

cd /u01/app/oracle/product/11.2.0/db_1/network/admin

[oracle@DB4-dg admin]$ vim listener.ora

(SID_DESC=

(GLOBAL_DBNAME=ygdg)

(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)

(SID_NAME=ygdg))

(SID_DESC=

(SID_NAME=ygdg)

(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

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

)

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

[oracle@DB4-dg admin]$ lsnrctl stop

[oracle@DB4-dg admin]$ lsnrctl start

6、主库配置TNSNAME

cd /u01/app/oracle/product/11.2.0/db_1/network/admin

[oracle@DB4-dg admin]$ vim tnsnames.ora

添加

ygdg =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ygdg)

)

)

ygdgbk =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ygdgbk)

)

)

【DG搭建—配置备库】

1、创建监听

[oracle@DB3-ogg admin]$ vim listener.ora

(SID_DESC=

(GLOBAL_DBNAME=ygdgbk)

(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME=ygdgbk))

(SID_DESC=

(SID_NAME=ygdgbk)

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

11.2.0/dbhome_1)

))

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

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

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

[oracle@DB3-ogg dbs]$ lsnrctl stop

[oracle@DB3-ogg dbs]$ lsnrctl start

2、配置TNSNAME

[oracle@DB3-ogg admin]$ pwd

/u01/app/oracle/product/11.2.0/dbhome_1/network/admin

[oracle@DB3-ogg admin]$ vim tnsnames.ora

添加

ygdgbk =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ygdgbk)

)

)

ygdg =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ygdg)

)

)

3、测试tns

主库

[oracle@DB4-dg admin]$ tnsping ygdgbk

备库

[oracle@DB3-ogg admin]$ tnsping ygdg

4、配置备库路径

mkdir -p /u01/app/oracle/admin/ygdgbk/adump

mkdir -p /u01/app/oracle/oradata/ygdgbk

5、配置密码文件

[root@DB3-ogg ygtest]#cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs

[root@DB3-ogg ygtest]#orapwd file=orapwygdgbk entries=3 password=oracle

6、配置备库pfile文件并启动到nomount状态

主库

SQL> create pfile='/u01/media/init.ora' from spfile;

[oracle@DB4-dg media]$ scp init.ora 10.1.1.12:/u01/ygtest

备库

[oracle@DB3-ogg ygtest]$ cat init.ora

*.audit_file_dest='/u01/app/oracle/admin/ygdgbk/adump'

*.audit_trail='db'

*.compatible='11.2.0'

*.control_files='/u01/app/oracle/oradata/ygdgbk/control01.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_file_name_convert='/u01/app/oracle/oradata/ygdg','/u01/app/oracle/oradata/ygdgbk/'

*.db_name='ygdg'

*.db_unique_name='ygdgbk'

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=ygdgbkXDB)'

*.fal_client='ygdgbk'

*.fal_server='ygdg'

*.log_archive_config='DG_CONFIG=(ygdgbk,ygdg)'

*.log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/ygdgbk/arch db_unique_name=ygdgbk valid_for=(ALL_LOGFILES,ALL_ROLES)'

*.log_archive_dest_2='SERVICE=ygdg LGWR ASYNC db_unique_name=ygdg valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.log_file_name_convert='/u01/app/oracle/oradata/ygdg','/u01/app/oracle/oradata/ygdgbk/'

*.memory_target=1G

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

[root@DB3-ogg ygtest]# mv init.ora /u01/app/oracle/product/11.2.0/dbhome_1/dbs/initygdgbk.ora

export ORACLE_SID=ygdgbk

sqlplus / as sysdba

startup nomount;

show parameter name;

show parameter spfile;

create spfile from pfile;

startup force nomount;

SQL> select status from v$instance;

STATUS

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

STARTED

7、恢复备库

rman target sys/oracle@ygdg auxiliary sys/oracle@ygdgbk

RMAN>duplicate target database for standby from active database nofilenamecheck;

8、备库打开并同步

SQL> alter database open;

SQL>alter database recover managed standby database using current logfile disconnect from session;

9、验证DG

查看日志有没有报错

SQL>select dest_name,error from v$archive_dest;

查询主库最大归档序号,一致即归档同步成功。

主库上执行:

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

备库上操作:

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

主库上执行日志切换

SQL>alter system archive log current;

主库上执行:

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

备库上再次验证:

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

查看主备库状态

主库上执行:

SQL>select switchover_status,database_role from v$database;

备库上执行:

SQL>select switchover_status,database_role from v$database;

【DG切换与恢复】

DG切换测试1:switchover

switchover是用户有计划的进行停机切换,能够保证不丢失数据

主库:

select switchover_status,database_role from v$database;

注意:上面查询结果为TO STANDBY 或 SESSIONS ACTIVE表明可以进行切换

alter database commit to switchover to physical standby with session shutdown;

startup mount;

select database_role from v$database;

备库上操作:

select switchover_status,database_role from v$database;

注意:上面查询结果显示为TO PRIMARY 或 SESSIONS ACTIVE表明可以切换成主库;

alter database commit to switchover to primary with session shutdown;

alter database open;

select switchover_status,database_role,open_mode from v$database;

主库:

alter database open;

alter database recover managed standby database using current logfile disconnect from session;

再次查询主备库状态:

select switchover_status,database_role from v$database;

DG切换测试2:failover

failover是当主库真正出现严重系统故障,如数据库宕机,软硬件故障导致主库不能支持服务,从而进行的切换动作。

注意:为了能够在failover后能够恢复DG,需要在主库上开启flashback,如果不开启flashback的话,DG就可能需要重新搭建

由于主库已经不可访问,下面所有的操作都在备库完成:

SQL> alter database recover managed standby database cancel;#停止实时同步

SQL> alter database recover managed standby database finish force;

SQL> select database_role from v$database;

DATABASE_ROLE

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

PHYSICAL STANDBY

SQL> alter database commit to switchover to primary with session shutdown; 加上finish force是将备库强制切换为主库

SQL> alter database open;

SQL> select switchover_status,database_role,open_mode from v$database;

SWITCHOVER_STATUS DATABASE_ROLE OPEN_MODE

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

RESOLVABLE GAP PRIMARY READ WRITE

至此failover操作完成,原来的备库已经切换为主库,可以给业务提供服务了。

failover恢复:利用flashback database来重构

在新的主库上执行:

SQL> select to_char(standby_became_primary_scn) from v$database;

TO_CHAR(STANDBY_BECAME_PRIMARY_SCN)

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

977458

在之前的主库上,也就是现在的备库上执行下面的操作:

SQL> startup mount

SQL> flashback database to scn 977458; #这个值为在新主库上查询到的SCN值

Flashback complete.

SQL> alter database convert to physical standby;

Database altered.

SQL> shutdown immediate

SQL> startup

SQL> alter database recover managed standby database using current logfile disconnect from session;

到此failover 恢复已经完成

Failover是Dataguard的一个重要功能特性。经过Failover,我们认为Primary站点其实已经不能作为HA架构成员了。

重新让Primary加入进去的方法有三个:

第一个是利用RMAN备份将Primary恢复到failover之前,重新进行日志弥补、角色切换;

第二个是利用Flashback Database策略,将数据库恢复到failover之前的时间点;

第三个是删除Primary数据库,重新利用新Primary搭建standby。

我们在这用了第二种方法,其他的可以参考https://www.cnblogs.com/lhrbest/p/4680273.html?from=singlemessage

注意:角色转换决策应该考虑的点

角色转换(switchover&failover)的最终目的是尽快地使主库在线,而同时尽量减少数据损失或者是实现无数据损失。尽量选择宕机时间最短,同时数据损失最小的策略。总之在失败切换前,应该先考虑修复主数据库或者进行无数据损失的角色转换。

即使使用无数据损失的备库方案,修复主库可能会比切换到备库更快点。如果修复了主库,那么就不需要修改客户端的连接。但是如果修复工作导致了任何的数据损失,那么可能需要重新创建所有的备用数据库。

通常情况下,最合适切换的备库为已经应用了最多的归档日志的备用数据库。

【Snapshot Standby】

Oracle 11g的Data Guard不仅仅带给我们的是Active Data Guard实时查询特性,同时还带来了另外一个新特性,这便是Snapshot Standby数据库功能,此项功能可将备库置身于“可读写状态”用于不方便在生产环境主库中测试的内容,比如模拟上线测试等任务。当备库读写状态下任务完成后,可以非常轻松的完成Snapshot Standby数据库角色切换回备库角色,恢复与主库数据同步。在Snapshot Standby数据库状态下,备库是可以接收主库传过来的日志,但是不能对日志进行应用。

1、查看主备库状态是否正常并根据实际情况考虑备库是否需要手动注册归档日志

主库

SQL> select name,database_role,protection_mode from v$database;

NAME DATABASE_ROLE PROTECTION_MODE

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

PROD PRIMARY MAXIMUM PERFORMANCE

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

MAX(SEQUENCE#)

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

536

备库

SQL> select name,database_role,protection_mode from v$database;

NAME DATABASE_ROLE PROTECTION_MODE

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

PROD PHYSICAL STANDBY MAXIMUM PERFORMANCE

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

MAX(SEQUENCE#)

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

536

根据实际情况考虑备库是否需要手动注册归档日志:

RMAN> catalog start with '/归档日志路径/' (一定要用/结尾,不然找不到真实路径)

这个命令的作用是将最新的备份集以及归档日志文件列表导入到控制文件中。

如果archivelog太多,会导致control较大,所以建议将过期的archivelog删除后,重新手动注册下归档日志,减小control大小;controlfile里初始化参数control_file_record_keep_time,设置备份信息保存时间,到规定时间就自动清除以前的备份信息。但是有时会出现archivelog信息本身较小,不会删除的情况。

2、切换备库到Snapshot Standby

(1)停止Redo Apply,如果备库正处于Redo Apply过程,需要先取消

SQL> alter database recover managed standby database cancel;

Database altered.

(2)确保闪回恢复区已指定

注意:实现Snapshot Standby数据库功能并不需要开启主库和备库的闪回数据库(Flashback Database)功能,与是否开启闪回数据库无关。

SQL> show parameter recover

NAME TYPE VALUE

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

db_recovery_file_dest string

db_recovery_file_dest_size big integer 0

recovery_parallelism integer 0

SQL> alter system set db_recovery_file_dest_size=2g;

alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area';

确认主库闪回功能并未开启

SQL> select FLASHBACK_ON from v$database;

FLASHBACK_ON

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

NO

确认备库闪回功能并未开启

SQL> select FLASHBACK_ON from v$database;

FLASHBACK_ON

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

NO

(3)调整备库到Snapshot Standby数据库状态

SQL> alter database convert to snapshot standby;

SQL> select database_role,open_mode from v$database;

DATABASE_ROLE OPEN_MODE

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

SNAPSHOT STANDBY MOUNTED

(4)将备库置于对外可读写状态

SQL> alter database open;

Database altered.

SQL> select database_role,open_mode from v$database;

DATABASE_ROLE OPEN_MODE

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

SNAPSHOT STANDBY READ WRITE

3、测试备库处于Snapshot Standby数据库对主库日志的接收

主库:

SQL> alter system switch logfile;

System altered.

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

MAX(SEQUENCE#)

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

539

备库:

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

MAX(SEQUENCE#)

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

539

或者查看主库和备库归档目录下的日志文件内容:

主库归档日志文件

$ ls -ltr

total 879M

……省略其他……

备库归档日志文件

$ ls -ltr

total 847M

……省略其他……

可见,备库已经接受到主库发过来的日志,这时备库是一个可任意修改和调整的状态,也就是我们要的“READ WRITE”可读写状态。

特别注意的是,原理上实现Snapshot Standby数据库功能是基于闪回数据原理的,因此任何导致闪回数据库无法回退的动作在这里也要规避,否则Snapshot Standby数据库将无法回到曾经的备库恢复状态。

4、恢复Snapshot Standby数据库为Physical Standby数据库

重启备库到MOUNTED状态

SQL> shutdown immediate;

SQL> startup mount;

SQL> select database_role,open_mode from v$database;

DATABASE_ROLE OPEN_MODE

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

SNAPSHOT STANDBY MOUNTED

转换到Physical Standby

SQL> alter database convert to physical standby;

此时数据库处于NOMOUNTED状态,需要重新启动数据库

SQL> shutdown immediate;

SQL> startup mount;

查看V$ARCHIVED_LOG动态性能视图查看日志应用情况

SQL> select sequence#, first_time, next_time, applied from v$archived_log order by sequence#;

5、开启备库到READ ONLY状态,验证之前在Snapshot Standby数据库上的操作已撤销

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter database open read only;

Database altered.

SQL> select database_role,open_mode from v$database;

DATABASE_ROLE OPEN_MODE

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

PHYSICAL STANDBY READ ONLY

根据测试情况进行相应的验证

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180226G15SCH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券