Windows Server2016下Oracle11g DG配置实操步骤
文章目录
前言
网上关于Oracle11g DG配置很多,但是内容跳跃性很大,对于初学者不太友好。为了避免踩坑的几率,本文尽可能保留每一个操作步骤,旨为DG小白按照操作流程也可以完成自己的DG搭建,所以文章内容会比较啰嗦冗长。作为DG的初学者,每一步都是亲手实践,但文中难免会有疏漏或错误,欢迎各位读者提出宝贵的批评和指正。
Oracle Data Guard实现原理在上一篇文章《Windows Server2016下Oracle19c DG配置实操步骤》中有讲述,感兴趣的自行翻阅。
下面开始正文
一、部署规划
1.1、虚拟机搭建:
虚拟机搭建:初学者,不建议直接在生产环境操作,避免出现操作不当造成不可挽回的损失(切记切记)。虚拟机软件建议使用VMware,VMware和操作系统安装步骤另找教程,本文不再详细讲解。
1.2、环境规划:
类型 | 主库 | 备库 |
---|---|---|
操作系统 | Windows Server2016 | Windows Server2016 |
IP | 192.168.0.180 | 192.168.0.181 |
主机名 | Oraclepd | Oraclesd |
数据库版本 | 11.2.0.4 | 11.2.0.4 |
实例名 | one | one |
DB_UNQNAME | one | onedg |
注:网上很多教程主库安装Oracle软件后创建实例,备库仅安装软件不创建实例,且主备库的实例名称不一样。但为了方便操作,本文主备库都安装软件和创建实例,且实例名称均为one。
本次采用VMware虚拟机进行部署,为了方便,先完成主库Oracle软件安装和实例创建后,克隆一个虚拟机,对克隆机操作系统进行配置后用作备库。
1.3、主库操作系统配置
1.3.1 关闭防火墙。操作系统安装完成后,先将防火墙关闭。
1.3.2 配置主机IP。
1.3.3 修改主机名称。修改后重启生效。
1.4、数据库安装和实例创建
(省略)
1.5、监听配置
1.5.1 按下面路径打开listener.ora文件
1.5.2 修改监听配置内容如下
# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = ONE)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME = ONE)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.180)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = D:\app\Administrator
1.6、网络配置
1.6.1 按下面路径打开tnsnames.ora文件
1.6.2 修改网络配置内容如下
# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
ONEDG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.180)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ONE)
)
)
ONE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.180)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ONE)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
1.7、克隆虚拟机
前面主库基础配置基本完成,现将主库虚拟机关机,将其克隆一个作为备库。
1.7.1 配置备库IP。
1.7.2 配置备库监听。
# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = one)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME = one)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.181)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = D:\app\Administrator
至此,主备库的准备工作已经完成,下面开始DG配置。
二、主库配置
2.1、查看主库归档和附加日志配置
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 8月 22 10:30:05 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select log_mode, force_logging from v$database;
LOG_MODE FORCE_LOGGING
----------------- --------------------------
NOARCHIVELOG NO
2.2、开启归档模式
# 关闭数据库
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
# 开启mount模式
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 1728050808 bytes
Fixed Size 9029240 bytes
Variable Size 1006632960 bytes
Database Buffers 704643072 bytes
Redo Buffers 7745536 bytes
数据库装载完毕。
# 设置数据库为归档模式
SQL> alter database archivelog;
数据库已更改。
# 打开数据库
SQL> alter database open;
数据库已更改。
# 启动自动归档模式
SQL> alter system archive log start;
系统已更改。
# 再次查看配置情况
SQL> select log_mode, force_logging from v$database;
LOG_MODE FORCE_LOGGING
------------------------ --------------------
ARCHIVELOG NO
2.3、开启主库附加日志
SQL> alter database force logging;
数据库已更改。
SQL> select log_mode, force_logging from v$database;
LOG_MODE FORCE_LOGGING
----------------------- ---------------
ARCHIVELOG YES
2.4、查看主库归档目的地
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 D:\db_home\RDBMS
最早的联机日志序列 1
下一个存档日志序列 2
当前日志序列 2
# 为了便于检查自动存档日志,建议自定义一个路径,手动创建一个oralog文件夹,存档终点路径为“D:\app\Administrator\oralog”。
SQL> ALTER SYSTEM SET log_archive_dest_1 = 'location=D:\app\Administrator\oralog';
系统已更改。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 D:\app\Administrator\oralog
最早的联机日志序列 1
下一个存档日志序列 2
当前日志序列 2
2.5、在主库中添加附加日志
# 查看重做日志redo路径
SQL> select group#, type, member from v$logfile order by 1;
GROUP# TYPE MEMBER
-------- -------- ----------------------------------------------
1 ONLINE D:\APP\ADMINISTRATOR\ORADATA\ONE\REDO01.LOG
2 ONLINE D:\APP\ADMINISTRATOR\ORADATA\ONE\REDO02.LOG
3 ONLINE D:\APP\ADMINISTRATOR\ORADATA\ONE\REDO03.LOG
# 查看重做日志redo大小
SQL> select group#,bytes/1024/1024 as Mb from v$log;
GROUP# MB
---------- ----------
1 50
2 50
3 50
# 在相同路径下创建大小相同的附加日志stredo,且附加日志stredo必重做日志redo多一组。(后面备库也需要添加)
SQL>alter database add standby logfile group 4 ('D:\APP\ADMINISTRATOR\ORADATA\ONE\stredo04.log') size 50m;
数据库已更改。
SQL>alter database add standby logfile group 5 ('D:\APP\ADMINISTRATOR\ORADATA\ONE\stredo05.log') size 50m;
数据库已更改。
SQL>alter database add standby logfile group 6 ('D:\APP\ADMINISTRATOR\ORADATA\ONE\stredo06.log') size 50m;
数据库已更改。
SQL>alter database add standby logfile group 7 ('D:\APP\ADMINISTRATOR\ORADATA\ONE\stredo07.log') size 50m;
数据库已更改。
添加附件日志后,查询如下图即说明创建成功。
2.6、编辑spfile参数
Spfile是二进制的动态参数文件,不能直接编辑,需将其参数内容复制至静态参数文件pfile中,在静态参数文件进行编辑,再将编辑后的pfile参数复制到spfile中。
创建pfile文件
SQL> create pfile from spfile;
文件已创建。
打开“D:\app\Administrator\product\11.2.0\dbhome_1\database\INITone.ORA”文件,将“*.”部分删掉,把下面配置粘贴进去,根据各自实际情况修改。
*.audit_file_dest='D:\app\Administrator\admin\one\adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='D:\app\Administrator\oradata\one\control01.ctl','D:\app\Administrator\fast_recovery_area\one\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='one' # 注意,主备必须一致
*.fal_client='ONE' # 设定主库名称
*.fal_server='ONEDG' # 设定备库名称
*.DB_UNIQUE_NAME=ONE # 注意,主备全局名称不能一样
*.log_archive_config='DG_CONFIG=(ONE,ONEDG)' # 设置日志配置
*.log_archive_dest_1='LOCATION=D:\app\Administrator\oralog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ONE' # 设置日志推送通道1,主库通道设定
*.log_archive_dest_2='SERVICE=ONEDG ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ONEDG' # 设置日志推送通道2,备库通道设定
*.log_archive_format='ONE_%t_%s_%r.arch' # 格式化归档日志文件格式
*.log_file_name_convert='D:\APP\ADMINISTRATOR\ORADATA\ONE\','D:\APP\ADMINISTRATOR\ORADATA\ONE\' # 设置日志备份文件恢复路径(主备库路径不一致时可通过此处进行转换)
*.standby_file_management='AUTO' # 启动热备功能
*.diagnostic_dest='D:\app\Administrator'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oneXDB)'
*.memory_target=857735168
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
每个人搭建的环境可能有所不同,最好对以上每个参数含义都要做了解,根据实际情况做修改,直接复制容易翻车。
将修改后的pfile文件复制到spfile中。
# 先关闭数据库
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
# 开启pfile进入nomount模式中
SQL> startup pfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\INITone.ORA' nomount;
ORACLE 例程已经启动。
Total System Global Area 855982080 bytes
Fixed Size 2286032 bytes
Variable Size 549457456 bytes
Database Buffers 297795584 bytes
Redo Buffers 6443008 bytes
# 通过创建方式将pfile参数复制到spfile文件中
SQL> create spfile from pfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\INITone.ORA';
文件已创建
# 打开数据库
SQL> alter database mount;
数据库已更改。
SQL> alter database open;
数据库已更改。
2.7、创建密码文件
进入CMD,执行重建口令命令
C:\Users\Administrator>orapwd file=D:\app\Administrator\product\11.2.0\dbhome_1\database\PWDorcl.ora password=his entries=10 ignoreCase=Y force=y
本案例的备库是由主库配置好后克隆的,主备库密码一致,故密码文件可以不用创建。但为了体现DG的完整配置,上述代码执行一次,将生成的密码文件复制到备库相同的路径下。
至此,主库的DG配置基本完成,下面开始备库DG配置。
三、备库配置
3.1、文件参数配置
3.1.1 将主库重建的密码文件复制到对应路径(本案例备库是主库克隆的,如果主库密码没有修改,此步骤可以省略)。
3.1.2 将主库pfile文件复制到对应路径,并对pfile文件进行修改。打开“D:\app\Administrator\product\11.2.0\dbhome_1\database\INITone.ORA”文件,将一下参数进行修改。
*.fal_client='ONEDG'
*.fal_server='ONE'
*.DB_UNIQUE_NAME=ONEDG
*.log_archive_dest_1='LOCATION=D:\app\Administrator\oralog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ONEDG'
*.log_archive_dest_2='SERVICE=ONE ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ONE'
*.log_archive_format='ONEDG_%t_%s_%r.arch'
3.1.3 将修改后的pfile文件复制到spfile中。
# 登录数据库
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 8月 22 17:43:25 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
# 先关闭数据库
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
# 开启pfile进入nomount模式中
SQL> startup pfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\INITone.ORA' nomount;
ORACLE 例程已经启动。
Total System Global Area 2583687184 bytes
Fixed Size 9031696 bytes
Variable Size 301989888 bytes
Database Buffers 2264924160 bytes
Redo Buffers 7741440 bytes
# 通过创建方式将pfile参数复制到spfile文件中
SQL> create spfile from pfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\INITone.ORA';
文件已创建
# 启动数据库
SQL> alter database mount;
数据库已更改。
SQL> alter database open;
数据库已更改。
至此,备库基础配置已完成,下面将开始进行数据同步。
四、主备库网络测试
4.1、sqlnet配置
4.1.1 在下面路径打开sqlnet.ora文件(主备库都操作
)
4.1.2 将SQLNET.AUTHENTICATION_SERVICES 参数改为NONE(主备库都操作
)
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES = (NONE)
4.1.3 重启服务(主备库都操作
)
4.2、测试登录验证
4.2.1 经过4.13个步骤操作后,用“sqlplus / as sysdba”将不能登录数据库。
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 8月 22 18:06:16 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
请输入用户名:
4.2.2 必须使用用户名+口令并指向服务名才能登录。
# 登录主库(主备库执行都可以)
C:\Users\Administrator>sqlplus sys/aqa@one as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 8月 22 18:07:34 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
# 登录备库(主备库执行都可以)
C:\Users\Administrator>sqlplus sys/aqa@onedg as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 8月 22 18:09:33 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
如上,则说明sqlnet配置已经成功。
4.3、测试监听
在cmd下执行(主备库执行都可以
)
# 停止监听
C:\Users\Administrator>lsnrctl stop
LSNRCTL for 64-bit Windows: Version 11.2.0.4.0 - Production on 22-8月 -2024 18:15:33
Copyright (c) 1991, 2013, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.181)(PORT=1521)))
命令执行成功
# 开启监听
C:\Users\Administrator>lsnrctl start
LSNRCTL for 64-bit Windows: Version 11.2.0.4.0 - Production on 22-8月 -2024 18:15:38
Copyright (c) 1991, 2013, Oracle. All rights reserved.
启动tnslsnr: 请稍候...
TNSLSNR for 64-bit Windows: Version 11.2.0.4.0 - Production
系统参数文件为D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
写入D:\app\Administrator\diag\tnslsnr\PD\listener\alert\log.xml的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.181)(PORT=1521)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.181)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 64-bit Windows: Version 11.2.0.4.0 - Production
启动日期 22-8月 -2024 18:15:42
正常运行时间 0 天 0 小时 0 分 3 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
监听程序日志文件 D:\app\Administrator\diag\tnslsnr\PD\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.181)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "one" 包含 1 个实例。
实例 "one", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
# tnsping主库服务
C:\Users\Administrator>tnsping one
TNS Ping Utility for 64-bit Windows: Version 11.2.0.4.0 - Production on 22-8月 -2024 18:33:12
Copyright (c) 1997, 2013, Oracle. All rights reserved.
已使用的参数文件:
D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.180)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ONE)))
OK (20 毫秒)
# tnsping备库服务
C:\Users\Administrator>tnsping onedg
TNS Ping Utility for 64-bit Windows: Version 11.2.0.4.0 - Production on 22-8月 -2024 18:33:20
Copyright (c) 1997, 2013, Oracle. All rights reserved.
已使用的参数文件:
D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.181)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ONE)))
OK (10 毫秒)
至此,网络测试已经完成,下面开始Rman操作
五、用Rman工具同步数据
5.1、进入nomount模式(在备库操作)
5.1.1 登录备库数据库,进入nomount模式
C:\Users\Administrator>sqlplus sys/aqa@onedg as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 8月 22 18:45:39 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> shut immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 855982080 bytes
Fixed Size 2286032 bytes
Variable Size 549457456 bytes
Database Buffers 297795584 bytes
Redo Buffers 6443008 bytes
5.2、用rman连接主备库(在备库操作)
# 在cmd下执行
C:\Users\Administrator>rman target sys/aqa@one auxiliary sys/aqa@onedg
恢复管理器: Release 11.2.0.4.0 - Production on 星期四 8月 22 18:51:16 2024
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ONE (DBID=1066338948)
已连接到辅助数据库: ONE (未装载)
RMAN>
5.3、执行命令复制主库数据文件到备库(在备库操作)
RMAN> duplicate target database for standby from active database nofilenamecheck;
启动 Duplicate Db 于 22-8月 -24
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=10 设备类型=DISK
内存脚本的内容:
{
backup as copy reuse
targetfile 'D:\app\Administrator\product\11.2.0\dbhome_1\DATABASE\PWDone.ORA' auxiliary format
'D:\app\Administrator\product\11.2.0\dbhome_1\DATABASE\PWDone.ORA' ;
}
正在执行内存脚本
启动 backup 于 22-8月 -24
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=20 设备类型=DISK
完成 backup 于 22-8月 -24
内存脚本的内容:
{
backup as copy current controlfile for standby auxiliary format 'D:\APP\ADMINISTRATOR\ORADATA\ONE\CONTROL01.CTL';
restore clone controlfile to 'D:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ONE\CONTROL02.CTL' from
'D:\APP\ADMINISTRATOR\ORADATA\ONE\CONTROL01.CTL';
}
正在执行内存脚本
启动 backup 于 22-8月 -24
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
复制备用控制文件
输出文件名=D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFONE.ORA 标记=TAG20240822T185326 RECID=1 STAMP=1177700007
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
完成 backup 于 22-8月 -24
启动 restore 于 22-8月 -24
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 已复制控制文件副本
完成 restore 于 22-8月 -24
内存脚本的内容:
{
sql clone 'alter database mount standby database';
}
正在执行内存脚本
sql 语句: alter database mount standby database
内存脚本的内容:
{
set newname for tempfile 1 to
"D:\APP\ADMINISTRATOR\ORADATA\ONE\TEMP01.DBF";
switch clone tempfile all;
set newname for datafile 1 to
"D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSTEM01.DBF";
set newname for datafile 2 to
"D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSAUX01.DBF";
set newname for datafile 3 to
"D:\APP\ADMINISTRATOR\ORADATA\ONE\UNDOTBS01.DBF";
set newname for datafile 4 to
"D:\APP\ADMINISTRATOR\ORADATA\ONE\USERS01.DBF";
backup as copy reuse
datafile 1 auxiliary format
"D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSTEM01.DBF" datafile
2 auxiliary format
"D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSAUX01.DBF" datafile
3 auxiliary format
"D:\APP\ADMINISTRATOR\ORADATA\ONE\UNDOTBS01.DBF" datafile
4 auxiliary format
"D:\APP\ADMINISTRATOR\ORADATA\ONE\USERS01.DBF" ;
sql 'alter system archive log current';
}
正在执行内存脚本
正在执行命令: SET NEWNAME
临时文件 1 在控制文件中已重命名为 D:\APP\ADMINISTRATOR\ORADATA\ONE\TEMP01.DBF
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 backup 于 22-8月 -24
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00001 名称=D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSTEM01.DBF
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSTEM01.DBF 标记=TAG20240822T185339
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:15
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00002 名称=D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSAUX01.DBF
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSAUX01.DBF 标记=TAG20240822T185339
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:07
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00003 名称=D:\APP\ADMINISTRATOR\ORADATA\ONE\UNDOTBS01.DBF
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ONE\UNDOTBS01.DBF 标记=TAG20240822T185339
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00004 名称=D:\APP\ADMINISTRATOR\ORADATA\ONE\USERS01.DBF
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ONE\USERS01.DBF 标记=TAG20240822T185339
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 22-8月 -24
sql 语句: alter system archive log current
内存脚本的内容:
{
switch clone datafile all;
}
正在执行内存脚本
数据文件 1 已转换成数据文件副本
输入数据文件副本 RECID=1 STAMP=1177700046 文件名=D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSTEM01.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 RECID=2 STAMP=1177700046 文件名=D:\APP\ADMINISTRATOR\ORADATA\ONE\SYSAUX01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 RECID=3 STAMP=1177700046 文件名=D:\APP\ADMINISTRATOR\ORADATA\ONE\UNDOTBS01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 RECID=4 STAMP=1177700046 文件名=D:\APP\ADMINISTRATOR\ORADATA\ONE\USERS01.DBF
完成 Duplicate Db 于 22-8月 -24
5.4 检查文件是否复制成功(在备库查看)
5.4.1 打开以下路径“D:\app\Administrator\oradata\one”
如上修改时间为复制后的时间,则说明同步成功。
5.5、检查测试:
5.5.1 启动adg模式(备库执行
)
SQL> alter database open;
数据库已更改。
SQL> alter database recover managed standby database disconnect from session;
数据库已更改。
5.5.2 日志切换(主库执行
)
# 用显性密码登录主库
C:\Users\Administrator>sqlplus sys/aqa@one as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 8月 22 19:01:16 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
# 日志切换
SQL> alter system switch logfile;
系统已更改。
5.5.3 主库检查dataguard状态(主库为读写状态
)
SQL> select NAME,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER_STATUS
----- ----------- -------------------- --------------- ------------------
ORCL READ WRITE MAXIMUM PERFORMANCE PRIMARY NOT ALLOWED
5.5.4 备库检查dataguard状态(备库为仅读状态
)
SQL> select NAME,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUS from v$database;
NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER_STATUS
---- -------------------- ------------------- ------------------ --------------------
ORCL READ ONLY WITH APPLY MAXIMUM PERFORMANCE PHYSICAL STANDBY NOT ALLOWED
5.5.5 dataguard数据同步测试
(1)主库创建test数据表,并插入一行数据。
SQL> CREATE TABLE test(id NUMBER);
表已创建。
SQL> INSERT INTO test(id) VALUES(1);
已创建 1 行。
SQL> commit;
提交完成。
(2) 备库查询数据是否同步
SQL> select * from test;
ID
----------
1
(3)可以重复主库插入数据,备库执行查询,查看数据同步是否正常。
至此,Oracle11g单实例DG配置全部完成。
结束语
以上每一步都是亲自操作,已经完美实现主备库数据同步。经过两天测试,Oracle19c和11g的DG配置,流程基本一致,初学者需细心把我每一个细节,尤其是pfile文件的主备库名称切换。本文内容结束,希望对大家有所帮助。
注:全篇万字长文,略显冗长啰嗦。本文仅作为像笔者一样的初学者参考所用,不作为生产环境的实际指导,请各位谨慎操作。