OracleDataGuard简单配置

OracleDataGuard简单配置

主要转载 白昼ron:https://blog.csdn.net/xiezuoyong/article/details/83862885

1、配置

虚拟机设置ip段(仅主机模式)
192.168.6.0
主库:
系统:centos7
数据库:11.2.0.4
主机名:ora11gp
ip:192.168.6.130
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_SID=orcl
归档模式:是
数据库安装:安装数据库软件、创建监听、并建库

从库:

系统:centos7
数据库:11.2.0.4
主机名:ora11gs
ip:192.168.6.131
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_SID=orcl
归档模式:否
数据库安装:安装数据库软件、创建监听、但不建库

2、主库先安装数据库软件,然后克隆虚拟机到备库。
(1)修改主库主机名为ora11gp
(2)在hosts文件中添加192.168.6.130 ora11gp
(3)在hosts文件中添加192.168.6.131 ora11gs
(4)使用root用户创建/u01目录并授权给oracle用户

mkdir /u01
chown oracle:oinstall /u01

(5)上传oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm到服务器执行

rpm -ivh oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm

(6)以上命令执行会显示缺少的包

	compat-libcap1 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要
	compat-libstdc++-33 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要
	gcc 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要
	gcc-c++ 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要
	glibc-devel 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要
	kernel-uek 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要
	ksh 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要
	libaio-devel 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要
	libstdc++-devel 被 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64 需要

(7)使用yum命令安装上面的包
(8)以下包会缺少

compat-libstdc++-33
kernel-uek

(9)其中compat-libstdc+±33需要自己去oraclelinux的rpm库下载。kernel-uek暂时不管
(10)上传安装包到服务器这个安装包是我下载1to7所有的zip解压后又压缩的合集包

p13390677_112040_Linux-x86-64.zip

(11)上传到/home/oracle目录解压

unzip p13390677_112040_Linux-x86-64.zip -d install

(12)删除原zip包节省空间

rm -rf p13390677_112040_Linux-x86-64.zip

(13)进入/home/oracle/install/database 目录

cd /home/oracle/install/database

(14)执行下面命令设置可运行权限

chmod -R +x .  (后面有个点,表示当前目录)

(15)执行下面命令查看本机物理机的ip或主机名

who -m  (其实就是看你连接服务器的ip)

(16)输入下面命令设置x11服务器(前提是安装xmanager,启动Xmanager - Passive;或者安装mobaxterm打开x11服务器)

export DISPLAY=192.168.6.1:0.0   (oracle用户执行)

(17)打开另一个shell界面,用root创建下面目录(oracle不这样做可能安装界面乱码,或者设置英文安装目录也可以)

mkdir -p /usr/share/fonts/zh_CN/TrueType   (root用户执行,下面复制那个zysong.ttf文件也是root用户,
目的是添加中文字体,要不然安装界面无法显示中文)

(18)在window系统中打开字体设置,找到宋体字体文件或者网上下载SIMSUN.TTC。修改名称为zysong.ttf上传到/usr/share/fonts/zh_CN/TrueType目录
(19)在刚才的oracle用户界面执行以下命令打开安装图形界面

./runInstaller

(20)在几次弹出的窗口都点击“是”
(21)安装基本选下一步。其中选择安装基目录时/u01/app/oracle 选择仅安装数据库软件

(22)检测时显示缺少以下两个包

elfutils-libelf-devel
pdksh

(23)使用以下命令安装

yum install elfutils-libelf-devel

(24)pdksh需要自己去oraclelinux5系统中下载,这个其实和ksh是一个东西并且ksh更新,只是因为oracle11g安装包中的检测程序没有更新。不影响使用,如果有强迫症可以自己下载rpm包使用命令


rpm -ivh 包名.rpm --nodeps安装

(25)在页面点击重新检测则全部通过
(26)点击安装。
(27)过一会出现ins_emagent.mk的错误
(28)重新打开一个界面,用oracle用户登录执行下面命令

vim /u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk

(29)将下面内容修改

$(MK_EMAGENT_NMECTL)修改为下面的。记得之间有空格并且后面的11是数字1
$(MK_EMAGENT_NMECTL) -lnnz11

(30)在安装界面点击重试即可
(31)过一会弹出执行root脚本。使用root用户登录执行即可

/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh

(32)数据软件安装成功
(33)设置以下环境变量到oracle用户

vim ~/.bash_profile
添加下面内容
################oracle##############
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
################oracle##############

(34)关闭服务器(这是虚拟机我可以关闭准备直接克隆,如果是物理服务器最好自己安装)

poweroff

(35)克隆链接克隆为备机
(36)启动备机系统
(37)修改ip为192.168.6.131
(38)修改主机名为ora11gs
(39)启动主库服务器
(40)登录主库oracle用户设置x11

su - oracle
export DISPLAY=192.168.6.1:0.0

(41)使用下面目录建立监听

netca

后面直接选择建立监听全部下一步完成即可

(42)输入命令dbca创建数据库,数据库名orcl其他全部下一步,最后点击完成

dbca

(43)等待创建完成
(44)登录

sqlplus / as sysdba

(45)输入下面命令查看当前是什么模式

SQL> archive log list;   (这个不是归档模式)
Database log mode	       No Archive Mode
Automatic archival	       Disabled
Archive destination	       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     3
Current log sequence	       5
SQL> 

(46)输入这个命令

shutdown immediate;
startup mount;

(47)修改为归档模式

 alter database archivelog;
 打开数据库
alter database open;
查看是否开启归档
archive log list;

(48)这是已经开启

SQL> archive log list;
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       /u01/app/oracle/oradata/orcl/archivelog
Oldest online log sequence     6
Next log sequence to archive   8
Current log sequence	       8
SQL> 

(49)以下内容基本来自(白昼ron:https://blog.csdn.net/xiezuoyong/article/details/83862885 我只是实践了一下)
(50)强制日志模式

alter database force logging;

(51)查询如下

SQL> select name,log_mode,force_logging from v$database;
NAME	  LOG_MODE     FOR
--------- ------------ ---
ORCL	  ARCHIVELOG   YES
SQL> 

(52)创建standby redolog日志组
(53)参考

1:standby redo log的文件大小与primary 数据库online redo log 文件大小相同
2:standby redo log日志文件组的个数依照下面的原则进行计算:
       Standby redo log组数公式>=(每个instance日志组个数+1)*instance个数
       假如只有一个节点,这个节点有三组redolog,
       所以Standby redo log组数>=(3+1)*1 == 4
    所以至少需要创建4组Standby redo log

(54)查看当前线程与日志组的对应关系及日志组的大小

SQL> select thread#,group#,bytes/1024/1024 from v$log;

   THREAD#     GROUP# BYTES/1024/1024
---------- ---------- ---------------
	 1	    1		   50
	 1	    2		   50
	 1	    3		   50

(55)如上,这里有三组redo log,所以至少需要创建4组Standby redo log,大小均为50M:

alter database add standby logfile group 4('/u01/app/oracle/oradata/orcl/standbyredo01.log') size 50m;
alter database add standby logfile group 5('/u01/app/oracle/oradata/orcl/standbyredo02.log') size 50m;
alter database add standby logfile group 6('/u01/app/oracle/oradata/orcl/standbyredo03.log') size 50m;
alter database add standby logfile group 7('/u01/app/oracle/oradata/orcl/standbyredo04.log') size 50m;

(56)查看standby 日志组的信息

SQL> select group#,sequence#,status, bytes/1024/1024 from v$standby_log;

    GROUP#  SEQUENCE# STATUS	 BYTES/1024/1024
---------- ---------- ---------- ---------------
	 4	    0 UNASSIGNED	      50
	 5	    0 UNASSIGNED	      50
	 6	    0 UNASSIGNED	      50
	 7	    0 UNASSIGNED	      50

(57)创建主库密码文件


[oracle@ora11gp ~]$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle force=y
[oracle@ora11gp ~]$ 

(58)配置spfile文件
(59)查看spfile的路径

SQL> show parameter spfile;     

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 /u01/app/oracle/product/11.2.0
						 /dbhome_1/dbs/spfileorcl.ora
SQL> 

(60)用spfile创建一个pfile,用于修改

SQL> create pfile='/tmp/initorcl.ora' from spfile;

File created.

SQL> 

(61)修改pfile文件

vim /tmp/initorcl.ora

######原内容######
orcl.__db_cache_size=637534208
orcl.__java_pool_size=16777216
orcl.__large_pool_size=33554432
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=637534208
orcl.__sga_target=956301312
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=234881024
orcl.__streams_pool_size=16777216
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=1580204032
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'

######原内容######


######修改后的内容##########
orcl.__db_cache_size=637534208
orcl.__java_pool_size=16777216
orcl.__large_pool_size=33554432
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=637534208
orcl.__sga_target=956301312
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=234881024
orcl.__streams_pool_size=16777216
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=1580204032
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.db_unique_name='orclpr'
*.fal_client='orclpr'
*.fal_server='orcldg'
*.standby_file_management='AUTO'
*.log_archive_config='DG_CONFIG=(orclpr,orcldg)'
*.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archivelog'
*.log_archive_dest_2='SERVICE=orcldg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
######修改后的内容##########

(62)复制pfile文件到spfile

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> create spfile from pfile='/tmp/initorcl.ora';

File created.

SQL> startup;
ORACLE instance started.

Total System Global Area 1586708480 bytes
Fixed Size		    2253624 bytes
Variable Size		  973081800 bytes
Database Buffers	  603979776 bytes
Redo Buffers		    7393280 bytes
Database mounted.
Database opened.
SQL> 

(63)修改监听文件,添加静态监听

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )


ADR_BASE_LISTENER = /u01/app/oracle
SAVE_CONFIG_ON_STOP_LISTENER = ON

(64)重启监听服务

lsnrctl stop
lsnrctl start

(65)编辑网络服务名配置文件tnsnames.ora

vi $ORACLE_HOME/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

orcldg =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ora11gs)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


orclpr =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ora11gp)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

(66)在备库使用netca命令配置监听
(67)tnsping测试

[oracle@ora11gp orcl]$ tnsping orcldg
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 28-APR-2019 15:59:28
Copyright (c) 1997, 2013, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ora11gs)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (0 msec)
[oracle@ora11gp orcl]$ 

(68)备库配置
(69)将主库中的密码文件、pfile文件、监听文件复制到备库

[oracle@ora11gp ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs
[oracle@ora11gp dbs]$ scp orapworcl 192.168.6.131:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/
oracle@192.168.6.131's password: 
orapworcl                                                                             100% 1536   488.5KB/s   00:00    
[oracle@ora11gp dbs]$ scp /tmp/initorcl.ora 192.168.6.131:/tmp/
oracle@192.168.6.131's password: 
initorcl.ora                                                                          100% 1380   621.9KB/s   00:00    
[oracle@ora11gp dbs]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin
[oracle@ora11gp admin]$ scp listener.ora 192.168.6.131:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/
oracle@192.168.6.131's password: 
listener.ora                                                                          100%  582   619.3KB/s   00:00    
[oracle@ora11gp admin]$ scp tnsnames.ora 192.168.6.131:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/
oracle@192.168.6.131's password: 
tnsnames.ora                                                                          100%  504   503.2KB/s   00:00    
[oracle@ora11gp admin]$ 

(70)配置spfile文件(备机操作)
(71)修改pfile文件

vim /tmp/initorcl.ora
orcl.__db_cache_size=637534208
orcl.__java_pool_size=16777216
orcl.__large_pool_size=33554432
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=637534208
orcl.__sga_target=956301312
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=234881024
orcl.__streams_pool_size=16777216
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=1580204032
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.db_unique_name='orcldg'
*.fal_client='orcldg'
*.fal_server='orclpr'
*.standby_file_management='AUTO'
*.log_archive_config='DG_CONFIG=(orclpr,orcldg)'
*.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archivelog'
*.log_archive_dest_2='SERVICE=orclpr LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclpr'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'

(72)复制pfile文件到spfile

create spfile from pfile='/tmp/initorcl.ora';  (如果是dataguard被破坏后进行恢复dataguard记得执行shutdown immediate;后再执行此命令)
shutdown immediate;(报错不要紧)
startup nomount;

(73)修改监听文件

vim /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )

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


ADR_BASE_LISTENER = /u01/app/oracle

(74)重启监听服务

lsnrctl stop
lsnrctl start

(75)tnsping测试

[oracle@ora11gs orcl]$ tnsping orclpr
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 28-APR-2019 16:00:34
Copyright (c) 1997, 2013, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ora11gp)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (0 msec)
[oracle@ora11gs orcl]$ 

(76)手工创建所需的目录

su - oracle
mkdir -p /u01/app/oracle/admin/orcl/adump
mkdir -p /u01/app/oracle/admin/orcl/dbdump
mkdir -p /u01/app/oracle/admin/orcl/pfile
mkdir -p /u01/app/oracle/oradata/orcl
mkdir -p /u01/app/oracle/fast_recovery_area/orcl
mkdir -p /u01/app/oracle/oradata/orcl/archivelog

(77)启动备库到nomount

shutdown immediate;(报错不要紧)
startup nomount;

(78)利用RMAN在备库上恢复主库

rman target sys/oracle@orclpr auxiliary sys/oracle@orcldg

其中oracle是上面创建主库密码文件中的密码

执行以下命令恢复

RMAN> duplicate target database for standby from active database nofilenamecheck;
出现这个恢复完成
Finished Duplicate Db at 28-APR-19
RMAN> 

(79)过程中若报错如下(我没有遇到)
(80)说明使用了catalog,但是在连接的时候没有指定catalog,需要用下面的连接方式


DBGSQL:     TARGET> begin :fhdbi := dbms_rcvcat.getDbid; end;
DBGSQL:        sqlcode = 6550
DBGSQL:         B :fhdbi = 32767
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 11/08/2018 15:22:28
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
ORA-06550: line 1, column 17:
PLS-00201: identifier 'DBMS_RCVCAT.GETDBID' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

rman target sys/oracle@orclpr auxiliary sys/oracle@orcldg nocatalog

(81)登陆备库并查看数据库当前状态

[oracle@ora11gs ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Apr 28 01:01:30 2019
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
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 status from v$instance;
STATUS
------------
MOUNTED
SQL> 

(82)RMAN恢复完直接就是mount状态。
(83)设置最高模式

alter database set standby database to maximize protection;

(84)设置参数

alter system set standby_file_management=auto;

主库设置参数

alter system set log_archive_dest_2='service=orcldg lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=orcldg';

备库设置参数

alter system set log_archive_dest_2='service=orclpr lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=orclpr';

查看设置的参数

show parameter log_archive_dest_2;

设置备库为read only

alter database open read only;

(85)备库启动日志应用

SQL>alter database recover managed standby database cancel; (可能会报错)
SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL> set pagesize 100;
SQL> select sequence#,applied from v$archived_log order by 1;

 SEQUENCE# APPLIED
---------- ---------
	 7 YES
	 8 YES
	 9 YES

SQL> 

(86)分别查看主库和备库的归档序列号是否一致
(87)先在主库手动切换一下日志再查看

SQL> alter system switch logfile;

System altered.

SQL>  archive log list;
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       /u01/app/oracle/oradata/orcl/archivelog
Oldest online log sequence     9
Next log sequence to archive   11
Current log sequence	       11

(88)再在备库上查看

SQL> archive log list;
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       /u01/app/oracle/oradata/orcl/archivelog
Oldest online log sequence     9
Next log sequence to archive   0
Current log sequence	       11
SQL> 

(89)查看备库中各文件如下

[oracle@ora11gs orcl]$ ll
总用量 1407312
drwxr-xr-x. 2 oracle oinstall       111 4月  28 01:04 archivelog
-rw-r-----. 1 oracle oinstall   9748480 4月  28 01:06 control01.ctl
-rw-r-----. 1 oracle oinstall 555753472 4月  28 01:04 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 775954432 4月  28 01:04 system01.dbf
-rw-r-----. 1 oracle oinstall  94380032 4月  28 01:04 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072 4月  28 01:04 users01.dbf
[oracle@ora11gs orcl]$ 
[oracle@ora11gs orcl]$ cd archivelog/
[oracle@ora11gs archivelog]$ ll
总用量 12084
-rw-r-----. 1 oracle oinstall  249344 4月  28 01:04 1_10_1006732228.dbf
-rw-r-----. 1 oracle oinstall 6653952 4月  28 01:00 1_7_1006732228.dbf
-rw-r-----. 1 oracle oinstall   44544 4月  28 01:00 1_8_1006732228.dbf
-rw-r-----. 1 oracle oinstall 5420544 4月  28 01:00 1_9_1006732228.dbf
[oracle@ora11gs archivelog]$ 

(90)在主备库查看当前模式

select database_role,protection_mode,protection_level from v$database;

(91)在/u01目录下创建两个脚本
(92)/u01/clearlog.sh 后面的减几就是清理几天前的归档日志

vim /u01/clearlog.sh   内容如下(这其实不是一个sh)
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';

(93)/u01/rman.sh chmod +x rman.sh设置可执行权限,内容如下

#!/bin/sh
rman target/ cmdfile '/u01/clearlog.sh'

(94)将rman.sh脚本设置到cron中定时每天执行
(95)完成
(96)正确打开主库,按照下面顺序

SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN; 

(97)正确打开备库

SQL> STARTUP MOUNT;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; 

(98)正确关闭备库

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL>SHUTDOWN IMMEDIATE; 

(99)正确关闭主库

SQL>SHUTDOWN IMMEDIATE; 

3、正常主备切换
(1)查询主库状态

SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
SQL> 

(2)查看备库状态

SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
NOT ALLOWED
SQL> 

(3)主库切换到standby模式

SQL> alter database commit to switchover to physical standby with session shutdown;
Database altered.
SQL> startup mount
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 1586708480 bytes
Fixed Size		    2253624 bytes
Variable Size		  973081800 bytes
Database Buffers	  603979776 bytes
Redo Buffers		    7393280 bytes
Database mounted.
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
RECOVERY NEEDED
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL> select open_mode,database_role from v$database;
OPEN_MODE	     DATABASE_ROLE
-------------------- ----------------
MOUNTED 	     PHYSICAL STANDBY
SQL> 

(4)切换备库

SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
SQL> alter database commit to switchover to primary with session shutdown;
Database altered.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1586708480 bytes
Fixed Size		    2253624 bytes
Variable Size		  973081800 bytes
Database Buffers	  603979776 bytes
Redo Buffers		    7393280 bytes
Database mounted.
Database opened.
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
SQL> 

(5)切换完成
4、应急切换
(1)主库崩溃,将备库切换为主库

SQL> alter database recover managed standby database finish; 停止应用恢复模式
Database altered.
SQL> alter database commit to switchover to primary; 转换为主库
Database altered.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 1586708480 bytes
Fixed Size		    2253624 bytes
Variable Size		  973081800 bytes
Database Buffers	  603979776 bytes
Redo Buffers		    7393280 bytes
Database mounted.
Database opened.
SQL> select open_mode,database_role from v$database;
OPEN_MODE	     DATABASE_ROLE
-------------------- ----------------
READ WRITE	     PRIMARY

(2)应急切换后dataguard将被破坏
(3)应急切换后如果原主库正常了。需要将原主库做为备库重新建立dataguard

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值