????? Oracle 臨時表空間是Oracle數據庫的重要組成部分,盡管該部分并沒有cont體系結構上得以展現,但其重要地位也是不容忽視的。尤其是
對于大型的頻繁操作,如創建索引,排序等等都需要在臨時表空間完成來減少內存的開銷。當然對于查詢性能要求較高的應盡可能的避免在磁盤
上完成這些操作。本文主要描述的是臨時表空間的管理與受損恢復。
一、臨時表空間的特性與注意事項
??1.特性
????? ?用戶存儲臨時數據的表空間
?????? 臨時數據通常只在一個數據庫會話期間內存在的數據,分為兩種形式,排序數據和全局臨時表
????? ?臨時數據不會被寫入存儲永久對象的普通表空間內,而是存儲在臨時表空間的臨時段中
?????? 臨時表空間臨時性導致不需要備份該類型的表空間,RMAN也不支持對臨時表空間的備份
?????? 對于臨時數據的處理,不會生成重做,也不會生成撤銷數據
?????? 臨時表空間的數據文件不能置為只讀、不能重命名
?????? 監時表空間的數據文件的日志方式總是NOLOGGING
?????? 使用臨時表空間的主要操作
??????? CREATE INDEX,ALTER INDEX ...REBUILD,ORDER BY,GROUP BY,DISTINCT,UNION,INTERSECT,MINUS,SORT-MERGER,JOIN,ANALYZE
??????
??2.臨時表空間使用的注意事項
????? ?a. 每個用戶都有一個缺省的臨時表空間,對于臨時表空間使用較高的系統,建議將臨時表空間數據文件分布到不同的磁盤
?????? b. 對于大型操作頻繁,(大型查詢,大型分類查詢,大型統計分析等),應指定單獨的臨時表空間,以方便管理
?????? c. 分配用戶單獨臨時表空間,一般是針對大型產品數據庫,OLTP數據庫,數據庫倉庫
?????? d. 對于小型產品不需要單獨制定臨時表空間,使用默認臨時表空間
?????? e. 對于臨時表空間建議關閉自動擴展功能,避免過度擴展所致的空間壓力?
??關于臨時表空間的創建與管理請參考:
Oracle 表空間與數據文件
二、臨時表空間的管理
??1. 查看缺省的臨時表空間
??2.查看臨時表空間的大小及位置????
??3. 臨時表文件大小和已使用空間????
??4. 查看當前臨時表使用空間大小與正在占用臨時表空間的sql語句??
???3. 修改默認的臨時表空間
???????? ??alter database default temporary tablespace tablespace_name;
???4. 對于過度使用臨時表空間,在允許的情況下,可以殺掉其session
????????? ?alter system kill session 'sid,serial#';??
???
三、臨時表空間故障
??前面已提到,臨時表空間不需要備份,如果對臨時表空間備份將收到錯誤提示??
??臨時表空間出錯的錯誤提示(位于告警日志中alert_orcl.log)
???Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_dbw0_2230.trc:
???ORA-01186:file 3 failed verification tests
???ORA-01157:cannot identify/lock data file 3 - see DBWR trace file
???ORA-01110:data file 3:'/u01/app/oracle/oradata/orcl/temp01.dbf'
?
四、還原受損的臨時表空間
??1. 在session 1中刪除臨時表空間的數據文件
??2. 在session 2中執行排序查詢,提示臨時數據文件錯誤???
??3. 在session 1中為臨時表空間增加數據文件??
??4. 在session 2中繼續執行排序操作,此次執行成功??
??5. 查詢臨時數據文件狀態及文件存在性?
??6. 清除控制文件內記錄的不存在的臨時文件信息?
??7. 基于表空間級別的恢復操作(下面給出主要步驟,不在演示)
?????? a. 創建一個新的臨時表空間
???? ??b. 使用alter database 將用戶切換到新的臨時表空間,即設置新的默認的臨時表空間
????? ?c. 刪除受損的臨時表空間
??
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
