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

来源:这里教程网 时间:2026-03-03 18:16:40 作者:

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名称 db19cdgDB_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;

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

遇到报错如下:

相关推荐