RAC TO SINGLE INSTANCE--nfs

DATA GUARD实践
RAC TO SINGLE INSTANCE
前序
rac归档设置
ORACLE RAC模式运行时,每个实例都产生归档日志,在需要做介质恢复时,集群中的任意节点
需读取到所有的日志才能完成恢复。
一个节点如何读取到所有节点的归档日志?
归档日志必须存储在文件系统上。如果存储在asm或cluster file system上则不存在这个问题
但是如果存储在本地。。。则有两种方式实现nfs文件系统或远程归档
控制文件仅记录了所有节点归档日志存储路径。节点通过读取控制文件获得归档日志路径,因此
本地归档就要求任意节点都能访问或保存有所有节点的归档日志。
测试
nfs
NFS(network file system),网络文件系统,不同的操作系统可以通过NFS来共享文件,
可以简单地将之看成是一个文件服务器。可以将远端的主机分享目录挂载到本地的目录下,
使用的时候就像本地的目录一样,只要权限足够
一、nfs配置
以双节点rac为例
node  rac1  rac2
dbname  orcl
步骤:
1、在所有节点上创建目录/onlinelog1    /onlinelog2
修改属主为oracle 或文件other权限
rac1 对应 log1   rac2对应 log2
2、编辑rac1  /etc/exports
/onlinelog1   *(rw,sync,no_wdelay,insecure_locks,no_root_squash)
 编辑rac2  /etc/exports
/onlinelog2 *(rw,sync,no_wdelay,insecure_locks,no_root_squash)
3、分别开启nfs服务
exportfs -rv --重新装载文件
service  nfs restart--开启服务
chkconfig  --list nfs  --查看
chkconfig  --level 35 nfs on--修改服务在35级别的运行权限
4、挂载
分别挂载到对应节点的目录上
rac1 /onlinelog1  挂到 rac2 /onlinelog1
写入fstab
rac1:/onlinelog1  /onlinelog1  nfs rw,bg,hard,nointr,tcp,vers=3,timeo=300,
rsize=32768,wsize=32768,actimeo=0  0 0

rac1上
rac2:/onlinelog2  /onlinelog2 nfs nfs rw,bg,hard,nointr,tcp,vers=3,timeo=300,
rsize=32768,wsize=32768,actimeo=0  0 0
指定参数具体含义如下:
rw 以读写方式安装文件系统(也必须要以相同的方式来导出)
ro 以只读方式安装文件系统
bg 如果安装失败(服务器没有响应),在后台一直尝试,继续发其它的安装请求
hard 以硬方式安装文件系统(这是默认情况)。如果服务器宕机,让试图访问它的操作被阻塞,
     直到服务器恢复为止。
soft 以软方式安装文件系统。如果服务器宕机,让试图访问它的操作失败,返回一条出错消息。
     这项功能对于避免进程“挂”在无关紧要的安装操作上来说非常有用。
intr 允许用户中断被阻塞的操作(并且让它们返回一条出错消息)
nointr 不允许用户中断
retrans=n 指定在以软方式安装的文件系统上,在返回一条出错消息之前重复发出请求的次数。
timeo=n 设置请求的超时时间(以十分之一秒为单位)
rsize=n 设置读缓冲的大小为n字节。对TCP和UDP安装都适用,但最优值不一样(32K较好)。
wsize=n 设置写缓冲的大小为n字节。对TCP和UDP安装都适。
nfsvers=n 设置NFS协议的版本 2 或者 3 (在正常情况下是自动的)
tcp 选择通过TCP来传输。默认选择UDP
fg 和bg正好相反,是默认的参数

第一次挂载
ex:
节点rac2
mount -t nfs -o rw,hard  rac1:/onlinelog1 /onlinelog1
注必须有hard选项 否则后面会报
ORA-27054: NFS file system where the file is created or resides is not mounted with correct options
或备份归档失败等。
ex:
RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due
RMAN-06208:          to mismatched status.  Use CROSSCHECK command to fix status
RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212:   Object Type   Filename/Handle
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Archivelog      /log2/2_42_727198250.dbf

上面都弄好 就可以测试本地添加的  远程节点是否能读能删。
二、dg配置
2.1配置备库
配置环境变量  设置oracle_sid  alone 等
安装时只安装数据库软件  netca创建监听--已有数据库就可以省点 只需注册数据库即可
修改监听文件
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = alone)
      (ORACLE_HOME = /u01/oracle/product/10.2.0/db_1)
      (SID_NAME = alone)
    )
  )
--静态监听
修改tnsname.ora添加本地和远程节点entry同样的操作在rac节点上添加单实例的entry
export ORACLE_SID=alone
创建密码忘记
orapwd   file=***/dbs/orapwSID.ora  password=***--密码必须跟主库一样
sqlplus "/as sysdba"
startup pfile='filename' nomount--启动到nomount状态
pfile可以自己编辑 嫌麻烦可从rac那拷贝一份做适当修改
然后 注册数据库
alter system register
>lsnrctl查看status
2.2 主库测试网络连通
tnsping   network_server_name
通..则:试试  rman target /  auxiliary  sys/***@network_server_name
测试过程会有一系列的问题
-----------------------------------------------------------------
[oracle@rac2 ~]$ rman target/ auxiliary sys/111111@alone_inst

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Aug 24 12:11:28 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1254978982)
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04006: error from auxiliary database: ORA-12541: TNS:no listener

监听没开启
[oracle@rac2 ~]$ rman target/ auxiliary sys/111111@alone_inst

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Aug 24 12:13:56 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1254978982)
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04006: error from auxiliary database: ORA-01031: insufficient privileges
standby  未设置sys密码 或密码与主库不一致
-------------------------------------------------------------------------------
2.3 配置主库参数文件
添加-------
log_archive_config='dg_config=(orcl,alone)'--remote_db_unique_name
--这个参数控制主机与备机间是否传送或接收日志
--默认值是  'SEND, RECEIVE, NODG_CONFIG'
--DG_CONFIG=(remote_db_unique_name1 [, ... remote_db_unique_name9)
log_archive_dest_3='service=alone_inst valid_for=(online_logfiles,primary_role) db_unique_name = alone'
--SERVICE=network_service_name  参数key 和value 间不能有空格 参数间要空格间隔
db_file_name_convert = '/u01/oracle/oradata/alone','+dga/orcl/datafile','/u01/oracle/oradata/alone','+dga/orcl/tempfile'
log_file_name_convert = '/u01/oracle/oradata/alone','+dga/orcl/onlinelog'
--主库切换成备库后  数据文件和日志文件的转换
standby_file_management = auto
fal_server='alone_inst'
orcl1.fal_client='orcl1'
orcl2.fal_client='orcl2'
orcl1.log_archive_dest_1='location=/onlinelog1'--本地
orcl2.log_archive_dest_1='location=/onlinelog2'
注:
create spfile from pfile;
or
create spfile from pfile='文件名';
文件名:init.ora 如果指定这个文件名 就会在dbs下找到原始文件去创建spfile
重启后会发现报共享区不过60m
or
create spfile from pfile='绝对路径';
spfile默认都会在dbs下创建一个spfileSID.ora
2.4 配置备库参数文件
*.audit_file_dest='/u01/oracle/admin/alone/adump'--这些目录预先创建
*.background_dump_dest='/u01/oracle/admin/alone/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/onlinelog1/control.ctl'--远程复制过来的副本
*.core_dump_dest='/u01/oracle/admin/alone/cdump'
*.db_block_size=8192
*.db_file_multiblock_read_count=16
*.db_name='orcl'--必须跟主库一样
db_domain =''
db_unique_name=alone--不能少
*.db_recovery_file_dest='/u01/oracle/admin/alone/archivelog'
*.db_recovery_file_dest_size=1294967296
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
log_archive_dest_1='location=/u01/oracle/archive'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='exclusive'
*.sga_target=367772160
sga_max_size=367772160
*.undo_management='AUTO'
undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/oracle/admin/alone/udump'
log_archive_config='dg_config=(orcl,alone)'
log_archive_dest_3='service=orcl2 LGWR ASYNC valid_for=(online_logfiles,primary_role) db_unique_name=orcl'
--备库 切换成主库后远程归档路径
standby_file_management = auto
fal_server='orcl1','orcl2'
fal_client='alone_inst'
2.5 主库rac1或rac2备份数据库
rman target/  auxiliary sys/**@network_server_name
backup database format '/onlinelog1/%u_%d.arc';
sql 'alter system archive log current';--归档
sql>alter database create standby controlfile as '/onlinelog1/control.ctl';
远程复制所有文件
scp  *    oracle@alone:/onlinelog1/.
备库上需要一样的路径
再次进入rman
执行远程还原 恢复
dulipcate  target database for standby;
...
粗心碰到的异常
-----------------------------------------------------
duplicate target database for standby
ORA-19870: error reading backup piece /log2/06lm539i_ORCL.arc
ORA-19504: failed to create file "/u01/oracle/oradata/alone/system.256.727198175"
ORA-27040: file create error, unable to create file
Linux Error: 2: No such file or directory
备库没有创建相关目录
备库创建目录 当前备库状态是mounted 需startup force nomount


restoring datafile 00006 to /u01/oracle/oradata/alone/undotbs2.265.727198527
channel ORA_AUX_DISK_1: reading from backup piece /log2/06lm539i_ORCL.arc
ORA-19870: error reading backup piece /log2/06lm539i_ORCL.arc
ORA-19502: write error on file "/u01/oracle/oradata/alone/system.256.727198175", blockno 36449 (blocksize=8192)
ORA-27072: File I/O error
备库空间不足

出现ORA-16047: DGID mismatch between destination setting and standby
可能是db_config 有错 或备机没有配置db_unique_name(也是备库日志文件转换异常的原因)
--------------------------------------------------
2.6  完成恢复后
分别在主备库上查看归档路径是否正常
select dest_name,error,status from v$archive_dest;--正常是valid
select max(sequence#) from v$archived_log;--查看当前日志是否同步
在备库上查看instance状态
select status from v$instance--正常是mounted
select database_role from v$database  --查看数据角色
select member from v$logfile;--查看日志
添加standby日志文件
每个thread 三个group组合
alter database add standby logfile thread 1 group 5 ('**') size;
三、完成后操作
(1)启动到管理模式
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
(2)启动到只读方式
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database open read only;
(3)如果在管理恢复模式下到只读模式
SQL>recover managed standby database cancel;
SQL>alter database open read only;
这个时候,可以给数据库增加临时数据文件(这个在热备份的时候是没有备份过来的)

alter tablespace temp add tempfile '/u02/oradata/BOSS/temp01.dbf' size 100M;
(4)从只读方式到管理恢复方式
SQL>recover managed standby database disconnect from session;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21993926/viewspace-671766/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21993926/viewspace-671766/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值