zoukankan      html  css  js  c++  java
  • 测试数据库DG搭建为正式库以后做准备

    Data guard 部署

    1、系统准备(备库只需建立数据库软件)

    两台操作系统 oracle linux 7

    Node1 172.16.70.191

    Node2 172.16.70.192

    Oracle 11g 

    2、搭建数据库(选择企业模式安装,不要标准版避免闪回开启不了)

         a、redo日志修改为100M

         b、每个日志组里改成两个logfile,big size 100M

      c、10g的数据库sga和pga内存分配

               sga=内存*80%*80%

               pga=内存*20%*20%

    3、配置主备库的listener和tnsnames.ora

         listener配置 (备库的监听服务名要改)

    SID_LIST_LISTENER =

     (SID_LIST =

       (SID_DESC =

        (GLOBAL_DBNAME = orcl)

        (ORACLE_HOME = /data/app/oracle)

        (SID_NAME = orcl)

       )

       (SID_DESC =

         (GLOBAL_DBNAME = orcl_DGMGRL)

         (ORACLE_HOME = /data/app/oracle)

         (SID_NAME = orcl)

       )

     )

    LISTENER =

      (DESCRIPTION_LIST =

        (DESCRIPTION =

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

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

        )

      )

    注意静态监听中的GLOBAL_DBNAME和本机的db_unique_name是一样的

    第二个global_dbname是用来给dgmgl(dg broker)工具使用)必须有_DGMGRL这个结尾。否则切换会导致被切换的库不能自动启动。所以我这里命名的是(实例名+_DGMGRL)

    Tnsnames.ora 配置(主库修改后复制到备库)

    ORCL =

      (DESCRIPTION =

        (SDU = 32767)

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

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = orcl)

        )

      )

    ORCLBAK =

      (DESCRIPTION =

        (SDU = 32767)

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

        (CONNECT_DATA =

          (SERVER = DEDICATED)

          (SERVICE_NAME = orclbak)

        )

      )

    for_db =

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

    备库上的for_db为备库的机器名或ip,node1,node2 可以使用ip

    二 、主库上的参数修改

    4、开启force logging 模式

           alter database force logging

          select open_mode,log_mode,force_logging,flashback_on from v$database;

        若发现flashback 是no

        启动数据库到mount 打开闪回

        alter database flashback on;(针对企业版有此功能)

        select open_mode,log_mode,force_logging,flashback_on from v$database;

       

      作用:不管什么操作都会生成redo日志,应该看到 force_logging 列为 YES。 

       特点:

       ① 在数据库mount状态和open状态都可以启动force logging模式 

       ② 临时表空间和临时回滚段动作不会生成redo日志 

       ③ alter database noforce logging; 关闭forcelogging

    5、设置db_unique_name 该标识必须唯一

        show parameter db_unique_name

      show parameter db_name

      主库此参数最好一样,备库的db_name最好和主库一样

      alter system set db_unique_name=orcl scope=spfile;

      主备库都要设置,且不能一样

    6、The DB_UNIQUE_NAME values of the primary and standby database should be used in theDG_CONFIG setting of the LOG_ARCHIVE_CONFIG parameter让主库知道备库名字

         alter system set log_archive_config = 'dg_config=(orcl,orclbak)';

         上面两个代表的是db_unique_name

    7、配置归档位置和重做日志

        alter system set log_archive_dest_1 = 'location=use_db_recovery_file_dest valid_for=(all_logfiles, all_roles) db_unique_name=orcl';

          这个命令指定快速恢复区作为归档位置,此归档位置用于在所有数据库角色下归档所有的日志文件。官方文档里说使用 valid_for=(online_logfiles, all_roles),这将导致备库无法归档备用日志文件,因为它们不是在线日志。但如果使用 all_logfiles 选项,主备库将都能归档在线以及备用日志。如果你想在备库进行备份,并同时备份归档日志的话,必须使用 all_logfiles。

    8、配置redo 日志从主库传输到备库

      alter system set log_archive_dest_2 = 'service=orclbak lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=orclbak';

    10G中 STANDBY_ARCHIVE_DEST 参数不需要,已经被官方弃用。如11g 设置此参数后启动数据库,只会报 ORA-32004: obsolete or deprecated parameter(s) specified for RDBMSinstance错误。

     8.1、LOG_ARCHIVE_FORMAT and LOG_ARCHIVE_MAX_PROCESSES parameters must be set to appropriate values and the REMOTE_LOGIN_PASSWORDFILE must be set to exclusive.

    ALTER SYSTEM SET  LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
    ALTER SYSTEM SET  LOG_ARCHIVE_MAX_PROCESSES=30;
    ALTER SYSTEM SET  REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

    9、设置参数 FAL_SERVER

      此参数指定日志传输出现问题,备库去哪找缺少的归档日志,备库可自动去寻找缺省的参数,并要求主库传输

      主库上为备库的实例名

      FAL_CLIENT 为备库的实例名

    相反备库的设置和主库恰好相反

      alter system set fal_server='orclbak';(服务名)

    10、当主库添加或删除数据文件时,这些文件也会在备库添加或删除

       alter system set standby_file_management=auto;(此功能)

    11、添加备用日志组

        确认主库有备用日志文件(StandbyLog Files)。备库使用备用日志文件来来保存从主库接收到的重做日志。

      主库上也建立备用日志文件有两个原因:一是主库可能转换成备库,备库需要备用日志,二是如果主库建了备用日志,备库会自动建。

    备用日志的大小和在线日志一样大,组数一样多

     alter database add standby logfile group 44 ('$ORACLE_BASE/oradata/orcl/std_redo11.log') size 500M;

    alter database add standby logfile group 55 ('$ORACLE_BASE/oradata/orcl/std_redo22.log') size 500M;  

    alter database add standby logfile group 66 ('$ORACLE_BASE/oradata/orcl/std_redo33.log') size 500M;

    建好后查看:

      select group#,type, member from v$logfile;

    12、重启数据库

    13、设置本地监听抓取

          alter system set local_listener='for_db';

         重启数据库并创建pfile文件

    14、将创建好的pfile文件移动到备库

    三、修改备库环境

     15、修改传递过来的pfile文件(复制后控制文件路径不变,pfile文件名也不变)

        根据备库的配置文件修改

         .audit_file_dest

         .control_files

         .log_archive_dest_1

          .log_archive_dest_2

         以上四个参数,db_name 不用修改

    建议:如果修改上诉路径,需要设置db_file_name_convert 和 log_file_name_convert

    这两个参数,或者直接查询主库的文件位置,在备库建相应的文件位置:

        user_dump_dest—>show parameter

        core_dump_dest —>show parameter

        datafile所在目录(oradata)—>select file_name fromd ba_data_files;

        controlfile所在目录—>show parameter control

        onlinelog所在位置—>select member from v$logfile;

        archivelog所在位置—>show parameter db_recovery_file_dest

    adump位置—>通常为$ORACLE_BASE/admin/<ORACLE_SID>/adump

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

    mkdir -p /u01/app/oracle/fast_recovery_area/

    mkdir -p /u01/app/oracle/diag/rdbms/db11g/DB11G/cdump

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

    mkdir -p /u01/tablespace/

    mkdir -p /u01/app/oracle/fast_recovery_area/DB11G/

    mkdir -p /u01/redolog/

    需要将.control开头的控制文件的位子注释掉#   

    LOG_ARCHIVE_DEST_1 参数中的 db_unique_name 修改为备库的相应唯一名(这里是orclbak)。

       LOG_ARCHIVE_DEST_2 参数,修改为主库对应的服务名和数据库唯一名(这里是orcl)。

       FAL_SERVER 参数修改指向主库的服务名

       增加如下参数:

    db_unique_name=orclbak

    db_file_name_convert 和 log_file_name_convert。如果主备库的数据文件、日志文件位置不同,需要设置这两个参数。

    16、创建备库的密码文件

        

    使用oracle帐号登录,设置的密码要保证主库、备用库是相同。也可以复制主库密码文件到备库。

    $ rm $ORACLE_HOME/dbs/orapw$ORACLE_SID

    $ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=manager entries=5

     备注:

    如果你不是使用 SSL 做重做日志传输验证(一般来说不会),那么你需要使用密码文件做验证。你必须创建密码文件,并且设置参数 REMOTE_LOGIN_PASSWORDFILE 为 EXCLUSIVE 或 SHARED。一般数据库默认就有密码文件,并且此参数默认为 EXECUSIVE。先检查下这两项,如果不是默认,设置方法如下:

    SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;

    17、启动备库到nomount状态然后连接主库进行RMAN duplicate操作

             sqlplus / as sysdba

             create spfile from pfile='$ORACLE_HOME/initorcl.ora'

             startup nomount;

             

    备注:

    若启动出现 ORA-32004: obsoleteor deprecated parameter(s) specified for RDBMS instance,则查看日志,

    文本格 式的alert文件在哪里呢?看一下动态视图V$DIAG_INFO吧。

    SQL> select * from v$diag_info ;

    $ tail -f /data/oracle/app/oracle/diag/rdbms/orcl_standby/orcl/trace/alert_orcl.log

    看看有无类似过期参数提示:

    WARNING: The background_dump_dest init.ora parameter has been deprecated.

    18、在备库上连接rman(此时主库为open 备库为nomount)

       rman target sys/sys@orcl auxiliary sys/sys@orclbak

    ys/sys@topbak< RecoveryManager:Release11.2.0.4.0一ProductiononFriAug2912:14:522014 Copyri吕ht(c)1982,2011,oracleand/oritsaffiliates.Allri吕htsreserved. connectedtotar吕etdatabase:TOPPROD(DBID=2084233808) connectedtoauxi1iarydatabase:TOPBAK(notmounted)" v:shapes="图片_x0020_1">

    19、RMAN通过网络在线duplicate复制主库数据到备库(确保有路径,不然会报错)

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

    20、将备库置于active dataguard模式下

        物理备库(physical Standby)在应用redo的时候,数据库需要处于mount状态。从11g开始,应用redo的时候,物理备库可以处于read-only模式,这就称为Active Data Guard 。通过Active Data Guard,可以在物理备库进行查询或者导出数据,从而减少对主库的访问和压力。

       sqlplus /nolog

       conn / as sysdba

       查看状态

       select open_mode,database_role,db_unique_name from v$database;

    1)打开备库(Dataguard只能启动备库到readonly模式)

    SQL> alter database open; 

    2)启用实时重做应用(备库上做)

    选项“USING CURRENT LOGFILE”的含义是当备库收到日志后,尽快完成恢复。 

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

    如何取消备库的自动恢复? 

    取消Redo Apply 

    SQL> alter database recover managed standby database cancel; 

    3)查看状态 

    状态“READ ONLY WITH APPLY”即表示此时备库处于Read Only状态的同时可以接受主库传过来的日志进行恢复,以便达到备库可以即时查看到主库变化的目的。 

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

    OPEN_MODE DATABASE_ROLEDB_UNIQUE_NAME

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

    READ ONLY WITH APPLY PHYSICAL STANDBY orclbak

     

    查看日志状态 

    SQL> select status from v$standby_log; 

    STATUS 

    ---------- 

    ACTIVE 

    UNASSIGNED 

    UNASSIGNED

    SQL> select member from v$logfile;

    MEMBER

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

    /u2/oradb/archivelog/ORCLBAK/onlinelog/o1_mf_1_9w4g4d8w_.log

    /u2/oradb/archivelog/ORCLBAK/onlinelog/o1_mf_2_9w4g4dgk_.log

    /u2/oradb/archivelog/ORCLBAK/onlinelog/o1_mf_3_9w4g4dmp_.log

    /u2/oradb/archivelog/ORCLBAK/onlinelog/o1_mf_4_9w4g4gmx_.log

    /u2/oradb/archivelog/ORCLBAK/onlinelog/o1_mf_5_9w4g4grv_.log

    /u2/oradb/archivelog/ORCLBAK/onlinelog/o1_mf_6_9w4g4gy6_.log

    /u2/oradb/archivelog/ORCLBAK/onlinelog/o1_mf_8_9w4g4jqv_.log

    7 rows selected.

    五、修改dataguard的数据保护模式为最高可用性模式

    根据Oracle文档的解释,最高可用性数据保护模式需要先满足以下几个条件 

    Table 6-1 Required Redo Transport Attributes for DataProtection Modes

    Maximum Availability

    Maximum Performance

    Maximum Protection

    AFFIRM or NOAFFIRM

    NOAFFIRM

    AFFIRM

    SYNC

    ASYNC

    SYNC

    DB_UNIQUE_NAME

    DB_UNIQUE_NAME

    DB_UNIQUE_NAME

    Minimum Requirements for Maximum Protection Mode

    Redo Archival Process

    LGWR

    Network Transmission Mode

    SYNC

    Disk Write Option

    AFFIRM

    Standby Redo Logs?

    Yes

    Standby Database Type

    Physical Only

    For example:

    log_archive_dest_2='service=testdb_standby LGWR SYNC AFFIRM'

    主库上查看DG状态(搭建前已将模式修改,下为最高性能模式下的修改方法)

    SQL> select db_unique_name,protection_mode,protection_level from v$database;

    DB_UNIQUE_NAME PROTECTION_MODEPROTECTION_LEVEL

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

    orcl MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE

     

    备库上查看DG状态

    SQL> select db_unique_name,protection_mode,protection_level from v$database;

    DB_UNIQUE_NAME PROTECTION_MODEPROTECTION_LEVEL

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

    orclbak MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE

     

    在主库上设置DG保护模式为最高可用性模式

    SQL> alter database set standby database to maximize availability;

     

    再次查看主库、备库,发现DG保护模式都已经变了。

    主库

    SQL> select db_unique_name,protection_mode,protection_level from v$database;

    DB_UNIQUE_NAME PROTECTION_MODEPROTECTION_LEVEL

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

    orcl MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

     

    备库

    SQL> select db_unique_name,protection_mode,protection_level from v$database;

    DB_UNIQUE_NAME PROTECTION_MODEPROTECTION_LEVEL

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

    orclbak MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

     

    将备库shutdown后,主库和备库的PROTECTION_LEVEL将变为RESYNCHRONIZATION

    SQL> select db_unique_name,protection_mode,protection_level from v$database;

    DB_UNIQUE_NAME PROTECTION_MODEPROTECTION_LEVEL

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

    orclbak MAXIMUM AVAILABILITYRESYNCHRONIZATION

     

    备库执行(验证主库模式切换)

    一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUARD环境中的所有物理和逻辑STANDBY都可以继续工作。

     在进行DATA GUARD的物理STANDBY切换前需要注意: 

    1)确认主库和从库间网络连接通畅; 

    2)确认没有活动的会话连接在数据库中; 

    3)PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;

    4)确保STANDBY数据库处于ARCHIVELOG模式; 

    5)如果设置了REDO应用的延迟,那么将这个设置去掉; 

    6)确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。

    主库:

    1. 查看switchover 状态 

    SQL>select switchover_status from v$database;

    SWITCHOVER_STATUS

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

    TO STANDBY

    ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

    附: A:switchover_status出现session active/not allowed 

     当出现session active的时候表示还有活动的session,则运行 

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

         当出现not allowed时,在官方文档说转换会不成功,确保没有回话连接

    3 启动到mount和应用日志状态 

    SQL>shutdown immediate; 

    SQL> startup nomount; 

    alter database mount standby database;

    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; 

    备库: 

    1.查看switchover状态 

    SQL> select switchover_status from v$database;

        TO PRIMARY 

    附:若不是用此语句切换:

    ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown;

    补充:若出现:ORA-16139: media recovery required

    是因为没有执行:alter database recover managed standby database disconnect from session; 

    2. 切换成主库 

    SQL> alter database commit to switchover to primary;

    Database altered. 

    SQL> shutdown immediate;

    SQL> startup;

    SQL> alter system switch logfile;

    3. 查看数据库模式 

    SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;

    SQL>select status,database_mode from v$archive_dest_status;

    验证同步:

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

    如果出现ORA-10456: cannot open standby database; media recovery session may be in process

    操作:

               Select name,open_mode from v$database;

               alter database recover managed standby database cancel;

               alter database open;

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

    如果出现select max(sequence#) from v$archived_log;备库低于主库的情况

    SQL> recover managed standby database cancel;

    SQL> recover automatic standby database ;

    SQL> RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

    SQL> SELECT MESSAGE FROM V$DATAGUARD_STATUS;

    六、体验实时查询(Real-timequery)特性 (可选)

    1. 主库上创建表空间、用户以及表并初始化数据

    (1)创建表空间并查看表空间创建结果和状态

    SQL> create tablespace dbs2 datafile '$ORACLE_BASE/oradata/$ORACLE_SID/dbs2-01.dbf' size 10m;

    SQL> select * from v$tablespace where name = 'DBS2';

    SQL> select ts#,status,bytes,name from v$datafile where ts# = 14;

     

    (2)创建用户并授权

    SQL> create user test identified by test default tablespace dbs2;

    SQL> grant dba to test;

     

    (3)创建表并初始化数据

    $ sqlplus /nolog

    SQL> conn test/test

    SQL> create table t (x varchar2(8));

    SQL> insert into t values ('islandstar');

    SQL> commit;

    SQL> select * from t;

     

    X

    --------

    Secooler

     

    2. 验证主库所创建表空间、用户以及表并初始化数据是否在备库应用成功

    (1)查看备库表空间

    SQL> select * from v$tablespace where name = 'DBS2';

           TS# NAME INC BIG FLA ENC

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

            14 DBS2 YES NO YES

    SQL> select ts#,status,bytes,name from v$datafile where ts# = 14;

           TS# STATUS BYTES

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

    NAME

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

            14 ONLINE 10485760

    /u2/oradb/oradata/orcl/dbs2-01.dbf

     

    创建成功。

     

    (2)查看备库用户及数据是否存在

    方法同主库

    主库上的变化已经即时的在备库上得到应用。

    这便是Oracle 11g物理Active Data Guard实时查询(Real-time query)特性的体现。

    七、Active Data Guard 维护

    Data Guard 启动关闭顺序:

    启动顺序:先standby ,后primary;

    关闭顺序:先primary 后standby;

     

    主库没有遗漏

    SQL> select * from v$archive_gap;

    显示无结果表示无遗漏

    查看日志是否能正确从主库同步到备用库,查看主备库

    SQL> col standby_dest for a12

    SQL> col archived for a10

    SQL> col applied for a10

    SQL> col status for a10

    SQL> select sequence#,standby_dest,archived,applied,status from v$archived_log;

    只需要保证2边sequence序列号一致且最新的app返回YES了,就说明备库接收到应用且恢复了。

     在主库上检查最近的归档日志和强制一个日志归档

     alter session set nls_date_format='DD-MON-YYYY HH24:MI:SS';

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

     备库上执行同样的语句

     

    正常操作关闭DG时,再次启动DG循序为:

    1. 先启动备库,再启动主库

    $ sqlplus / as sysdba

    SQL> startup

    2. 在备库执行命令:打开实时应用状态模式

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

     

    非正常情况下关闭DG后,重启DG时需要操作

    1. 检查主、备库的protection_level值,若其中一点为RESYNCHRONIZATION,说明实时同步已经有问题。

    SQL> select db_unique_name,protection_mode,protection_level from v$database;

    DB_UNIQUE_NAME PROTECTION_MODEPROTECTION_LEVEL

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

    orcl MAXIMUM AVAILABILITYRESYNCHRONIZATION

    Oracle的data guard在主库设置为最大可用模式不能实现时,自动降级为最大性能模式。这样的结果使得日志同步不再实时。

    解决方法(在主库执行):

    1. 根据最大可用模式的最低要求,将log_archive_dest_2调整为lgwr sync affirm。

    SQL> show parameter log_archive_dest_2

    若包含有lgwr sync affirm ,则执行

    SQL> alter system switch logfile;

    强制日志切换,不一定就归档当前的重做日志文件(若自动归档打开,就归档前的重做日志,若自动归档没有打开,就不归档当前重做日志。)

    若无lgwr sync affirm ,则执行如下两句命令

    SQL> alter system setlog_archive_dest_2 = 'service=orcl_standby lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=orcl_standby';

    SQL> alter system switch logfile;

     

    2. 查看备库open_mode是否为“READ ONLY WITH APPLY”,否则执行后面一条语句,打开实时应用状态模式:

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

    OPEN_MODE DATABASE_ROLEDB_UNIQUE_NAME

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

    READ ONLY WITH APPLY PHYSICAL STANDBY orclbak

     

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

    八、主备库切换 Switchover

    物理Data Guard角色转换步骤

    Step 1 验证主库是否能执行角色转换到备库(原主库执行):

    1.查看switchover状态

    SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

    SWITCHOVER_STATUS

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

    TO STANDBY

    Step 2 开始把物理主库改变为物理备库(原主库执行)

    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

     

    注:如果有活动的session可以使用此选项,否则转换会遇到ORA-01093错误,也可以杀掉活动会话或等活动会话后进行转换

    当出现session active的时候表示还有活动的session,则运行

    • SQL> Alter database commit to switchover to physical standby with session shutdown;

    Step 3 关闭并重启主库(原主库执行)

    SQL> SHUTDOWN IMMEDIATE;

    SQL> STARTUP MOUNT;

    Step 4 验证备库是否能执行角色转换到主库(原备库执行)

    SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

    SWITCHOVER_STATUS

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

    TO PRIMARY

    Step 5 开始把物理备库转换成物理主库(原备库执行)

    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

    --如果报ORA-16139: mediarecovery required,可能是由于未应用日志引起,可先执行

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

    Step 6 打开备库,然后关闭重启.(原备库执行)

    SQL> ALTER DATABASE OPEN;

    SQL> SHUTDOWN IMMEDIATE;

    SQL> STARTUP;

    Step 7 验证是否转换成功(原备库执行)

    SQL> ALTER SYSTEM SWITCH LOGFILE;

    Setp 8 应用归档日志(原主库上执行)

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

    此步若提示报错:

    ORA-01153: an incompatible media recoveryis active

    则先执行

    SQL> alter database recover managed standby database cancel;

    再执行

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

     

    最后,重启一下数据库(原备库执行)

    SQL> shutdownimmediate;

    SQL> startup

    以上是没有使用DGBROKER的切换过程

    使用DGBROKER切换流程:

    1、切换到oracle用户下面,

    2、使用dgmgrl sys/manager进入到dgmgrl环境重

    3、执行switchover to orclbak  这步自动主从切换

    4、exit退出dgmgrl,使用sqlplus进入到环境重执行:

    select db_unique_name,database_role,open_mode from v$database;

    这个select语句主从上面都执行,已查看两边的数据库状态,dgmgrl只需要在主库的服务器上执行即可

    FAILOVER切换:

    1、如果主库故障,发生宕机,只需要在在任易一边执行failover to orclbak

    2、切换成功后登陆查看数据库状态。

    3、恢复主库的方法,一般使用recreate重建数据库代价很大,过程相当于重新执行上面的配置。在拥有dg broker后恢复过程就变得简单。

    4、过程如下:

    5、将原来的主库启动到mount状态

    6、在现在新的主库上面登陆到dg broker环境

    7、执行: reinstate database orcl

    8、结果显示succeded就完成

     此文档是个很好的朋友给我的,我就是照着它完成熟悉的DG

     ---------------我是有底线的-------------------- 
    作者:jt
    出处:http://www.cnblogs.com/Jt00/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。

  • 相关阅读:
    转: wireshark过滤规则
    PHP开发
    转:python安装pycrypto
    How to use pycharm to debug scrapy projects
    VCForPython27.msi安装后, 还显示error: Unable to find vcvarsall.bat
    Dcgpofix
    Dsamain
    组托管服务帐户概述
    创建 PSO
    介绍 Active Directory 域服务 (AD DS) 虚拟化
  • 原文地址:https://www.cnblogs.com/Jt00/p/6766954.html
Copyright © 2011-2022 走看看