资深Oracle数据库专家 OCM认证大师 10年数据库相关服务及开发经验 各类数据库相关方案的编写,管理及实施 数据中心数据库日常运维、大型项目割接、性能优化等方面有丰富的实战经验 客户包括: 电信,银行,保险,航空,国网,汽车,烟草等 想要一起学习探讨数据安全技术的请加qq群 256041954
全部博文(163)
分类: Oracle
2015-01-07 17:14:25
1. 在135.129.9.80 和135.129.9.81的服务器上安装oracle 9i rac软件。
2. 升级软件版本为9.2.0.8并安装小补丁
Installed Patch List:
=====================
1) Patch 5671074 applied on Sun Oct 21 20:49:04 GMT+08:00 2007
[ Base Bug(s): 5671074 ]
2) Patch 5496862 applied on Sun Oct 21 20:47:28 GMT+08:00 2007
[ Base Bug(s): 5496862 ]
3) Patch 5391326 applied on Sun Oct 21 20:39:33 GMT+08:00 2007
[ Base Bug(s): 5391326 ]
3. 划分并发vg和lv(两边的并发卷组同步,并用HACMP挂起)
注:
本次割接测试的vg pp为128M.
划分1个voting盘(/dev/srvmconf)用于rac心跳。
划分6组日志文件。每个实例用3组。
Mklv –y udfsrvmconf -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 2
mklv -y 'udfsrvmconf' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 2
mklv -y 'udfspfile' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 1
mklv -y 'udfctl01' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 1
mklv -y 'udfctl02' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 1
mklv -y 'udfctl03' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 1
mklv -y 'udfuser' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 2
mklv -y 'udftools' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 2
mklv -y 'udfindex' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 2
mklv -y 'udfsys01' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 16
mklv -y 'udfredo01' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 4
mklv -y 'udfredo02' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 4
mklv -y 'udfredo03' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 4
mklv -y 'udfredo04' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 4
mklv -y 'udftemp01' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udftemp02' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udftemp03' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udftemp04' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udfundo01' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udfundo02' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udfundo03' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udfundo04' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf001' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf002' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf003' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf004' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf005' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf006' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf007' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf008' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf009' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf010' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf011' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf012' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf013' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf014' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf015' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 32
mklv -y 'udf016' -w 'n' -s 'n' -r 'n' -t 'raw' uipracvg1 3
…………
4. 在2个节点创建归档日志目录/backup_crm/recover, /backup_crm/recover
5. 用dbca在当前存储上创建数据库,测试rac环境。
6. 停止生产库的归档日志的备份。(当时是备到带库后,又恢复出来的)
7. 备份生产库到指定目录
run{
allocate channel t1 type disk;
allocate channel t2 type disk;
sql 'alter system archive log current';
BACKUP INCREMENTAL LEVEL = 0 filesperset 5 DATABASE format "\rmanb\db_%d_%T_%s_%p_%c";
sql 'alter system switch logfile';
BACKUP current controlfile format "E:\rmanback\c_%d_%T_%c";
release channel t1;
release channel t2;
}
8. 传输备份时间开始产生的归档日志文件到135.129.9.80:/rmanb目录。
9. 在135.129.9.80上nomount数据库
拷贝生成库的参数文件$ORACLE_HOME/dbs/inituip.ora到本地目录。
Nomount数据库
Sqlplus /nolog
>startup nomount
10. 调整tnsnames.ora文件
拷贝生产库的tnsnames.ora中配置到135.129.9.80主机tnsnames.ora文件.
11. 在135.129.9.80上恢复数据库:
Run
{
Allocate channel ch_1 type disk;
Restore controlfile from “控制文件所在备份集”;
Sql ‘alter database mount’;
Release channel ch_1;
}
注:
恢复控制文件:
backup current controlfile format='/oracle/rmanback/%d_%s.ctl';
restore controlfile from '/rmanb/ uip1.ctl';
或者:
sql>
alter database backup controlfile to‘/oracle/uip.ctl’;
针对aix下,如果是其他系统 bs可能不同。
dd if=/rmanb/uip1.ctl of=/dev/rdfctl01 bs=4k seek=1
dd if=/rmanb/uip1.ctl of=/dev/rdfctl01 bs=4k seek=1
hp_nuxi下:
(注意:/oracle/test_fs.dbf大小8396800,/oracle/test_raw.dbf大小8380416,dd试着去拷贝8M+8k 的文件到8M的 raw逻辑卷)
正确的方法是让dd跳过第一个数据块
%dd if=/oracle/test_fs.dbf of=/oracle/test_raw.dbf bs=8192 skip=1
12. 在135.129.9.80恢复数据库(如果新生成的lv名字不一样,需要设置rename):
(1):
run{
set newname for datafile 1 to '/dev/r..';
set newname for datafile 2 to '/dev/r..';
set newname for datafile 3 to '/dev/r..';
set newname for datafile 4 to '/dev/r..';
set newname for datafile 5 to '/dev/r..';
restore database;
switch datafile all;
};
(2):
run{
allocate channel ch_1 type disk;
allocate channel ch_2 type disk;
set until SEQUENCE 147262 thread 1;
set ARCHIVELOG DESTINATION TO '/rmanb';
restore database;
sql 'alter database open';
release channel ch_1;
release channel ch_2;
}
13. 恢复归档
recover database using backup controlfile until cancel;
14 Resetlogs数据库
Sqlplus /nolog
>alter database open resetlogs;
15. 设置ORACLE_HOME和ORACLE_SID环境变量如下:
UIP1:
export ORACLE_SID=uip1
UIP2:
export ORACLE_SID=uip2
16. 升级单节点数据库为rac,
分别修改2个节点的参数文件
添加或修改如下内容:
#add for rac
*.cluster_database_instances=2
*.cluster_database=TRUE
uip1.cluster_interconnects=192.168.1.13
uip2.cluster_interconnects=192.168.1.14
uip1.undo_tablespace=UNDOTBS1
uip2.undo_tablespace=UNDOTBS2
uip1.instance_name=uip1
uip2.instance_name=uip2
uip1.instance_number=1
uip2.instance_number=2
uip1.thread=1
uip2.thread=2
uip1.local_listener=LISTENER_UIP1
uip2.local_listener=LISTENER_UIP2
*.remote_listener=LISTNER_UIP
uip1. log_archive_dest_1=’LOCATION=/arch1’;
uip2. log_archive_dest_1=’LOCATION=/arch2’;
17. 运行rac view sql
@$ORACLE_HOME/rdbms/admin/catclust.sql
18. 重建控制文件,改maxinstance=2
用 alter database backup controlfile to trace生成脚本,然后改脚本中maxintance的值为2,重建控制文件。
19. 创建节点2的undo tablespace 又建了三个lv(rdfundo05,rdfredo05,rdfredo06)
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE
'/dev/rdfundo05' autoextend off SIZE2000M;
20. 增加thread = 2的日志文件
alter database add logfile thread 2
group 5 ('/dev/ rdfredo05') size100M,
group 6 ('/dev/ rdfredo06') size100M;
alter database enable public thread 2;
21. 启动第2个实例
Sqlplus /nolog
>startup
22. 创建两个节点的密码文件,否则启动不了数据库
orapwd file=pwduip2 password=sys entries=10