天天看點

5條DBA最佳實踐指導

 就我而言,最佳實踐之是以是最佳實踐必須滿足1)它能夠被證明是有效的,2)它足夠靈活,可以适用于多種環境。下面的5條基本最佳實踐源于我多年使用大大小小的Oracle系統的實際經驗總結。

  #1: 建立多個Oracle Homes

  我最喜歡的最佳實踐是關于多個Oracle Homes。下面将介紹這是怎麼回事。當安裝一個更新檔或者一個更新檔集的時候,我反對在現有的Oracle Home上安裝這些更新檔。相反,我建議建立一個Oracle Home,然後在這個新的Oracle Home上安裝這些更新檔。

  比如,我在/app/oracle/db_1上建立第一個Oracle Home。當需要打一個更新檔,我在一個不同的home上安裝整個Oracle軟體——/app/oracle/db_2——然後對它安裝更新檔。在安裝和打更新檔的過程中,原來的資料庫一直在/db_1 Home中運作。當outage window出現的時候,我需要做的就是關閉Oracle;将Oracle Home指向db_2,再啟動資料庫。假如出現了問題,我可以将Oracle Home重新指回原先的目錄。

  總結傳統的方法如下:

  1. 關閉資料庫

  2. 給Oracle Home打更新檔

  3. 啟動資料庫

  4. 假如存在問題

  5. 關閉資料庫

  6. 復原更新檔

  7. 啟動資料庫

  第2步和第6步可能會花費三個小時,具體的時間依賴于更新檔的數量。而在此期間資料庫是停止的。

  在新方法中:

  1. 安裝一個新的Oracle Home

  2. 給新的Home打更新檔

  3. 關閉資料庫

  4. 将Oracle Home指向新的位置

  5. 啟動資料庫

  6. 如果出現問題

  7. 關閉資料庫

  8. 将Oracle Home指向原來的位置

  9. 啟動資料庫

  資料庫隻有在第4步和第8步之間才是停止,這段停機時間最多幾分鐘,不超過一小時。

  下面是這種方法的好處:

  1. 停機時間顯著降低,隻是原有時間的六十分之一。

  2. 由于不用復原更新檔,風險顯著降低;你隻要回退到老版本。

  3. 你可以執行“diff”指令來比較這前後兩個Home,看發生了哪些變化。你頁可以發現多個Home之間的不同。

  4. 你可以将同一台伺服器上運作的多個資料庫逐個的轉移到新的Oracle Home上。

  5. 使用目錄(inventory),你可以檢視不同Oracle Home以及它們的更新檔版本。

  唯一的負面結果是空間消耗——你需要兩個Oracle Home的空間。但是考慮到一個典型的Oracle Home占用大概4G或者更少的空間,這方面的影響還是無關緊要的。

  #2:設定DB審計跟蹤

  在資料庫建立過程中,在初始化參數檔案中加入參數AUDIT_TRAIL = DB,可以為DB設定audit trail。在設定該參數之後,并不會馬上開始審計,因為一定要對對象發出顯式的AUDIT指令才開始審計。但是隻有在這個參數設定為非FALSE值(這個參數的預設值)之後,指令才會生效。這個參數是非動态的,資料庫必須重新開機才能改變AUDIT_TRAIL的值。為了避免修改參數的麻煩,通常将該變量設定為DB,即使你并不打算審計什麼。這不會造成任何問題,而且你可以在時機成熟的時候開始審計。

  #3: 不用使用.log

  不要使用.log作為redo日志的擴充名。有些人可能會認為日志檔案是多餘的,而執行一個腳本删除所有的日志檔案,這樣做結果可能是失去所有的線上redo日志,進而強迫進行一次資料庫恢複。相反,使用“redo”或者“rdo”作為redo日志的擴充名。

  #4: 預演RMAN的恢複

  在不進行真實的恢複的情況下,預先檢查RMAN恢複,找出在恢複過程中會用到的所有的備份部分。這将消除在真實的恢複過程中發生缺少備份的情況。

  #5: 當用戶端運作在資料庫相同的伺服器上時,為這些用戶端建立Oracle 使用者

  Oracle資料庫伺服器軟體也包含了用戶端的部分,讓用戶端能夠連接配接到同一台伺服器上的資料庫。但是最佳實踐是不使用初始的使用者名;而是使用一個新的。比如,如果“oracle”是安裝Oracle軟體的使用者,建立一個叫做“oraapp”的使用者,用于安裝用戶端的軟體。這個“oraapp”使用者不應該是dba或者oinstall組的成員;是以該使用者無法作為sysdba登陸到資料庫上。建立一個叫“appgrp”的使用者組,并且将使用者oraapp加入這個組。所有的應用程式的使用者也應該是appgrp組的成員。這樣他們可以使用sqlplus,sqlldr和其他的程式,但是無法作為sysdba連接配接到資料庫。

  一條常見的實踐是以資料庫軟體所有者的使用者使用用戶端軟體。但是從版本10.2開始,Oracle改變了安全政策,取消了對Oracle Home的全局執行權限。這樣唯一的選擇是讓應用使用者作為dba組的成員,或者改變對Oracle Home的權限——兩種方法都讓資料庫非常脆弱。