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

Oracle ADG 单库到单库、RAC 到单库

原创 有问题吗? 2022-06-09
1099

Active DataGuard 安装手册


硬件规划

选项 备库 主库
HOSTNAME rac01 rac02
IP 172.30.170.201 172.30.170.221
DB_UNIQUE_NAME DAADG DAPRI
DB VERSION 11.2.0.4 11.2.0.4
OS VERSION RedHat 6.5 RedHat 6.5

主库配置

  1. 检查数据库归档模式,日志模式,若没有开启,请开启归档模式和日志模式

    SQL> startup mount; SQL> alter database archivelog; SQL> alter database open; SQL> alter database force logging; SQL> select name,OPEN_MODE,LOG_MODE,FORCE_LOGGING from v$database; NAME OPEN_MODE LOG_MODE FOR --------- -------------------- ------------ --- DAPRI READ WRITE ARCHIVELOG YES
  2. 配置监听 –这里要注意分清配置的tnsnames.ora 是Oracle 用户下的tnsnames.ora,笔主有一次配置到grid里面,然后Oracle用户下的使用了遗留的参数,导致了rman duplicate 到了原主库… … 我艹

    [oracle@rac02 admin]$ pwd /u01/app/oracle/product/11.2.0/db_1/network/admin [oracle@rac02 admin]$ vi tnsnames.ora DAPRI = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.221)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAPRI) ) ) DAADG = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.201)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAADG) ) ) # 测试监听配置是否正确 [oracle@rac02 admin]$ tnsping DAADG Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.201)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAADG))) OK (0 msec) [oracle@rac02 admin]$ tnsping DAPRI Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.221)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAPRI))) OK (10 msec)
  3. 参数文件配置

    SQL> show parameter db_unique_name; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string DAPRI SQL> alter system set log_archive_config='DG_CONFIG=(DAPRI,DAADG)'; System altered. SQL> alter system set log_archive_dest_2='SERVICE=DAADG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAADG'; System altered. SQL> alter system set log_archive_dest_state_2 = defer; System altered. SQL> alter system set fal_server = 'DAADG'; System altered. SQL> alter system set fal_client = 'DAPRI'; System altered. SQL> alter system set standby_file_management= auto; System altered. -- 为使配置参数正确,需要重启数据库 SQL> shutdown immediate SQL> startup -- 核对相关参数是否设置正确 SQL> show parameter log_archive_config; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_config string DG_CONFIG=(DAPRI,DAADG) SQL> show parameter log_archive_dest_2; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_2 string SERVICE=DAADG LGWR ASYNC VALID _FOR=(ONLINE_LOGFILES,PRIMARY_ ROLE) DB_UNIQUE_NAME=DAADG SQL> show parameter log_archive_dest_state_2; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_state_2 string DEFER SQL> show parameter fal_server; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ fal_server string DAADG SQL> show parameter fal_client; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ fal_client string DAPRI SQL> show parameter standby_file_management; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ standby_file_management string AUTO
  4. 创建PFILE 参数文件,并传输到备库/home/oracle/DAPRI目录下,注意修改用户组

    SQL> create pfile='/home/oracle/DAPRI.ora' from spfile; File created.

    传输到备库命令(略)

  5. 创建standby控制文件,并传输到备库/home/oracle/DAPRI目录下,注意修改用户组

SQL> alter database create standby controlfile as '/home/oracle/control01.ctl'; Database altered.
  1. 将密码文件传输到备库/home/oracle/DAPRI 目录下,注意修改用户组
    若不知数据库的SYS、SYSTEM等用户密码,可以通过orapwd file=xxx password=xxx 进行修改。

​4,5,6 步完成后,备库上应该有如下文件

[oracle@rac01 DAPRI]$ ll total 9528 -rw-r----- 1 oracle oinstall 9748480 Jun 7 07:46 control01.ctl -rw-r--r-- 1 oracle oinstall 1218 Jun 7 07:47 DAPRI.ora -rw-r----- 1 oracle oinstall 1536 Jun 7 07:48 orapwDAPRI
  1. 在主库上增加standby log:
-- ACE 建议 standby logfile 建立的时候比主库的redo log 多一组,大小一样 alter database add standby logfile thread 1 '/u01/app/oracle/oradata/DAPRI/stdredo11.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo12.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo13.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo14.log' size 200m;

备库配置:

  1. 监听配置

    [oracle@rac01 admin]$ pwd /u01/app/oracle/product/11.2.0/db_1/network/admin [oracle@rac01 admin]$ vi tnsnames.ora [oracle@rac01 admin]$ tnsping DAADG Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.201)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAADG))) OK (0 msec) [oracle@rac01 admin]$ tnsping DAPRI Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.170.221)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DAPRI)))
  2. /home/oracle/DAPRI/DAPRI.ora参数文件配置

    ​ a. 核对DAPRI.__oracle_base 目录是否存在

    mkdir -pv /u01/app/oracle

    ​ b. 核对audit_file_dest 目录是否存在

    mkdir -pv /u01/app/oracle/admin/DAPRI/adump

    ​ c. 核对control_files目录是否存在

    mkdir -pv /u01/app/oracle/oradata/DAPRI/ mkdir -pv /u01/app/oracle/fast_recovery_area/DAPRI/

    ​ d. 核对db_recovery_file_dest目录是否存在

    mkdir -pv /u01/app/oracle/fast_recovery_area

    ​ e. 修改如下参数

    参数 修改前 修改后
    **.fal_client *.fal_client=‘DAPRI’ *.fal_client=‘DAADG’
    *.fal_server *.fal_server=‘DAADG’ *.fal_server=‘DAPRI’
    *.log_archive_dest_2 *.log_archive_dest_2=‘SERVICE=DAADG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAADG’ *.log_archive_dest_2=‘SERVICE=DAPRI LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAPRI’

    其它参数可根据需求可选变更。

    ​ f. 增加*.db_unique_name='DAADG’参数

    完成配置后配置对比如下

    修改前配置:

    DAPRI.__db_cache_size=1845493760 DAPRI.__java_pool_size=16777216 DAPRI.__large_pool_size=33554432 DAPRI.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment DAPRI.__pga_aggregate_target=822083584 DAPRI.__sga_target=2432696320 DAPRI.__shared_io_pool_size=0 DAPRI.__shared_pool_size=503316480 DAPRI.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/DAPRI/adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='/u01/app/oracle/oradata/DAPRI/control01.ctl','/u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='DAPRI' *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' *.db_recovery_file_dest_size=4385144832 *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=DAPRIXDB)' *.fal_client='DAPRI' *.fal_server='DAADG' *.log_archive_config='DG_CONFIG=(DAPRI,DAADG)' *.log_archive_dest_2='SERVICE=DAADG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAADG' *.log_archive_dest_state_2='DEFER' *.open_cursors=300 *.pga_aggregate_target=809500672 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=2428502016 *.standby_file_management='AUTO' *.undo_tablespace='UNDOTBS1'

    修改完成后配置如下:

    DAPRI.__db_cache_size=1845493760 DAPRI.__java_pool_size=16777216 DAPRI.__large_pool_size=33554432 DAPRI.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment DAPRI.__pga_aggregate_target=822083584 DAPRI.__sga_target=2432696320 DAPRI.__shared_io_pool_size=0 DAPRI.__shared_pool_size=503316480 DAPRI.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/DAPRI/adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='/u01/app/oracle/oradata/DAPRI/control01.ctl','/u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='DAPRI' *.db_unique_name='DAADG' *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' *.db_recovery_file_dest_size=4385144832 *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=DAPRIXDB)' *.fal_client='DAPRI' *.fal_server='DAADG' *.log_archive_config='DG_CONFIG=(DAPRI,DAADG)' *.log_archive_dest_2='SERVICE=DAPRI LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DAPRI' *.log_archive_dest_state_2='DEFER' *.open_cursors=300 *.pga_aggregate_target=809500672 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=2428502016 *.standby_file_management='AUTO' *.undo_tablespace='UNDOTBS1'

    将修改完的DAPRI.ora 文件拷贝到$ORACLE_HOME/dbs 目录下:

    [oracle@rac01 DAPRI]$ cp -av DAPRI.ora /u01/app/oracle/product/11.2.0/db_1/dbs/initDAPRI.ora `DAPRI.ora' -> `/u01/app/oracle/product/11.2.0/db_1/dbs/initDAPRI.ora'
  3. 密码文件移动到$ORACLE_HOME/dbs合适目录

    [oracle@rac01 DAPRI]$ cp -av orapwDAPRI /u01/app/oracle/product/11.2.0/db_1/dbs/ `orapwDAPRI' -> `/u01/app/oracle/product/11.2.0/db_1/dbs/orapwDAPRI'

完成第三、四 步,文件如下:

[oracle@rac01 DAPRI]$ ls $ORACLE_HOME/dbs hc_DAADG.dat initDAPRI.ora init.ora lkDAADG orapwDAADG orapwDAPRI spfileDAADG.ora
  1. 通过STANDBY控制文件将备库mount 到备库

​ a. 将控制文件移动到2.5 配置文件中控制文件的路径

[oracle@rac01 DAPRI]$ cp -av control01.ctl /u01/app/oracle/oradata/DAPRI/control01.ctl `control01.ctl' -> `/u01/app/oracle/oradata/DAPRI/control01.ctl' [oracle@rac01 DAPRI]$ cp -av control01.ctl /u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl `control01.ctl' -> `/u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl'

​ b. 启动到DAPRI数据库mount 状态,测试参数文件、控制文件是否正常:

# 修改ORACLE_SID环境变量,确保ORACLE_SID 修改为DAPRI,修改后结果如下: [oracle@rac01 DAPRI]$ cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH export ORACLE_SID=DAPRI export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1/ export PATH=$ORACLE_HOME/bin:$PATH # 使环境变量生效 [oracle@rac01 DAPRI]$ source ~/.bash_profile [oracle@rac01 DAPRI]$ echo $ORACLE_SID DAPRI [oracle@rac01 DAPRI]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Tue Jun 7 08:44:51 2022 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 2421825536 bytes Fixed Size 2255632 bytes Variable Size 620758256 bytes Database Buffers 1778384896 bytes Redo Buffers 20426752 bytes Database mounted.

​ 5. 数据库数据恢复

-- 这里采用duplicate 方式复制数据库,需要先把数据库给关机成nomount 状态 SQL> startup nomount pfile=‘/u01/app/oracle/product/11.2.0/db_1/dbs/initDAPRI.ora’; ORACLE instance started. Total System Global Area 2421825536 bytes Fixed Size 2255632 bytes Variable Size 620758256 bytes Database Buffers 1778384896 bytes Redo Buffers 20426752 bytes SQL> exit -- 直接执行 rman target sys/123.com@DAPRI auxiliary sys/123.com@DAADG 将会报错 [oracle@rac01 dbs]$ rman target sys/123.com@DAPRI auxiliary sys/123.com@DAADG Recovery Manager: Release 11.2.0.4.0 - Production on Tue Jun 7 09:01:09 2022 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: DAPRI (DBID=3173553946) RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00554: initialization of internal recovery manager package failed RMAN-04006: error from auxiliary database: ORA-12528: TNS:listener: all appropriate instances are blocking new connections 这是因为实例虽然启动,但是没有注册到监听。实例是通过PMON进程注册到监听上的,而PMON进程需要在MOUNT状态下才会启动。因此造成了上面的错误。本文档采用静态配置: [oracle@rac01 dbs]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora ADR_BASE_LISTENER = /u01/app/oracle SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = DAADG ) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = DAADG) ) ) [oracle@rac01 dbs]$ lsnrctl stop [oracle@rac01 dbs]$ lsnrctl start [oracle@rac01 dbs]$ rman target sys/123.com@DAPRI auxiliary sys/123.com@DAADG Recovery Manager: Release 11.2.0.4.0 - Production on Tue Jun 7 09:38:42 2022 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: DAPRI (DBID=3173553946) connected to auxiliary database: DAPRI (not mounted) RMAN> duplicate target database for standby from active database nofilenamecheck; Starting Duplicate Db at 07-JUN-22 using target database control file instead of recovery catalog allocated channel: ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: SID=63 device type=DISK contents of Memory Script: { backup as copy reuse targetfile '/u01/app/oracle/product/11.2.0/db_1/dbs/orapwDAPRI' auxiliary format '/u01/app/oracle/product/11.2.0/db_1/dbs/orapwDAADG' ; } executing Memory Script Starting backup at 07-JUN-22 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=197 device type=DISK Finished backup at 07-JUN-22 contents of Memory Script: { backup as copy current controlfile for standby auxiliary format '/u01/app/oracle/oradata/DAPRI/control01.ctl'; restore clone controlfile to '/u01/app/oracle/fast_recovery_area/DAPRI/control02.ctl' from '/u01/app/oracle/oradata/DAPRI/control01.ctl'; } executing Memory Script Starting backup at 07-JUN-22 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy copying standby control file output file name=/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_DAPRI.f tag=TAG20220607T101015 RECID=4 STAMP=1106734215 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 07-JUN-22 Starting restore at 07-JUN-22 using channel ORA_AUX_DISK_1 channel ORA_AUX_DISK_1: copied control file copy Finished restore at 07-JUN-22 contents of Memory Script: { sql clone 'alter database mount standby database'; } executing Memory Script sql statement: alter database mount standby database contents of Memory Script: { set newname for tempfile 1 to "/u01/app/oracle/oradata/DAPRI/temp01.dbf"; switch clone tempfile all; set newname for datafile 1 to "/u01/app/oracle/oradata/DAPRI/system01.dbf"; set newname for datafile 2 to "/u01/app/oracle/oradata/DAPRI/sysaux01.dbf"; set newname for datafile 3 to "/u01/app/oracle/oradata/DAPRI/undotbs01.dbf"; set newname for datafile 4 to "/u01/app/oracle/oradata/DAPRI/users01.dbf"; backup as copy reuse datafile 1 auxiliary format "/u01/app/oracle/oradata/DAPRI/system01.dbf" datafile 2 auxiliary format "/u01/app/oracle/oradata/DAPRI/sysaux01.dbf" datafile 3 auxiliary format "/u01/app/oracle/oradata/DAPRI/undotbs01.dbf" datafile 4 auxiliary format "/u01/app/oracle/oradata/DAPRI/users01.dbf" ; sql 'alter system archive log current'; } executing Memory Script executing command: SET NEWNAME renamed tempfile 1 to /u01/app/oracle/oradata/DAPRI/temp01.dbf in control file executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting backup at 07-JUN-22 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile file number=00001 name=/u01/app/oracle/oradata/DAPRI/system01.dbf output file name=/u01/app/oracle/oradata/DAPRI/system01.dbf tag=TAG20220607T101023 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15 channel ORA_DISK_1: starting datafile copy input datafile file number=00002 name=/u01/app/oracle/oradata/DAPRI/sysaux01.dbf output file name=/u01/app/oracle/oradata/DAPRI/sysaux01.dbf tag=TAG20220607T101023 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07 channel ORA_DISK_1: starting datafile copy input datafile file number=00003 name=/u01/app/oracle/oradata/DAPRI/undotbs01.dbf output file name=/u01/app/oracle/oradata/DAPRI/undotbs01.dbf tag=TAG20220607T101023 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 channel ORA_DISK_1: starting datafile copy input datafile file number=00004 name=/u01/app/oracle/oradata/DAPRI/users01.dbf output file name=/u01/app/oracle/oradata/DAPRI/users01.dbf tag=TAG20220607T101023 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 07-JUN-22 sql statement: alter system archive log current contents of Memory Script: { switch clone datafile all; } executing Memory Script datafile 1 switched to datafile copy input datafile copy RECID=4 STAMP=1106734238 file name=/u01/app/oracle/oradata/DAPRI/system01.dbf datafile 2 switched to datafile copy input datafile copy RECID=5 STAMP=1106734238 file name=/u01/app/oracle/oradata/DAPRI/sysaux01.dbf datafile 3 switched to datafile copy input datafile copy RECID=6 STAMP=1106734238 file name=/u01/app/oracle/oradata/DAPRI/undotbs01.dbf datafile 4 switched to datafile copy input datafile copy RECID=7 STAMP=1106734238 file name=/u01/app/oracle/oradata/DAPRI/users01.dbf Finished Duplicate Db at 07-JUN-22

实战TIPS:
由于默认的duplicate 操作只分配单通道进行RMAN 的数据文件恢复,若恢复大的数据库将无法利用现有硬件优势,遂推荐通过分配多通道的方式进行数据文件恢复

run {
   allocate channel c1 type disk;
   allocate channel c2 type disk;
   allocate channel c3 type disk;
   allocate channel c4 type disk;
   ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;
   ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK; 
   ALLOCATE AUXILIARY CHANNEL aux3 DEVICE TYPE DISK;
   ALLOCATE AUXILIARY CHANNEL aux4 DEVICE TYPE DISK;
   duplicate target database for standby from active database nofilenamecheck;
   RELEASE CHANNEL c1;
   RELEASE CHANNEL c2;
   RELEASE CHANNEL c3; 
   RELEASE CHANNEL c4; 
   RELEASE CHANNEL aux1;
   RELEASE CHANNEL aux2;
   RELEASE CHANNEL aux3; 
   RELEASE CHANNEL aux4;  
}

  1. 备库添加standby logfile

    -- ACE 建议 standby logfile 建立的时候比主库的redo log 多一组,大小一样 alter database add standby logfile thread 1 '/u01/app/oracle/oradata/DAPRI/stdredo11.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo12.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo13.log' size 200m; alter database add standby logfile '/u01/app/oracle/oradata/DAPRI/stdredo14.log' size 200m;

​ 7. 备库启动DG 日志应用

在备库 MOUNT 状态下执行如下命令,在执行完第五步后数据库是处于MOUNT状态的

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

主库参数检查

​ 将log_archive_dest_state_2 = defer 改成 log_archive_dest_state_2 = enable , 启动日志传输

alter system set log_archive_dest_state_2 = enable

备库启动ADG

​ 在备库执行如下命令:

SQL> alter database recover managed standby database cancel; Database altered. SQL> shutdown immediate; ORA-01109: database not open Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 2421825536 bytes Fixed Size 2255632 bytes Variable Size 620758256 bytes Database Buffers 1778384896 bytes Redo Buffers 20426752 bytes Database mounted. Database opened. SQL> select open_mode,database_role from v$database; OPEN_MODE DATABASE_ROLE -------------------- ---------------- READ ONLY PHYSICAL STANDBY SQL> alter database recover managed standby database using current logfile disconnect from session; Database altered.

最后:

​ 检查数据库日志传输是否有问题:

SQL> select status,instance_name from gv$instance; STATUS INSTANCE_NAME ------------ ---------------- OPEN DAPRI SQL> select open_mode,name,DATABASE_ROLE from v$database; OPEN_MODE NAME DATABASE_ROLE -------------------- --------- ---------------- READ ONLY WITH APPLY DAPRI PHYSICAL STANDBY SQL> show parameter db_unique NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string DAADG SQL> select process,status,SEQUENCE#,BLOCK# from v$managed_standby; PROCESS STATUS SEQUENCE# BLOCK# --------- ------------ ---------- ---------- ARCH CLOSING 9 1 ARCH CONNECTED 0 0 ARCH CONNECTED 0 0 ARCH CLOSING 8 1 RFS IDLE 0 0 RFS IDLE 0 0 RFS IDLE 10 291 MRP0 APPLYING_LOG 10 291 8 rows selected.

到此, ADG 单库到单库搭建完毕。

### 补充 RAC --> 单台DG 搭法一致,区别点在于:
主库:

  1. 修改主库参数时,要把RAC所有节点都修改了(alter system set xxxx=xxxx sid = ‘*’);
  2. 在配置RAC 节点的FAL_CLIENT时, 配置的tnsnames.ora该改成RAC node 的真实IP;
例: 
RAC01 realip  10.XX.X.121
RAC02 realip  10.XX.X.123
DG IP         10.XX.X.126

RAC01配置:
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_client                           string      rac01p

RAC02配置:
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_client                           string      rac02p

rac01p =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.X.121)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac )
    )
  )
rac02p =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.X.123)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac )
    )
  )

备库
3. 由于从主库中拷贝的参数文件为RAC集群的参数文件,遂在配置时需要将备库的oracle_sid 参数改成RAC 节点的SID
4. 由于从主库中拷贝的参数文件为RAC集群的参数文件,遂需要额外修改部分参数,修改后如下:

修改参数:
*.cluster_database=false
sid1.local_listener =  监听地址修改成备库的主机IP
sid2.local_listener(去掉)  
额外增加参数:
*.db_unique_name='xxxxx'
额外去除参数:
*.remote_listener
  1. 在配置DG节点的FAL_SERVER时, 配置的tnsnames.ora该配置成多个RAC节点的真实IP;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_server                           string      rac

rac =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.X.121)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.XX.X.123)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac )
  1. 如果主备的内存参数不一致,需要修改内存参数的值,已适配备库。
最后修改时间:2024-03-01 10:10:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论