暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

19c ADG报错Error 1094 attaching to RFS for reconnect

原创 丁丁 2022-12-03
792

1.DG基础环境

操作系统版本:redhat7

数据库版本主库:19.3  

SID:db19c     

db_name:db19c  

db_unique_name:db19c


数据库版本备库:19.3  

SID:db19cdg     

db_name:db19c  

db_unique_name:db19cdg


说明:

红色db_name主备库必须保持一致;

绿色db_unique_name主备库名称必须不一致;

数据库小版本不同,不影响测试,当然建议保持一致,避免生产出现问题拍错就麻烦了。



2.主库开启强制归档以及开启归档模,以及修改主库初始化参数

①开启强制归档

alter database force logging;

select force_logging from v$database;


②初始化参数

--主备库设置一致remote_db_unique_name1 [, ... remote_db_unique_name9) 

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(db19c,db19cdg)' scope=both sid='*';

--log_archive_dest_1设置主库归档路径;DB_UNIQUE_NAME主库

ALTER SYSTEM SET log_archive_dest_1='LOCATION=/oracle/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=db19c' SCOPE=BOTH;

--log_archive_dest_2中SERVICE设置连接备库的tnsnames名称db19cdg;DB_UNIQUE_NAME备库数据库唯一名db19cdg

ALTER SYSTEM SET log_archive_dest_2='SERVICE=db19cdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=db19cdg' SCOPE=BOTH;


--STANDBY_FILE_MANAGEMENT如果设置为auto,主库增删文件会相应地自动在备库做出修改(结合convert参数) ;如果设置为manual,当在primary删除表空间或数据文件,执行drop tablespace .. including contents and datafiles,standby 只是在控制文件中将该文件删除,还需要手动将物理文件删除

alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=both sid='*';


--如果备库设置了db_file_name_convert与log_file_name_convert参数,那么当数据库启动到mount时,就无需手动进行数据文件重命名,因为RMAN在恢复控制文件过程中,会依据该参数设置,自行修改控制文件中记录的数据文件路径日志文件路径。当主库切换备库的时候用到,所以优先写备库的绝对路径!(在ASM自动管理情况下可以使用unique_name,但此处最好填写全路劲)

alter system set DB_FILE_NAME_CONVERT='/u01/data','/oracle/app/oracle/oradata/DB19C' scope=spfile;

alter system set LOG_FILE_NAME_CONVERT='/u01/data','/oracle/app/oracle/oradata/DB19C' scope=spfile;


--这两个参数只需在standby库设置,但也可以在primary库设置这两个参数,以方便switchover或failover时primary库转变为standby角色。FAL_CLIENT = StandbyDB,StandbyDB是standby库的TNS name;FAL_SERVER = PrimaryDB,此处PrimaryDB是一个TNS name,指向primary库。

alter system set FAL_CLIENT='db19c' scope=both sid='*';

alter system set FAL_SERVER='db19cdg' scope=both sid='*';


③开启归档,开启归档需要重启数据库。

3.主库添加standby redo logfile(连接到CDB$ROOT中执行,备库需要,如果切换主库也需要)

添加规则:创建standby日志组,个数是源日志个数+1再与实例数的积,size不能小于原来日志的大小

SQL> select thread#,group#,members,bytes,bytes/1024/1024 from v$log;


   THREAD#     GROUP#    MEMBERS      BYTES BYTES/1024/1024

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

         1          1          1  209715200             200

         1          2          1  209715200             200

         1          3          1  209715200             200


alter database add standby logfile group 4 ('/oracle/app/oracle/oradata/DB19C/redo04.log') size 200M;

alter database add standby logfile group 5 ('/oracle/app/oracle/oradata/DB19C/redo05.log') size 200M;

alter database add standby logfile group 6 ('/oracle/app/oracle/oradata/DB19C/redo06.log') size 200M;

alter database add standby logfile group 7 ('/oracle/app/oracle/oradata/DB19C/redo07.log') size 200M;

SQL> select group#,status,type,member from v$logfile;

    GROUP# STATUS  TYPE    MEMBER

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

         3         ONLINE  /oracle/app/oracle/oradata/DB19C/redo03.log

         2         ONLINE  /oracle/app/oracle/oradata/DB19C/redo02.log

         1         ONLINE  /oracle/app/oracle/oradata/DB19C/redo01.log

         4         STANDBY /oracle/app/oracle/oradata/DB19C/redo04.log

         5         STANDBY /oracle/app/oracle/oradata/DB19C/redo05.log

         6         STANDBY /oracle/app/oracle/oradata/DB19C/redo06.log

         7         STANDBY /oracle/app/oracle/oradata/DB19C/redo07.log


4.主库和备库监听配置以及TNS配置(主备库tns一样),保证防火墙关闭

主库:listener.ora

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.227)(PORT = 1522))

      )

    )

  )


SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = db19c)

      (SID_NAME = db19c)

      (ORACLE_HOME = /oracle/app/oracle/product/19.3.0/db_1)

    )

  )


主库:tnsname.ora

DB19C =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c)(PORT = 1522))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = db19c)

    )

  )


LISTENER_DB19C =

  (ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c)(PORT = 1522))


DB19CDG =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.225)(PORT = 1522))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = db19cdg)

    )

  )


LISTENER_DB19C =

  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.225)(PORT = 1522))


备库:listener.ora


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.225)(PORT = 1522))

      )

    )

  )


SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = db19cdg)

      (SID_NAME = db19cdg)

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

    )

  )


备库:tnsname.ora


DB19C =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c)(PORT = 1522))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = db19c)

    )

  )


LISTENER_DB19C =

  (ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c)(PORT = 1522))


DB19CDG =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.225)(PORT = 1522))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = db19cdg)

    )

  )


LISTENER_DB19CDG =

  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.225)(PORT = 1522))





5.主库创建pfile、standby controlfile以及cpoy创建好的pfile和口令文件到备库对应位置


主库:

alter database create   standby controlfile as '/home/oracle/controlfile';

create pfile=initdb19c.ora from spfile;
cd $ORACLE_HOME/dbs
scp orapwdb19c 192.168.1.225:/u01/app/oracle/product/19.0.0/dbhome_1/dbs

scp initdb19c.ora 192.168.1.225:/u01/app/oracle/product/19.0.0/dbhome_1/dbs


6.备库修改参数文件
-----------------------------------------------------------------


*.audit_file_dest='/u01/app/oracle/admin/db19c/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/oradata/db19cdg/control01.ctl','/u01/oradata/db19cdg/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/oracle/app/oracle/oradata/DB19C','/u01/oradata'
*.db_name='db19c'
*.db_unique_name='db19cdg'
*.diagnostic_dest='/u01/app/oracle'
*.fal_client='db19cdg'
*.fal_server='db19c'
*.log_archive_config='DG_CONFIG=(db19c,db19cdg)'
*.log_archive_dest_1='LOCATION=/oracle/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=db19cdg'
*.log_archive_dest_2='SERVICE=db19c LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=db19c'
*.log_file_name_convert='/oracle/app/oracle/oradata/DB19C','/u01/oradata'

*.standby_file_management='AUTO'


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

7.备库用init202009024.ora启动到nomount
startup pfile=init202009024.ora nomount;


9.查看备库数据库状态
select open_mode from v$database;
OPEN_MODE
-------------
MOUNTED


在备库启动数据库到恢复管理模式,并开始准备从主库接受日志的传输:
alter database recover managed standby database using current logfile disconnect from session;

此时备库,已经可以收到主库传过来的日志啦!


遇到报错如下:






「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论