Oracle 19C Database Data Guard 一主两备 -- 生产级
前言
Oracle 数据库使用 Data Guard 搭建一主两备,在主库发生故障时。可以无缝切换至备库支持生产。
目的
一主两备的目的是为了增加数据库的容错率。降低生产数据库崩溃导致业务停顿的几率。当前文档的操作可直接应用至生产环境。但其中的参数基于业务具体情况可适当修改。
系统信息
OS | Database | Memory | Disk | Name | P/S | IP | OS User |
---|---|---|---|---|---|---|---|
Oracle RHEL 7.8 | 19.3.0 | 32G | 500G | PRIMARY | Primary | 192.168.2.11 | oracle |
Oracle RHEL 7.8 | 19.3.0 | 32G | 500G | Test | Slave-One | 192.168.2.12 | oradg1 |
Oracle RHEL 7.8 | 19.3.0 | 32G | 500G | DGS | Slave-Two | 192.168.2.13 | oradg2 |
Linux 操作步骤
1、Linux安装将不再演示
# 可参见该文档
https://www.modb.pro/db/1890268454414987264
2、IP 设置
# 编辑 hosts
$ vi /etc/hosts
192.168.2.11 primary.ckpt.com primary
192.168.2.12 test.ckpt.com test
192.168.2.13 dgs.ckpt.com dgs
# 注意:更改主机名时,需要三台机器均执行,不同的服务器添加对应的一个名即可
$ vi /etc/hostname
primary
test
dgs
3、关闭防火墙
systemctl stop firewlld.service && systemctl disable firewlld.service
4、关闭Selinux策略
vi /etc/selinux/config
SELINUX=disabled
5、关闭透明大页和numa
6、开启Hugesize
目前这个值的计算方式很复杂。如果需要设置请私信我!!!
数据库配置
1、环境变量配置
# 主库oracle用户
export ORACLE_SID=PRIMARY
export ORACLE_BASE=/u01/DBDG/primary_orcl
export ORACLE_HOME=$ORACLE_BASE/19.3.0
export PATH=$ORACLE_HOME/bin:$PATH
# 从库oradg1用户
export ORACLE_SID=TEST
export ORACLE_BASE=/data/db
export ORACLE_HOME=$ORACLE_BASE/19.3.0
export PATH=$ORACLE_HOME/bin:$PATH
# 从库oradg2用户
export ORACLE_SID=DGS
export ORACLE_BASE=/u01/DBDG/slave_dg2
export ORACLE_HOME=$ORACLE_BASE/19.3.0
export PATH=$ORACLE_HOME/bin:$PATH
主库设置
2、主库开启归档
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/DBDG/primary_orcl/archive
Oldest online log sequence 307
Next log sequence to archive 313
Current log sequence 313
--如未开启归档,请打开
SQL>shutdown immediate
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
3、主库强制日志模式
--开启强制日志
SQL>alter database force logging;
--查询实例的归档模式和强制日志
SQL> select log_mode,force_logging from v$database;
LOG_MODE FOR
------------ ---
ARCHIVELOG YES
4、主库追加redo
alter database add standby logfile group 4 '/u01/DBDG/primary_orcl/oradata/primary/testredo01.log' size 200M;
alter database add standby logfile group 5 '/u01/DBDG/primary_orcl/oradata/primary/testredo02.log' size 200M;
alter database add standby logfile group 6 '/u01/DBDG/primary_orcl/oradata/primary/dgsredo03.log' size 200M;
alter database add standby logfile group 7 '/u01/DBDG/primary_orcl/oradata/primary/dgsredo04.log' size 200M;
SQL> select group#,thread#,sequence#,archived,status from $standby_log;
GROUP# THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
4 1 0 YES UNASSIGNED
5 1 0 YES UNASSIGNED
6 1 0 YES UNASSIGNED
7 1 0 YES UNASSIGNED
5、主库配置tnsnames.ora
PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
LISTENER_PRIMARY =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))
DGS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.13)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DGS)
)
)
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.12)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)
6、主库配置listener.ora
PRIMARY =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = PRIMARY)
(ORACLE_HOME = /u01/DBDG/primary_orcl/19.3.0)
(SID_NAME = PRIMARY)
)
)
7、主库参数文件配置
*.audit_file_dest='/u01/DBDG/primary_orcl/admin/primary/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/DBDG/primary_orcl/oradata/PRIMARY/control01.ctl','/u01/DBDG/primary_orcl/oradata/PRIMARY/control02.ctl'
*.db_block_size=8192
*.db_name='primary'
*.diagnostic_dest='/u01/DBDG/primary_orcl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=primaryXDB)'
*.local_listener='LISTENER_PRIMARY'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=1434m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=5735m
*.undo_tablespace='UNDOTBS1'
*.log_archive_config='dg_config=(primary,test,dgs)'
*.log_archive_dest_1='location=/u01/DBDG/primary_orcl/archive valid_for=(all_logfiles,all_roles) db_unique_name=primary'
*.log_archive_dest_2='SERVICE=DGS LGWR ASYNC VALID_FOR=(all_logfiles,all_roles) DB_UNIQUE_NAME=DGS'
*.log_archive_dest_3='SERVICE=TEST VALID_FOR=(all_logfiles,all_roles) DB_UNIQUE_NAME=TEST'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_dest_state_3='enable'
*.fal_server='TEST'
*.fal_client='primary'
*.db_unique_name='primary'
*.standby_file_management=auto
*.db_file_name_convert='/u01/DBDG/primary_orcl/oradata','/data/db/oradata','/u01/DBDG/primary_orcl/oradata','/u01/DBDG/slave_dg1/oradata'
*.log_file_name_convert='/u01/DBDG/primary_orcl/oradata','/data/db/oradata','/u01/DBDG/primary_orcl/oradata','/u01/DBDG/slave_dg1/oradata'
8、主库密码文件配置
$ orapwd file=orapwprimary password=admin!11
9、发送主库文件至从库
$ scp ../dbs/initprimary.ora orapwprimary 192.168.2.12:..../dbs
$ scp ../network/admin/listener.ora tnsnames.ora 192.168.2.12:..../network/admin
$ scp ../dbs/initprimary.ora orapwprimary 192.168.2.13:..../dbs
$ scp ../network/admin/listener.ora tnsnames.ora 192.168.2.13:..../network/admin
一号从库配置
1、listner.ora配置
DGS =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.13)(PORT = 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
)
)
SID_LIST_DGS =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DGS)
(ORACLE_HOME = /u01/DBDG/slave_dg1/19.3.0)
(SID_NAME = DGS)
)
)
2、tnsnames.ora配置
DGS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.13)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DGS)
)
)
LISTENER_DGS =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.13)(PORT = 1522))
PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
3、参数文件配置
$ cd $ORACLE_HOME/dbs
$ mv initprimary.ora initdgs.ora
$ mv orapwprimary orapwDGS
*.audit_file_dest='/u01/DBDG/slave_dg1/admin/dgs/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/DBDG/slave_dg1/oradata/DGS/control01.ctl','/u01/DBDG/slave_dg1/oradata/DGS/control02.ctl'
*.db_block_size=8192
*.db_name='primary'
*.diagnostic_dest='/u01/DBDG/slave_dg1'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgsXDB)'
#*.local_listener='LISTENER_TEST'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=1434m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=5735m
*.undo_tablespace='UNDOTBS1'
*.log_archive_config='dg_config=(primary,DGS)'
*.log_archive_dest_1='location=/u01/DBDG/slave_dg1/archive valid_for=(all_logfiles,all_roles) db_unique_name=dgs'
*.log_archive_dest_state_1='enable'
*.fal_server='primary'
*.fal_client='dgs'
*.db_unique_name='dgs'
*.standby_file_management=auto
*.db_file_name_convert='/u01/DBDG/primary_orcl/oradata','/u01/DBDG/slave_dg1/oradata'
*.log_file_name_convert='/u01/DBDG/primary_orcl/oradata','/u01/DBDG/slave_dg1/oradata'
4、启动监听
$ lsnrctl start DGS
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 14-FEB-2025 14:05:22
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.211.103)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias DGS
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 14-FEB-2025 10:39:07
Uptime 0 days 3 hr. 26 min. 14 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/DBDG/slave_dg1/19.3.0/network/admin/listener.ora
Listener Log File /u01/DBDG/slave_dg1/diag/tnslsnr/localhost/dgs/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.13)(PORT=1522)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
Services Summary...
Service "DGS" has 1 instance(s).
Instance "DGS", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
5、创建文件夹
$ mkdir -p /u01/DBDG/slave_dg1/admin/dgs/adump
$ mkdir -p /u01/DBDG/slave_dg1/oradata
$ mkdir -p /u01/DBDG/slave_dg1/archive
6、启动到nomount
$ sqlplus sys/admin*11@dgs as sysdba
SQL> startup nomount pfile='initdgs.ora';
7、备库开始复制
$ rman target sys/admin*11@primary auxiliary sys/admin*11@dgs
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Feb 14 10:42:51 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: PRIMARY (DBID=2030450347)
connected to auxiliary database: PRIMARY (not mounted)
RMAN> duplicate target database for standby from active database nofilenamecheck;
Starting Duplicate Db at 14-FEB-25
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=21 device type=DISK
contents of Memory Script:
{
backup as copy reuse
passwordfile auxiliary format '/u01/DBDG/slave_dg1/19.3.0/dbs/orapwDGS' ;
}
executing Memory Script
Starting backup at 14-FEB-25
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=40 device type=DISK
Finished backup at 14-FEB-25
contents of Memory Script:
{
restore clone from service 'primary' standby controlfile;
}
executing Memory Script
Starting restore at 14-FEB-25
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
output file name=/u01/DBDG/slave_dg1/oradata/DGS/control01.ctl
output file name=/u01/DBDG/slave_dg1/oradata/DGS/control02.ctl
Finished restore at 14-FEB-25
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/DBDG/slave_dg1/oradata/PRIMARY/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"/u01/DBDG/slave_dg1/oradata/PRIMARY/system01.dbf";
set newname for datafile 3 to
"/u01/DBDG/slave_dg1/oradata/PRIMARY/sysaux01.dbf";
set newname for datafile 4 to
"/u01/DBDG/slave_dg1/oradata/PRIMARY/undotbs01.dbf";
set newname for datafile 5 to
"/u01/DBDG/slave_dg1/oradata/PRIMARY/apps.dbf";
set newname for datafile 7 to
"/u01/DBDG/slave_dg1/oradata/PRIMARY/users01.dbf";
restore
from nonsparse from service
'primary' clone database
;
sql 'alter system archive log current';
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to /u01/DBDG/slave_dg1/oradata/PRIMARY/temp01.dbf in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 14-FEB-25
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u01/DBDG/slave_dg1/oradata/PRIMARY/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u01/DBDG/slave_dg1/oradata/PRIMARY/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u01/DBDG/slave_dg1/oradata/PRIMARY/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00005 to /u01/DBDG/slave_dg1/oradata/PRIMARY/apps.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:16
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00007 to /u01/DBDG/slave_dg1/oradata/PRIMARY/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 14-FEB-25
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=1 STAMP=1193049908 file name=/u01/DBDG/slave_dg1/oradata/PRIMARY/system01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=1193049908 file name=/u01/DBDG/slave_dg1/oradata/PRIMARY/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=1193049908 file name=/u01/DBDG/slave_dg1/oradata/PRIMARY/undotbs01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=1193049908 file name=/u01/DBDG/slave_dg1/oradata/PRIMARY/apps.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=5 STAMP=1193049908 file name=/u01/DBDG/slave_dg1/oradata/PRIMARY/users01.dbf
Finished Duplicate Db at 14-FEB-25
RMAN> exit
Recovery Manager complete.
8、开启同步
SQL>ALTER DATABASE OPEN READ ONLY;
SQL>alter database recover managed standby database using current logfile disconnect from session;
二号从库配置
1、listner.ora配置
TEST =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.12)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = TEST)
(ORACLE_HOME = /data/db/19.3.0)
(SID_NAME = TEST)
)
)
2、tnsnames.ora配置
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.12)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)
LISTENER_TEST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.12)(PORT = 1521))
PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
3、参数文件配置
$ cd $ORACLE_HOME/dbs
$ mv initprimary.ora inittest.ora
$ mv orapwprimary orapwTEST
*.audit_file_dest='/data/db/admin/test/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/data/db/oradata/TEST/control01.ctl','/data/db/oradata/TEST/control02.ctl'
*.db_block_size=8192
*.db_name='primary'
*.diagnostic_dest='/data/db'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'
#*.local_listener='LISTENER_TEST'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=1434m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=5735m
*.undo_tablespace='UNDOTBS1'
*.log_archive_config='dg_config=(primary,test)'
*.log_archive_dest_1='location=/data/db/archive valid_for=(all_logfiles,all_roles) db_unique_name=test'
*.log_archive_dest_state_1='enable'
*.fal_server='primary'
*.fal_client='test'
*.DB_UNIQUE_NAME='test'
*.standby_file_management=auto
*.db_file_name_convert='/u01/DBDG/primary_orcl/oradata','/data/db/oradata'
*.log_file_name_convert='/u01/DBDG/primary_orcl/oradata','/data/db/oradata'
4、启动监听
$ lsnrctl start TEST
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 14-FEB-2025 14:13:50
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 14-FEB-2025 09:58:23
Uptime 0 days 4 hr. 15 min. 27 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /data/db/19.3.0/network/admin/listener.ora
Listener Log File /data/db/diag/tnslsnr/slave/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.13)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=192.168.2.13)(PORT=5500))(Security=(my_wallet_directory=/data/db/admin/test/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "TEST" has 2 instance(s).
Instance "TEST", status UNKNOWN, has 1 handler(s) for this service...
Instance "TEST", status READY, has 1 handler(s) for this service...
Service "testXDB" has 1 instance(s).
Instance "TEST", status READY, has 1 handler(s) for this service...
The command completed successfully
5、创建文件夹
$ mkdir -p /data/db/admin/test/adump
$ mkdir -p /data/db /oradata
$ mkdir -p /data/db /archive
6、启动到nomount
$ sqlplus sys/admin*11@test as sysdba
SQL> startup nomount pfile='inittest.ora';
7、备库开始复制
$ rman target sys/admin*11@primary auxiliary sys/admin*11@test
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Feb 14 10:19:39 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: PRIMARY (DBID=2030450347)
connected to auxiliary database: PRIMARY (not mounted)
RMAN> duplicate target database for standby from active database nofilenamecheck;
Starting Duplicate Db at 14-FEB-25
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=38 device type=DISK
contents of Memory Script:
{
backup as copy reuse
passwordfile auxiliary format '/data/db/19.3.0/dbs/orapwTEST' ;
}
executing Memory Script
Starting backup at 14-FEB-25
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=276 device type=DISK
Finished backup at 14-FEB-25
contents of Memory Script:
{
restore clone from service 'primary' standby controlfile;
}
executing Memory Script
Starting restore at 14-FEB-25
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
output file name=/data/db/oradata/TEST/control01.ctl
output file name=/data/db/oradata/TEST/control02.ctl
Finished restore at 14-FEB-25
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
"/data/db/oradata/PRIMARY/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"/data/db/oradata/PRIMARY/system01.dbf";
set newname for datafile 3 to
"/data/db/oradata/PRIMARY/sysaux01.dbf";
set newname for datafile 4 to
"/data/db/oradata/PRIMARY/undotbs01.dbf";
set newname for datafile 5 to
"/data/db/oradata/PRIMARY/apps.dbf";
set newname for datafile 7 to
"/data/db/oradata/PRIMARY/users01.dbf";
restore
from nonsparse from service
'primary' clone database
;
sql 'alter system archive log current';
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to /data/db/oradata/PRIMARY/temp01.dbf in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 14-FEB-25
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /data/db/oradata/PRIMARY/system01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:16
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /data/db/oradata/PRIMARY/sysaux01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to /data/db/oradata/PRIMARY/undotbs01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00005 to /data/db/oradata/PRIMARY/apps.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service primary
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00007 to /data/db/oradata/PRIMARY/users01.dbf
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 14-FEB-25
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=1 STAMP=1193048530 file name=/data/db/oradata/PRIMARY/system01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=1193048530 file name=/data/db/oradata/PRIMARY/sysaux01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=1193048530 file name=/data/db/oradata/PRIMARY/undotbs01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=1193048530 file name=/data/db/oradata/PRIMARY/apps.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=5 STAMP=1193048530 file name=/data/db/oradata/PRIMARY/users01.dbf
Finished Duplicate Db at 14-FEB-25
RMAN> exit
Recovery Manager complete.
8、开启同步
SQL>ALTER DATABASE OPEN READ ONLY;
SQL>alter database recover managed standby database using current logfile disconnect from session;
同步测试
1、主库创建数据
SQL> create user test identified by test;
SQL> alter system switch logfile;
2、一号从库查询
SQL> select account_status from dba_users where username='TEST';
ACCOUNT_STATUS
--------------------------------
OPEN
2、二号从库查询
SQL> select account_status from dba_users where username='TEST';
ACCOUNT_STATUS
--------------------------------
OPEN