Oracle DG主从方案

霄
2022-04-10 / 0 评论 / 51 阅读 / 正在检测是否收录...

Oracle DG主从备份操作手册

2024 年 **09 月 23 **日

版本号 修改日期 修改人 更新内容
V1.0 2024.09.23 肖霄

Oracle DG主从备份操作手册

1、服务运行环境 5
1.1、数据库服务环境要求 5
1.2、应用服务器环境要求 5
2、Oracle 数据库安装 5
2.1、Oracle11g 主数据库安装 5
2.1.1、程序准备 5
2.1.2、安装步骤 5
2. Oracle11g 从数据库安装 11
2.2.1、程序准备 11
2.2.2、安装步骤 11
3、安装位置 11
4、配置dataguard主从库 12

  1. 主库操作检查数据库,开启归档模式,如下图所示: 12
  2. 为备库添加日志组(在主库mount状态下执行) 13
    3、主备库配置网络监听 14
    4、重启监听服务 19
    5、使用tnsping检查监听及服务命名 20
    6、主备库创建相关目录,详述如下 22
    7、为主备库准备参数文件 22
    8、密码文件配置 25
    9、 控制文件配置 25
    10、创建备库实例djl,在备库服务器执行创建 25
    11、主备库的启动 25
    12、使用rman连接主备库 28
    13、为备库备份参数文件 28
    14、将主库数据库复制到备库 29
    15、将备库设置为接受日志模式 29
    5、 后期维护 30
    6、启动从库,同步因停机未同步的归档日志 31

1、服务运行环境

1.1、数据库服务环境要求

◇ Windows Server 2019 Datacenter (2台,一主一从)

◇ 内网网络

1.2、应用服务器环境要求

◇ Oracle11g64Bit 客户端环境

◇ 网络运行环境(同时内外网网络,根据支付通道要求具

体进行确定)

2、Oracle 数据库安装

2.1、Oracle11g 主数据库安装

2.1.1、程序准备

◇Oracle11g 64 位安装包

◇Windows Server 2019 Datacenter 操作系统

2.1.2、安装步骤

(1)、将两个压缩文件解压至同一个文件夹目录中(例如:database)。

(2)、解压完毕后,在该目录下打开 setup.exe,执行安装程序后会出现启

动安装的命令提示符,进入安装;

(3)、稍等一会儿,就会出现以下安装步骤,取消复选框勾选,点击下

一步继续,并单击“是”继续

  1. 、之后出现以下安装框,默认点击“下一步”继续

  1. 、选择安装“服务器类”

(6)、接下来进入安装配置,密码口令为大小写数字拼成的口令,否则,

就会提示警告

(7)、点击下一步,在执行先决条件检查时,我们选择全部忽略即可

(8)、下一步,点击完成按钮即开始安装了

安装画面如下

  1. 、进度条到达 100 时则会出现以下对话框,并等待其配置完成

主库安装完毕,下面是从库安装

2. Oracle11g 从数据库安装

2.2.1、程序准备

◇Oracle11g 64 位安装包

◇Windows Server 2019 Datacenter 操作系统

2.2.2、安装步骤

注意:安装步骤基本和主库步骤一致,但是需要注意到,从库安装Oracle时,要选 **仅安装数据库软件,其余步骤一致**

至此,两台机器的Oracle环境配置完成

3、安装位置

主库:

     oracle 软件:E:\app\Administrator\product\11.2.0\dbhome_1

     数据库 orcl:E:\app\Administrator\oradata\orcl

备库:

     oracle 软件:E:\app\Administrator\product\11.2.0\dbhome_1

注:**要明了数据库的安装位置以及数据库实例的安装位置,不管是走安装默认位置还是自定义位**

4、配置dataguard主从库

1. 主库操作检查数据库,开启归档模式

如下图所示:

连接数据库

C:\Users\Administrator>sqlplus / as sysdba

查看是否是归档模式

SQL> archive log list

关闭数据库

SQL> shutdown immediate

启动到mount状态

SQL> startup mount

开启归档模式

SQL> alter database archivelog;

开启强制日志模式

SQL> alter database force logging;

  1. 为备库添加日志组(在主库mount状态下执行)

查看当前主库日志组:

SQL> select from v$logfile order by group#;*

在主库为备库添加日志组,结果如下:(这个路径请和上面语句查询出来的路径改成一样

SQL> alter database add standby logfile group 4 'E:\app\Administrator\oradata\orcl\redo04.log' size 50m;

SQL> alter database add standby logfile group 5 'E:\app\Administrator\oradata\orcl\redo05.log' size 50m;

SQL> alter database add standby logfile group 6 'E:\app\Administrator\oradata\orcl\redo06.log' size 50m;

SQL> alter database add standby logfile group 7 'E:\app\Administrator\oradata\orcl\redo07.log' size 50m;

 SQL> select from v$logfile order by group#;*

3、主备库配置网络监听

修改文件listener.ora, tnsnames.ora它们的位置在E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下(根据实际安装位置

主库:

*listener.ora*文件

注意:空格字符也要对齐,否则报语法错误,(注意里面的盘符路径和服务器内网IP根据自己实际改

------------------------------------------------------------------------------------------------------

# listener.ora Network Configuration File: E:\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 = E:\app\Administrator\product**11.2.0*\dbhome_1)

  • (PROGRAM = extproc)*

  • (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")*

  • )*

  • *(SID_DESC =

  • (GLOBAL_DBNAME = ORCL)*

  • (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)*

  • (SID_NAME = ORCL)*

  • )*

  • )*

LISTENER =

  • (DESCRIPTION_LIST =*

  • (DESCRIPTION =*

  • (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))*

  • (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.50)(PORT = 1521))*

  • )*

  • )*

ADR_BASE_LISTENER = E:\app\Administrator

----------------------------------------------------------------------------------------------------------

*tnsnames.ora文件,注意:*djl 为备数据库服务的IP地址

----------------------------------------------------------------------------------------------------------

# tnsnames.ora Network Configuration File: E:\app\Administrator\product*11.2.0*\dbhome_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =

  • (DESCRIPTION =*

  • (ADDRESS_LIST =*

  • (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))*

  • )*

  • (CONNECT_DATA =*

  • (SID = CLRExtProc)*

  • (PRESENTATION = RO)*

  • )*

  • )*

ORCL =

  • (DESCRIPTION =*

  • (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.50)(PORT = 1521))*

  • (CONNECT_DATA =*

  • (SERVER = DEDICATED)*

  • (SERVICE_NAME = orcl)*

  • )*

  • )*

djl =

  • (DESCRIPTION =*

  • (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.51)(PORT = 1521))*

  • (CONNECT_DATA =*

  • (SERVER = DEDICATED)*

  • (SERVICE_NAME = djl)*

  • )*

  • )*

-------------------------------------------------------------------------------------------------

备库:

*listener.ora*文件

# listener.ora Network Configuration File: E:\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 = E:\app\Administrator\product**11.2.0*\dbhome_1)

  • (PROGRAM = extproc)*

  • (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")*

  • )*

  • (SID_DESC =*

  • (GLOBAL_DBNAME = djl)*

  • (ORACLE_HOME = E:\app\Administrator\product**11.2.0*\dbhome_1)

  • (SID_NAME = djl)*

  • )*

  • )*

LISTENER =

  • (DESCRIPTION_LIST =*

  • (DESCRIPTION =*

  • (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))*

  • (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.51)(PORT = 1521))*

  • )*

  • )*

ADR_BASE_LISTENER = E:\app\Administrator

*tnsnames.ora*文件

# tnsnames.ora Network Configuration File: E:\app\Administrator\product*11.2.0*\dbhome_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =

  • (DESCRIPTION =*

  • (ADDRESS_LIST =*

  • (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))*

  • )*

  • (CONNECT_DATA =*

  • (SID = CLRExtProc)*

  • (PRESENTATION = RO)*

  • )*

  • )*

*djl *=

  • (DESCRIPTION =*

  • (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.51)(PORT = 1521))*

  • (CONNECT_DATA =*

  • (SERVER = DEDICATED)*

  • (SERVICE_NAME = djl)*

  • )*

  • )*

*ORCL *=

  • (DESCRIPTION =*

  • (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.50)(PORT = 1521))*

  • (CONNECT_DATA =*

  • (SERVER = DEDICATED)*

  • (SERVICE_NAME = orcl)*

  • )*

  • )*

4、重启监听服务

主库,备库都执行

C:\Users\Administrator> lsnrctl stop

C:\Users\Administrator> lsnrctl start

5、使用tnsping检查监听及服务命名

主库

C:\Users\Administrator>tnsping orcl

C:\Users\Administrator>tnsping djl

备库

C:\Users\Administrator>tnsping orcl

C:\Users\Administrator>tnsping djl

最后提示返回OK即可成功配置连接建立

6、主备库创建相关目录,详述如下

主库创建目录:

  • F:\oracle_db_arch\arch    --归档日志位置

  • F:\oracle_db_arch\arch_std  --主库转为备库时,归档日志位置

从库创建目录:

  • F:\oracle_db_arch\arch                                                            ----归档日志位置

  • F:\oracle_db_arch\arch_std                                                     --备库转为主库时,归档日志位置

  • E:\app\Administrator\oradata\djl                                               --数据文件位置

  • E:\app\Administrator\admin\djl\adump                                     --审计文件位置

  • E:\app\Administrator\flash_recovery_area\djl\ONLINELOG    --联机重做位置

7、为主备库准备参数文件

  • 主库

  • select from v$logfile order by group#;*

  • SQL> create pfile from spfile;

  • *注:*执行create语句之后,在E:\app\Administrator\product\11.2.0\dbhome_1\database目录下会出现文件INITorcl.ORA,用笔记本打开进行编辑

*主库INITorcl.ORA,*根据实际情况修改盘符,文件夹不存在需要建立,否则可能导致无法启动

orcl.__db_cache_size=1124073472

orcl.__java_pool_size=16777216

orcl.__large_pool_size=16777216

orcl.__oracle_base='E:\app\Administrator'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=1040187392

orcl.__sga_target=1543503872

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=352321536

orcl.__streams_pool_size=0

*.audit_file_dest='E:\app\Administrator\admin\orcl\adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='E:\app\Administrator\oradata\orcl\control01.ctl','E:\app\Administrator\flash_recovery_area\orcl\control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest='E:\app\Administrator\flash_recovery_area'

*.db_recovery_file_dest_size=4102029312

*.diagnostic_dest='E:\app\Administrator'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.memory_target=2577399808

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

*.db_unique_name=orcl

*.log_archive_config='dg_config=(orcl,djl)'

*.log_archive_dest_1='LOCATION=F:\oracle_db_arch\arch valid_for=(online_logfiles,primary_role) db_unique_name=orcl'

*.log_archive_dest_2='SERVICE=djl lgwr async affirm valid_for=(online_logfiles,primary_role) db_unique_name=djl'

*.log_archive_dest_3='LOCATION=F:\oracle_db_arch\arch_std valid_for=(standby_logfiles,standby_role) db_unique_name=orcl'

*.log_archive_dest_state_1='enable'

*.log_archive_dest_state_2='enable'

*.log_archive_dest_state_3='enable'

*.fal_server=djl

*.fal_client=orcl

*.standby_file_management=auto

*.db_file_name_convert=('E:\app\Administrator\oradata\djl','E:\app\Administrator\oradata\orcl')

*.log_file_name_convert=('E:\app\Administrator\oradata\djl','E:\app\Administrator\oradata\orcl')

将主库initorcl.ora复制到备库对应目录下并修改内容如下

*备库修改文件名使用INITdjl.ORA*根据实际情况修改盘符,文件夹不存在需要建立,否则可能导致无法启动

orcl.__db_cache_size=1124073472

orcl.__java_pool_size=16777216

orcl.__large_pool_size=16777216

orcl.__oracle_base='E:\app\Administrator'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=1040187392

orcl.__sga_target=1543503872

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=352321536

orcl.__streams_pool_size=0

*.audit_file_dest='E:\app\Administrator\admin\djl\adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='E:\app\Administrator\oradata\djl\control01.ctl','E:\app\Administrator\flash_recovery_area\djl\control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest='E:\app\Administrator\flash_recovery_area'

*.db_recovery_file_dest_size=4102029312

*.diagnostic_dest='E:\app\Administrator'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)','(address=(protocol=tcp)(host=192.168.2.51))(dispatchers=4)','(address=(protocol=ipc)(host=192.168.2.51))(dispatchers=2)'

*.memory_target=2577399808

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

*.db_unique_name=djl

*.log_archive_config='dg_config=(djl,orcl)'

*.log_archive_dest_1='LOCATION=F:\oracle_db_arch\arch valid_for=(online_logfiles,primary_role) db_unique_name=djl'

*.log_archive_dest_2='SERVICE=orcl lgwr async affirm valid_for=(online_logfiles,primary_role) db_unique_name=orcl'

*.log_archive_dest_3='LOCATION=F:\oracle_db_arch\arch_std valid_for=(standby_logfiles,standby_role) db_unique_name=djl'

*.log_archive_dest_state_1='enable'

*.log_archive_dest_state_2='enable'

*.log_archive_dest_state_3='enable'

*.fal_server=orcl

*.fal_client=djl

*.standby_file_management=auto

*.db_file_name_convert=('E:\app\Administrator\oradata\orcl','E:\app\Administrator\oradata\djl')

*.log_file_name_convert=('E:\app\Administrator\oradata\orcl','E:\app\Administrator\oradata\djl')

8、密码文件配置

将主库的参数文件PWDorcl.ora复制到备库对应目录下,并重命名为PWDdjl.ora

路径位置:E:\app\Administrator\product\11.2.0\dbhome_1\database

控制文件配置

使用查询语句

SELECT name FROM v$controlfile; 查询到两个控制文件位置

将主库的参数文件control01.ctl和control02.ctl复制到备库参数文件中指定位置下

如主库C:\app\Administrator\oradata\orcl\CONTROL01.CTL拷贝到备库
C:\app\Administrator\oradata\djl\CONTROL01.CTL

CONTROL02.CTL同理操作

没有就要建文件夹注意备库是djl

10、创建备库实例djl,在备库服务器执行创建

C:\Users\Administrator>oradim -new -sid djl

11、主备库的启动

主库:登录sqlplus在showdown状态下创建参数文件

查看oracle 启动状态

SQL> select status from v$instance;

关闭数据库

SQL> shutdown immediate

创建参数文件

SQL> create spfile from pfile;

启动数据库

SQL> startup

备库:

登录sqlplus出现如下错误

sqlplus / as sysdba

使用命令

set oracle_sid=djl

解决

创建参数文件

SQL> create spfile from pfile;

将数据库启动到nomount(必须是nomount状态)

SQL> startup nomount

12、使用rman连接主备库

在主库执行:

C:\Users\Administrator>rman target sys/123456@orcl auxiliary sys/123456@djl

注意:连接前使用rman登录主备库做测试

13、为备库备份参数文件

RMAN> backup current controlfile for standby database;

如果这部分执行报错

需要修改归档日志的路径,默认路径存储大小为2G

或者修改默认路径存储大小为500G

SQL> alter system set db_recovery_file_dest_size=500G;

系统已更改。

参考:

https://blog.csdn.net/mengxiang209/article/details/6936096

https://www.cnblogs.com/andy6/p/5997410.html

https://blog.csdn.net/weixin_34384557/article/details/89774544

https://blog.csdn.net/weixin_34384557/article/details/89774544

再重新执行backup current controlfile for standby database;即可

14、将主库数据库复制到备库

RMAN> duplicate target database for standby from active database;

15、将备库设置为接受日志模式

说明:此时,主库为open状态,备库为mounted

**备库:*

在备库执行以下语句

将备库修改为接收应用主库归档的模式

SQL> alter database recover managed standby database disconnect from session;

后期维护

设置备库

SQL> alter database mount standby database;

SQL> select sequence#,applied from V$archived_log where applied='YES';
SQL> alter database recover managed standby database cancel
;

设置备库只读
SQL> alter database open read only;
SQL> alter database recover managed standby database using current logfile disconnect from session;
说明:重启数据库后必须执行,这样数据才能
同步。

查看日志应用情况
SQL> select sequence#,applied from V$archived_log where applied='IN-MEMORY'
;

如果看到IN-MEMORY说明当前正在进行实时同步,如果最后一个是YES,也是正常的,说明当前操作为0

SQL> select sequence#,applied from V$archived_log;

查询当前的保护模式
SQL> select open_mode,database_role,db_unique_name,PROTECTION_MODE from v$database
;

到此,oracle 11g dataguard 配置完毕。

启动从库,同步因停机未同步的归档日志

SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount standby databas
e;

备库启用日志应用
SQL> alter database recover managed standby database disconnect from session;
SQL> select sequence#,applied from V$archived_log where applied='YES
';

以只读方式启动从库

SQL> alter database open read only;
SQL> alter database recover managed standby database using current logfile disconnect from session
;

更改数据库恢复托管备用数据库取消

停止应用日志

SQL> alter database recover managed standby database cancel;

注意,如果连接显示

数据库未打开: 仅允许在固定表/视图中查询.

使用 alter database open 命令操作

ORA-01113: 文件 5 需要介质恢复

ORA-01110: 数据文件 5: 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF'

使用如下命令解决再打开

SQL> recover datafile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF'

报错解决方案

ORA-10456:cannot open standby database;media recovery session may be in progress

https://blog.csdn.net/dbangelica/article/details/86217958

扫描二维码,在手机上阅读!
89

评论

博主关闭了当前页面的评论