前提条件:完成Oracle单机搭建,Oracle软件和数据库安装完成。完成Oracle备机的Oracle软件安装。 可以参考文章: http://blog.itpub.net/22996654/viewspace-2149816/ 完成上述安装后开始搭建物理DG:主机IP:172.16.0.21 备机IP:172.16.0.75 把两个主机都设置好/etc/hosts
[root@aa ~]# cat /etc/hosts
172.16.0.21 aa
172.16.0.75 bb
在从库把对应主库的所有数据目录、日志目录、归档目录都建立好。
[oracle@bb db_1]$ mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
[oracle@bb db_1]$ mkdir -p $ORACLE_BASE/oradata/WMSPROD
[oracle@bb db_1]$ mkdir -p $ORACLE_BASE/flash_recovery_area
[oracle@bb db_1]$ chown -R oracle:oinstall /usr/local/bin/*
[oracle@bb oradata]$ mkdir -p standbylog
[oracle@bb oradata]$ ll
total 8
drwxr-xr-x 2 oracle oinstall 4096 May 15 15:45 standbylog
drwxr-xr-x 2 oracle oinstall 4096 May 14 20:25 WMSPROD
设置监听:
主库:
[oracle@aa admin]$ cat listener.ora
# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = aa)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /data/oracle
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=wmsprod)
(ORACLE_HOME=/data/oracle/product/11.2.0/db_1)
(SID_NAME=wmsprod)
)
)
[oracle@aa admin]$ cat tnsnames.ora
WMSPROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = aa)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = WMSPROD)
)
)
WMSPRODDG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = WMSPRODDG)
)
)
备库:
[oracle@bb admin]$ cat listener.ora
# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bb)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /data/oracle
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=wmsproddg)
(ORACLE_HOME=/data/oracle/product/11.2.0/db_1)
(SID_NAME=wmsproddg)
)
)
[oracle@bb admin]$ cat tnsnames.ora
WMSPRODDG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = bb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = WMSPRODDG)
)
)
WMSPROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = aa)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = WMSPROD)
)
)
重启监听。
在主库加standby的日志文件:比redo日志文件多一组。
SQL> alter database add standby logfile
2 GROUP 7 ('/data/oracle/oradata/standbylog/standby01.log') SIZE 600m,
3 GROUP 8 ('/data/oracle/oradata/standbylog/standby02.log') size 600m,
4 GROUP 9 ('/data/oracle/oradata/standbylog/standby03.log') size 600m,
5 GROUP 10 ('/data/oracle/oradata/standbylog/standby04.log') size 600m,
6 GROUP 11 ('/data/oracle/oradata/standbylog/standby05.log') size 600m,
7 GROUP 12 ('/data/oracle/oradata/standbylog/standby06.log') size 600m,
8 GROUP 13 ('/data/oracle/oradata/standbylog/standby07.log') size 600m;
Database altered.
修改主从的init文件:
主库:
[oracle@aa dbs]$ cat initwmsprod.ora
*.db_name='WMSPROD'
*.memory_target=5G
*.processes = 2000
*.audit_file_dest='/data/oracle/admin/wmsprod/adump'
*.audit_trail ='db'
*.db_block_size=8192
*.db_domain=''
*.db_recovery_file_dest='/data/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2G
*.diagnostic_dest='/data/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=WMSPRODXDB)'
*.open_cursors=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.control_files = (/data/oracle/oradata/WMSPROD/ora_control01.ctl,/data/oracle/oradata/WMSPROD/ora_control02.ctl)
*.compatible ='11.2.0'
*.standby_file_management='AUTO'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(wmsprod,wmsproddg)'
*.log_archive_dest_1='location=/data/oracle/oradata/WMSPROD/archivelog
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=wmsprod'
*.DB_UNIQUE_NAME=wmsprod
*.DB_FILE_NAME_CONVERT='/data/oracle/oradata/WMSPROD/','/data/oracle/oradata/WMSPROD/'
*.LOG_FILE_NAME_CONVERT='/data/oracle/oradata/WMSPROD/','/data/oracle/oradata/WMSPROD/'
*.log_archive_dest_2='SERVICE=wmsproddg LGWR ASYNC
valid_for=(online_logfiles,primary_role)
db_unique_name=wmsproddg'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER=wmsproddg
*.fal_client=wmspro
备库:
[oracle@bb dbs]$ cat initwmsproddg.ora
*.db_name='WMSPROD'
*.memory_target=5G
*.processes = 2000
*.audit_file_dest='/data/oracle/admin/wmsprod/adump'
*.audit_trail ='db'
*.db_block_size=8192
*.db_domain=''
*.db_recovery_file_dest='/data/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2G
*.diagnostic_dest='/data/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=WMSPRODXDB)'
*.open_cursors=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.control_files = (/data/oracle/oradata/WMSPROD/ora_control01.ctl,/data/oracle/oradata/WMSPROD/ora_control02.ctl)
*.compatible ='11.2.0'
*.standby_file_management='AUTO'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(wmsprod,wmsproddg)'
*.log_archive_dest_1='location=/data/oracle/oradata/WMSPROD/archivelog
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=wmsproddg'
*.DB_UNIQUE_NAME=wmsproddg
*.DB_FILE_NAME_CONVERT='/data/oracle/oradata/WMSPROD/','/data/oracle/oradata/WMSPROD/'
*.LOG_FILE_NAME_CONVERT='/data/oracle/oradata/WMSPROD/','/data/oracle/oradata/WMSPROD/'
*.log_archive_dest_2='SERVICE=wmsprod LGWR ASYNC
valid_for=(online_logfiles,primary_role)
db_unique_name=wmsprod'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER=wmsprod
*.fal_client=wmsprodd
cp 主库的密码文件生成备库的密码文件并放到备库对应位置:
[oracle@aa dbs]$ cp orapwwmsprod orapwwmsproddg
创建备库的spfile
文件,启动备库到nomount
模式
SQL> shutdown immediate;
SQL> create spfile from pfile;
SQL> startup nomount;
RMAN
复制主库到备库
首先从库RMAN
连接到目标数据库和辅助数据库
rman target sys/password@wmsprod auxiliary sys/password@wmsproddg
使用RMAN
的duplicate
命令进行复制,两边目录结构相同,需要添加nofilenamecheck
参数
RMAN> duplicate target database for standby from active database nofilenamecheck;
复制成功后,备库自动被加载为mount
模式,进入sqlplus
查看
SQL> select status from v$instance;
备库执行过程:
[oracle@bb admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri May 15 18:09:13 2020
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> create spfile from pfile;
File created.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 5344731136 bytes
Fixed Size 2262656 bytes
Variable Size 3724544384 bytes
Database Buffers 1593835520 bytes
Redo Buffers 24088576 bytes
SQL> !
[oracle@bb admin]$ rman target sys/oracle@wmsprod auxiliary sys/oracle@wmsproddg
Recovery Manager: Release 11.2.0.4.0 - Production on Fri May 15 18:10:47 2020
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: WMSPROD (DBID=1351169222)
connected to auxiliary database: WMSPROD (not mounted)
RMAN> duplicate target database for standby from active database nofilenamecheck;
Starting Duplicate Db at 15-MAY-20
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=2376 device type=DISK
contents of Memory Script:
{
backup as copy reuse
targetfile '/data/oracle/product/11.2.0/db_1/dbs/orapwwmsprod' auxiliary format
'/data/oracle/product/11.2.0/db_1/dbs/orapwwmsproddg' ;
}
executing Memory Script
Starting backup at 15-MAY-20
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=96 device type=DISK
Finished backup at 15-MAY-20
contents of Memory Script:
{
backup as copy current controlfile for standby auxiliary format '/data/oracle/oradata/WMSPROD/ora_control01.ctl';
restore clone controlfile to '/data/oracle/oradata/WMSPROD/ora_control02.ctl' from
'/data/oracle/oradata/WMSPROD/ora_control01.ctl';
}
executing Memory Script
Starting backup at 15-MAY-20
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying standby control file
output file name=/data/oracle/product/11.2.0/db_1/dbs/snapcf_wmsprod.f tag=TAG20200515T181846 RECID=1 STAMP=1040494726
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 15-MAY-20
Starting restore at 15-MAY-20
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: copied control file copy
Finished restore at 15-MAY-20
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/oracle/oradata/WMSPROD/temp01.dbf";
switch clone tempfile all;
set newname for datafile 1 to
"/data/oracle/oradata/WMSPROD/system01.dbf";
set newname for datafile 2 to
"/data/oracle/oradata/WMSPROD/sysaux01.dbf";
set newname for datafile 3 to
"/data/oracle/oradata/WMSPROD/undotbs01.dbf";
set newname for datafile 4 to
