ORACLE11g R2【RAC+ASM→RAC+ASM】
ORACLE11g R2【RAC+ASM→RAC+ASM】
本演示案例所用环境:RAC+ASM+OMF
|
|
primary |
standby |
|
OS Hostname |
node1,node2 |
dgnode1,dgnode2 |
|
OS Version |
RHEL6.5 |
RHEL6.5 |
|
DB Version |
11.2.0.4 |
11.2.0.4 |
|
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 ignorecase=y 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 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=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/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)
)
)
重载各节点监听:
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,dpdump,pfile}
创建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,特别注意以下事例的参数设定:
*.audit_file_dest='/u01/app/oracle/admin/standby/adump'
*.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='cluster-scan:1521'
standby1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=dgnode1-vip)(PORT=1521))'
standby2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=dgnode2-vip)(PORT=1521))'
*.remote_login_passwordfile='exclusive'
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
*.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
SQL> startup nomount;
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
查看资源状态:
crsctl status res -t -w "TYPE = ora.database.type"
--------------------------------------------------------------------------------
NAMETARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.standby.db
1 OFFLINE OFFLINE
2 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阶段(Data Guard)或open read only阶段(Active Data Guard):
--启动到mount:
srvctl start database -d standby -o mount
--启动到open read only:
srvctl start database -d standby -o 'read only'
查看资源状态:
crsctl status res -t -w "TYPE = ora.database.type"
--------------------------------------------------------------------------------
NAMETARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.standby.db
1 OFFLINE OFFLINE dgnode 1 Open,Readonly
2 OFFLINE OFFLINE dgnode 2 Open,Readonly
如果状态显示为Open,此为ORACLE BUG,参考MOS DOC 1622876.1
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;
打开数据库至read only模式并开始实时复制:
recover managed standby database using current logfile disconnect;
10.观察日志传输
跟踪primary,standby database的alert log,观察是否有错误发生,也可以看到应用日志的相关信息。
确认standby是否应用日志:
--primary端多切几次日志,观察alert log信息。
alter system switch logfile;
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#;
ORACLE11g R2【RAC+ASM→RAC+ASM】的更多相关文章
- ORACLE11g R2【RAC+ASM→单实例FS】
ORACLE11g R2[RAC+ASM→单实例FS] 11g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境: primary standby OS Hostnam ...
- ORACLE11g R2【单实例 FS→单实例FS】
ORACLE11g R2[单实例 FS→单实例FS] 本演示案例所用环境: primary standby OS Hostname pry std OS Version RHEL6.5 RHEL6 ...
- SQL Server 2008 R2【SET ANSI_PADDING填充属性】插入一条数据后,为何每一列都默认的在字符后多了几个空格
当加入空格后查出 解决: 导致出现这样的现象的原因就是SET ANSI_PADDING选项. 这个选项只在数据表的字符串字段被更新或者新的数据行插入到表中的时候作用.它控制着SQL Server在遇到 ...
- oracle11G 命令【导库数量对比】
1.查询用户有哪些表 select * from all_tables where owner='ZJY'; 160 rows selected. 2. 查询总数 select object_type ...
- ORACLE10g R2【RAC+ASM→RAC+ASM】
ORACLE10g R2[RAC+ASM→RAC+ASM] 本演示案例所用环境:RAC+ASM+OMF primary standby OS Hostname node1,node2 dgnode ...
- ORACLE10g R2【RAC+ASM→单实例FS】
ORACLE10g R2[RAC+ASM→单实例FS] 10g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境: primary standby OS Hostnam ...
- ORACLE11G R2 RAC的进程启动流程
简要说明ORACLE11GR2 RAC的进程启动流程: 1.启动流程概览图: 二.RAC启动流程的梳理: 第一层:OHASD 启动:(OHASD派生) 1.CSSDAGENT负责启动CSSD的AGEN ...
- 【翻译自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磁盘组扩容 生产环境注意调整以下参数: +++++++++++++++ ...
随机推荐
- 安装配置FreeBSD9全过程体验
安装配置FreeBSD9全过程体验(时长11分钟) 总所周知,FreeBSD是一个高效.稳定的UNIX操作系统.在今年年初,FreeBSD 又发布了9.0版本,它将采用全新的文本安装器,升级ZFS文件 ...
- 机器学习(三) Jupyter Notebook, numpy和matplotlib的详细使用 (下)
七.Numpy中的矩阵运算 八.Numpy中的聚合运算 九.Numpy中的arg运算 十.Numpy中的比较和Fancy Indexing 十一.Matplotlib数据可视化基础 十二.数据加载和简 ...
- MVC5发展历程,从MVC2谈起
目前,MVC已经发布了5个版本,不包括一些临时的版本,为了更好的了解MVC5,知道MVC的发展历程是非常重要的.本篇随笔主要讲解3个版本的内容及其新特性. 1.MVC 2,发布日期:2010年3月 部 ...
- LINQ的基本语法包含如下的8个上下文关键字,这些关键字和具体的说明如下
出于工作需要,准备把LINQ的相关知识梳理一遍,希望能填补下之前学习漏掉的或是没有注意的地方,也为未来减轻压力~ LINQ查询表达式的基本语法很容易掌握,它使用C#常见的语言构造,从外观上看,和我们常 ...
- windows无法连接到打印机 错误提示0x00000214
win7 64位 同事win7 32位,通过\\IP连接,安装打印机时提示“windows无法连接到打印机 错误提示0x00000214” 开始——设备和打印机——添加打印机——添加本地打印机——创建 ...
- React-router 4 总结
React-Router 4: BrowserRouter包裹整个应用 Router路由对应渲染的组件,可嵌套 Link跳转专用 首先 然后 其他组件: url参数 Route组建参数可用冒号标识参数 ...
- 详解:Linux Chrony 设置服务器集群同步时间
导读: Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让 ...
- UIButton文字居左显示
题外话:时间依然过的非常快.不知不觉2015年就过去一半了.感觉自己好像没有大的改变.仅仅能感叹时间飞逝,却不能有所收获. 我从来都不是一个安于现状的人,改变自己的想法从未停止过.我想大多数人都跟我有 ...
- Android java.lang.NoSuchFieldError: No static field xxx of type I in class Lcom/XX/R$id; or its superclasses
项目开发快到尾声,突然发现之前一个模块莫名其妙的奔溃了,我的内心也是奔溃的.以前一直都是好好的,也没去动过它,为啥会出现这样的问题呢? 下面我会根据自己的理解来看待问题 android是怎么根据id查 ...
- Fragment-管理Fragment1
前面给大家稍微看了要怎么使用fragment,在上篇中,我们也初步接触到了add,replace这些fragment操作的函数,下面就再详细讲讲如何管理Fragment页面吧. 一.概述 1.Frag ...