Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1657463
  • 博文数量: 292
  • 博客积分: 10791
  • 博客等级: 上将
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-20 21:06
文章分类

全部博文(292)

文章存档

2011年(31)

2010年(261)

分类: Oracle

2010-05-28 10:52:06

平台:Oracle 10.2.0.1 on CentOS 5.1
Primary主机配置:
1、安装生产库,实例名为orcl
2、hostname为primary
3、主机已开启归档
Standby备机配置:
1、只安装软件
2、hostname为standby


Primary主机配置:

开启logging:
alter database force logging;


编辑primary参数:
使用alter system set修改[斜体部分据实际情况而定,静态参数指定scope=spfile]:
DB_UNIQUE_NAME=primary
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_1=
 'LOCATION=/arch
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_2=
 'SERVICE=standby_net LGWR ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 
  DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30

LOG_FILE_NAME_CONVERT='/arch','/archlog'

FAL_SERVER=standby_net
FAL_CLIENT=primary_net
STANDBY_FILE_MANAGEMENT=AUTO


导出primary参数文件:
create pfile='/tmp/initorcl.ora' from spfile;


创建standby控制文件:
alter database create standby controlfile as '/tmp/standby.ctl';

RMAN copy数据文件出来,并对其打包:
mkdir -p /tmp/oradata/orcl
使用RMAN拷贝数据文件:
 select 'copy datafile '||file_id ||' to '|| '''/tmp/oradata/orcl'||substr(file_name,instr(file_name,'/',-1))||'''' ||';' from dba_data_files order by 1;
在RMAN中执行以上语句执行的结果
tar -cvf oradata.tar oradata/

为了方便,拷贝文件至同一目录下:
cp $ORACLE_HOME/dbs/orapworcl $ORACLE_BASE
cp $ORACLE_HOME/dbs/initorcl.ora $ORACLE_BASE
cp /tmp/oradata.tar $ORACLE_BASE
cp /tmp/standby.ctl $ORACLE_BASE
cp /tmp/initorcl.ctl $ORACLE_BASE




Standby备机配置:

ftp至primary,下载所有文件:
ftp> bin
200 Switching to Binary mode.
ftp> cd /u01/app/oracle
ftp> mget oradata.tar
ftp> mget orapworcl
ftp> mget initorcl.ora
ftp> mget standby.ctl

解压oradata.tar:
cp oradata.tar $ORACLE_BASE
cd $ORACLE_BASE
tar -xvf $ORACLE_BASE

使用standby.ctl覆盖oradata中的三个控制文件:
[oracle@standby ~]$ cp standby.ctl /u01/app/oracle/oradata/orcl/control01.ctl 
[oracle@standby ~]$ cp standby.ctl /u01/app/oracle/oradata/orcl/control02.ctl 
[oracle@standby ~]$ cp standby.ctl /u01/app/oracle/oradata/orcl/control03.ctl

复制口令文件,pfile至dbs目录下:
cd
cp orapworcl $ORACLE_HOME/dbs
cp initorcl.ora $ORACLE_HOME/dbs

编辑从primary上拷贝过来的initorcl.ora文件[黑体为需要修改的地方]:

DB_NAME=orcl
DB_UNIQUE_NAME=standby
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_1=
 'LOCATION=/archlog
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=standby'
LOG_ARCHIVE_DEST_2=
 'SERVICE=primary_net LGWR ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 
  DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30


LOG_FILE_NAME_CONVERT='/arch','/archlog'

FAL_SERVER=primary_net
FAL_CLIENT=standby_net
STANDBY_FILE_MANAGEMENT=AUTO

使参数文件生效:
create spfile from pfile;

创建必要的目录:
mkdir -p /u01/app/oracle/admin/orcl/adump
mkdir -p /u01/app/oracle/admin/orcl/bdump
mkdir -p /u01/app/oracle/admin/orcl/cdump
mkdir -p /u01/app/oracle/admin/orcl/udump
mkdir -p /u01/app/oracle/admin/orcl/dpdump
mkdir -p /archlog



-----------------------------------------------------------------------------------
主备机各自修改listener.ora,并重启监听,使用netca配置tnsname,并在主备机上各自使用sqlplus进行测试。
tnsname(Oracle Net Service Name)的配置:
primary和standby上相同:
primary_net/standby_net[注:Net Service Name和db_unique_name不能相同,否则会包DGID mismatch的错误]

-----------------------------------------------------------------------------------

备机数据库切换至standby角色:
shutdown abort
startup mount;
检查归档传输是否正常
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;


测试:
在主备机上分别使用如下命令测试结果是否相同:
select max(sequence#) from v$archived_log;
在备机上使用如下命令测试日志是否被应用:
SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

参考:
阅读(1235) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~