程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 循序漸進講解Oracle數據庫管理員的職責

循序漸進講解Oracle數據庫管理員的職責

編輯:Oracle數據庫基礎

這篇文章主要介紹了Oracle數據庫管理員在工作環境下的具體職責,詳細內容請參考下文:

Oracle數據庫管理員應按如下方式對Oracle數據庫系統做定期監控:

(1). 每天對Oracle數據庫的運行狀態 , 日志文件 , 備份情況 , 數據庫的空間使用情況 , 系統資源的使用情況進行檢查 , 發現並解決問題。

(2). 每周對數據庫對象的空間擴展情況 , 數據的增長情況進行監控 , 對數據庫做健康檢查 , 對數據庫對象的狀態做檢查。

(3). 每月對表和索引等進行 Analyze, 檢查表空間碎片 , 尋找數據庫性能調整的機會 , 進行數據庫性能調整 , 提出下一步空間管理計劃。對Oracle數據庫狀態進行一次全面檢查。

每天的工作

(1). 確認所有的 INSTANCE 狀態正常

登陸到所有數據庫或例程 , 檢測 Oracle 後台進程 :

$ps –ef|grep ora

(2). 檢查文件系統的使用(剩余空間)。如果文件系統的剩余空間小於 20% ,需刪除不用的文件以釋放空間。

$df –k

(3). 檢查日志文件和 trace 文件記錄 alert 和 trace 文件中的錯誤。

連接到每個需管理的系統

使用' telnet '

對每個數據庫 ,cd 到 bdump 目錄 , 通常是 $Oracle_BASE//bdump

使用 Unix ‘tail' 命令來查看 alert_.log 文件

如果發現任何新的 ORA- 錯誤 , 記錄並解決

(4). 檢查數據庫當日備份的有效性。

對 RMAN 備份方式 :

檢查第三方備份工具的備份日志以確定備份是否成功

對 EXPORT 備份方式 :

檢查 exp 日志文件以確定備份是否成功

對其他備份方式 :

檢查相應的日志文件

(5). 檢查數據文件的狀態記錄狀態不是“ online” 的數據文件,並做恢復。

Select file_name from dba_data_files where status='OFFLINE'

(6). 檢查表空間的使用情況

SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free

FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),

( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name )

WHERE tablespace_name = fs_ts_name

(7). 檢查剩余表空間

SELECT tablespace_name, sum ( blocks ) as free_blk ,

trunc ( sum ( bytes ) /(1024*1024) ) as free_m,

max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks

FROM dba_free_space GROUP BY tablespace_name;

(8). 監控數據庫性能

運行 bstat/estat 生成系統報告

或者使用 statspack 收集統計數據

(9). 檢查數據庫性能,記錄數據庫的 cpu 使用、 IO 、 buffer 命中率等等

使用 vmstat,iOStat,glance,top 等命令

(10). 日常出現問題的處理。

每周的工作

(1). 控數據庫對象的空間擴展情況

根據本周每天的檢查情況找到空間擴展很快的數據庫對象 , 並采取相應的措施

-- 刪除歷史數據

--- 擴表空間

alter tablespace add datafile ‘' size

--- 調整數據對象的存儲參數

next extent

pct_increase

(2). 監控數據量的增長情況

根據本周每天的檢查情況找到記錄數量增長很快的數據庫對象 , 並采取相應的措施

-- 刪除歷史數據

--- 擴表空間

alter tablespace add datafile ‘' size

(3). 系統健康檢查

檢查以下內容 :

init.ora

controlfile

redo log file

archiving

sort area size

tablespace(system,temporary,tablespace fragment)

datafiles(autoextend,location)

object(number of extent,next extent,index)

rollback segment

logging &tracing(alert.log,max_dump_file_size,sqlnet)

(4). 檢查無效的數據庫對象

SELECT owner, object_name, object_type FROM dba_objects

WHERE status= ' INVALID '。

(5). 檢查不起作用的約束

SELECT owner, constraint_name, table_name,

constraint_type, status

FROM dba_constraints

WHERE status = 'DISABLED' AND constraint_type = 'P'

(6). 檢查無效的 trigger

SELECT owner, trigger_name, table_name, status

FROM dba_triggers

WHERE status = 'DISABLED'

每月的工作

(1). Analyze Tables/Indexes/Cluster

analyze table estimate statistics sample 50 percent;

(2). 檢查表空間碎片

根據本月每周的檢查分析數據庫碎片情況 , 找到相應的解決方法

(3). 尋找數據庫性能調整的機會

比較每天對數據庫性能的監控報告 , 確定是否有必要對數據庫性能進 行調整

(4). 數據庫性能調整

如有必要 , 進行性能調整

(5). 提出下一步空間管理計劃

根據每周的監控 , 提出空間管理的改進方法

Oracle DBA 日常管理

目的:這篇文檔有很詳細的資料記錄著對一個甚至更多的 Oracle 數據庫每天的,每月的,每年的運行的狀態的結果及檢查的結果,在文檔的附錄中你將會看到所有檢查,修改的 SQL和 PL/SQL 代碼。

目錄

1. 日常維護程序

A . 檢查已起的所有實例

B . 查找一些新的警告日志

C . 檢查 DBSNMP 是否在運行

D . 檢查數據庫備份是否正確

E . 檢查備份到磁帶中的文件是否正確

F . 檢查數據庫的性能是否正常合理,是否有足夠的空間和資源

G . 將文檔日志復制到備份的數據庫中

H . 要常看 DBA 用戶手冊

2. 晚間維護程序

A .收集 VOLUMETRIC 的數據

3. 每周維護工作

A . 查找那些破壞規則的 OBJECT

B . 查找是否有違反安全策略的問題

C . 查看錯誤地方的 SQL*NET 日志

D . 將所有的警告日志存檔

E . 經常訪問供應商的主頁

4. 月維護程序

A . 查看對數據庫會產生危害的增長速度

B . 回顧以前數據庫優化性能的調整

C . 查看 I/O 的屏頸問題

D . 回顧 FRAGMENTATION

E . 將來的執行計劃

F . 查看調整點和維護

一.日維護過程

A .查看所有的實例是否已起

確定數據庫是可用的,把每個實例寫入日志並且運行日報告或是運行測試文件。當然有一些操作我們是希望它能自動運行的。

可選擇執行:用 Oracle 管理器中的‘ PROBE' 事件來查看

B .查找新的警告日志文件

1. 聯接每一個操作管理系統

2. 使用‘ TELNET' 或是可比較程序

3. 對每一個管理實例,經常的執行 $Oracle_BASE//bdump 操作,並使其能回退到控制數據庫的 SID 。

4. 在提示下,使用 UNIX 中的‘ TAIL '命令查看 alert_.log ,或是用其他方式檢查文件中最近時期的警告日志

5. 如果以前出現過的一些 ORA_ERRORS 又出現,將它記錄到數據庫恢復日志中並且仔細的研究它們,這個數據庫恢復日志在〈 FILE 〉中

C .查看 DBSNMP 的運行情況

檢查每個被管理機器的‘ DBSNMP' 進程並將它們記錄到日志中。

在 UNIX 中,在命令行中,鍵入 ps –ef | grep dbsnmp, 將回看到 2 個DBSNMP 進程在運行。如果沒有,重啟 DBSNMP 。

D .查數據庫備份是否成功

E .檢查備份的磁帶文檔是否成功

F .檢查對合理的性能來說是否有足夠的資源

1. 檢查在表空間中有沒有剩余空間

對每一個實例來說,檢查在表空間中是否存在有剩余空間來滿足當天的預期的需要。當數據庫中已有的數據是穩定的,數據日增長的平均數也是可以計算出來,最小的剩余空間至少要能滿足每天數據的增 長。

A ) 運行‘ FREE.SQL' 來檢查表空間的剩余空間。

B ) 運行‘ SPACE.SQL' 來檢查表空間中的剩余空間百分率

2. 檢查回滾段

回滾段的狀態一般是在線的,除了一些為復雜工作准備的專用 段,它一般狀態是離線的。

a. 每個數據庫都有一個回滾段名字的列表。

b. 你可以用 V$ROLLSTAT 來查詢在線或是離線的回滾段的現在狀 態 .

c. 對於所有回滾段的存儲參數及名字, 可用DBA_ROLLBACK_SEGS 來查詢。但是它不如 V$ROLLSTAT 准確。

3. 識別出一些過分的增長

查看數據庫中超出資源或是增長速度過大的段,這些段的存儲參 數需要調整。

a.收集日數據大小的信息, 可以用

‘ ANALYZE5PCT.SQL '。如果你收集的是每晚的信息, 則可跳過這一步。

b.檢查當前的范圍,可用‘ NR.EXTENTS.SQL' 。

c.查詢當前表的大小信息。

d.查詢當前索引大小的信息。

e.查詢增長趨勢。

4. 確定空間的范圍

如果范圍空間對象的 NEXT_EXTENT 比表空間所能提供的最大范圍還要大,那麼這將影響數據庫的運行。如果我們找到了這個目標,可以用‘ ALTER TABLESPACE COALESCE' 調查它的位置,或加另外 的數據文件。

A )運行‘ SPACEBOUND.SQL' 。如果都是正常的,將不返回任何行。

5. 回顧 CPU ,內存,網絡,硬件資源論點的過程

A )檢查 CPU 的利用情況,進到 x:\web\phase2\default.htm =>system

metrics=>CPU 利用頁, CPU 的最大限度為 400 ,當 CPU 的占用保持在 350 以上有一段時間的話,我們就需要查看及研究出現的問題。

G .將存檔日志復制到備用數據庫中

如果有一個備用數據庫,將適當的存檔日志復制到備用數據庫的期望位置,備用數據庫中保存最近期的數據。

H. 經常查閱 DBA 用戶手冊

如果有可能的話,要廣泛的閱讀,包括 DBA 手冊,行業雜志,新聞 組或是郵件列表。

二.晚間維護過程

大部分的數據庫產品將受益於每晚確定的檢查進程的運行。

A. 收集 VOLUMETRIC 數據

1. 分析計劃和收集數據

更准確的分析計算並保存結果。

a ) 如果你現在沒有作這些的話,用‘ MK VOLFACT.SQL' 來創建測定體積的 表。

b ) 收集晚間數據大小的信息,用‘ ANALYZE COMP.SQL' 。

c ) 收集統計結果,用‘ POP VOL.SQL' 。

d ) 在空閒的時候檢查數據,可能的話,每周或每個月進行。

我是用 MS Excel 和 ODBC 的聯接來檢查數據和圖表的增長

-------------------------------------------------------------

三.每周維護過程

A . 查找被破壞的目標

1. 對於每個給定表空間的對象來說, NEXT_EXTENT 的大小是相同的,如12/14/98 ,缺省的NEXT_EXTENT 的 DATAHI 為 1G , DATALO 為 500MB ,INDEXES 為 256MB 。

A ) 檢查 NEXT_EXTENT 的設置,可用‘ NEXTEXT 。 SQL' 。

B ) 檢查已有的 EXTENTS ,可用‘ EXISTEXT 。 SQL' 。

2. 所有的表都應該有唯一的主鍵

a.查看那些表沒有主鍵,可用‘ NO_PK.SQL' 。

b.查找那些主鍵是沒有發揮作用的,可用‘ DIS_PK.SQL' 。

c.所有作索引的主鍵都要是唯一的,可用‘ NONUPK 。 SQL' 來檢 查。

3. 所有的索引都要放到索引表空間中。運行‘ MKREBUILD_IDX 。 SQL'

4. 不同的環境之間的計劃應該是同樣的,特別是測試環境和成品環境之間的 計劃應該相同。

a.檢查不同的 2 個運行環境中的數據類型是否一致,可用‘ DATATYPE.SQL '。

b.在 2 個不同的實例中尋找對象的不同點, 可用‘ OBJ_COORD.SQL '。

c.更好的做法是,使用一種工具,象尋求軟件的計劃管理器那樣的 工具。

B.查看是否有危害到安全策略的問題。

C.查看報錯的 SQL*NET 日志。

1. 客戶端的日志。

2. 服務器端的日志。

D .將所有的警告日志存檔

E .供應商的主頁

1. Oracle 供應商

http://www.Oracle.com

http://technet.Oracle.com

http://www.Oracle.com/support

http://www.oramag.com

2. Quest Software

http://www.quests.com

3. Sun Microsystems

http://www.sun.com

四.月維護過程

A .查看對數據庫會產生危害的增長速度

1. 從以前的記錄或報告中回顧段增長的變化以此來確定段增長帶來危害

B . 回顧以前數據庫優化性能的調整

1. 回顧一般 Oracle 數據庫的調整點,比較以前的報告來確定有害的發展 趨勢。

C . 查看 I/O 的屏頸問題

1. 查看前期數據庫文件的活動性,比較以前的輸出來判斷有可能導致屏頸 問題的趨勢。

D . 回顧 FRAGMENTATION

E . 計劃數據庫將來的性能

1. 比較 Oracle 和操作系統的 CPU ,內存,網絡,及硬盤的利用率以此來確定在近期將會有的一些資源爭奪的趨勢

2. 當系統將超出范圍時要把性能趨勢當作服務水平的協議來看

F . 完成調整和維護工作

1. 使修改滿足避免系統資源的爭奪的需要,這裡面包括增加新資源或使預期的停工。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved