可能看着有点儿乱,基本思路是利用控制文件复制一个库到灾备机,然后配置dataguard,最后由最大性能升级到最大可用性。
[@more@]环境描述
A机:primary(这里A机在现场为HA的主,对于主的所有参数调整都要对备作相应调整)192.168.1.4
B机:standby(这里指现场的灾备机)192.168.1.7
Oracle_SID是testdb。
环境:aix , Oracle版本:9.2.0.6
第一步:核查并创建oracle软件副本
检查A机、B机的oracle版本是否一致
如果一致,不做任何操作。检查路径profile文件
如果不一致,将A机的$ORACLE_HOME目录打包,然后传送到B机,解压缩,路径保持一致,调整profile文件路径。
tar cvf product.tar product
sftp B或者sftp A
tar xvf product.tar
注意:如果是新装oracle,需按照oracle安装文档作设置系统参数等操作。这里不作说明。
第二步:调整A、B机的listener.ora以及tnsnames.ora文件
添加如下内容
service_name为primary的指向A机
service_name为standby的指向B机
l tnsnames.ora
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)
PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.4)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)
l listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/9.2.0.6)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.4)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
启动a机、b机的监听进程。
第三步:A机操作
l 调整为归档模式
>startup mount
>alter database archivelog;
>archive log list;
l 创建RMAN副本
rman target / nocatalog
RMAN> run
{
allocate channel d1 type disk;
backup database format '/backup/temp/backup%d%U.rman';
}
l 创建standby的控制文件
上一步成功做完之后
SQL>alter database create standby controlfile as ‘/oracle/final/testdbstandby.ctl’;
l 创建A机的pfile并备份,一定要做好备份,这是对A机数据库唯一进行调整的地方,生产机尤其注意了,参数文件作备份。
SQL>create pfile=’/oracle/final/inittestdb.ora’ from spfile;
$cp inittestdb.ora inittestdb.ora.backup.20070727
l 保证数据库所有操作都生成日志。避免nologging造成的数据丢失。
alter database force logging;
第四步:b机操作
l 创建如下目录
mkdir -p $ORACLE_BASE/admin/testdb/bdump/
mkdir -p $ORACLE_BASE/admin/testdb/udump/
mkdir -p $ORACLE_BASE/admin/testdb/cdump/
mkdir -p $ORACLE_BASE/admin/testdb/pfile/
mkdir -p $ORACLE_BASE/admin/testdb/create/
mkdir -p $ORACLE_BASE/oradata/testdb
mkdir -p $ORACLE_BASE/oradata/testdb/archive
本次$ORACLE_BASE=/oracle
l 生成密码文件
orapwd file=$ORACLE_HOME/dbs/orapwtestdb password=oracle entries=5
l 从A机中获取如下文件
参数文件:inittestdb.ora(考虑到每台机器的配置可能不同,内存参数不一致,该参数文件不一定非要从A机获取,另外从A机获取的参数文件需要调整control_file的位置)
控制文件:/oracle/final/testdbstandby.ctl
rman备份文件:/backup/temp/backup*.rman
l 调整oracle数据库启动参数文件inittestdb.ora
增加如下内容:
*.fal_client='standby'
*.fal_server='primary'
*.standby_archive_dest='/tttarch1'
*.standby_file_management=auto
注意:此处的primary、standby对应你在前面的tnsnames.ora里面设置的service_name
l 拷贝控制文件
拷贝控制文件到指定参数文件inittestdb.ora内control_files指定的位置
cp testdbstandby.ctl /oracle/final/ testdbstandby.ctl001.ctl
cp testdbstandby.ctl /oracle/final/ testdbstandby.ctl002.ctl
cp testdbstandby.ctl /oracle/final/ testdbstandby.ctl003.ctl
l 利用rman复制a机数据库到b机
由于路径的原因,需要做
#ln -s /tttmngarch1 /backup/temp
sqlplus /nolog
SQL>connect / as sysdba
SQL>startup nomount pfile=’/oracle/final/inittestdb.ora’
SQL>alter database mount standby database;
$rman target / nocatalog
RMAN>run
{
allocate channel d1 type disk;
restore database;
}
注意/backup/temp备份文件目录要与a机路径一致。
l 设置自动恢复模式
SQL>shutdown immediate;
SQL>create spfile from pfile=’/oracle/final/inittestdb.ora’
SQL>startup nomount ;
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnect from session;
第五步:a机操作
a机作一次重启,重启的意义在于强制所有操作都生成日志 alter database force logging;
如果没有业务执行或者稳妥考虑,可不做重启动作。
调整参数文件inittestdb.ora,增加如下内容并重新启动
*.fal_client=standby
*.fal_server=primary
*.standby_archive_dest='/tttarch1'
*.standby_file_management=auto
注意此处作如下操作
startup mount pfile=’/oracle/final/inittestdb.ora’;
alter database force logging;
alter database open;
alter system set log_archive_dest_2=' service=standby reopen=200';
注意:此时不能做操作覆盖spfile文件,重新启动用pfile启动。
第六步:升级成最大可用性模式
1. b机添加standby redo log
SQL> alter database recover managed standby database cancel;
SQL> alter database add standby logfile '/ora_std_log/std_redo_log1' size 387973120 reuse;
SQL> alter database add standby logfile '/ora_std_log/std_redo_log2' size 387973120 reuse;
SQL> alter database add standby logfile '/ora_std_log/std_redo_log3' size 387973120 reuse;
SQL> alter database recover managed standby database disconnect from session;
需要注意的一点:standby_redo_log和redo_log应该保持一致。
2. 修改a机参数:
SQL> shutdown immediate;
关闭数据库后修改init 初始化参数文件(/oracle/final/inittestdb.ora)参数
log_archive_dest_2=' service=standby LGWR SYNC mandatory affirm reopen=200'
SQL> startup mount;
SQL> alter database set standby to maximize availability;
SQL> alter database open;
到这里从maximize performance 升级成为 Maximize availability 就算完成了,同样还可以升级到最大数据保护模式.
第七步:测试
测试一:
a机作强制归档
SQL>alter system archive log current
监控b机的alert_testdb.log,如果获得类似下面的提示,表明部署成功。
Fri Jul 27 13:09:52 2007
Media Recovery Log /oracle/oradata/testdb/archive/1_31.dbf
Media Recovery Log /oracle/oradata/testdb/archive/1_32.dbf
Media Recovery Log /oracle/oradata/testdb/archive/1_33.dbf
Media Recovery Log /oracle/oradata/testdb/archive/1_34.dbf
Media Recovery Waiting for thread 1 seq# 35
测试二:
a机上
SQL>create user test identified by testuser;
SQL>grant connect,resource to test;
SQL>alter system archive log current;
b机上以只读方式打开数据库
alter database recover managed standby database finish/cancel;
alter database open read only;
然后以test用户登录,成功登陆,说明部署成功。
connect test/testuser
第八步:其他操作
l 所有测试通过并确认无误以后,对a机作spfile生成操作,并重新启动。
SQL>create spfile from pfile=’/oracle/final/inittestdb.ora’
SQL>shutdown immediate;
SQL>startup
l 在ha的另外一台机器上192.168.1.3上调整spfile参数
调整步骤如下:
sqlplus /nolog
SQL>connect / as sysdba
SQL>create pfile=’/oracle/fina/inittestdb.ora’ from spfile;
修改inittestdb.ora参数文件,增加
log_archive_dest_2=' service=standby LGWR SYNC mandatory affirm reopen=200'
SQL>create spfile from pfile=’/oracle/final/inittestdb.ora’
另外需要调整tnsnames.ora文件,添加
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)
PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.4)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)
l 注意:如果利用pfile启动的时候
alter system log_archive_dest_2=’ service=testdbguard reopen=200’
在每次重新启动时需要重做一遍。
l 不能调整b机的归档模式,也就是说不能调整成非归档模式
SQL> startup mount;
ORACLE instance started.
Total System Global Area 135337540 bytes
Fixed Size 452164 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-01666: controlfile is for a standby database
l 其他的参数
log_archive_config 10g增加的新参数
db_unique_name 10g增加的新参数
本次9i,用不到
参考资料见:
http://orafaq.com/parms/index.htm
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/137423/viewspace-929554/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/137423/viewspace-929554/