久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle數據庫日常維護是怎么樣的

141次閱讀
沒有評論

共計 4658 個字符,預計需要花費 12 分鐘才能閱讀完成。

這篇文章給大家介紹 Oracle 數據庫日常維護是怎么樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在 Oracle 數據庫運行期間,DBA 應該對數據庫的運行日志及表空間的使用情況進行監控,及早發現數據庫中存在的問題。

一、Oracle 警告日志文件監控

Oracle 在運行過程中,會在警告日志文件 (alert_SID.log) 中記錄數據庫的一些運行情況:

l  數據庫的啟動、關閉,啟動時的非缺省參數;

l  數據庫的重做日志切換情況,記錄每次切換的時間,及如果因為檢查點 (checkpoint) 操作沒有執行完成造成不能切換,會記錄不能切換的原因;

l  對數據庫進行的某些操作,如創建或刪除表空間、增加數據文件;

l  數據庫發生的錯誤,如表空間不夠、出現壞塊、數據庫內部錯誤(ORA-600)

DBA 應該定期檢查日志文件,根據日志中發現的問題及時進行處理

問題

處理

啟動參數不對

檢查初始化參數文件

因為檢查點操作或歸檔操作沒有完成造成重做日志不能切換

如果經常發生這樣的情況,可以考慮增加重做日志文件組;想辦法提高檢查點或歸檔操作的效率;

有人未經授權刪除了表空間

檢查數據庫的安全問題,是否密碼太簡單;如有必要,撤消某些用戶的系統權限

出現壞塊

檢查是否是硬件問題(如磁盤本生有壞塊),如果不是,檢查是那個數據庫對象出現了壞塊,對這個對象進行重建

表空間不夠

增加數據文件到相應的表空間

出現 ORA-600

根據日志文件的內容查看相應的 TRC 文件,如果是 Oracle 的 bug,要及時打上相應的補丁

在 Oracle 數據庫運行期間,DBA 應該對數據庫的運行日志及表空間的使用情況進行監控,及早發現數據庫中存在的問題。

一、Oracle 警告日志文件監控

Oracle 在運行過程中,會在警告日志文件 (alert_SID.log) 中記錄數據庫的一些運行情況:

l  數據庫的啟動、關閉,啟動時的非缺省參數;

l  數據庫的重做日志切換情況,記錄每次切換的時間,及如果因為檢查點 (checkpoint) 操作沒有執行完成造成不能切換,會記錄不能切換的原因;

l  對數據庫進行的某些操作,如創建或刪除表空間、增加數據文件;

l  數據庫發生的錯誤,如表空間不夠、出現壞塊、數據庫內部錯誤(ORA-600)

DBA 應該定期檢查日志文件,根據日志中發現的問題及時進行處理

問題
  處理
 
啟動參數不對
  檢查初始化參數文件
 
因為檢查點操作或歸檔操作沒有完成造成重做日志不能切換
  如果經常發生這樣的情況,可以考慮增加重做日志文件組;想辦法提高檢查點或歸檔操作的效率;
 
有人未經授權刪除了表空間
  檢查數據庫的安全問題,是否密碼太簡單;如有必要,撤消某些用戶的系統權限
 
出現壞塊
  檢查是否是硬件問題 (如磁盤本生有壞塊),如果不是,檢查是那個數據庫對象出現了壞塊,對這個對象進行重建
 
表空間不夠
  增加數據文件到相應的表空間
 
出現 ORA-600
  根據日志文件的內容查看相應的 TRC 文件,如果是 Oracle 的 bug,要及時打上相應的補丁
 

二、數據庫表空間使用情況監控(字典管理表空間)

數據庫運行了一段時間后,由于不斷的在表空間上創建和刪除對象,會在表空間上產生大量的碎片,DBA 應該及時了解表空間的碎片和可用空間情況,以決定是否要對碎片進行整理或為表空間增加數據文件。

select tablespace_name, count(*) chunks , max(bytes/1024/1024) max_chunk  from dba_free_space group by tablespace_name;

上面的 SQL 列出了數據庫中每個表空間的空閑塊情況, 如下所示:

TABLESPACE_NAME  CHUNKS  MAX_CHUNK

——————– ———- ———-

INDX  1  57.9921875

RBS  3  490.992188

RMAN_TS  1  16.515625

SYSTEM  1  207.296875

TEMP  20  70.8046875

TOOLS  1  11.8359375

USERS  67  71.3671875

其中,CHUNKS 列表示表空間中有多少可用的空閑塊(每個空閑塊是由一些連續的 Oracle 數據塊組成),如果這樣的空閑塊過多,比如平均到每個數據文件上超過了 100 個,那么該表空間的碎片狀況就比較嚴重了,可以嘗試用以下的 SQL 命令進行表空間相鄰碎片的接合:

alter tablespace 表空間名 coalesce;

然后再執行查看表空間碎片的 SQL 語句,看表空間的碎片有沒有減少。如果沒有效果,并且表空間的碎片已經嚴重影響到了數據庫的運行,則考慮對該表空間進行重建。

MAX_CHUNK 列的結果是表空間上最大的可用塊大小,如果該表空間上的對象所需分配的空間 (NEXT 值) 大于可用塊的大小的話,就會提示 ORA-1652、ORA-1653、ORA-1654 的錯誤信息,DBA 應該及時對表空間的空間進行擴充,以避免這些錯誤發生。

對表空間的擴充對表空間的數據文件大小進行擴展,或向表空間增加數據文件,具體操作見“存儲管理”部份。

三、查看數據庫的連接情況

DBA 要定時對數據庫的連接情況進行檢查,看與數據庫建立的會話數目是不是正常,如果建立了過多的連接,會消耗數據庫的資源。同時,對一些“掛死”的連接,可能會需要 DBA 手工進行清理。

以下的 SQL 語句列出當前數據庫建立的會話情況:

select sid,serial#,username,program,machine,status from v$session;

輸出結果為:

SID SERIAL#  USERNAME  PROGRAM  MACHINE  STATUS

—- ——- ———- ———– ————— ——–

1  1  ORACLE.EXE  WORK3  ACTIVE

2  1  ORACLE.EXE  WORK3  ACTIVE

3  1  ORACLE.EXE  WORK3  ACTIVE

4  1  ORACLE.EXE  WORK3  ACTIVE

5  3  ORACLE.EXE  WORK3  ACTIVE

6  1  ORACLE.EXE  WORK3  ACTIVE

7  1  ORACLE.EXE  WORK3  ACTIVE

8  27 SYS  SQLPLUS.EXE  WORKGROUP\WORK3  ACTIVE

11  5 DBSNMP  dbsnmp.exe  WORKGROUP\WORK3 INACTIVE

其中,

SID 會話 (session) 的 ID 號;

SERIAL# 會話的序列號,和 SID 一起用來唯一標識一個會話;

USERNAME 建立該會話的用戶名;

PROGRAM 這個會話是用什么工具連接到數據庫的;

STATUS 當前這個會話的狀態,ACTIVE 表示會話正在執行某些任務,INACTIVE 表示當前會話沒有執行任何操作;

如果 DBA 要手工斷開某個會話,則執行:

alter system kill session SID,SERIAL#

注意,上例中 SID 為 1 到 7(USERNAME 列為空)的會話,是 Oracle 的后臺進程,不要對這些會話進行任何操作。

四、控制文件的備份

在數據庫結構發生變化時,如增加了表空間,增加了數據文件或重做日志文件這些操作,都會造成 Oracle 數據庫控制文件的變化,DBA 應及進行控制文件的備份,備份方法是:

執行 SQL 語句:alter database backup controlfile to /home/backup/control.bak

或:alter database  backup controlfile to trace;

這樣,會在 USER_DUMP_DEST(初始化參數文件中指定)目錄下生成創建控制文件的 SQL 命令。

五、檢查數據庫文件的狀態

DBA 要及時查看數據庫中數據文件的狀態(如被誤刪除),根據實際情況決定如何進行處理,檢查數據文件的狀態的 SQL 如下:

select file_name,status from dba_data_files;

如果數據文件的 STATUS 列不是 AVAILABLE,那么就要采取相應的措施,如對該數據文件進行恢復操作,或重建該數據文件所在的表空間。

六、檢查數據庫定時作業的完成情況

如果數據庫使用了 Oracle 的 JOB 來完成一些定時作業,要對這些 JOB 的運行情況進行檢查:

select job,log_user,last_date,failures  from dba_jobs;

如果 FAILURES 列是一個大于 0 的數的話,說明 JOB 運行失敗,要進一步的檢查。

七、數據庫壞塊的處理

當 Oracle 數據庫出現壞塊時,Oracle 會在警告日志文件(alert_SID.log)中記錄壞塊的信息:

ORA-01578: ORACLE data block corrupted (file # 7, block # BLOCK)
ORA-01110: data file AFN : /oracle1/oradata/V920/oradata/V816/users01.dbf

其中,代表壞塊所在數據文件的絕對文件號,BLOCK 代表壞塊是數據文件上的第幾個數據塊

出現這種情況時,應該首先檢查是否是硬件及操作系統上的故障導致 Oracle 數據庫出現壞塊。在排除了數據庫以外的原因后,再對發生壞塊的數據庫對象進行處理。

1.確定發生壞塊的數據庫對象

SELECT tablespace_name,segment_type,owner,segment_name
FROM  dba_extents WHERE  file_id = AFN
AND BLOCK between block_id AND block_id+blocks-1;
2.決定修復方法

如果發生壞塊的對象是一個索引,那么可以直接把索引 DROP 掉后,再根據表里的記錄進行重建;

如果發生壞塊的表的記錄可以根據其它表的記錄生成的話,那么可以直接把這個表 DROP 掉后重建;

如果有數據庫的備份,則恢復數據庫的方法來進行修復;

如果表里的記錄沒有其它辦法恢復,那么壞塊上的記錄就丟失了,只能把表中其它數據塊上的記錄取出來,然后對這個表進行重建。

3.用 Oracle 提供的 DBMS_REPAIR 包標記出壞塊

exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(schema , tablename

4.使用 Create table as select 命令將表中其它塊上的記錄保存到另一張表上

create table corrupt_table_bak as select * from corrupt_table;

5.用 DROP TABLE 命令刪除有壞塊的表

drop table corrupt_table;

6.用 alter table rename 命令恢復原來的表

alter table corrupt_table_bak rename to corrupt_table;

7.如果表上存在索引,則要重建表上的索引

八、操作系統相關維護

DBA 要注意對操作系統的監控:

l  文件系統的空間使用情況(df -k),必要時對 Oracle 的警告日志及 TRC 文件進行清理

l  如果 Oracle 提供網絡服務,檢查網絡連接是否正常

l  檢查操作系統的資源使用情況是否正常

l  檢查數據庫服務器有沒有硬件故障,如磁盤、內存報錯

關于 Oracle 數據庫日常維護是怎么樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-20發表,共計4658字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 广河县| 望江县| 北宁市| 个旧市| 怀集县| 呈贡县| 永济市| 鄂托克前旗| 庄河市| 湾仔区| 富川| 临夏市| 秀山| 会泽县| 七台河市| 拜城县| 孟州市| 临武县| 原平市| 绥中县| 保靖县| 军事| 宝山区| 扶沟县| 洛隆县| 大洼县| 芮城县| 阿合奇县| 文化| 吴忠市| 桃园市| 宣汉县| 兴和县| 博客| 大渡口区| 德保县| 咸宁市| 浙江省| 平泉县| 玛多县| 大新县|