Oracle RAC基本管理

舊夢依稀發表於2013-08-02
1、啟動和關閉例項
單例項Oracle可以在系統啟動時自動啟動。
在RAC環境中,需要確保在例項啟動前啟動了叢集軟體。從Oracle Database 10g R1開始,DBCA將資料庫例項配置為在系統啟動時由“叢集就緒服務”(CRS)自動啟動。
2、使用srvctl啟動/停止例項
啟動/關閉資料庫名為prod的例項:
srvctl start database -d prod
srvctl stop database -d prod
以上命令只會關閉例項和服務,偵聽器不會被關閉。可以使用-o來指定啟動/關閉選項
srvctl stop database -d prod -o immediate
srvctl start database -d prod -o force
關閉例項prod3:
srvctl stop database -d prod -i instance prod3
3、可以使用SQLPLUS單獨關閉一個節點上的例項,操作和單例項環境一樣
4、使用srvctl在OCR中註冊單例項資料庫
單例項資料庫現在可以用Oracle叢集件進行註冊和管理,但單例項資料庫的較舊版本應當使用srvctl實用工具,手動註冊到Oracle叢集登錄檔中。Oracle會自動為單例項資料庫啟動所有相關資源。
$ srvctl add database -d prod11g -o /u01/oracle/product/11g/db -x node-a -p +ASMDATA1/spfilePROD11g.ora -r primary -s open -t immediate -y automatic -a ASMDATA1,ASMFRA1
5、管理撤銷
Oracle將一個映象之前呼叫的資料原始值儲存在撤銷段中。撤銷段(undo segment)中儲存的資料用於提供讀一致性,並用於回滾事務。從Oracle 10g開始,閃回功能也利用了撤銷資料。
6、自動撤銷管理
自動撤銷管理在Oracle 9iR1中引入,強烈推薦使用這種方式。Oracle例項使用一個undo型別的表空間來儲存撤銷/回滾資料,例項在這個專用表空間中建立所需數量的回滾段,並將它們分配給事務,用於儲存撤銷資料,這些操作對DBA和終端使用者是完全透明的。
從Oracle 9i開始,自動撤銷管理是資料庫的預設設定,與其相關的引數有:
undo_managment = "auto"
undo_tablespace = undo_tbs1
undo_retention_time = 900 #預設是900秒,如果出現ora-01555錯誤,則可能需要為此引數設定更大的值。
Oracle RAC環境中,所有例項的UNDO管理方式必須相同,要麼全是自動撤銷管理,要麼全是手動撤銷管理,但是撤銷表空間不能在所有例項間共享,所以每個例項的undo_tablespace引數值都應該是唯一的。
建立新的撤銷表空間
create undo tablespace undotbs_big datafile='/ocfs2/prod/undotbsbig.dbf' size 2000MB;
切換到新撤銷表空間
alter system set undo_tablespace=undotbs_big scope=both;
7、管理臨時表空間
從Oracle 10g開始,可以定義一個臨時表空間組,在任何使用臨時表空間的地方都可以使用這個組。建議在Oracle RAC環境中使用臨時表空間組,因為當多個使用者使用相同的使用者名稱連線資料庫時,會將不同的臨時表空間指定給這些會話,這樣就允許不同會話使用不同的表空間進行排序操作。在OracleRAC環境中,無論使用哪個例項,一個使用者總是使用同一個指定的臨時表空間。
建立新的臨時表空間:
create temporary tablespace temp2 tempfile '/ocfs2/prod/temp2.dbf' size 2000MB autoentend on next 1M maxsize unlimited extent managment local uniform. size 1M;
指定新的臨時表空間:
alter database set default temporary tablespace temp2;
臨時表空間相關檢視:
gv$sort_segment
gv$tempseg_usage
v$tempfile
注意:如果V$SORT_SEGMENT的FREED_EXTENTS和FREE_REQUESTS列定期增長,就應當考慮增大臨時表空間的大小。
8、管理聯機重做日誌(online redolog)
由一個例項迴圈使用的一組重做日誌成為“執行緒”(thread)。Oracle RAC環境中,每個例項有自己獨自的聯機重做日誌,只有本例項可以寫入資料,但是同時要允許其它例項讀取,以便在例項異常中止時由其它例項執行例項恢復,所以online redolog必須放在共享儲存上,而不能放在本地磁碟上。
相關檢視:V$LOG , v$LOGFILE
將Oracle RAC叢集中的例項由非歸檔模式改為歸檔模式:
SQL> alter system set cluster_database=false scope=spfile sid='prod1';
關閉RAC叢集中所有例項:
srvctl stop database -d prod
SQL>startup mount
SQL>alter database archivelog
SQL>alter system set cluster_database=true scope=spfile sid='prod1';
SQL>shutdown immediate;
啟動RAC叢集中的所有例項:
srvctl start database -d prod
9、啟動閃回區域(閃回恢復區--falshback recovery area)
Oracle Database 10gR1引入了閃回恢復區,用於將資料庫回滾到最近的某一時間點。
使用閃回可以完成以下需求:
閃回查詢
閃回版本查詢
閃回事務查詢
閃回表
閃回事務
在Oracle RAC環境中啟用閃回功能:
確認資料庫當前是否處於歸檔模式(閃回需要歸檔模式)
SQL>archive log list
SQL>alter system set cluster_database=false scope=spfile sid='prod1';
SQL>alter system set DB_RECOVERY_FILE_DEST='/ocfs2/flashback' scpoe=spfile;
SQL>alter system set DB_RECOVERY_FILE_DEST_SIZE=200M scope=spfile;
srvctl stop database -d prod
SQL>startup mount
SQL>alter database flashback on;
SQL>alter system set cluster_database=true scope=spfile sid='prod1';
SQL>shutdown immediate;
srvctl start database -d prod
以上是為整個例項開啟閃回,也可以為單個表空間開啟閃回:
SQL>alter tablespace user_data flashback on;
SQL>alter tablespace user_data flashback off;
10、SRVCTL管理資料庫配置
Oracle RAC環境中,使用“倉庫”儲存資料庫配置資訊,在Oracle 9i中,這個倉庫位於一個儲存為srvConfig.loc的檔案中,這個檔案應當位於一個共享儲存中,所有節點都可以訪問。
在Oracle 10g中,倉庫資訊儲存在Oracle叢集登錄檔(OCR)中,它是在安裝CRS時建立的,也必須位於共享儲存中。
在Oracle 11gR2中,存在另外一個倉庫,用來儲存OCR資料的一個本地副本,這個倉庫稱為“Oracle本地倉庫(OLR)”。
SRVCTL常用命令:
檢視在這個倉庫中註冊的資料庫
srvctl config database
檢視資料庫prod的詳細配置資訊
srvctl config database -d prod
將資料庫prod的策略由自動改為手動
srvctl modify database -d prod -y MANUAL
將資料庫prod的啟動選項改為mount
srvctl modify database -d prod -s mount
顯示資料庫prod的狀態
srvctl status database -d prod
顯示在資料庫prod中執行的服務的狀態
srvctl status service -d prod
將資料庫prod的prod_batch服務由例項PROD1重新定位到PROD2
srvctl relocate service -d PROD -s prod_batch -i PROD1 -t PROD2
檢查一個節點上執行的nodeapps
srvctl status nodeapps
11、Oracle RAC環境中管理表空間
在Oracle RAC環境中所有表空間都應該使用“自動段空間管理(ASSM)”,ASSM是在9i中引入的。
檢視所有表空間是否都在使用ASSM:
select tablespace_name,SEGMENT_SPACE_MANAGEMENT from dba_tablespaces;
預設情況下使用create tablespace命令會利用ASSM建立一個表空間。ASSM特徵不能在物件級別指定,只能在表空間級別指定。
12、管理序列(Sequence)
由於Oracle RAC環境中會有多個例項多個併發會話,那麼對於需要使用同一個序列(Sequence)的地方產生爭用的可能性就更大,為了避免多個例項多個併發會話對同一個序列(Sequence)的爭用,可以通過提高快取值的方法加以緩解,序列快取值預設是20,根據使用頻率,即使增加到2000也是可以接受的。序列快取值設定非常高的一個缺點是當一個例項崩潰或者一個共享池重新整理時,未使用的序列數會丟失。
13、管理表
Oracle RAC環境不需要對錶進行特殊對待,在單例項環境中遵循的一些最佳業務實踐,例如對非常大的表進行分割槽和將活動表放在不同物理磁碟上以避免I/O熱區,這些對Oracle RAC也足夠了。
14、管理索引
在設計高度可伸縮性系統時,避免B-Tree索引塊的爭用是一個很大的挑戰。使用分割槽索引和反向鍵索引是用來避免B-Tree索引塊爭用的兩種最常用方法。
15、SQL命令的有效範圍
在Oracle RAC環境中一些命令影響所連線的例項,而其它一些命令影響整個資料庫。
16、資料庫連線
在Oracle 11g中引入了“單一客戶端訪問名稱(SCAN)”,通過SCAN,同一叢集中的所有資料庫都可以在連線字串中使用SCAN名稱連線到OracleRAC資料庫,而不再需要列出所有執行中的叢集資料庫例項的節點虛擬IP。但是在當前的叢集環境部署中,SCAN使用的還不多,出於習慣和現實環境限制(例如資料庫版本過低),還是使用傳統的列出各節點虛擬IP的方式比較普遍。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28998293/viewspace-767692/,如需轉載,請註明出處,否則將追究法律責任。

相關文章