Linux环境配置oracle12c dg(dataguard)

 

0. 初始准备

    主库安装oracle软件并建库,备库只安装oracle软件

配置

主库(primary)

备库(standby)

描述

ip

192.168.23.128

192.168.23.129

 

hostname

sky

sea

 

oracle_base

/u01/app/oracle

/u01/app/oracle

 

oracle_home

/u01/app/oracle/product/12.2.0.1/db_1

/u01/app/oracle/product/12.2.0.1/db_1

 

oracle_sid

sky

sea

 

datafile

/u01/app/oracle/oradata/sky/

/u01/app/oracle/oradata/sea

备库要手动新建目录

archive_log

/u01/app/oracle/archivelog

/u01/app/oracle/archivelog

备库要手动新建目录

archive_log_std

/u01/app/oracle/archivelog_std

/u01/app/oracle/archivelog_std

主备库都要手动新建目录,用于主备切换后使用的归档目录

audit_file_dest

/u01/app/oracle/admin/sky/adump

/u01/app/oracle/admin/sea/adump

备库要手动新建目录

1. 主库开归档并设置强制日志模式

(1) 查看是否开归档:archive log list;
(2) 开归档: 
        shutdown immediate;
        startup mount;
        alter database archivelog;
        alter system set log_archive_dest_1='location=/u01/app/oracle/archivelog';
        alter database force logging;
        alter database open;

2. 配置主备库监听

    (1) 主库listener.ora:hostname值用ip代替

[oracle@sky ~]$ cd /u01/app/oracle/product/12.2.0.1/db_1/network/admin/
[oracle@sky admin]$ ls
listener.ora  samples  shrept.lst  sqlnet.ora  tnsnames.ora
[oracle@sky admin]$ cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0.1/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =  
(SID_LIST =  
  (SID_DESC =  
    (GLOBAL_DBNAME = sky)
    (ORACLE_HOME = /u01/app/oracle/product/12.2.0.1/db_1)
    (SID_NAME = sky)
  ) 
)
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.128)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

[oracle@sky admin]$ 

     (2) 主库tnsnames.ora:添加备库的tns(sea部分)

[oracle@sky admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0.1/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_SKY =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.128)(PORT = 1521))

SKY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.128)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sky)
    )
  )
  
SEA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.129)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sea)
    )
  )

[oracle@sky admin]$ 

    (3) 将主库的listener.ora和tnsnames.ora复制到备库监听文件位置,并修改对应的ip

[oracle@sea ~]$ cd /u01/app/oracle/product/12.2.0.1/db_1/network/admin/
[oracle@sea admin]$ ls
listener.ora  samples  shrept.lst  tnsnames.ora
[oracle@sea admin]$ cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0.1/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =  
(SID_LIST =  
  (SID_DESC =  
    (GLOBAL_DBNAME = sea)
    (ORACLE_HOME = /u01/app/oracle/product/12.2.0.1/db_1)
    (SID_NAME = sea)
  )
)

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.129)(PORT = 1521))
#      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
[oracle@sea admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0.1/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

#LISTENER_SEA =
# (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.129)(PORT = 1521))

SKY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.128)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sky)
    )
  )

SEA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.129)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sea)
    )
  )

[oracle@sea admin]$

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

sql>alter database add standby logfile group 4 '/u01/app/oracle/oradata/sky/redo04.log' size 100m;
sql>alter database add standby logfile group 5 '/u01/app/oracle/oradata/sky/redo05.log' size 100m;
sql>alter database add standby logfile group 6 '/u01/app/oracle/oradata/sky/redo06.log' size 100m;

4. 为主备库准备参数文件

    (1) 主库参数文件

[oracle@sky ~]$ cd /u01/app/oracle/product/12.2.0.1/db_1/dbs
[oracle@sky dbs]$ cat initsky.ora 
sky.__data_transfer_cache_size=0
sky.__db_cache_size=503316480
sky.__inmemory_ext_roarea=0
sky.__inmemory_ext_rwarea=0
sky.__java_pool_size=16777216
sky.__large_pool_size=33554432
sky.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
sky.__pga_aggregate_target=654311424
sky.__sga_target=956301312
sky.__shared_io_pool_size=33554432
sky.__shared_pool_size=352321536
sky.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/sky/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/u01/app/oracle/oradata/sky/control01.ctl','/u01/app/oracle/oradata/sky/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/u01/app/oracle/oradata/sea','/u01/app/oracle/oradata/sky'
*.db_name='sky'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=skyXDB)'
*.enable_pluggable_database=true
*.db_unique_name='sky'
*.fal_client='sky'
*.fal_server='sea'
*.local_listener='LISTENER_SKY'
*.log_archive_config='DG_CONFIG=(sky,sea)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sky'
*.log_archive_dest_2='SERVICE=sea arch SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sea'
*.log_archive_dest_3='LOCATION=/u01/app/oracle/archivelog_std valid_for=(standby_logfiles,standby_role) db_unique_name=sky'
*.log_file_name_convert='/u01/app/oracle/oradata/sea','/u01/app/oracle/oradata/sky'
*.memory_target=1527m
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
[oracle@sky dbs]$ 

    (2)备库参数文件:将主库的参数文件拷贝到备库相应位置并修改对应名称和内容参数

[oracle@sea ~]$ cd /u01/app/oracle/product/12.2.0.1/db_1/dbs/
[oracle@sea dbs]$ cat initsea.ora 
sky.__data_transfer_cache_size=0
sky.__db_cache_size=620756992
sky.__inmemory_ext_roarea=0
sky.__inmemory_ext_rwarea=0
sky.__java_pool_size=16777216
sky.__large_pool_size=33554432
sky.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
sky.__pga_aggregate_target=654311424
sky.__sga_target=956301312
sky.__shared_io_pool_size=33554432
sky.__shared_pool_size=234881024
sky.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/sea/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/u01/app/oracle/oradata/sea/control01.ctl','/u01/app/oracle/oradata/sea/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/u01/app/oracle/oradata/sky','/u01/app/oracle/oradata/sea'
*.db_name='sky'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=skyXDB)'
*.enable_pluggable_database=true
*.db_unique_name='sea'
*.fal_client='sea'
*.fal_server='sky'
*.local_listener='LISTENER_SEA'
*.log_archive_config='DG_CONFIG=(sea,sky)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sea'
*.log_archive_dest_2='SERVICE=sky arch SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sky'
*.log_archive_dest_3='LOCATION=/u01/app/oracle/archivelog_std valid_for=(standby_logfiles,standby_role) db_unique_name=sea'
*.log_file_name_convert='/u01/app/oracle/oradata/sky','/u01/app/oracle/oradata/sea'
*.memory_target=1527m
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
[oracle@sea dbs]$ 

5. 拷贝主库的控制文件和密码文件到从库的相应目录下并修改名称

    主库:生成备库的控制文件

sql>alter database create standby controlfile as''/u01/app/oracle/control_std.ctl';

    备库:将生成的控制文件复制到备库的相应路径下并修改相应名称

              将密码文件复制到相应目录下并修改相应名称

6. 登录sqlplus,创建spfile,并启动到nomount状态

sql>create spfile from pfile='/u01/app/oracle/product/12.2.0.1/db_1/dbs/initsea.ora';
sql>shutdown immediate;
sql>startup nomount;
Redo Buffers		    7983104 bytes
SQL> 

7. 使用rman连接主备库

[oracle@sky ~]$ rman target sys/sky@sky auxiliary sys/sky@sea

Recovery Manager: Release 12.2.0.1.0 - Production on Thu Apr 9 16:43:56 2020

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

connected to target database: SKY (DBID=3365626560)
connected to auxiliary database: SKY (not mounted)          ----注:此状态代表连接备库成功,其他状态都不行

RMAN> backup current controlfile for standby database;
RMAN> duplicate target database for standby from active database; 

8. 将备库设置为接受日志模式

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Oracle 12c DGData Guard)是一种高可用性解决方案,它可以在主数据库和一个或多个备用数据库之间自动地传输数据,并确保数据在所有数据库中保持一致。下面是 Oracle 12c DG 部署的大致步骤: 1. 确保主数据库和备用数据库都已经安装了 Oracle 12c 数据库软件,并且主数据库和备用数据库的版本一致。 2. 配置主数据库的参数文件,启用归档模式,并配置归档日志的保存位置。 3. 在主数据库上创建一个备用数据库的连接,配置 tnsnames.ora 文件以便主数据库可以连接到备用数据库。 4. 在主数据库上创建一个备用数据库的控制文件备份。可以使用 RMAN 工具来创建备份。 5. 在备用数据库上安装 Oracle 12c 数据库软件,并创建一个与主数据库相同的实例。 6. 配置备用数据库的参数文件,启用归档模式,并配置归档日志的保存位置。 7. 在备用数据库上创建一个与主数据库相同的控制文件,以便备用数据库可以使用主数据库的归档日志。 8. 在备用数据库上创建一个与主数据库相同的监听器,并配置 tnsnames.ora 文件以便备用数据库可以连接到主数据库。 9. 在备用数据库上创建一个 DG 连接,指向主数据库并启动该连接。 10. 在主数据库上启用 DG 功能,并将主数据库的归档日志传输到备用数据库。 11. 确认 DG 部署成功。可以使用 DGMGRL 工具来检查主数据库和备用数据库之间的连接和数据传输状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sky@sea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值