七、資料庫壞塊的處理
當 oracle資料庫出現壞塊時,oracle會在警告日誌檔案(alert_sid.log)
中記錄壞塊的資訊:
ora-01578: oracle data block corrupted (file # 7, block # )
ora-01110: data file : '/oracle1/oradata/v920/oradata/v816/users01.dbf'
其中,<afn>代表壞塊所在資料檔案的絕對檔案號,代表壞
塊是資料檔案上的第幾個資料塊
出現這種情況時,應該首先檢查是否是硬體及作業系統上的故障導致
oracle資料庫出現壞塊。在排除了資料庫以外的原因後,再對發生壞塊的資料
庫物件進行處理。
1.確定發生壞塊的資料庫物件
select tablespace_name,
segment_type,
owner,
segment_name
from dba_extents
where file_id =
and between block_id and block_id+blocks-1;
2.決定修復方法
如果發生壞塊的物件是乙個索引,那麼可以直接把索引drop 掉
後,再根據表裡的記錄進行重建;
如果發生壞塊的表的記錄可以根據其它表的記錄生成的話,那麼可
以直接把這個表drop 掉後重建;
如果有資料庫的備份,則恢復資料庫的方法來進行修復;
如果表裡的記錄沒有其它辦法恢復,那麼壞塊上的記錄就丟失了,
只能把表中其它資料塊上的記錄取出來,然後對這個表進行重建。
3.用oracle提供的dbms_repair 包標記出壞塊
exec dbms_repair.skip_corrupt_blocks('','');
4.使用create table as select 命令將表中其它塊上的記錄儲存到另一
張表上create table corrupt_table_bak
asselect * 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 檢查資料庫伺服器有沒有硬體故障,如磁碟、記憶體報錯
日常檢查和維護資料庫
1.檢日誌查作業系統 more var log messages 記錄作業系統常見的系統和服務錯誤資訊 more var log lastlog 使用者最後一次登入的時間,登入ip more var log secure 記錄使用者和工作組變化情況,使用者登入認證情況 more var log cr...
資料庫日常應用維護文件
一 啟動和停止資料庫 1 正常生產環境下不建議隨意啟動和停止資料庫 2 可以使用集群啟動和停止資料庫。cmruncl 或是cmhaltcl f 3 也可以手工方式啟 停資料庫 用oracle使用者登入,執行 sqlplus nolog 在sql 提示符下輸入conn as sysdba 然後執行st...
Oracle資料庫中索引的維護 1
本文只討論oracle中最常見的索引,即是b tree索引。本文中涉及的 資料庫 版本是oracle8i。一.檢視系統表中的使用者索引 在oracle中,system表是安裝資料庫時自動建立的,它包含資料庫的全部資料字典,儲存過程 包 函式和觸發器的定義以及系統回滾段。一般來說,應該盡量避免在sys...