前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RHEL6.4 + Oracle 11g DG测试环境快速搭建参考

RHEL6.4 + Oracle 11g DG测试环境快速搭建参考

作者头像
Alfred Zhao
发布2022-05-06 14:17:43
4060
发布2022-05-06 14:17:43
举报

环境现状:

两台虚拟主机A和B:

  1. A机器已安装ASM存储的Oracle 11g 实例

     参考:https://cloud.tencent.com/developer/article/1431952

  1. B机器已安装系统,配置以及目录结构均和A机器保持一致

     /u01 + 3块ASM盘

DG部署规划:

primary

standby

主机

JY-DB

JY-DBS

db_name

jyzhao

jyzhao

db_unique_name

jyzhao

jyzhao_s

instance_name

jyzhao

jyzhao_s

存储

+DATA1

+DATA1

归档

/u01/app/oracle/product/11.2.0/db_1/dbs/arch

/u01/app/oracle/product/11.2.0/db_1/dbs/arch

DGMGRL

jyzhao_dgmgrl

jyzhao_s_dgmgrl

GRID_HOME

/u01/app/11.2.0/grid

/u01/app/11.2.0/grid

ORACLE_HOME

/u01/app/oracle/product/11.2.0/db_1

/u01/app/oracle/product/11.2.0/db_1

一、前期准备

二、DG部署配置

三、DG切换测试

References

一、前期准备

1.1. A机器打包拷贝/u01/app到B机器(包含了grid和oracle软件安装目录)

代码语言:javascript
复制
# tar -zcvf app.tar.gz app

# scp app.tar.gz 192.168.99.160:/u01/
root@192.168.99.160's password:
app.tar.gz                                                                                                                           100% 3564MB  54.8MB/s   01:05 
B机器解压,解压前确保第二步操作已完成。

# pwd
/u01
[root@JY-DBS u01]# ls
app.tar.gz  lost+found
[root@JY-DBS u01]# tar -zxvf app.tar.gz 
解压完成后,检查权限是正确的
# ls -lh
total 3.5G
drwxrwxr-x. 7 oracle oinstall 4.0K Mar 13 14:47 app
-rw-r--r--. 1 root   root     3.5G Mar 15 22:28 app.tar.gz

1.2. B机器配置用户,系统参数,安装依赖包,用户环境变量,ASM磁盘

配置用户,系统参数,安装依赖包,用户环境变量

注:在第一步解压前做完,会发现权限都是正确的不用费心再改

代码语言:javascript
复制
root用户执行脚本
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/11.2.0/grid/root.sh
# /u01/app/11.2.0/grid/perl/bin/perl -I/u01/app/11.2.0/grid/perl/lib -I/u01/app/11.2.0/grid/crs/install /u01/app/11.2.0/grid/crs/install/roothas.pl

配置has
需要建立asm磁盘组

环境变量:
vi $ORACLE_HOME/dbs/init+ASM.ora

*.asm_diskstring='/dev/mapper/ora*'
*.asm_power_limit=1
*.diagnostic_dest='/u01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='EXCLUSIVE'

$ sqlplus / as sysdba
 SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 16 10:51:02 2015
 Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 Connected to an idle instance.
 SQL> startup
ORA-01078: failure in processing system parameters
ORA-29701: unable to connect to Cluster Synchronization Service

$  crsctl stat res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS      
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ons
               OFFLINE OFFLINE      jy-dbs                                      
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        OFFLINE OFFLINE                                                  
ora.diskmon
      1        OFFLINE OFFLINE                                                  
ora.evmd
      1        ONLINE  ONLINE       jy-dbs             
$  crsctl start resource ora.cssd
CRS-2672: Attempting to start 'ora.cssd' on 'jy-dbs'
CRS-2672: Attempting to start 'ora.diskmon' on 'jy-dbs'
CRS-2676: Start of 'ora.diskmon' on 'jy-dbs' succeeded
CRS-2676: Start of 'ora.cssd' on 'jy-dbs' succeeded
$ crsctl status res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS      
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ons
               OFFLINE OFFLINE      jy-dbs                                      
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       jy-dbs                                      
ora.diskmon
      1        OFFLINE OFFLINE                                                  
ora.evmd
      1        ONLINE  ONLINE       jy-dbs        

$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 16 10:55:39 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ASM instance started

Total System Global Area 1135747072 bytes
Fixed Size                  2260728 bytes
Variable Size            1108320520 bytes
ASM Cache                  25165824 bytes
ORA-15110: no diskgroups mounted

SQL> select status from v$instance;
STATUS
------------------------
STARTED             

col description for a35
col process for a35
set linesize 120
select sid, serial#, process, name, description from v$session join v$bgprocess using(paddr);

col path for a45
col name for a30             
select group_number, disk_number, mount_status, name, path from v$asm_disk order by group_number, disk_number;
 GROUP_NUMBER DISK_NUMBER MOUNT_STATUS   NAME                           PATH
------------ ----------- -------------- ------------------------------ ---------------------------------------------
           0           0 CLOSED                                        /dev/mapper/ora_vg-lv_asm3
           0           1 CLOSED                                        /dev/mapper/ora_vg-lv_asm2
           0           2 CLOSED                                        /dev/mapper/ora_vg-lv_asm1

查看A机器的磁盘组信息:
select group_number, name, type, total_mb, free_mb from v$asm_diskgroup
 GROUP_NUMBER NAME                                                         TYPE           TOTAL_MB    FREE_MB
------------ ------------------------------------------------------------ ------------ ---------- ----------
           1 DATA1                                                        EXTERN            30708      29017

B机器创建ASM磁盘组DATA1:
select group_number, name, type, total_mb, free_mb from v$asm_diskgroup;
 no rows selected

CREATE DISKGROUP data1 EXTERNAL REDUNDANCY DISK '/dev/mapper/ora*';
Diskgroup created.

select group_number, name, type, total_mb, free_mb from v$asm_diskgroup;

GROUP_NUMBER NAME                                                         TYPE           TOTAL_MB    FREE_MB
------------ ------------------------------------------------------------ ------------ ---------- ----------
           1 DATA1                                                        EXTERN            30708      30654

至此,准备工作结束。

二、DG部署配置

2.1 primary database 配置

代码语言:javascript
复制
确保将数据库的force_logging打开,设置为归档模式,数据库闪回打开

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
+DATA1/jyzhao/datafile/system.256.874084601
+DATA1/jyzhao/datafile/sysaux.257.874084601
+DATA1/jyzhao/datafile/undotbs1.258.874084601
+DATA1/jyzhao/datafile/users.259.874084601

SQL> select force_logging from v$database;
FOR
---
NO

SQL> alter database force logging;
 Database altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.
 Total System Global Area 1620115456 bytes
Fixed Size                  2253704 bytes
Variable Size            1006636152 bytes
Database Buffers          603979776 bytes
Redo Buffers                7245824 bytes
Database mounted.
SQL> alter database archivelog;
 Database altered.

SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/product/11.2.0/db_1/dbs/arch
Oldest online log sequence     12
Next log sequence to archive   14
Current log sequence           14

$ mkdir -p /u01/app/oracle/product/11.2.0/db_1/dbs/arch

SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.

SQL> show parameter db_recover
 NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string
db_recovery_file_dest_size           big integer 0
SQL> alter system set db_recovery_file_dest_size=5G;
 System altered.

SQL> alter system set db_recovery_file_dest='/u01/app/oracle/product/11.2.0/db_1/dbs/arch';
 System altered.

SQL> select status from v$instance;
 STATUS
------------
MOUNTED
 SQL> alter database flashback on;
 Database altered.

按之前的规划设置数据库的参数

主要是db_unique_name, log_archive_config, log_archive_dest_1,  log_archive_dest_2, log_archive_format, fal_server, fal_client, standby_file_management的设置,standby logfile的添加,密码文件的创建。

代码语言:javascript
复制
alter system set db_unique_name='jyzhao' scope=spfile;  
alter system set log_archive_config='DG_CONFIG=(jyzhao,jyzhao_s)'  scope=spfile; 

alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/product/11.2.0/db_1/dbs/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jyzhao' scope=spfile;  
alter system set log_archive_dest_2='SERVICE=jyzhao_s ASYNC LGWR VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jyzhao_s' scope=spfile;

alter system set log_archive_format='arch_%r_%t_%s.arc' scope=spfile;
alter system set fal_server=jyzhao_s scope=spfile; 
alter system set fal_client=jyzhao scope=spfile; 
alter system set standby_file_management=AUTO; 
alter database add standby logfile group 4 size 50M; 
alter database add standby logfile group 5 size 50M; 
alter database add standby logfile group 6 size 50M; 
alter database add standby logfile group 7 size 50M; 

rm /u01/app/oracle/product/11.2.0/db_1/dbs/orapwjyzhao
orapwd file=$ORACLE_HOME/dbs/orapwjyzhao password=oracle entries=10 ignorecase=Y 

grid用户配置监听

--listener.ora

代码语言:javascript
复制
DGL =
   (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB)(PORT = 1521))
   ) 
  
SID_LIST_DGL =
   (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = jyzhao)
          (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
          (SID_NAME = jyzhao)    
        )    
        (SID_DESC =      
          (GLOBAL_DBNAME = jyzhao_dgmgrl)      
          (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)      
          (SID_NAME = jyzhao)
        )  
    )      
                     
ADR_BASE_DGL = /u01/app/grid

oracle用户配置tnsnames.ora

--tnsnames.ora

代码语言:javascript
复制
JYZHAO =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = jyzhao )
     )
   )   
JYZHAO_S =
   (DESCRIPTION =    
     (ADDRESS = (PROTOCOL = TCP)(HOST = JY-DBS)(PORT = 1521))    
     (CONNECT_DATA =      
       (SERVER = DEDICATED)      
       (SERVICE_NAME = jyzhao_s)
     ) 
   )  

grid用户重启监听:

代码语言:javascript
复制
lsnrctl stop dgl
lsnrctl start dgl

oracle用户测试连接:

代码语言:javascript
复制
sqlplus sys/oracle@jyzhao as sysdba
sqlplus sys/oracle@JY-DB/jyzhao_dgmgrl as sysdba
sqlplus sys/oracle@JY-DB/jyzhao as sysdba
 SQL> show parameter audi
 NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/jyzhao/a
                                                 dump
重启primary
shutdown immediate
startup

2.2 机器B:standby数据库配置

grid用户配置监听

--listener.ora

代码语言:javascript
复制
DGL =
   (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = JY-DBS)(PORT = 1521))
   ) 
  
SID_LIST_DGL =
   (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = jyzhao_s)
          (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
          (SID_NAME = jyzhao_s)    
        )    
        (SID_DESC =      
          (GLOBAL_DBNAME = jyzhao_s_dgmgrl)      
          (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)      
          (SID_NAME = jyzhao_s)
        )  
    )      
                     
ADR_BASE_DGL = /u01/app/grid

grid用户启动监听

$ lsnrctl start dgl

oracle用户配置tnsnames.ora

--tnsnames.ora

代码语言:javascript
复制
JYZHAO =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = jyzhao )
     )
   )   
JYZHAO_S =
   (DESCRIPTION =    
     (ADDRESS = (PROTOCOL = TCP)(HOST = JY-DBS)(PORT = 1521))    
     (CONNECT_DATA =      
       (SERVER = DEDICATED)      
       (SERVICE_NAME = jyzhao_s)
     ) 
   )  
代码语言:javascript
复制
echo "db_name=jyzhao" >> $ORACLE_HOME/dbs/initjyzhao_s.ora
echo $ORACLE_SID
 sqlplus / as sysdba
startup nomount
代码语言:javascript
复制
oracle用户测试连接  :
sqlplus sys/oracle@jyzhao as sysdba
sqlplus sys/oracle@jyzhao_s as sysdba
sqlplus sys/oracle@JY-DBS/jyzhao_s_dgmgrl as sysdba
sqlplus sys/oracle@JY-DBS/jyzhao_s as sysdba  

2.3 机器A操作 duplicate数据库到机器B

验证到机器B可以登录

$ sqlplus sys/oracle@jyzhao_s as sysdba

vi duplicate_dg.sql 

代码语言:javascript
复制
duplicate target database
for standby
from active database
DORECOVER
spfile
set db_unique_name='jyzhao_s'
set log_archive_dest_1='location=/u01/app/oracle/product/11.2.0/db_1/dbs/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=jyzhao_s'
set log_archive_dest_2='SERVICE=jyzhao ASYNC LGWR
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jyzhao'
set standby_file_management='AUTO'
set fal_server='jyzhao'
set fal_client='jyzhao_s'
set control_files='+DATA1'
set memory_target='0'
set sga_target='600M'; 
代码语言:javascript
复制
[oracle@JY-DB ~]$  rman target / auxiliary sys/oracle@jyzhaos cmdfile=duplicate_standby.sql
 Recovery Manager: Release 11.2.0.4.0 - Production on Mon Mar 16 23:21:37 2015
 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
 connected to target database: JYZHAO (DBID=2463175424)
connected to auxiliary database: JYZHAO (not mounted)
 RMAN> duplicate target database
2> for standby
3> from active database
4> DORECOVER
5> spfile
6> set db_unique_name='jyzhao_s'
7> set log_archive_dest_1='location=/u01/app/oracle/product/11.2.0/db_1/dbs/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
8> DB_UNIQUE_NAME=jyzhao_s'
9> set log_archive_dest_2='SERVICE=MACDBN ASYNC LGWR
10> VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jyzhao'
11> set standby_file_management='AUTO'
12> set fal_server='jyzhao'
13> set fal_client='jyzhao_s'
14> set control_files='+DATA1'
15> set memory_target='0'
16> set sga_target='600M';
17>
Starting Duplicate Db at 16-MAR-15
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=111 device type=DISK
……
Recovery Manager complete.
[oracle@JY-DB ~]$ 

2.4 B机器 srvctl add数据库jyzhao_s

注:开始_s有问题,是因为添加指定的参数不足:

代码语言:javascript
复制
srvctl add database -d jyzhao_s -o /u01/app/oracle/product/11.2.0/db_1 -p  +DATA1/JYZHAO_S/spfilejyzhao_s.ora -n jyzhao -i jyzhao_s

srvctl modify database -d jyzhao_s -r PHYSICAL_STANDBY

三、DG切换测试

3.1 手动switchover

1主库切换成standby,启动到mount

代码语言:javascript
复制
select OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS from v$database;
代码语言:javascript
复制
alter database commit to switchover to physical standby;

2.备库切换成primary,启动到open

代码语言:javascript
复制
select OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS from v$database;
代码语言:javascript
复制
alter database commit to switchover to primary;

3.新的备库执行日志应用

代码语言:javascript
复制
alter database recover managed standby database using current logfile disconnect from session;

3.2 Data Guard Broker 快速switchover

代码语言:javascript
复制
SQL> show parameter dg_broker_start
 NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start                      boolean     FALSE
SQL> alter system set dg_broker_start = true;
 System altered.
 SQL> show parameter dg_broker_start
 NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start                      boolean     TRUE

配置dgmgrl

代码语言:javascript
复制
create CONFIGURATION jydb as primary database is jyzhao CONNECT IDENTIFIER IS jyzhao;

add database  jyzhao_s as CONNECT IDENTIFIER IS jyzhao_s MAINTAINED AS  PHYSICAL;    

enable configuration;    

show configuration;    

switchover to jyzhao_s;     

switchover to jyzhao;          

show database verbose jydb 

References

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前期准备
    • 1.1. A机器打包拷贝/u01/app到B机器(包含了grid和oracle软件安装目录)
      • 1.2. B机器配置用户,系统参数,安装依赖包,用户环境变量,ASM磁盘
      • 二、DG部署配置
        • 2.1 primary database 配置
          • 2.2 机器B:standby数据库配置
            • 2.3 机器A操作 duplicate数据库到机器B
              • 2.4 B机器 srvctl add数据库jyzhao_s
              • 三、DG切换测试
                • 3.1 手动switchover
                  • 3.2 Data Guard Broker 快速switchover
                  • References
                  相关产品与服务
                  数据库
                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档