ORACLE10g R2【RAC+ASM→RAC+ASM】
ORACLE10g R2【RAC+ASM→RAC+ASM】
本演示案例所用环境:RAC+ASM+OMF
|
|
primary |
standby |
|
OS Hostname |
node1,node2 |
dgnode1,dgnode2 |
|
OS Version |
RHEL5.8 |
RHEL5.8 |
|
DB Version |
10.2.0.5 |
10.2.0.5 |
|
db_name |
stephen |
stephen |
|
db_unique_name |
stephen |
standby |
|
service_names |
stephen |
standby |
|
instance_name |
stephen1,stephen2 |
standby1,standby2 |
Primary database configure
1.启用primary force logging
SQL> select force_logging from v$database;
SQL> alter database force logging;
2.配置redo传输认证
(1) tnsnames.ora
STEPHEN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stephen)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dgnode1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = dgnode2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = standby)
)
)
(2) tnsping命令解析网络服务名,命令须返回OK.
此时,standby端未配置监听,无法解析,可以standby配置后再测试。
$ tnsping standby
(3) 密码文件
若无密码文件,则在一个节点创建密码文件并拷贝至其余节点。格式:orapw<ORACLE_SID>
cd $ORACLE_HOME/dbs
orapwd file=orapwstephen1 password=oracle force=y
scp orapwstephen1 node2:$ORACLE_HOME/dbs/orapwstephen2
3.添加standby logfiles
添加standby logfile 的要求:
(1) 确保主和备数据库上的日志文件大小是相同的
(2) 确定备库重做日志文件组的适当数目
Standby logfile数 = (每个线程的logfile数+1)* 线程数
(3) 检查create database时指定的MAXLOGFILES和MAXLOGMEMBERS参数,可以通过trace controlfile出来查看
(4) RAC环境创建standby logfile,指定thread#创建
每个thread的standby logfile数 = 每个thread的logfile数 + 1
检查当前环境的logfile:
set lines 200 pages 300
col member for a60
select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$log a,v$logfile b where a.group#=b.group#
union all
select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$standby_log a,v$logfile b where a.group#=b.group#;
根据查询的logfile 信息上文添加standby logfile的要求,添加合理的standby logfile,然后用上面的sql再次查看当前环境的logfile:
alter database add standby logfile thread 1
group 5 '+DATA' size 50M,
group 6 '+DATA' size 50M,
group 7 '+DATA' size 50M;
alter database add standby logfile thread 2
group 8 '+DATA' size 50M,
group 9 '+DATA' size 50M,
group 10 '+DATA' size 50M;
4.修改primary参数文件
备份spfile:
create pfile='/tmp/pfile.bak' from spfile;
修改以下参数,其中stephen,standby分别为primary,standby的db_unqiue_name/TNS-Alias,详见参数详解部分:
alter system set log_archive_config='dg_config=(stephen,standby)' sid='*';
alter system set log_archive_dest_1='location=+DATA valid_for=(all_logfiles,all_roles) db_unique_name=stephen' sid='*';
alter system set log_archive_dest_2='service=standby lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=standby' sid='*';
alter system set log_archive_max_processes=30 sid='*'; #根据需求调整个数
--确认以下参数是否为默认值,若不是则修改:
alter system set remote_login_passwordfile=exclusive scope=spfile sid='*';
# remote_login_passwordfile=exclusive/shared
alter system set log_archive_dest_state_1=enable sid='*';
alter system set log_archive_dest_state_2=enable sid='*';
--可修改归档日志格式,与datafile区分:
alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';
--备角色参数:
alter system set fal_server=standby sid='*';
alter system set fal_client=stephen sid='*';
alter system set standby_file_management=auto sid='*';
alter system set db_file_name_convert='+DATA/STANDBY','+DATA/STEPHEN' scope=spfile sid='*';
alter system set log_file_name_convert='+DATA/STANDBY','+DATA/STEPHEN' scope=spfile sid='*';
注:以上参数,指定spfile修改的,在实例重启后生效。
采用OMF时,主、备库均只能使用一个ASM磁盘组,否则禁用OMF:
alter system reset db_create_file_dest sid='*';
alter system reset db_create_online_log_dest_n sid='*'; #n为数值变量
alter system reset db_recovery_file_dest sid='*';
5.打开归档模式
首先确认当前数据库是否是归档模式,如果不是,则打开归档模式。
archive log list;
srvctl stop database -d stephen
srvctl start database -d stephen -o mount
alter database archivelog; --在一个节点执行即可
alter database open; --各节点执行
6.备份primary database
rman target / <<EOF
run{allocate channel c1 type disk;
allocate channel c2 type disk;
backup full database format '/backup/full_%U.bak' plus archivelog;
sql 'alter system switch logfile';
backup current controlfile for standby format '/backup/c_%U.bak';
release channel c1;
release channel c2;
}
EOF
Standby database configure
前期准备
首先安装CRS,RDBMS软件,配置ASM,netca创建监听。
1.配置各节点环境变量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1
export ORACLE_SID=standby1 #根据节点修改
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib #不同平台变量名不一样
2.配置redo传输认证
(1) tnsnames.ora
配置各节点的$ORACLE_HOME/network/admin/tnsnames.ora文件:
STEPHEN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stephen)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dgnode1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = dgnode2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = standby)
)
)
LISTENERS_STANDBY =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dgnode1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = dgnode2-vip)(PORT = 1521))
)
重载各节点监听:
lsnrctl reload
(2) tnsping命令解析网络服务名,命令须返回OK.
$ tnsping stephen
(3) 密码文件
使用主库的密码文件:
scp $ORACLE_HOME/dbs/orapwstephen1 dgnode1:$ORACLE_HOME/dbs/orapwstandby1
scp $ORACLE_HOME/dbs/orapwstephen1 dgnode2:$ORACLE_HOME/dbs/orapwstandby2
3.创建目录
在各节点创建相关目录:
mkdir -p $ORACLE_BASE/admin/standby/{adump,bdump,cdump,dpdump,pfile,udump,hdump}
创建ASM目录:
export ORACLE_SID=+ASM1
SQL> alter diskgroup data add directory '+DATA/STANDBY';
4.参数文件
用primary的pfile加以修改,以保证某些参数与primary保持一致,注意主备库内存的大小适当的调整内存相关参数。
scp node1:/tmp/pfile.bak $ORACLE_HOME/dbs/initstandby1.ora
修改pfile为需要的standby pfile,并创建spfile.特别注意以下事例的参数设定:
*.audit_file_dest='/u01/app/oracle/admin/standby/adump'
*.background_dump_dest='/u01/app/oracle/admin/standby/bdump'
*.user_dump_dest='/u01/app/oracle/admin/standby/udump'
*.core_dump_dest='/u01/app/oracle/admin/standby/cdump'
*.cluster_database_instances=2
*.cluster_database=true
*.db_create_file_dest='+DATA'
*.db_name='stephen'
*.db_unique_name='standby'
*.service_names='standby'
standby1.instance_name='standby1'
standby2.instance_name='standby2'
standby2.instance_number=2
standby1.instance_number=1
*.remote_listener='LISTENERS_STANDBY'
standby1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=dgnode1-vip)(PORT=1521))'
standby2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=dgnode2-vip)(PORT=1521))'
standby2.thread=2
standby1.thread=1
*.undo_management='AUTO'
standby1.undo_tablespace='UNDOTBS1'
standby2.undo_tablespace='UNDOTBS2'
*.log_archive_config='dg_config=(stephen,standby)'
*.log_archive_dest_1='location=+DATA valid_for=(all_logfiles,all_roles) db_unique_name=standby'
*.log_archive_dest_2='service=stephen lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=stephen'
*.log_archive_max_processes=30 #根据需求调整个数
*.remote_login_passwordfile=exclusive # exclusive/shared
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_format='%t_%s_%r.arc'
*.fal_server=stephen
*.fal_client=standby
*.standby_file_management=auto
*.db_file_name_convert='+DATA/STEPHEN','+DATA/STANDBY'
*.log_file_name_convert='+DATA/STEPHEN','+DATA/STANDBY'
以pfile启动数据库实例到nomount阶段,只需要启动一个实例用来做恢复即可:
SQL> startup nomount pfile='?/dbs/initstandby1.ora';
注意:以下恢复操作,只在一个节点做。
5.恢复standby controlfile
RMAN> restore standby controlfile to '+DATA' from '/backup/c_0aqn43be_1_1.bak';
修改control_files参数执行controlfile位置:
alter system set control_files='+DATA/standby/controlfile/current.257.896669437' scope=spfile sid='*';
重启实例:
shutdown immediate;
startup nomount pfile='?/dbs/initstandby1.ora';
alter database mount standby database;
6.恢复数据文件
查询primary database的数据文件信息:
set lines 300 pages 300
col name for a60
col member for a60
select file#,name from v$datafile
union all
select file#,name from v$tempfile;
启动standby到mount阶段,恢复数据文件:
RMAN> run{
set newname for datafile 1 to '+DATA';
set newname for datafile 2 to '+DATA';
set newname for datafile 3 to '+DATA';
set newname for datafile 4 to '+DATA';
set newname for datafile 5 to '+DATA';
set newname for tempfile 1 to '+DATA';
restore database;
switch datafile all;
switch tempfile all;
recover database;
}
查看standby database log file:
set lines 200 pages 300
col member for a60
select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB
from v$log a,v$logfile b
where a.group#=b.group#
union all
select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB
from v$standby_log a,v$logfile b
where a.group#=b.group#;
7.注册OCR
注册DB,Instance到OCR:
srvctl add database -d standby -o $ORACLE_HOME
srvctl add instance -d standby -i standby1 -n dgnode1
srvctl add instance -d standby -i standby2 -n dgnode2
srvctl modify instance -d standby -i standby1 -s +ASM1
srvctl modify instance -d standby -i standby2 -s +ASM2
查看资源状态:
crs_stat -t
Name Type Target StateHost
------------------------------------------------------------
ora....SM1.asm application ONLINE ONLINEdgnode1
ora....E1.lsnr application ONLINE ONLINEdgnode1
ora....de1.gsd application ONLINE ONLINEdgnode1
ora....de1.ons application ONLINE ONLINEdgnode1
ora....de1.vip application ONLINE ONLINEdgnode1
ora....SM2.asm application ONLINE ONLINEdgnode2
ora....E2.lsnr application ONLINE ONLINEdgnode2
ora....de2.gsd application ONLINE ONLINEdgnode2
ora....de2.ons application ONLINE ONLINEdgnode2
ora....de2.vip application ONLINE ONLINEdgnode2
ora.standby.db application OFFLINE OFFLINE
ora....y1.inst application OFFLINE OFFLINE
ora....y2.inst application OFFLINE OFFLINE
启用DB跟随CRS启动:
srvctl enable database -d standby
8.创建spfile
SQL> create spfile='+DATA' from pfile='?/dbs/initstandby1.ora';
关闭数据库实例,修改各节点pfile,然后以spfile启动数据库:
SQL> shutdown immediate
通过asmcmd命令查看spfile的位置
asmcmd find +DATA/standby spfile*
+DATA/standby/parameterfile/spfile.256.896665481
修改各节点pfile:
cd $ORACLE_HOME/dbs
echo "spfile='+DATA/standby/parameterfile/spfile.256.896665481">initstandby1.ora
echo "spfile='+DATA/standby/parameterfile/spfile.256.896665481">initstandby2.ora
以spfile启动实例到mount阶段:
srvctl start database -d standby -o mount
查看资源状态:
crs_stat -t
Name Type Target StateHost
------------------------------------------------------------
ora....SM1.asm application ONLINE ONLINEdgnode1
ora....E1.lsnr application ONLINE ONLINEdgnode1
ora....de1.gsd application ONLINE ONLINEdgnode1
ora....de1.ons application ONLINE ONLINEdgnode1
ora....de1.vip application ONLINE ONLINEdgnode1
ora....SM2.asm application ONLINE ONLINEdgnode2
ora....E2.lsnr application ONLINE ONLINEdgnode2
ora....de2.gsd application ONLINE ONLINEdgnode2
ora....de2.ons application ONLINE ONLINEdgnode2
ora....de2.vip application ONLINE ONLINEdgnode2
ora.standby.db application ONLINE ONLINEdgnode2
ora....y1.inst application ONLINE ONLINEdgnode1
ora....y2.inst application ONLINE ONLINEdgnode2
9.应用日志
应用日志只需要在一个节点执行即可,日志应用可选择应用archive log或redo log.
应用archive log:
recover managed standby database disconnect;
实时应用redo logfile:
recover managed standby database using current logfile disconnect;
取消应用日志:
recover managed standby database cancel;
10.观察日志传输
跟踪primary,standby database的alert log,观察是否有错误发生,也可以看到应用日志的相关信息。
确认standby是否应用日志:
--primary端多切几次日志,观察alert log信息。
alter system switch logfile;
--观察主备库日志序列号
archive log list;
--primary端查询v$archived_log视图,确认日志是否被应用:
set lines 300 pages 300
col name for a20
select name,dest_id,thread#,sequence#,standby_dest,applied,registrar,completion_time from v$archived_log
where standby_dest='YES'
order by thread#,sequence#;
--primary端查询primary,standby的最大日志序列号是否一致:
select 'Primary :' "DB Role",thread#,max(sequence#)
from v$archived_log
where standby_dest='NO'
group by thread#
union
select 'Standby :' "DB Role",thread#,max(sequence#)
from v$archived_log
where standby_dest='YES' and applied='YES'
group by thread#
order by thread#;
ORACLE10g R2【RAC+ASM→RAC+ASM】的更多相关文章
- ORACLE10g R2【RAC+ASM→单实例FS】
ORACLE10g R2[RAC+ASM→单实例FS] 10g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境: primary standby OS Hostnam ...
- ORACLE10g R2【单实例 FS→单实例FS】
ORACLE10g R2[单实例FS→单实例FS] 本演示案例所用环境: primary standby OS Hostname pry std OS Version RHEL5.8 RHEL5. ...
- CentOS5.6下安装Oracle10G软件 【保留报错经验】
CentOS5.6下安装Oracle10G ****************************************************************************** ...
- SQL Server 2008 R2【SET ANSI_PADDING填充属性】插入一条数据后,为何每一列都默认的在字符后多了几个空格
当加入空格后查出 解决: 导致出现这样的现象的原因就是SET ANSI_PADDING选项. 这个选项只在数据表的字符串字段被更新或者新的数据行插入到表中的时候作用.它控制着SQL Server在遇到 ...
- ORACLE11g R2【RAC+ASM→单实例FS】
ORACLE11g R2[RAC+ASM→单实例FS] 11g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境: primary standby OS Hostnam ...
- ORACLE11g R2【RAC+ASM→RAC+ASM】
ORACLE11g R2[RAC+ASM→RAC+ASM] 本演示案例所用环境:RAC+ASM+OMF primary standby OS Hostname node1,node2 dgnode ...
- 【翻译自mos文章】11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值
[翻译自mos文章]11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值 来源于: Default and Minimum ME ...
- bay——Oracle RAC环境下ASM磁盘组扩容.docx
https://www.cnblogs.com/polestar/p/10115263.html Oracle RAC环境下ASM磁盘组扩容 生产环境注意调整以下参数: +++++++++++++++ ...
- Installation of SAP on RAC with Oracle ASM(转)
https://blogs.sap.com/2016/03/17/installation-of-sap-on-rac-with-oracle-asm-part-3distributed-enviro ...
随机推荐
- AnkhSvn介绍 插件
转载:http://www.cnblogs.com/lyhabc/articles/2483011.html AnkhSVN是一款在VS中管理Subversion的插件,您可以在VS中轻松的提交.更新 ...
- 客户端运行gpupdate /force,后提示原因是缺少到域控制器的网络连接
问题: C:\Users\wb>gpupdate /force正在更新策略... 用户策略更新成功完成.无法成功更新计算机策略.遇到下列错误: 处理组策略失败,原因是缺少到域控制器的网络连接.这 ...
- iscsi共享存储的简单配置和应用
1.环境介绍 SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议.从根本上说,iSCSI协议是一种利用IP网络来 ...
- CF(438D) The Child and Sequence(线段树)
题意:对数列有三种操作: Print operation l, r. Picks should write down the value of . Modulo operation l, r, x. ...
- 使用cocos2dx 3.2和cocosstudio屏幕适配总结----相对布局
屏幕适配的文章太多了,基本上都是理论性的东西.大家明确了机制就知道了.没有完美的适配方案,除非你们的美工愿意折腾. 常规策略: 今天研究了一下屏幕适配导致的缩放和展示不全的问题(黑边的方案直接淘汰). ...
- opencms9.0安装
今天安装opencms 9.0遇到了一些问题,因为是初次安装和使用,导致耽误了非常多时间.所以在此记录一下以备以后借鉴. 首先附上安装步骤链接: http://www.51testing.com/ht ...
- 创建maven项目pom.xml出现错误(依赖Missing)
Maven的依赖问题 在聚合模块时候,发现在父工程目录中的依赖存在一些问题.一开始是${pagehelper.version},后来将版本直接填写相应的版本如图下 依赖添加失败 * 在父工程的jar包 ...
- DG应用日志相关操作
应用archive log: recover managed standby database disconnect; 应用redo logfile: recover managed stan ...
- RK3066 实现LED闪烁的代码分析
实现LED灯的闪烁,须要在驱动里加入一个定时器函数,详细实现涉及到了LED GPIO驱动.用户空间程序调用驱动程序. 1.首先来看LED设备驱动注冊过程,代码位于../kernel/drivers/l ...
- android基于开源网络框架asychhttpclient,二次封装为通用网络请求组件
网络请求是全部App都不可缺少的功能,假设每次开发都重写一次网络请求或者将曾经的代码拷贝到新的App中,不是非常合理,出于此目的,我希望将整个网络请求框架独立出来,与业务逻辑分隔开,这样就能够避免每次 ...