【Windows Server2016下Oracle11g DG配置实操步骤】

Windows Server2016下Oracle11g DG配置实操步骤


前言

网上关于Oracle11g DG配置很多,但是内容跳跃性很大,对于初学者不太友好。为了避免踩坑的几率,本文尽可能保留每一个操作步骤,旨为DG小白按照操作流程也可以完成自己的DG搭建,所以文章内容会比较啰嗦冗长。作为DG的初学者,每一步都是亲手实践,但文中难免会有疏漏或错误,欢迎各位读者提出宝贵的批评和指正。

Oracle Data Guard实现原理在上一篇文章《Windows Server2016下Oracle19c DG配置实操步骤》中有讲述,感兴趣的自行翻阅。
下面开始正文

一、部署规划

1.1、虚拟机搭建:

虚拟机搭建:初学者,不建议直接在生产环境操作,避免出现操作不当造成不可挽回的损失(切记切记)。虚拟机软件建议使用VMware,VMware和操作系统安装步骤另找教程,本文不再详细讲解。

1.2、环境规划:

类型主库备库
操作系统Windows Server2016Windows Server2016
IP192.168.0.180192.168.0.181
主机名OraclepdOraclesd
数据库版本11.2.0.411.2.0.4
实例名oneone
DB_UNQNAMEoneonedg

注:网上很多教程主库安装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 星期四 822 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 星期四 822 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 星期四 822 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 星期四 822 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 星期四 822 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
正常运行时间              00 小时 03 秒
跟踪级别                  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 星期四 822 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 星期四 822 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 星期四 822 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文件的主备库名称切换。本文内容结束,希望对大家有所帮助。

注:全篇万字长文,略显冗长啰嗦。本文仅作为像笔者一样的初学者参考所用,不作为生产环境的实际指导,请各位谨慎操作。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值