主库RAC+ASM 备库单机+文件系统环境+文件系统环境
环境参数:
角色 项目 RAC节点1 RAC节点2 备注
主库 Hostname db1 db2
Public-ip 192.168.88.60 192.168.88.61
vip 192.168.88.62 192.168.88.63
Priv-ip 192.168.66.60 192.168.66.61
Scan-ip 192.168.88.65
角色 项目 RAC节点1 RAC节点2 备注
备库1 Hostsname node3 无
Public-ip 192.168.88.30 无
备库2 Hostsname node2 无
Public-ip 192.168.88.40 无
主备库中相关命名,tns规则如下:
数据库 参数 值
相关命名 主库 db_name ora
db_unique_name ora
instance_name ora1/ora2
service_name ora
备库1 db_name ora
db_unique_name oradg
instance_name ora
service_name oradb.ora
备库2 db_name ora
db_unique_name ora_st
instance_name ora
service_name oradb.ora
数据库 tnsnames 说指向明
TNS 主/备库1 ora 指向主库2个节点
oradg 指向备库节点
主/备库2 ora 指向主库2个节点
ora_st 指向备库节点
- ADG部署过程
注:
主库ora到备库1 oradg的日志传输链路通常采用log_archive_dest_2参数。
备库1 oradg到主库ora的日志传输链路log_archive_dest_2参数。
主库ora到备库2 ora_st的日志传输链路通常采用log_archive_dest_3参数。
备库2 ora_st到主库ora的日志传输链路log_archive_dest_3参数。
2. 查看主备库版本是否满足
(1) 查看数据库版本
环境需求
A.备库操作系统平台和版本要求与主库(生产库)一致。
B.备库数据库软件版本要求与主库(生产库)一致。
su – oracle
sqlplus / as sysdba
SQL> select *from v$version;
SQL> select * from product_component_version;
- 确认主备库是否为归档模式
archive log list;
备1:
备2:
主:
- 配置主备库tnsnames.ora参数
主:db1和db2
备库1:node2
备库2:node3
然后重启监听服务程序:lsnrctl stop; lsnrctl start;
测试:主备都操作
主:
db1:
tnsping ora;
tnsping oradg;
tnsping ora_st;
db2:
tnsping ora;
tnsping oradg;
tnsping ora_st;
备1:
node2:
tnsping ora;
tnsping oradg;
备2:
node3:
tnsping ora;
tnsping ora_st;
- 添加备库监听静态注册
5.1 编辑备库1的listener.ora
5.2 编辑备库2的listener.ora
- 查看主库是否开启强日志模式
–查看日志模式
SQL>select name,log_mode,force_logging from v$database;
–打开主库强日志模式
–主库一个节点操作
alter database force logging;
-
创建备库密码文件
主库操作:
db1:
scp orapwora1 oracle@192.168.88.61:/home/u01/app/oracle/product/11.2.0/db_1/dbs/orapwora2
scp orapwora1 oracle@192.168.88.40:/home/u01/app/oracle/product/11.2.0/db_1/dbs/orapwora
scp orapwora1 oracle@192.168.88.30:/home/u01/app/oracle/product/11.2.0/db_1/dbs/orapwora
注意:如果主库是rac环境,需要主库的所有的节点密码文件需要同步,然后把同步完的密码文件传输到备库。 -
创建主备库standby日志
主库:
alter database add standby logfile thread 1 group 5 (’+DATADG’) size 100M;
alter database add standby logfile thread 1 group 6 (’+DATADG’) size 100M;
alter database add standby logfile thread 1 group 7 (’+DATADG’) size 100M;
alter database add standby logfile thread 1 group 8 (’+DATADG’) size 100M;
alter database add standby logfile thread 2 group 9 (’+DATADG’) size 100M;
alter database add standby logfile thread 2 group 10 (’+DATADG’) size 100M;
alter database add standby logfile thread 2 group 11 (’+DATADG’) size 100M;
alter database add standby logfile thread 2 group 12 (’+DATADG’) size 100M;
备库:
alter database add standby logfile group 4 (’/home/u01/app/oracle/oradata/test/redo4.dbf’) size 100m;
alter database add standby logfile group 5 (’/home/u01/app/oracle/oradata/test/redo5.dbf’) size 100m;
alter database add standby logfile group 6 (’/home/u01/app/oracle/oradata/test/redo6.dbf’) size 100m;
alter database add standby logfile group 7 (’/home/u01/app/oracle/oradata/test/redo7.dbf’) size 100m;
alter database add standby logfile group 8 (’/home/u01/app/oracle/oradata/test/redo8.dbf’) size 100m;
alter database add standby logfile group 9 (’/home/u01/app/oracle/oradata/test/redo9.dbf’) size 100m;
alter database add standby logfile group 10 (’/home/u01/app/oracle/oradata/test/redo10.dbf’) size 100m;
alter database add standby logfile group 11 (’/home/u01/app/oracle/oradata/test/redo11.dbf’) size 100m;
alter database add standby logfile group 12 (’/home/u01/app/oracle/oradata/test/redo12.dbf’) size 100m;
alter database add standby logfile group 13 (’/home/u01/app/oracle/oradata/test/redo13.dbf’) size 100m;
alter database add standby logfile group 14 (’/home/u01/app/oracle/oradata/test/redo14.dbf’) size 100m;
alter database add standby logfile group 15 (’/home/u01/app/oracle/oradata/test/redo15.dbf’) size 100m;
alter database add standby logfile group 16 (’/home/u01/app/oracle/oradata/test/redo16.dbf’) size 100m;
- 修改主备库参数文件
主库:
两种方式:
(1)直接修改参数文件方式
创建pfile文件
create pfile=’/tmp/20201220.txt’ from spfile;
编辑/tmp/20201220.txt文件
添加以下参数:
log_archive_config=‘dg_config=(ora, oradg,ora_st)’
log_archive_dest_1=‘location=+datadg/arch_ora valid_for=(all_logfiles,all_roles) db_unique_name= ora’
log_archive_dest_2=‘service=oradg LGWR ASYNC valid_for=(online_logfiles,primary_role) db_unique_name=‘oradg’
log_archive_dest_3=‘service=ora_st LGWR ASYNC valid_for=(online_logfiles,primary_role) db_unique_name=‘ora_st’
log_archive_dest_state_1=‘enable’
log_archive_dest_state_2=‘enable’
log_archive_dest_state_3=‘enable’
LOG_ARCHIVE_MAX_PROCESSES=10
fal_server=’ oradg,ora_st ’
db_file_name_convert=’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/datafile’,’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/tempfile’ log_file_name_convert=’/u01/app/oracle/oradata/ora’,’+DATADG/ora/onlinelog’ standby_file_management=‘AUTO’;
然后使用修改的参数文件启动数据库
startup nomount pfile=’/tmp/20201220.txt’;
create spfile from pfile=’/tmp/20201220.txt’;
alter database mount;
alter database open;
(2)使用命令在数据库启动状态下进行参数修改
–建议使用此方法修改参数,如修改出现问题可用备份还原,如用以上方法修改可导致主库下次启动时出错
alter system set db_unique_name=ORA scope=spfile;
alter system set LOG_ARCHIVE_CONFIG=‘DG_CONFIG=(ora,oradg,ora_st)’;
alter system set log_archive_dest_1=‘location=+DATADG/arch_ora VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora’;
alter system SET LOG_ARCHIVE_DEST_2=‘SERVICE=testdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=testdg’;
alter system SET LOG_ARCHIVE_DEST_3=‘SERVICE=test_st LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora_st’;
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;
alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE;
alter system set FAL_SERVER= oradg,ora_st;
alter system set FAL_CLIENT= ora;
alter system set standby_file_management=auto;
alter system set log_file_name_convert=’/u01/app/oracle/oradata/ora’,’+DATADG/ora/onlinelog’ scope=spfile sid=’’;
alter system set db_file_name_convert=’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/datafile’,’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/tempfile’ scope=spfile sid=’’;
修改完后,create pfile=’/tmp/20201220_new.txt’ from spfile;
备库1 ORADG:
修改备库参数:
将主库修改完的参数,在主库任意节点创建一个pfile文件传到备库节点,修改入下参数:标黄部分一定要注意看:
ora1.__shared_io_pool_size=0
#ora2.__shared_io_pool_size=0
#ora2.__shared_pool_size=184549376
ora1.__shared_pool_size=188743680
ora1.__streams_pool_size=0
#ora2.__streams_pool_size=0
*.audit_file_dest=’/home/u01/app/oracle/admin/ora/adump’
.audit_trail=‘db’
#.cluster_database=true
.compatible=‘11.2.0.4.0’
#.control_files=’+DATADG/ora/controlfile/current.391.1064932245’
*.control_files=’/home/u01/app/oracle/oradata/ora/control01.ctl’
.db_block_size=8192
#.db_create_file_dest=’/home/u01/app/oracle/oradata/ora’
*.db_domain=’’
*.db_file_name_convert=’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/datafile’,’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/tempfile’
*.db_name=‘ora’
*.db_unique_name=‘ORADG’
*.diagnostic_dest=’/home/u01/app/oracle’
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=oraXDB)’
*.fal_client=‘ORADG’
*.fal_server=‘ORA,ORA_ST’
ora1.instance_number=1
#ora2.instance_number=2 -备库是文件系统,单机涉及不到
*.log_archive_config=‘DG_CONFIG=(ora,ora_dg,ora_st)’
*.log_archive_dest_1=‘location=arch_ora VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=oradg’
*.log_archive_dest_2=‘SERVICE=ora LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora’
*.log_archive_dest_3=‘SERVICE=ora_st LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora_st’
*.log_archive_dest_state_1=‘ENABLE’
*.log_archive_dest_state_2=‘ENABLE’
*.log_archive_dest_state_3=‘ENABLE’
*.log_file_name_convert=’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/onlinelog’
*.memory_target=833617920
.open_cursors=300
.processes=150
#.remote_listener=‘db-scan:1521’ --备库是单机数据库涉及不到scan
#.remote_login_passwordfile=‘exclusive’
*.standby_file_management=‘AUTO’
#ora2.thread=2 备库是单机涉及不到多实例
ora1.thread=1
ora1.undo_tablespace=‘UNDOTBS1’
#ora2.undo_tablespace=‘UNDOTBS2’
备库2 ORA_ST:
修改备库参数:
将主库修改完的参数,在主库任意节点创建一个pfile文件传到备库节点,修改入下参数:标黄部分一定要注意看:
ora1.__shared_io_pool_size=0
#ora2.__shared_io_pool_size=0
#ora2.__shared_pool_size=184549376
ora1.__shared_pool_size=188743680
ora1.__streams_pool_size=0
#ora2.__streams_pool_size=0
*.audit_file_dest=’/home/u01/app/oracle/admin/ora/adump’
.audit_trail=‘db’
#.cluster_database=true
.compatible=‘11.2.0.4.0’
#.control_files=’+DATADG/ora/controlfile/current.391.1064932245’
*.control_files=’/home/u01/app/oracle/oradata/ora/control01.ctl’
.db_block_size=8192
#.db_create_file_dest=’/home/u01/app/oracle/oradata/ora’
*.db_domain=’’
*.db_file_name_convert=’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/datafile’,’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/tempfile’
*.db_name=‘ora’
*.db_unique_name=‘ORA_ST’
*.diagnostic_dest=’/home/u01/app/oracle’
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=oraXDB)’
*.fal_client=‘ORA_ST’
*.fal_server=‘ORA,ORA_DG’
ora1.instance_number=1
#ora2.instance_number=2 -备库是文件系统,单机涉及不到
*.log_archive_config=‘DG_CONFIG=(ora,ora_st,oradg)’
*.log_archive_dest_1=‘location=arch_ora VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora_st’
*.log_archive_dest_2=‘SERVICE=ora LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora’
*.log_archive_dest_3=‘SERVICE=oradg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oradg’
*.log_archive_dest_state_1=‘ENABLE’
*.log_archive_dest_state_2=‘ENABLE’
*.log_archive_dest_state_3=‘ENABLE’
*.log_file_name_convert=’/home/u01/app/oracle/oradata/ora’,’+DATADG/ora/onlinelog’
*.memory_target=833617920
.open_cursors=300
.processes=150
#.remote_listener=‘db-scan:1521’ --备库是单机数据库涉及不到scan
#.remote_login_passwordfile=‘exclusive’
*.standby_file_management=‘AUTO’
#ora2.thread=2 备库是单机涉及不到多实例
ora1.thread=1
ora1.undo_tablespace=‘UNDOTBS1’
#ora2.undo_tablespace=‘UNDOTBS2’
修改完保存到备库操作下的/tmp文件夹下:
然后备库处于关闭状态,利用修改的pfile文件启动备库,
Startup nomount pfile=’/tmp/2.ora’;
Alter database mount;
Alter database open;
Create spfile from pfile=’/tmp/2.ora’;–创建spfile下次直接用修改的启动,不用加参数就可以起来。
- 备份数据库
数据库初始化
–备份初始化恢复(两种方式)
A.利用duplicate复制数据库
RMAN>rman target sys/123456@ora auxiliary sys/123456@oradg
RMAN>duplicate target database for standby from active database;
操作过程:下面是粘贴的别的duplicate过程,过程是一样的,实例名称不一样
[oracle@node3 ~]$ rman target sys/123456@test auxiliary sys/123456@testdg;
Recovery Manager: Release 11.2.0.4.0 - Production on Tue Dec 22 17:21:34 2020
Copyright © 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: TEST (DBID=2357985082)
connected to auxiliary database: TEST (not mounted)
RMAN> duplicate target database for standby from active database;
Starting Duplicate Db at 2020-12-22 17:21:46
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=10 device type=DISK
contents of Memory Script:
{
backup as copy reuse
targetfile ‘/home/u01/app/oracle/product/11.2.0/db_1/dbs/orapwtest1’ auxiliary format
‘/home/u01/app/oracle/product/11.2.0/db_1/dbs/orapwtest’ ;
}
executing Memory Script
Starting backup at 2020-12-22 17:21:47
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=29 instance=test1 device type=DISK
Finished backup at 2020-12-22 17:21:48
contents of Memory Script:
{
backup as copy current controlfile for standby auxiliary format ‘/home/u01/app/oracle/oradata/test/control01.ctl’;
}
executing Memory Script
Starting backup at 2020-12-22 17:21:48
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying standby control file
output file name=/home/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_test1.f tag=TAG20201222T172125 RECID=1 STAMP=1059844886
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2020-12-22 17:21:50
contents of Memory Script:
{
sql clone ‘alter database mount standby database’;
}
executing Memory Script
sql statement: alter database mount standby database
contents of Memory Script:
{
set newname for tempfile 1 to
“/home/u01/app/oracle/oradata/test/temp.344.1059838653”;
switch clone tempfile all;
set newname for datafile 1 to
“/home/u01/app/oracle/oradata/test/system.337.1059838591”;
set newname for datafile 2 to
“/home/u01/app/oracle/oradata/test/sysaux.338.1059838591”;
set newname for datafile 3 to
“/home/u01/app/oracle/oradata/test/undotbs1.339.1059838591”;
set newname for datafile 4 to
“/home/u01/app/oracle/oradata/test/users.340.1059838591”;
set newname for datafile 5 to
“/home/u01/app/oracle/oradata/test/undotbs2.345.1059838687”;
backup as copy reuse
datafile 1 auxiliary format
“/home/u01/app/oracle/oradata/test/system.337.1059838591” datafile
2 auxiliary format
“/home/u01/app/oracle/oradata/test/sysaux.338.1059838591” datafile
3 auxiliary format
“/home/u01/app/oracle/oradata/test/undotbs1.339.1059838591” datafile
4 auxiliary format
“/home/u01/app/oracle/oradata/test/users.340.1059838591” datafile
5 auxiliary format
“/home/u01/app/oracle/oradata/test/undotbs2.345.1059838687” ;
sql ‘alter system archive log current’;
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to /home/u01/app/oracle/oradata/test/temp.344.1059838653 in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting backup at 2020-12-22 17:21:56
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=+DATADG/test/datafile/system.337.1059838591
output file name=/home/u01/app/oracle/oradata/test/system.337.1059838591 tag=TAG20201222T172133
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=+DATADG/test/datafile/sysaux.338.1059838591
output file name=/home/u01/app/oracle/oradata/test/sysaux.338.1059838591 tag=TAG20201222T172133
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=+DATADG/test/datafile/undotbs1.339.1059838591
output file name=/home/u01/app/oracle/oradata/test/undotbs1.339.1059838591 tag=TAG20201222T172133
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=+DATADG/test/datafile/undotbs2.345.1059838687
output file name=/home/u01/app/oracle/oradata/test/undotbs2.345.1059838687 tag=TAG20201222T172133
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=+DATADG/test/datafile/users.340.1059838591
output file name=/home/u01/app/oracle/oradata/test/users.340.1059838591 tag=TAG20201222T172133
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2020-12-22 17:22:21
sql statement: alter system archive log current
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=1 STAMP=1059844948 file name=/home/u01/app/oracle/oradata/test/system.337.1059838591
datafile 2 switched to datafile copy
input datafile copy RECID=2 STAMP=1059844948 file name=/home/u01/app/oracle/oradata/test/sysaux.338.1059838591
datafile 3 switched to datafile copy
input datafile copy RECID=3 STAMP=1059844948 file name=/home/u01/app/oracle/oradata/test/undotbs1.339.1059838591
datafile 4 switched to datafile copy
input datafile copy RECID=4 STAMP=1059844948 file name=/home/u01/app/oracle/oradata/test/users.340.1059838591
datafile 5 switched to datafile copy
input datafile copy RECID=5 STAMP=1059844948 file name=/home/u01/app/oracle/oradata/test/undotbs2.345.1059838687
Finished Duplicate Db at 2020-12-22 17:22:30
B.RMAN备份主库所有文件(利用rman备份片生成备库)
–备份主库:
rman target/
–需要创建备份文件存放位置 mkdir -p /home/oracle/rmanbk/
configure channel device type disk format ‘/home/oracle/rmanbk/%d_%I_%s_%p.bkp’;
backup as compressed backupset database include current controlfile for standby plus archivelog;
–将备份传输至备库(备库也要有相关存放rman备份片的位置)
[oracle@up rmanbk]$ scp beijing_307816969*:/home/oracle/rmanbk/
在备库恢复控制文件
rman target /
restore standby controlfile from ‘/home/oracle/rmanbk/beijing_3078169696_3_1.bkp’;
将数据库 Mount
sql ‘alter database mount’;
列出备份文件
rman target /
list backup;
注册从源数据库拷贝过来的备份集到 rman 中
RMAN> catalog start with ‘/home/oracle/rmanbk/’;
……
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files…
cataloging done
–在rman执行下面脚本
恢复数据库
RMAN>
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
restore database;
recover database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
–这里会报错,没有恢复日志归档所致,可忽略。
11.查看备库的状态:
SQL>select instance_name,status from gv$instance;
默认使用duplicate备库的状态是mounted
然后查看主库的归档日志号:
SQL>archive log list;
再看备库的归档日志号 ,如果新恢复的current log sequence会是0,此时备库先别着急执行
SQL>alter database open; 会报错:
Database mounted.
ORA-10458: standby database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: ‘/home/u01/app/oracle/oradata/ora/system.387.1064932175’
应该先把主库的日志应用过来,备库执行下面的操作:
SQL> recover managed standby database using current logfile disconnect from session;
看备库的alter.log 应用的日志跟主库的current log sequence 号一致后,取消日志恢复操作
SQL> alter database recover managed standby database cancel;
此时再操作启库:
SQL>alter database open;
再开启备库应用日志:
SQL>alter database recover managed standby database using current logfile disconnect from session;
–查看数据库状态:
SQL>select open_mode from v$database;
–查看备库同步情况:
set linesize 150;
set pagesize 20;
column name format a13;
column value format a20;
column unit format a30;
column TIME_COMPUTED format a30;
select name,value,unit,time_computed from v$dataguard_stats where name in (‘transport lag’,‘apply lag’);
- 检验是否成功
–主库操作
SQL>create table t1 (A int);
SQL>insert into t1 values(5);
SQL>insert into t1 values(6);
SQL>insert into t1 values(7);
SQL>commit
SQL>alter system switch logfile;
–备库验证数据是否同步:
select * from t1;
- 主备库切换
主库切换到STANDBY ROLE:
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
查看数据库状态:
select status,instance_name from gv$instance;
如果不是open需要启动到open,
alter database open;
备库切换到PRIMARY ROLE:
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
查看数据库状态:
select status,instance_name from gv$instance;
如果不是open需要启动到open,
alter database open;
备库重新开启Media Recovery
alter database open;
alter database recover managed standby database using current logfile disconnect from session;
然后查看主库的归档日志:
SQL>archive log list;
备库的归档日志:
SQL>archive log list;
current log sequence 号是一致的,说明切换成功。
- 关闭步骤
l停止standby(备库) 数据库redo日志的应用:
sql> alter database recover managed standby database cancel;
l停止主库数据库:sql> shutdown immediate;
l停止备用数据库:sql> shutdown immediate;
12.1 启动步骤
注:一定要先启动备库
备库:
[oracle@PD orcl]$ lsnrctl start 主备监听需在启动数据库前启动
[oracle@PD orcl]$ sqlplus / as sysdba
SQL> startup nomount
ORACLE instance started.
Total System Global Area 893562880 bytes
Fixed Size 2218512 bytes
Variable Size 587204080 bytes
Database Buffers 297795584 bytes
Redo Buffers 6344704 bytes
SQL> startup nomount ;
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> alter database mount standby database;
Database altered.
启动备库数据库
SQL> alter database open read only;
Database altered.
开启备库的归档日志应用进程
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
主库:
[oracle@PD orcl]$ lsnrctl start --启动监听
[oracle@PD orcl]$ sqlplus / as sysdba
SQL> startup --启动数据库服务




