织梦CMS - 轻松建站从此开始!

欧博ABG-会员注册-官网网址

欧博abg数据库小白(专注)

时间:2024-09-26 21:41来源: 作者:admin 点击: 57 次
环境说明: RAC hosts 文件配置: #public-ip 192.169.100.130 green1 192.169.100.131 green2 192.169.100.204 rac-dg #VIP 192.169.100.132 rac1-vip 192.169.100.133 ra

hosts 文件配置:

#public-ip 192.169.100.130 green1 192.169.100.131 green2 192.169.100.204 rac-dg #VIP 192.169.100.132 rac1-vip 192.169.100.133 rac2-vip #scan-ip 192.169.100.134 rac-scan #priv-ip 10.0.0.1 rac1-priv1 10.0.0.2 rac2-priv2

Standby (备库只需要安装数据库软件即可,欧博abg不需创建数据库)

说明:

1. instance_name 和 db_name 和原库保持一致,因为备库没有创建数据库,所以没有实例名和DB_name,所以这里的实例名和数据库名是只参数文件中需要写入的名字

2. service_names 和 db_unique_name,这两个名字主要用在监听配置和主库同步日志到备库是用到的名字,db_unique_name 必须不一致。

主要关注: 1.实例名称: 写在spile和pfile中,用来控制系统参数 2.DB name: 数据库名称,这个名称主备库必须保持一致(在参数文件中的db_name) 3.DB_UNIQUE_NAME 用为唯一区分不同的服务器名称,主备需要设置为不同的值 4.service name 写在tnsnames.ora 中用来做主备的联通(通过tnsping测试),业务侧也是通过该参数的设置来连接数据库。

注意rac环境下两个节点都需要alter 配置redo log的传输;

环境介绍:
ip               实例名         服务名         数据库名       db_unique_name
rac-ip1          rac1          rac           rac             rac
rac-ip1          rac2          rac           rac             rac

备机
ip               实例名         服务名         数据库名       db_unique_name
dg-ip1           rac            dg           rac              dg

查看以上名称可以使用如下语句:

查看所有名称: show parameter service_name; 1、查询数据库名:select name,dbid from v$database;或者show parameter db_name; 2、查询实例名:select instance_name from v$instance;或者show parameter instance_name; 3、查询数据库域名:select value from v$parameter where name='db_domain';或者show parameter domain; 4、查询数据库服务器:select value from v$parameter where name='service_name';或者show parameter service;或者show parameter names; 5、数据库服务名:此参数是数据库标识类参数,用service_name表示。数据库如果有域,则数据库服务名就是全局数据库名;
如果没有,则数据库服务名就是数据库名。查询:show parameter service_name;

3. 主库使用ASM管理磁盘,而备库使用文件系统管理磁盘。所以需要修改文件映射。

配置过程:

主库前期准备:

1)设置强制写日志 [oracle@Oracle11g2 admin]$ sqlplus / as sysdba SQL> select FORCE_LOGGING from v$database; NO SQL> alter database force logging; SQL> select FORCE_LOGGING from v$database; YES (2)修改数据库运行在归档模式下 archive log list sql>SHUTDOWN IMMEDIATE; sql>STARTUP MOUNT; sql>ALTER DATABASE ARCHIVELOG; sql> ALTER DATABASE OPEN; 修改归档的路径: alter system set log_archive_dest_1='location=/u01/app/arch/dg';

查看归档路径和空间大小:
archive log list;

col total_size for a10;
col free_size for a20;
select name,total_mb/1024 || 'G' as total_size , free_mb/1024 || 'G' as free_size from v$asm_diskgroup;

1.配置主机名和IP地址的对应:(主备库都需要添加ip地址和主机名称的对应,是为了在监听中的host 作为连接,RAC环境需要添加public ip和vip的映射)

vi /etc/hosts

#public-ip
192.169.100.130 green1
192.169.100.131 green2
192.169.100.204 rac-dg
#VIP
192.169.100.132 rac1-vip
192.169.100.133 rac2-vip
#scan-ip
10.25.71.33 rac-scan

2.在主库上创建pfile:

事先备份spfile 如果使用ASM磁盘管理存储需要指定路径  不然会放于 asm磁盘组
create pfile='/tmp/initdg.ora' from spfile;
scp /tmp/initdg.ora oracle@rac-dg:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/

3.复制主库的密码文件到备库,并修改名字

cp /u01/app/oracle/product/11.2.0/dbs/orapwrac1 /tmp/orapwdg
创建口令文件(密码为sys用户的密码)
orapwd file='/u01/app/oracle/product/11.2.0/dbs/orapwprimary' password=sys entries=10
scp /tmp/orapwdg oracle@rac-dg:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/

4.在主库上创建备份库需要的控制文件 (不需要启动到mount,后续如果控制文件记录的scn号和归档文件不一致,可手动处理,或则恢复到主库,让备库自动同步即可)

ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/standby.ctl';
scp standby.ctl oracle@oracle@rac-dg:/u01/app/oracle/data/orcl/controlfile

cp standby.ctl current01
 cp standby.ctl current02

 5.#备库工建立以下目录,保持与主库目录一致。

注意:如果tempfile没有指定在软件安装目录,那么需要在 db_file_name_convert 中指定好转换的目录的路径。

创建存放数据和日志的目录: mkdir -p /u01/app/oracle/data/orcl/datafile --数据文件 mkdir -p /u01/app/oracle/data/orcl/tempfile --临时文件 mkdir -p /u01/app/oracle/data/orcl/onlinelog --redo日志 mkdir -p /u01/app/oracle/data/orcl/controlfile --控制文件 mkdir -p /u01/app/oracle/data/orcl/archive --归档文件 创建如下目录和远端保持一致 mkdir -p /u01/app/oracle/admin/rac/adump mkdir -p /u01/app/oracle/admin/rac/dpdump mkdir -p /u01/app/oracle/admin/rac/hdump mkdir -p /u01/app/oracle/admin/rac/pfile

6.TNS和监听配置:

TNS主备库设置一致:(在ORACLE_HOME/network/admin/tnsnames.ora文件中新增如下信息)

DG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = stdip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DG) ) )
RAC = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = RACIP)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC) ) )


配置之后使用tnsping在主备库上分别测试是否连通:
tnsping rac
tnsping dg

出现如下信息则表示配置成功:

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 02-NOV-2020 16:34:32
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dg)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = dg)))
OK (30 msec)

TNS配置失败的可能有

(1).防火墙配置未开放ip和端口

(2).主备库有ip限制

IP限制配置:

使用grid用户管理监听和网络的环境下在grid home目录下配置
/oracle/app/11.2.0/grid/network/admin/sqlnet.ora
[oracle@yymhdb2 admin]$ cat sqlnet.ora
# sqlnet.ora.yymhdb2 Network Configuration File: /oracle/app/11.2.0/grid/network/admin/sqlnet.ora.yymhdb2
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /oracle/app/grid
tcp.validnode_checking=yes
tcp.invited_nodes=(IP1,IP2)

非grid管理的环境下在oracle heme环境下配置:

对于rac的环境,欧博官网建议ip使用scan-ip或者使用vip

使用scan ip:

RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RAC)
)

使用vip:

RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)

监听配置

(1)主库listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = pri)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/)
(SID_NAME = dg)
)
)

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

ADR_BASE_LISTENER = /u01/app/oracle
注意这里的pri和dg(pri是指一个数据库对外提供的服务,dg是指实例的名称,这里提供了一个名为pri的服务该服务下有dg这个实例)
连接时就可以使用sqlplus sys/abc123@pri as sysdba 表示连接到了dg这个实例上。

(2)备库listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = std)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/)
(SID_NAME = dg)
)
)

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

ADR_BASE_LISTENER = /u01/app/oracle

配置完成之后重启监听。
并使用下面的语句验证:
(1)tnsnames配置完之后tnsping pri 和tnsping std应该成功
(2)lisenter.ora配置完之后使用sqlplus sys/abc123@pri as sysdba
sqlplus sys/abc123@std as sysdba
测试是否可以连接,如果没有联通,一般是因为没有将密码文件传输到备库。

通过service 连接:sqlplus scott/scott@std

7.主库的配置文件:

rac1.__db_cache_size=587202560
rac2.__db_cache_size=587202560
rac1.__java_pool_size=16777216
rac2.__java_pool_size=16777216
rac1.__large_pool_size=33554432
rac2.__large_pool_size=33554432
rac1.__pga_aggregate_target=654311424
rac2.__pga_aggregate_target=654311424
rac1.__sga_target=956301312
rac2.__sga_target=956301312
rac1.__shared_io_pool_size=0
rac2.__shared_io_pool_size=0
rac1.__shared_pool_size=301989888
rac2.__shared_pool_size=301989888
rac1.__streams_pool_size=0
rac2.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/rac/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.4.0'

*.log_archive_dest_1='location=+ARCHIVELOG'

*.log_archive_dest_state_1='ENABLE'
*.control_files='+DATADG/rac/controlfile/current.261.1048800525','+DATADG/rac/controlfile/current.260.1048800525'
*.db_block_size=8192
*.db_create_file_dest='+DATADG'
*.db_domain=''
*.db_name='rac'
*.db_recovery_file_dest='+DATADG'
*.db_recovery_file_dest_size=4621074432
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=racXDB)'
rac2.instance_number=2
rac1.instance_number=1
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=1600126976
*.open_cursors=300
*.processes=150
*.remote_listener='green-scan:1521'
*.remote_login_passwordfile='exclusive'
rac1.thread=1
rac2.thread=2
rac1.undo_tablespace='UNDOTBS2'
rac2.undo_tablespace='UNDOTBS1'

主库做如下修改:

使用如下语句查看主库参数配置或者生成spfile文件查看:

select name, value from v$parameter where name in
('db_name','db_unique_name','log_archive_config', 'log_archive_dest_1','log_archive_dest_2','log_archive_dest_3','log_archive_dest_state_1','log_archive_dest_state_2','log_archive_dest_state_3'
,'remote_login_passwordfile','log_archive_format','log_archive_max_processes','fal_server','db_file_name_convert', 'log_file_name_convert',
'standby_file_management');

主库做如下修改,用来向备库传输归档日志,主库启用归档之后做如下配置

这两个参数只需在standby库设置,但也可以在primary库设置这两个参数,以方便switchover或failover时primary库转变为standby角色。

alter system set fal_server='DG';
alter system set fal_client='rac';
ALTER SYSTEM SET log_archive_config='DG_CONFIG=(RAC,DG)' scope=both;
alter system set LOG_ARCHIVE_DEST_2='SERVICE=DG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DG';
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE';

参数说明:
fal_server和fal_client,FAL即Fetch Archive Log,其值为Oracle Net service name,即tnsnames.ora中的服务名。
设置这两个参数可以用来解决Archive Gaps。
一旦产生了gap,fal_client会自动向fal_server请求传输gap的archivelog。
设置了这2个参数,就不需要在产生gap时手动向standby注册归档日志了。
所需要做的就是确认主库有这些归档日志,并且主库的控制文件中有这些日志的注册信息。

fal_client
对应db_unique_name

fal_server
对应service_name

fal_client 只在主库端起作用,用于确定向谁发送日志;
yymhstd 只在备库端起作用,用于确定向谁请求日志
所以不考虑主备切换的情况下主库只配置fal_client,备库只配置fal_server:
这样记就可以了:fal_server配置的是对方,fal_client配置的是自己,无论在主库和备库,都这样配。以后怎么样切换都不用更改。

fal_server可以设置多个值,用逗号隔开。
primary:
*.fal_server='DG'
*.fal_client='rac'

standby:
*.fal_server='rac'
*.fal_client='DG'
FAL_CLIENT和FAL_SERVER是配置dataguard用到的两个参数,FAL指获取归档日志(Fetch Archived Log)
在一定的条件下,或者因为网络失败,或者因为资源紧张,会在primary和standby之间产生裂隙,也就是有些归档日志没有及时的传输并应用到standby库。因为MRP(managed recovery process)/LSP(logical standby process)没有与primary直接通讯的能力来获取丢失的归档日志。因此这些gaps通过FAL客户和服务器来解决,由初始化参数定义FAL_CLIENT和FAL_SERVER。
FAL_SERVER指定一个Oracle Net service name,standby数据库使用这个参数连接到FAL server,这个参数适用于standby站点。比如,FAL_SERVER = PrimaryDB,此处PrimaryDB是一个TNS name,指向primary库。
FAL_CLIENT指定一个FAL客户端的名字,以便FAL Server可以引用standby库,这也是一个TNS name,primary库必须适当配置此TNS name指向stanby库。这个参数也是在standby库端设置。比如,FAL_CLIENT = StandbyDB,StandbyDB是standby库的TNS name。
FAL_CLIENT和FAL_SERVER应该成对设置或改变。
这两个参数只需在standby库设置,但也可以在primary库设置这两个参数,以方便switchover或failover时primary库转变为standby角色

 

备库做如下修改:

修改后: *.__db_cache_size=587202560 *.__java_pool_size=16777216 *.__large_pool_size=33554432 *.__pga_aggregate_target=654311424 *.__sga_target=956301312 *.__shared_io_pool_size=0 *.__shared_pool_size=301989888 *.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/rac/adump' *.audit_trail='db' *.cluster_database=true *.compatible='11.2.0.4.0' *.control_files='/u01/app/oracle/data/orcl/controlfile/current01','/u01/app/oracle/data/orcl/controlfile/current02' *.db_block_size=8192 #*.db_create_file_dest='+DATADG' *.db_domain='' *.db_name='rac' *.db_recovery_file_dest='/u01/app/oracle/data/orcl/db_recovery' *.db_recovery_file_dest_size=4621074432 *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=racXDB)' *.fal_client='DG' *.fal_server='RAC' *.log_archive_format='%t_%s_%r.dbf' *.java_jit_enabled=TRUE *.job_queue_processes=1000 *.log_archive_config='DG_CONFIG=(RAC,DG)' *.log_archive_dest_1='LOCATION=/u01/app/oracle/data/orcl/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DG' *.log_archive_dest_state_1='ENABLE' *.log_archive_max_processes=4 *.log_archive_trace=0 *.memory_target=1600126976 *.open_cursors=300 *.processes=150 *.remote_listener='green-scan:1521' *.remote_login_passwordfile='exclusive' DG.thread=1 DG.undo_tablespace='UNDOTBS1' *.result_cache_max_size=536870912 *.result_cache_mode='AUTO' *.session_cached_cursors=300 *.sessions=300 *.sga_max_size=3G *.sga_target=3G *.standby_file_management='AUTO' DG.thread=1 *.undo_retention=7200 *.db_file_name_convert='+DATADG/RAC/DATAFILE','/u01/app/oracle/data/orcl//datafile'

重点关注标红参数部分
alter system set fal_server='RAC';
alter system set fal_client='DG';
ALTER SYSTEM SET log_archive_config='DG_CONFIG=(RAC,DG)' scope=both;
alter system set LOG_ARCHIVE_DEST_2='SERVICE=RAC LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=RAC';
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE';

 8.多个备库可以作如下配置

主库:
*.fal_client='YYMH'
*.fal_server='YYMHSTD,yymh_std'
*.log_archive_config='DG_CONFIG=(yymh,yymhstd,yymh_std)'
*.log_archive_dest_1='location=+ARCHIVELOG'
*.log_archive_dest_2='SERVICE=yymhstd LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=yymhstd'
*.log_archive_dest_3='SERVICE=yymh_std LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=yymh_std'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_dest_state_3='ENABLE'
备库1:
*.fal_client='yymh_std'
*.fal_server='yymh,yymh_std'
yymh_std.instance_number=1
*.java_jit_enabled=TRUE
*.job_queue_processes=1000
*.log_archive_config='DG_CONFIG=(yymh,yymhstd,yymh_std)'
*.log_archive_dest_1='LOCATION=/data/yymh/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=yymh_std'
*.log_archive_dest_3='SERVICE=yymh LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=yymh'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_3='ENABLE'
*.db_file_name_convert='+DATADG/yymh/datafile','/data/yymh/datafile'
*.log_file_name_convert='+DATADG/yymh/onlinelog','/data/yymh/onlinelog','+DATADG/yymh/tempfile','/data/yymh/tempfile/'

ALTER SYSTEM SET db_file_name_convert=('+DATADG/yymh/datafile','/data/yymh/datafile','+DATADG/yymh/tempfile','/data/yymh/tempfile/')

备库2:
*.fal_client='yymhstd'
*.fal_server='yymh,yymhstd'
yymhstd.instance_number=1
*.java_jit_enabled=TRUE
*.job_queue_processes=1000
*.log_archive_config='DG_CONFIG=(yymh,yymhstd,yymh_std)'
*.log_archive_dest_1='LOCATION=/data/yymh/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=yymhstd'
*.log_archive_dest_3='SERVICE=yymh LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=yymh'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_3='ENABLE'
*.db_file_name_convert='+DATADG/yymh/datafile','/data/yymh/datafile','+DATADG/yymh/tempfile','/data/yymh/tempfile/'
*.log_file_name_convert='+DATADG/yymh/onlinelog','/data/yymh/onlinelog'

ALTER SYSTEM SET db_file_name_convert=('+DATADG/yymh/datafile','/data/yymh/datafile','+DATADG/yymh/tempfile','/data/yymh/tempfile/')

1.参数的作用:
db_file_name_convert 主数据库和备用数据库的数据文件转换目录对映(如果两数据库的目录结构不一样),
如果有多个对映,逐一指明对映关系。
2.该参数应该配置在主还是备?
备库,这个参数不能动态配置,需要重启实例,如果在主库配置需要重启主库,对于不能停的数据库是不允许的。
3.该参数的写法:
db_file_name_convert='+RACDATA/racdb/datafile/','/oradata/standby/'

9.创建添加standby redolog
在主库、从库上都配置standby redo log 

在主库查看日志组的数量和每个日志文件的大小??
SQL>select * from v$log;

在备库库查看日志组的数量和每个日志文件的大小??
SQL>select * from v$log;
select group#,thread#,sequence#,archived,status from v$standby_log;
select * from v$standby_log;

standby logde 创建:
alter database add standby logfile thread 1 group 7 ('+DATA1/dg/onlinelog/standby7.log') size 50m,
group 8('+DATA1/dg/onlinelog/standby8.log') size 50m,
group 9('+DATA1/dg/onlinelog/standby9.log') size 50m,
group 10('+DATA1/dg/onlinelog/standby10.log') size 50m,
group 11('+DATA1/dg/onlinelog/standby11.log') size 50m,
group 12('+DATA1/dg/onlinelog/standby12.log') size 50m;

alter database add standby logfile thread 2 group 13 ('+DATA2/dg/onlinelog/standby13.log') size 50m,
group 14('+DATA2/dg/onlinelog/standby14.log') size 50m,
group 15('+DATA2/dg/onlinelog/standby15.log') size 50m,
group 16('+DATA2/dg/onlinelog/standby16.log') size 50m,
group 17('+DATA2/dg/onlinelog/standby17.log') size 50m,
group 18('+DATA2/dg/onlinelog/standby18.log') size 50m;

standby redolog的组数参考公式:(online redolog组数+1)*数据库线程数;
单机线程数为1,RAC一般为2。standby redolog的组成员数和大小也尽量和online redolog一样。

10.主库执行全备(包括数据文件,归档日志文件和控制文件,这里建议使用主库创建的控制文件)

run {
allocate channel c1 type disk; allocate channel c2 type disk; backup
as compressed backupset filesperset 3 database format '/tmp/full_%d_%T_%s_%p'; sql 'alter system archive log current'; backup archivelog all format '/tmp/arch_%d_%T_%s_%p'; backup current controlfile format '/tmp/ctl_%d_%T_%s_%p'; }
scp * 192.168.1.2:/bak

11.启动备库

startup pfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initdg.ora' nomount;
create spfile from pfile;
shutdown immediate

控制文件准备好以后直接启动到mount
cp standby.ctl current01
cp standby.ctl current02
startup mount;

12.恢复数据文件

注册目录:
catalog start with '/bak/';

执行数据文件恢复
#! /bin/bash
/oracle/app/oracle/product/11.2.0/db/bin/rman target / <<EOF
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
restore database;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
exit;

nohup sh restore.sh >> restore.log 2>&1 &

10.恢复归档:

#! /bin/bash /oracle/app/oracle/product/11.2.0/db/bin/rman target / <<EOF run { allocate channel c1 type disk; SET ARCHIVELOG DESTINATION TO '/data/yymh/arch'; recover database; RELEASE CHANNEL c1; } exit;

nohup sh recover.sh >> recover1.log 2>&1 &

recover database until scn 741679073877;

12.如果出现归档的gap

查看日志应用情况:
select THREAD#,sequence#,applied from v$archived_log where THREAD#='2' order by sequence#;
select THREAD#,sequence#,applied from v$archived_log where THREAD#='1' order by sequence#;

select THREAD#,sequence#,applied from v$archived_log where applied='YES' and THREAD#='2' order by sequence#

standby启用实时同步
alter database recover managed standby database using current logfile disconnect;
alter database recover managed standby database cancel;
alter database open read only;
alter database recover managed standby database using current logfile disconnect;

查看日志gap

select * from v$archive_gap;

查看备份中是否有对应的归档文件:

list backup of archivelog from logseq=75358 until logseq=75392 thread=1;

如果出现gap,可以用如下方式处理:

1.如果主库有备份,归档已经被备份并且现在没有保留在主库的归档目录下:

可以直接在主库或者备库使用下面的命令执行恢复操作,将归档恢复

(1)注册备份集:

list backupset of database;

catalog start with '/bak/';   或者 CATALOG DEVICE TYPE 'SBT_TAPE' BACKUPPIECE '/tmp/backup'

或者:catalog backuppiece '/tmp/backup'

(2)恢复归档:

#! /bin/bash
/oracle/app/oracle/product/11.2.0/db/bin/rman target / <<EOF
run {
ALLOCATE CHANNEL c0 TYPE 'SBT_TAPE' SEND 'NB_ORA_SERV=NBUmaster,NB_ORA_CLIENT=yymhdb1,NB_ORA_DISK_MEDIA_SERVER=nbu5230j5';
ALLOCATE CHANNEL c1 TYPE 'SBT_TAPE' SEND 'NB_ORA_SERV=NBUmaster,NB_ORA_CLIENT=yymhdb2,NB_ORA_DISK_MEDIA_SERVER=nbu5230j5';
restore archivelog from logseq=69653 until logseq=69677 thread=2;
RELEASE CHANNEL c0;
RELEASE CHANNEL c2;
}

(3)如果在备库恢复的归档,则还需要注册归档:

注册归档:CATALOG ARCHIVELOG '+FRA/archivelog/arc_ecdbpr_2_31129_928378592.arc';

2.因为造成归档gap的根本原因是控制文件不够新,控制文件中没有记录对应的归档信息,所以我们可以在备库控制文件中注册对应的归档信息,或者保证拿到最新的控制文件,(主库启动到mount下)

3.可以在主库将归档拷贝到备库

 13.如果temp 默认不在oracle安装目录下,并且没有配置db_file_name_convert而导致数据库异常停止,并找不到对应的tempfile的数据文件而报错:

查看tempfile的配置:
select
tablespace_name, file_id, file_name,status,autoextensible, round(bytes/(1024*1024),0) total_space from dba_temp_files order by tablespace_name,file_name;

删除旧的tempfile配置:
  alter database tempfile '+data/yymh/tempfile/temp01.dbf' drop;
  新增tempfile:
  alter tablespace temp add tempfile '/data/yymh/tempfile/temp.262.887397719' size 8782k reuse;

14 .同步状态验证:

通过以下sql检查验证同步情况 select name,open_mode,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database; 查看日志应用情况: select THREAD#,sequence#,applied from v$archived_log where THREAD#='2' order by sequence#; select THREAD#,sequence#,applied from v$archived_log where THREAD#='1' order by sequence#; 查看备库进程情况 select process,status,sequence# from v$managed_standby; RFS进程:负责日志的传输 MRP进程:负责日志的应用 针对RAC环境的dg环境,RFS和MRP是只存在一个节点中的。 如果登录一个节点发现没有这两个进程,要在另一个节点上再次验证。 查看备库数据库同步情况: select thread#,sequence#,applied from v$archived_log; 查看applied的结果,如果是YES 最后为IN-MEMORY 表示数据已经应用。 如果 结果中出现NO,表示数据同步已经出现延迟,要明确是未来得及应用还是同步中断。

15. oracle汇总快速查看错误日志的命令:

oerr ora 01187 oerr ora 471 929 cd /oracle/app/oracle/diag/rdbms/yymh_std/yymh/trace/ 930 ls -ltr *dbw* 931 tail -200 yymh_dbw0_1746.trc

16. oracle的异常bug:

处理如下bug,只需要在将备库启动到mount,在启用日志同步即可
Slave exiting with ORA-600 exception Errors in file /oracle/app/oracle/diag/rdbms/yymh_std/yymh/trace/yymh_pr03_14316.trc: ORA-00600: internal error code, arguments: [kcbr_apply_change_11], [], [], [], [], [], [], [], [], [], [], [] Slave exiting with ORA-600 exception Errors in file /oracle/app/oracle/diag/rdbms/yymh_std/yymh/trace/yymh_pr02_14314.trc: ORA-00600: internal error code, arguments: [kcbr_apply_change_11], [], [], [], [], [], [], [], [], [], [], []

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2024-12-22 10:12 最后登录:2024-12-22 10:12
栏目列表
推荐内容