Oracle数据库之dataguard部署

信息规划

IP

数据库实例名

数据库unique名称

主库

192.168.200.18

cc

cc

备库

192.168.200.125

cc

dr_cc

一、配置监听和服务名解析

配置$ORACLE_HOME/network/admin/listener.ora:(数据库已开始就已经有了)

LISTENER_CC =
(DESCRIPTION_LIST =
   (DESCRIPTION =
       (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.18)(PORT = 30921))
       )
    )
)

SID_LIST_LISTENER_CC =
(SID_LIST =
     (SID_DESC =
           (GLOBAL_DBNAME = cc)
           (ORACLE_HOME = /oracle/product/19c)
           (SID_NAME = cc)
      )
)

重启监听使配置生效:(在有没有oracle数据库前后都可以部署)

lsnrctl start LISTENER_CC

lsnrctl status LISTENER_CC

配置$ORACLE_HOME/network/admin/tnsnames.ora:(修改这个不需要重启监听)

CC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.18)(PORT = 30921))
    )
  (CONNECT_DATA =
    (SERVER = DEDICATED)
      (SERVICE_NAME = cc)
    )
  )



DR_CC = 
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.125)(PORT = 30921))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cc)
    )
  )

验证服务名解析:

tnsping cc
tnsping dr_cc


oracle@db01[/oracle/product/19c/network/admin]$ tnsping cc

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 15-DEC-2023 10:51:09

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.18)(PORT = 30921))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cc)))
OK (10 msec)
oracle@db01[/oracle/product/19c/network/admin]$ tnsping dr_cc

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 15-DEC-2023 10:51:20

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.125)(PORT = 30921)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dr_cc)))
TNS-12541: TNS:no listener



第一个输出是成功的连接测试,显示了以下信息:

使用的参数文件:没有指定特定的参数文件。
使用了TNSNAMES适配器来解析别名。
尝试连接的目标是 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 30921))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cc)))。
第二个输出是连接测试失败的结果,显示了以下信息:

使用的参数文件:没有指定特定的参数文件。
使用了TNSNAMES适配器来解析别名。
尝试连接的目标是 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 30921)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dr_cc)))。
错误消息:TNS-12541: TNS:no listener。这意味着在指定的主机和端口上没有监听器正在运行,无法建立连接。

这个时候是因为备机上的cc实例还没有起来,等起来了就变了。

二、查看主库归档和附加日志配置

1、如下图,均未开启

sqlplus / as sysdba
SQL> select log_mode,force_logging from v$database;

2、开启归档模式

SQL> shutdown immediate; (立即关闭数据库)
SQL> startup mount; (启动实例并加载数据库,但不打开)
SQL> alter database archivelog; (更改数据库为归档模式)
SQL> alter database open; (打开数据库)
SQL> alter system archive log start; (启用自动归档)
SQL> select log_mode,force_logging from v$database; (查看)

3、开启主库附加日志

SQL> alter database force logging;
SQL> select log_mode,force_logging from v$database; (查看)

alter database set standby nologging for data availability; --高可用模式
alter database set standby nologging for load performance; --性能模式

4、创建standby日志组

在主库上添加standby日志组,日志大小与online日志保持一致,数量要比online日志多一组。

set lines 200
col member for a80
--查看日志文件
select * from v$logfile;
--查看日志组数量及大小
select thread#, group#, bytes/1024/1024 size_mb from v$log;

THREAD#   GROUP#    SIZE_MB
-------   ------    -------
     1        1        2048
     1        2        2048
     1        3        2048

select group#,status,type,member from V$logfile

SQL> select group#,status,type,member from V$logfile;

    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         1         ONLINE
/ccredo/CC/redo1_1.dbf

         1         ONLINE
/ccredo/CC/redo1_2.dbf

         2         ONLINE
/ccredo/CC/redo2_1.dbf


    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
         2         ONLINE
/ccredo/CC/redo2_2.dbf

         3         ONLINE
/ccredo/CC/redo3_1.dbf

         3         ONLINE
/ccredo/CC/redo3_2.dbf


6 rows selected.


根据上面SQL的结果可知当前实例有3个日志组,所以至少需要创建4个standby日志组。

# 添加附加日志
SQL> alter database add standby logfile group 4 ('/ccredo/CC/stredo04.log') size 2048M;;
SQL> alter database add standby logfile group 5 ('/ccredo/CC/stredo05.log') size 2048M;;
SQL> alter database add standby logfile group 6 ('/ccredo/CC/stredo06.log') size 2048M;;
SQL> alter database add standby logfile group 7 ('/ccredo/CC/stredo07.log') size 2048M;;

alter database add standby logfile thread 1 group 4 ('/ccredo/CC/redo4_1','/ccredo/CC/redo4_2') size 2048M;
alter database add standby logfile thread 1 group 5 ('/ccredo/CC/redo5_1','/ccredo/CC/redo5_2') size 2048M;
alter database add standby logfile thread 1 group 6 ('/ccredo/CC/redo6_1','/ccredo/CC/redo6_2') size 2048M;
alter database add standby logfile thread 1 group 7 ('/ccredo/CC/redo7_1','/ccredo/CC/redo7_2') size 2048M;

再次检查日志文件和standby日志:

select * from v$logfile;
select thread#, group#, sequence#, archived, status from v$standby_log;
--archived列的值应为YES,status列的值为UNASSIGNED1

从Oracle Database 18c开始,引入了以下两个新的nologging子句,它们可以执行非日志记录操作,同时可以使ActiveData Guard备用数据库接收到所有数据,从而防止FORCE 方式生成大量重做日志导致性能下降。

STANDBY NOLOGGING FOR DATA AVAILABILITY 模式使批量加载操作通过其自身与备用数据库的连接将加载的数据发送到每个备用数据库。提交会延迟,直到所有ActiveData Guard备用数据库通过 recover 方式将数据应用完成。

SQL> alterdatabase set standby nologging for data availability;

SQL> selectlog_mode,force_logging from v$database;

STANDBY NOLOGGING FOR LOAD PERFORMANCE模式与先前的模式类似,不同之处在于,如果网络无法跟上数据加载到主数据库的速度,则加载过程可以停止将数据发送到备用数据库。在此模式下,备用数据库可能缺少数据,但每个Active Data Guard备用数据库都会在recover过程中自动从主数据库中提取数据。

SQL> alterdatabase set standby nologging for load performance;

SQL> selectlog_mode,force_logging from v$database;

三、修改主库参数

1、列出主备库的DB_UNIQUE_NAME参数

默认情况下,定义该参数能确保主备库数据库能够互相识别对方 (通过show parameter name查询)


--配置DG主备库
alter system set log_archive_config='DG_CONFIG=(cc,dr_cc)' scope=both;

--配置本地归档路径(因为archive log list;命令显示的是这个路径)这个路径等开启归档后检查一下
--确定一下这个路径是不是足够大,这个目录会增长
alter system set log_archive_dest_1='LOCATION=/archcc VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=cc' scope=both;

--配置备库归档
alter system set log_archive_dest_2='SERVICE=dr_cc LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dr_cc' scope=both;

alter system set log_archive_dest_state_1=ENABLE scope=both;
alter system set log_archive_dest_state_2=ENABLE scope=both;

alter system set FAL_SERVER=dr_cc scope=both;
alter system set FAL_CLIENT=cc scope=both;

alter system set standby_file_management=auto;

--配置主备库数据文件名称转换关系 
alter system set db_file_name_convert='/ccdata/DR_CC/', '/ccdata/CC/' scope=spfile;

--配置主备库日志文件名称转换关系
alter system set log_file_name_convert='/ccredo/DR_CC/', '/ccredo/CC/' scope=spfile;

2、生成参数文件和密码文件:



SQL> create pfile='/oracle/initcc.ora' from spfile;

orapwd file=$ORACLE_HOME/dbs/orapwcc password="1jian8Shu)" force=y

3、将参数文件和密码文件拷贝到备库

scp /oracle/initcc.ora oracle@192.168.。。:$ORACLE_HOME/dbs/
scp $ORACLE_HOME/dbs/orapwcc oracle@192.168..:$ORACLE_HOME/dbs/

四、备库配置

在standby服务器上仅安装Oracle软件(不安装数据库实例)。

安装Oracle软件

1、vi /etc/profile

新增如下:

# set PS1 environment
if [ $UID -eq 0 ]; then
export PS1=$LOGNAME@`hostname`['$PWD']#" " 
else
export PS1=$LOGNAME@`hostname`['$PWD']'$'" "
fi
# set LANG
export LANG=C
# set histimeformat environment
export HISTTIMEFORMAT='%F %T '

# Record logging and command
export PROMPT_COMMAND='{ z=`history 1 | { read x y; echo $y; }`; echo -n $z ::; who am i; } >> /var/log/cmdlog/`id -un`_`who am i 2>/dev/null | awk -F[\(\)] "{if(\\$2)print \\$2;else print \"local\"}"`_`date +%Y%m%d`.log'
readonly PROMPT_COMMAND

# set CORE NO SHM
echo  0x1 > /proc/self/coredump_filter

# set oracle environment
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 65536 -n 65536
fi
umask 027
fi

source /etc/profile

2、关闭selinux和关闭防火墙

vi /etc/selinux/config
SELINUX=disabled
systemctl stop firewalld
systemctl disable firewalld

3、配置系统参数文件

检查共享内存参数
vi /etc/sysctl.conf
kernel.shmmax=physical RAM #通过free -b查询可得
kernel.shmmni=4096
kernel.shmall = physical RAM size / pagesize
kernel.panic_on_oops=1 #Oracle Linux 7安装oracle12cR2需要设置
sysctl -p

4、创建oracle用户和oracle所需要的文件系统

groupadd -g 1501 dba
useradd -u 1501 -g dba -d /oracle oracle
passwd oracle

--示例--
lvcreate -L 10G -n lvexpcc vgdata  
mkfs.xfs /dev/vgdata/lvexpcc
echo "/dev/mapper/vgdata-lvexpcc /expcc xfs defaults 0 0" >>/etc/fstab
mkdir /expcc
mount /expcc
--权限--
chown -R oracle:dba /oracle 

--扩容--
lvextend -L +15G /dev/mapper/vgdata-lvoracle
xfs_growfs /dev/mapper/vgdata-lvoracle

5、编辑oracle用户环境变量

su - oracle
vi /home/oracle/.bash_profile

export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export LIBPATH=$ORACLE_HOME/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
stty erase ^h
umask 027

6、安装依赖

yum -y install binutils.x86_64 compat-libcap1.x86_64 compat-libstdc++-33.i686 
yum -y install compat-libstdc++-33.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 ksh.x86_64 

yum -y install  libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64 libX11.i686 libX11.x86_64 libXau.i686 libXau.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 
yum -y install libstdc++-devel.i686 libstdc++-devel.x86_64 libXi.i686 libXi.x86_64 libXtst.i686  libXtst.x86_64 libxcb.i686 libxcb.x86_64 
yum -y install make.x86_64 sysstat.x86_64 nfs-utils.x86_64 net-tools.x86_64 smartmontools.x86_64 perl libnsl glibc-devel psmisc

7、tar包安装数据库软件

1、上传tar包并解压
tar -xzf oracle19.tar.gz -C /oracle
(解压完后会多一层oracle目录,需将里面的内容移出来)

8、检查是否安装成功 

su - oracle 
sqlplus #需要确认命令存在

创建数据库目录

这边根据自己的参数文件创建(数据文件) /ccdata/DR_CC/

mkdir -p /oradata/BANGKOKDG/onlinelog (日志) /ccredo/DR_CC

配置监听和服务名解析

配置$ORACLE_HOME/network/admin/listener.ora:

LISTENER_CC =
(DESCRIPTION_LIST =
   (DESCRIPTION =
       (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.125)(PORT = 30921))
       )
    )
)

SID_LIST_LISTENER_CC =
(SID_LIST =
     (SID_DESC =
           (GLOBAL_DBNAME = cc)
           (ORACLE_HOME = /oracle/product/19c)
           (SID_NAME = cc)
      )
)

配置$ORACLE_HOME/network/admin/tnsnames.ora:

CC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.18)(PORT = 30921))
    )
  (CONNECT_DATA =
    (SERVER = DEDICATED)
      (SERVICE_NAME = cc)
    )
  )


DR_CC = 
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.125)(PORT = 30921))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cc)
    )
  )

修改参数文件

修改从主库拷贝过来的参数文件$ORACLE_HOME/dbs/initbangkok.ora。主要是对调主备库名位置。下面是有改动的部分。


*.db_file_name_convert='/oradata/BANGKOK/datafile','/oradata/BANGKOKDG/datafile'
*.db_name='cc'
*.db_unique_name='dr_cc'

*.fal_client='dr_cc'
*.fal_server='cc'

*.log_archive_config='DG_CONFIG=(cc,dr_cc)'
*.log_archive_dest_1='LOCATION=/archcc VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dr_cc'
*.log_archive_dest_2='SERVICE=cc LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=cc'


从目标到本地
*.log_file_name_convert='/ccredo/CC/','/ccredo/DR_CC/'

确保你的oracle备机中有以下文件涉及到的目录,再启动:

cc.__db_cache_size=10603200512
cc.__oracle_base='/oracle'#ORACLE_BASE set from environment
cc.__shared_io_pool_size=134217728
*._cursor_obsolete_threshold=1024
*._optimizer_use_feedback=FALSE
*._resource_manager_always_off=TRUE
*._undo_autotune=FALSE
*.archive_lag_target=1200
*.audit_file_dest='/oracle/admin/dr_cc/adump'
*.audit_trail='NONE'
*.compatible='19.0.0'
*.control_file_record_keep_time=31
*.control_files='/ccdata/DR_CC/control01.dbf','/ccdata/DR_CC/control02.dbf','/ccredo/DR_CC/control03.dbf'
*.db_block_size=8192
*.db_cache_size=10240m
*.db_file_name_convert='/ccdata/CC/','/ccdata/DR_CC/'
*.db_files=8192
*.db_name='cc'
*.db_unique_name='dr_cc'
*.deferred_segment_creation=FALSE
*.diagnostic_dest='/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ccXDB)'
*.event='10949 trace name context forever:28401 trace name context forever,level 1:44951 trace name context forever, level 1024'
*.fal_client='DR_CC'
*.fal_server='CC'
*.fast_start_mttr_target=300
*.fast_start_parallel_rollback='HIGH'
*.filesystemio_options='SETALL'
*.java_pool_size=64m
*.large_pool_size=512m
*.log_archive_config='DG_CONFIG=(cc,dr_cc)'
*.log_archive_dest_1='LOCATION=/archcc VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dr_cc'
*.log_archive_dest_2='SERVICE=cc LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=cc'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='cc_%t_%s_%r.arc'
*.log_buffer=268435456
*.log_checkpoints_to_alert=TRUE
*.log_file_name_convert='/ccredo/CC/','/ccredo/DR_CC/'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=2000
*.optimizer_adaptive_plans=FALSE
*.parallel_execution_message_size=16384
*.pga_aggregate_target=4096m
*.processes=6000
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_manager_plan=''
*.session_cached_cursors=200
*.session_max_open_files=20
*.shared_pool_size=4096m
*.standby_file_management='AUTO'
*.streams_pool_size=536870912
*.temp_undo_enabled=FALSE
*.undo_retention=18000
*.undo_tablespace='UNDOTBS1'

重命名参数文件

参数文件在/orcle下

使用参数文件启动数据库为NOMOUNT

利用上面修改好的参数文件,启动备库到NOMOUNT状态:

$ export ORACLE_SID=cc
$ sqlplus / as sysdba
SQL> create spfile from pfile='/oracle/product/19c/dbs/initcc.ora';
--启动备库至nomount
SQL> startup nomount;

ORACLE instance started.

Total System Global Area 1.6475E+10 bytes
Fixed Size                 12454592 bytes
Variable Size            5435817984 bytes
Database Buffers         1.0737E+10 bytes
Redo Buffers              289533952 bytes

启动监听:

lsnrctl start  LISTENER_CC
lsnrctl status LISTENER_CC

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.200.125)(PORT=30921)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_CC
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                15-DEC-2023 15:54:04
Uptime                    0 days 0 hr. 0 min. 21 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/product/19c/network/admin/listener.ora
Listener Log File         /oracle/diag/tnslsnr/openstack_droracle/listener_cc/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.200.125)(PORT=30921)))
Services Summary...
Service "cc" has 1 instance(s).
  Instance "cc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

验证服务名解析:

tnsping cc
tnsping dr_cc 
--在rman中会用到---

oracle@openstack_droracle[/oracle/product/19c/network/admin]$ tnsping cc
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 15-DEC-2023 15:55:37
Copyright (c) 1997, 2019, Oracle.  All rights reserved.
Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.18)(PORT = 30921))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cc)))
OK (0 msec)
oracle@openstack_droracle[/oracle/product/19c/network/admin]$ tnsping dr_cc
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 15-DEC-2023 15:55:45

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.125)(PORT = 30921)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cc)))
OK (0 msec)

主备测试一下
$ sqlplus sys/"1jian8Shu)"@cc as sysdba
$ sqlplus sys/'1jian8Shu)'@dr_cc as sysdba    #@之后是tns的名字


 

五、使用RMAN duplicate主库到备库

检查数据库名称:

show parameter name

连接RMAN并duplicate主库到备库:(主库操作)

su - oracle
rman target sys/"password"@cc auxiliary sys/"password"@dr_cc nocatalog
--rman表示要运行RMAN工具,target sys/"password"@cc表示指定目标数据库的连接信息,其中sys是用户名,"password"是密码,
--cc是目标数据库的服务名。auxiliary sys/"password"@dr_cc表示指定辅助数据库的连接信息,
--其中sys是用户名,"password"是密码,dr_cc是辅助数据库的服务名tns文件设置的。
--nocatalog表示不使用RMAN目录进行备份和恢复操作。
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Dec 15 16:06:02 2023
Version 19.3.0.0.0

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

connected to target database: CC (DBID=2357588639)
using target database control file instead of recovery catalog
connected to auxiliary database: CC (not mounted)

RMAN> 

RMAN> duplicate target database for standby from active database nofilenamecheck;


--开始数据复制进程----
  datafile 24 switched to datafile copy
input datafile copy RECID=24 STAMP=1155658526 file name=/ccdata/DR_CC/idx_cpc_01.dbf
datafile 25 switched to datafile copy
input datafile copy RECID=25 STAMP=1155658526 file name=/ccdata/DR_CC/idx_crm_01.dbf
datafile 26 switched to datafile copy
input datafile copy RECID=26 STAMP=1155658526 file name=/ccdata/DR_CC/tab_spc_002.dbf
datafile 27 switched to datafile copy
input datafile copy RECID=27 STAMP=1155658526 file name=/ccdata/DR_CC/idx_spc_002.dbf
datafile 28 switched to datafile copy
input datafile copy RECID=28 STAMP=1155658526 file name=/ccdata/DR_CC/tab_spc_003.dbf
Finished Duplicate Db at 15-DEC-23
--看到这个就代表进程正常结束

六、验证同步

复制完成后检查备库状态,进入备库验证角色信息

archive log list;
--归档模式已打开

select database_role, protection_mode, protection_level, open_mode from v$database;
--数据库角色应为PHYSICAL STANDBY,打开模式为MOUNTED

SQL> select database_role from v$database;
SQL> select instance_name from v$instance;


开启日志应用进程:
SQL> alter database recover managed standby database using current logfile disconnect from session;

SQL> select process,block#,blocks ,status ,sequence# from v$managed_standby;

PROCESS       BLOCK#     BLOCKS STATUS        SEQUENCE#
--------- ---------- ---------- ------------ ----------
ARCH               0          0 CONNECTED             0
DGRD               0          0 ALLOCATED             0
DGRD               0          0 ALLOCATED             0
ARCH               0          0 CONNECTED             0
ARCH               0          0 CONNECTED             0
ARCH               0          0 CONNECTED             0
RFS                0          0 IDLE                  0
RFS             1824          2 IDLE              15600
RFS                0          0 IDLE                  0
MRP0            1825    4194304 APPLYING_LOG      15600

--主库的ARCH进程负责向备库发送日志;
--备库的RFS进程负责接收日志,没有此进程则备库无法接收,说明dataguard没有搭建成功;
--MRP0是将接收到的日志应用到数据库中的进程。主库切换日志后,MRP0的序列号会变,主
--库的LNS进程序列号与备库的MRP0一致

此时主库状态:
SQL> select process,block#,blocks ,status ,sequence# from v$managed_standby;

PROCESS       BLOCK#     BLOCKS STATUS        SEQUENCE#
--------- ---------- ---------- ------------ ----------
DGRD               0          0 ALLOCATED             0
ARCH               0          0 CONNECTED             0
DGRD               0          0 ALLOCATED             0
ARCH               1       2790 CLOSING           15599
ARCH           10240       1653 CLOSING           15598
ARCH               1       1860 CLOSING           15596
LNS                0          0 OPENING           15597
DGRD               0          0 ALLOCATED             0
LNS             1909          2 WRITING           15600

9 rows selected.

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /archcc
Oldest online log sequence     15598
Next log sequence to archive   15600
Current log sequence           15600  ***这里和MRP0的序列号相同

主库切换归档日志验证同步

主库 sqlplus>alter system switch logfile;
SQL>  archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /archcc
Oldest online log sequence     15599
Next log sequence to archive   15601
Current log sequence           15601

--那么备库此时状态应该是:

SQL> select process,block#,blocks ,status ,sequence# from v$managed_standby;

PROCESS       BLOCK#     BLOCKS STATUS        SEQUENCE#
--------- ---------- ---------- ------------ ----------
ARCH               0          0 CONNECTED             0
DGRD               0          0 ALLOCATED             0
DGRD               0          0 ALLOCATED             0
ARCH               0          0 CONNECTED             0
ARCH               0          0 CONNECTED             0
ARCH            2048        368 CLOSING           15600
RFS                0          0 IDLE                  0
RFS              145          2 IDLE              15601
RFS                0          0 IDLE                  0
MRP0             146    4194304 APPLYING_LOG      15601

七、清理dataguard配置和停掉dr环境的实例
 

主库:

alter system set log_archive_dest_state_2 = 'defer';
alter system reset db_file_name_convert scope=spfile;
alter system reset log_file_name_convert scope=spfile;

备库:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
#主库没有LNS###
SQL> select process,block#,blocks ,status ,sequence# from v$managed_standby;

PROCESS       BLOCK#     BLOCKS STATUS        SEQUENCE#
--------- ---------- ---------- ------------ ----------
DGRD               0          0 ALLOCATED             0
ARCH            2048       1814 CLOSING           15940
DGRD               0          0 ALLOCATED             0
ARCH           10240       1284 CLOSING           15938
ARCH           51200       1847 CLOSING           15939
ARCH            2048       2021 CLOSING           15936
DGRD               0          0 ALLOCATED             0
DGRD               0          0 ALLOCATED             0

8 rows selected.

SQL> show parameter log_archive_dest_state_2;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2             string      defer
log_archive_dest_state_20            string      enable
log_archive_dest_state_21            string      enable
log_archive_dest_state_22            string      enable
log_archive_dest_state_23            string      enable
log_archive_dest_state_24            string      enable
log_archive_dest_state_25            string      enable
log_archive_dest_state_26            string      enable
log_archive_dest_state_27            string      enable
log_archive_dest_state_28            string      enable
log_archive_dest_state_29            string      enable

删除实例:

sqlplus / as sysdba
SQL> shutdown immediate;

--确认数据库实例已停止:使用以下命令检查数据库实例是否已完全停止--
ps -ef | grep pmon

--删除---
find $ORACLE_BASE/ -name cc
find $ORACLE_BASE/ -name dr_dr_cc
  • 37
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值