oracle10g單例項轉化為oracle10g rac(二)__多災多難

wisdomone1發表於2010-04-14
    前期可能大家看過我輕描淡寫式講述過,如何基於本主題進行操作。網上及官方文件很為全備及詳盡。經過配置後,或許是第一次配置,手有些生,同時也發現:
 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部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-659750/,如需轉載,請註明出處,否則將追究法律責任。

相關文章