前期可能大家看过我轻描淡写式讲述过,如何基于本主题进行操作。网上及官方文档很为全备及详尽。经过配置后,或许是第一次配置,手有些生,同时也发现:
1,对于rac的基本架构掌握不够精深,比如控制文件,日志文件,撤消表空间在多个rac节点如何分配等
2,由于用到了rman,在配置及测试过程中,发现对于rman有备份及恢复,大家掌握的太少,也是半桶水的水平。
3,目前感觉srvctl出错,提供的信息过于模糊,最终定位问题;可能还是主要依靠于各个rac实例的alert及相关trace文件
4,rac环境的asm的学习也要继续,比如:asm的磁盘组是同时在rac所有asm实例中同时mount,还是只是在某个asm实例mount;手工及自动mount磁盘组如何设置
5,单实例转化rac是个细活,步骤很多,但特别烦杂,一定要细心;在实施前要三思而谋。可以罗列出一些最可能出问题的列表,理清实施的思路,这相当重要;古人云,凡事预则立,不预则废。讲得就是这个道理.
好了,进入正题:
系统环境:
1,三个节点,二个节点是要部署rac环境的节点,并提前安装及配置好了clusterware及db software,同时利用netca或netmgr配置了listener.ora及tnsnames.ora;另一个节点建立了一个单实例的数据库,采用asm存储
2,源单实例数据库及目标rac数据库均采用asm存储,为了方便,配置磁盘组为data及arch
(i注:为了节省文字,我单实例数据库及rac数据库以下均采用缩写:centos5及
实施步骤:
1, 用rman对centos5进行,全库及控制文件,归档文件的备份
注:以上脚本不提供了,很简单
2,在centos51及centos52上,依据centos5上面的asm实例的init及密码文件,修改成适用于rac环境的文件,内容如下:
-bash-3.00$ more init+ASM1.ora
##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################
###########################################
# Cluster Database
###########################################
cluster_database=true ---新增,单实例无
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/u01/app/oracle/admin/+ASM/bdump
core_dump_dest=/u01/app/oracle/admin/+ASM/cdump
user_dump_dest=/u01/app/oracle/admin/+ASM/udump
###########################################
# Miscellaneous
###########################################
instance_type=asm
###########################################
# Pools
###########################################
large_pool_size=12M
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=exclusive
asm_diskgroups='DATA','ARCH' --根据你构建有磁盘组,配置此参数
+ASM2.instance_number=2 ---新增,适用于rac环境
+ASM1.instance_number=1
-bash-3.00$ ls -l orapw*
-rw-r----- 1 oracle oinstall 1536 Apr 11 05:50 orapw+ASM1 --如无此文件,请用orapwd工具新建
3,利用scp把以上第1步利用rman产生的备份文件传到centos52对应的目录下
4,在centos5上,创建临时的pfile文件(用于修改为rac环境的spfile文件)
修改后的内容如下:
-bash-3.00$ more initcentos51.ora --所有的配置文件spfile,pfile,密码在$ORACLE_HOME/dbs下面
SPFILE='+DATA/centos5/spfilecentos5.ora'
其具体内容如下:
centos5.__db_cache_size=96468992 --可适量加大,sga各组件可加大
centos5.__java_pool_size=4194304
centos5.__large_pool_size=4194304
centos5.__shared_pool_size=58720256
centos5.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/centos5/adump' ---这些dump目录预前在centos51,cento52上mkdir -p建好
*.background_dump_dest='/u01/app/oracle/admin/centos5/bdump'
*.compatible='10.2.0.1.0'
*.control_files='+DATA/centos5/control01.ctl','+DATA/centos5/control02.ctl','+DATA/centos5/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/centos5/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='centos5'
*.db_recovery_file_dest='+ARCH'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=centos5XDB)'
*.job_queue_processes=10
*.log_archive_dest_1='LOCATION=+DATA/centos5/'
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/centos5/udump'
---下面为rac特定的内容
*.cluster_database_instances=2
*.cluster_database=true
centos51.thread=1
centos51.instance_number=1
centos51.undo_tablespace='UNDOTBS1' ---这个东东到后面会手工添加,不然第二个centos52 rac实例启不来
centos52.thread=2
centos52.instance_number=2
5,在centos51上,启动数据库到nomount,准备还原数据库(datafile,controlfile and etc)
export ORACLE_SID=centos51
sqlplus '/as sysdba'
startup nomount pfile='/u01/app/oracle/transform/inittransform.ora'
create spfile='+DATA/centos5/spfilecentos5.ora' from pfile /u01/app/oracle/transform/inittransform.ora' ---利用pfile生成spfile,主要目的把spfile 存储在共享存储上面的磁盘组data上
show parameter control_files ---如果你单实例与rac环境要存储的磁盘组的路径有变化,请用alter system set 进行修改,须重启数据库;由于我单实例与rac磁盘组名字是一致的,故不需要这个步骤
6,在centos51上,通过rman还原及恢复单实例centos5为rac数据库
rman target /
restore controlfile from tag ''; ---我在第1步对centos5进行备份时用了tag,这就是tag的作用,在生产中请一定要制定一个规范,有可性性,不然不如不用
alter database mount;
restore database;
recover database;---这步报错了,先不管它(提示找不到可用的日志文件)
alter database open;---不成,没法,加上resetlogs打开了rac数据库
7,在centos51上在,添加用于centos52 rac实例的undotbs2撤消表空间
create undo tablespace undotbs2 datafile '+DATA/centos5/undotbs2' size 200m;
8,在centos51上,把新转换的rac数据库注册到crs
srvctl add database -d centos5 -o $ORACLE_HOME
srvctl add instance -d centos5 -i centos51 -n capitek1
srvctl add instance -d centos5 -i centos52 -n capitek2
srvctl start instance -d centos5 - centos51
9,可根据你的测试环境,运行rac特定的数据字典sql文件
(注:$ORACLE_HOME/rdbms/admin)
经测:我没有用,因为我以前通过dbca创建过数据库)哈哈
控制文件及日志文件我手工进行了添加,后来经测试,oracle会自动进行添加redo及controlfile
10,利用srvctl启动第二个centos52 rac实例
后记:
1,我在recover database时,提示undo tablespace不致,由于考虑到内容清晰,请参考我下一篇文章
2,对于深层次的恢复我掌握还是不到位
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-659750/
,如需转载,请注明出处,否则将追究法律责任。