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

使用rman duplicate从standby创建新克隆

IT那活儿 2022-06-21
936

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!



环境信息

主库:
  • Hosts: ora19c-node1
  • ora19c-node2 db_unique_name: dbv
  • instance name: dbv1, dbv2
第一备库:
  • Hosts: ora19c-stby1
  • ora19c-stby2 db_unique_name: dbv_stby
  • instance name: dbv_stby1,dbv_stby2
第二备库或克隆:
  • Hosts: ora19c-fga
  • db_unique_name: dbv_fga
  • instance_name dbv_fga





使用rman从第一备库创建第二备库

1. 确认第一个standby database 是open read only,并且在应用恢复:
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY WITH APPLY

复制

2. 在第二备库配置静态监听:

LISTENER_duplicate =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hwzsc-nyhd-bbk-db01)(PORT = 1521))
)
)

SID_LIST_LISTENER_duplicate =
(SID_LIST =
(SID_DESC =
(SID_NAME = nyhdbbk1)
(ORACLE_HOME = /db/oracle/product/19.3)
)
)

复制

3. 修改第一个备库的tnsname.ora 增加第二备库的tnsname:

DUP =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.38.30.17)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = nyhdbbk1)
)
)

复制

4. 从第一备库复制密码文件到第二备库:

cp orapwdbv_stby orapwdbv_fga
复制

5. 创建参数文件,并启动实例到nomount:

cd $ORACLE_HOME/dbs
vi initdbv_fga.ora
db_name=dbv
db_unique_name=dbv_fga
sga_target=5g
sqlplus as sysdba
startup nomount;

复制

6. 在第二备库创建需要的目录:

mkdir -p /u01/app/oracle/dbv_fga/adump
复制

7. 如果cluster_interconnections参数设置在第一个备用服务器上,则需要取消它:

SQL> alter system reset cluster_interconnects scope=spfile sid='dbv_stby1';
SQL> alter system reset cluster_interconnects scope=spfile sid='dbv_stby2';

复制

8. 在第一备库创建并执行rman 复制脚本:

#/bin/bash
source /home/oracle/.bash_profile
rman target auxiliary sys/xxxx@dup msglog=/home/oracle/dup.log<<EOF
run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;

duplicate target database for standby from active database
spfile
parameter_value_convert 'dbv_sdby','dbv_fga'
set db_unique_name=' dbv_fga'
set db_create_file_dest='/db/oracle/oradata'
set db_recovery_file_dest='/db/oracle/oradata/fast_recovery_area'
set db_file_name_convert='+DATA1','DATA1 ','+ARCH','+ARCH'
set log_file_name_convert='+DATA1','DATA1 ','+ARCH','+ARCH'
set control_files='/db/oracle/oradata/dbv_stby/control01.ctl', '/db/oracle/oradata/stby/control02.ctl'
set log_archive_max_processes='5'
set fal_client='dbv_fga'
set fal_server='dbv_stby'
set standby_file_management='MANUAL'
set log_archive_config='dg_config=(dbv,dbv_stby,dbv_fga)'
set log_archive_dest_2='service=nyhd ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=dbv_fga
set cluster_database='
false'
;
}
exit
EOF

复制



完成第二备库的RAC配置
1. 创建pfile 并修改RAC相关的参数:
SQL> create pfile='/tmp/p.ora' from spfile;
复制

修改 cluster_database = true
2. 创建spfile 到磁盘组:
SQL> create spfile='+<diskgroup>/dbv_fga/spfile_fga.ora' from pfile='/tmp/p.ora';
复制

3. 添加数据库资源,重新启动standby 数据库:

srvctl add database -d dbv_fga –o <oracle home>
srvctl add instance -d dbv_fga -i dbv_fga1 -n exa505
srvctl add instance -d dbv_fga -i dbv_fga2 -n exa506
srvctl modify database –d dbv_fga –r physical_standby

复制


成级联备库的配置
1. 设置第二备库的归档和fal_server:
SQL> alter system set log_archive_config='DG_CONFIG=(db112,dbv_stby,dbv_fga)' scope=both;
SQL> alter system set fal_server='dbv_stby' scope=both;

复制
2. 设置第一备库的dg 配置,传输归档到第二备库:
SQL> alter system set log_archive_config='DG_CONFIG=(db112,dbv_stby,dbv_fga)' scope=both;
SQL> alter system set log_archive_dest_3='service=dbv_fga ASYNC valid_for=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbv_fga' scope=both;

复制
3. 检查当主数据库切换日志时,备库的同步状态:
  • 查询主备的同步情况:
set linesize 150;
set pagesize 20;
column name format a13;
column value format a20;
column unit format a30;
column TIME_COMPUTED format a30;
select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');

复制
  • 查看备库已经归档的redo:
select registrar,creator,thread#,sequence#,first_change#,
next_change#,applied from v$archived_log;

复制


转换级联备库为新的克隆数据库
1. 取消第一备库传输到第二备库的设置:
SQL> alter system set log_archive_dest_state_3=defer scope=both;
复制
2. 修改第二备库归档配置:
SQL> alter system reset log_archive_config;
SQL> alter system reset fal_server;

复制

3. 停止dbv_fga 的recover ,并激活第二备库:

SQL> recover managed standby database cancel;
Media recovery complete.
SQL> recover managed standby database finish;
Media recovery complete.
SQL> alter database commit to switchover to primary with session shutdown;
Database altered.
SQL> alter system reset log_archive_config;
SQL> alter system set log_archive_dest_state_2=defer scope=both;
SQL> alter system set log_archive_dest_state_3=defer scope=both;

复制

4. 打开dbv_fga 数据库:

SQL> alter database open;
Database altered.
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PRIMARY

复制

5. 将新FGA 数据库以独占方式打开到mount阶段:

SQL> alter system set cluster_database=false scope=spfile;
SQL> shutdown immediate
SQL> startup mount

复制
6. 使用nid 更改database id 和dbname:
$ nid target=system/<password> dbname=fga
DBNEWID: Release 11.2.0.4.0 - Production on Tue Mar 11 14:20:54 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to database DBV (DBID=830667753)
Connected to server version 11.2.0
Control Files in database:
+<diskgroup>/dbv_fga/standby.ctl
Change database ID and database name DBV to FGA? (Y/[N]) => y

Proceeding with operation
Changing database ID from 3753909469 to 1201662104
Changing database name from DBV to FGA
Control File +<diskgroup>/dbv_fga/standby.ctl – modified
Datafile +<diskgroup>/DBV_FGA/DATAFILE/system.410.84192081 - dbid changed, wrote new name
Datafile +<diskgroup>/DBV_FGA/DATAFILE/sysaux.411.84192080 - dbid changed, wrote new name
Datafile +<diskgroup>/DBV_FGA/DATAFILE/undotbs1.414.84192081 - dbid changed, wrote new name
Datafile +<diskgroup>/DBV_FGA/DATAFILE/undotbs2.412.84192081 - dbid changed, wrote new name
Datafile +<diskgroup>/DBV_FGA/DATAFILE/users.423.84192081 - dbid changed, wrote new name
Datafile +<diskgroup>/DBV_FGA/TEMPFILE/temp.427.84192190 - dbid changed, wrote new name
Control File +<diskgroup>/dbv_fga/standby.ctl - dbid changed, wrote new name
Instance shut down
Database name changed to FGA.
Modify parameter file and generate a new password file before restarting.
Database ID for database FGA changed to 1201662104.
All previous backups and archived redo logs for this database are unusable.
Database is not aware of previous backups and archived logs in Recovery Area.

复制
7. 修改db_name参数以匹配新的数据库名称,并使用resetlogs选项打开数据库:
SQL> startup nomount
SQL> alter system set db_name=fga scope=spfile;
SQL> startup mount force;
SQL> alter database open resetlogs;
SQL> select name,dbid from v$database;
NAME DBID
-------- ----------
FGA 1201662104

复制


END




本文作者:张 龙(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论