Oracle可恢復空間分配技術
許多操作因為空間不夠而失敗,如果啟用了可恢復空間分配,當操作遇到空間問題而不是因為錯誤而失敗時,操作將暫停,顯示為會話掛起。當錯誤得到解決時,它將繼續。所有掛起的會話(當前掛起的和之前掛起但現在再次執行的)列在檢視dba_resumable中。會話關閉後,檢視中的記錄將消除。
要在會話級別啟用可恢復空間分配,命令如下:
alter session enable resumable [timeout <seconds>] [name <opname>];
timeout選項指定語句將掛起多長時間。如果到達這個時間,但問題沒有解決,語句失敗,返回錯誤。如果沒有指定timeout,會話將無限期掛起。name選項指定在檢視dba_resumable中顯示的名稱,幫助確定在多語句程式的哪個點出現空間問題。
執行該命令需要授予會話使用者相應的許可權:
grant resumable to <username>;
也可以透過設定例項引數resumable_timeout為所有會話啟用可恢復空間。這是一個動態引數,如要設定一分鐘的超時:
alter system set resumable_timeout=60;
這將導致所有會話在遇到空間問題時掛起一分鐘。
Data Pump實用程式expdp和impdp有一個命令列開關resumable=y(預設為n),允許Data Pump作業如果遇到空間問題就掛起。
當會話掛起時,它將保持對使用的所有資源的控制,包括撤銷空間、臨時空間、PGA記憶體和記錄鎖定。
在遇到問題時,可以透過另一個會話互動式的進行修復。或者可以建立一個在會話掛起時將執行的after suspend on database觸發器。這個觸發器可以報告問題,如透過電子郵件,或包括檢查並自動修復問題的程式碼,這就意味著可以在一些操作如插入資料導致表空間容量不夠時,透過觸發器程式確認後自動給表空間分配容量。
以下實驗測試可恢復空間分配功能的使用:
1、建立表空間和表
create tablespace test datafile 'd:\oradata\mes\test01.dbf' size 2m;
create table scott.t1(c1 char(1000)) tablespace test;
2、授予會話可恢復空間分配的許可權
grant resumable to scott;
3、在會話級別設定可恢復空間分配
conn scott/tiger
alter session enable resumable name 't1_insert';
4、向表中插入資料,因空間不足會話將被掛起
begin
for i in 1 .. 2000 loop
insert into scott.t1 values ('a row');
end loop;
commit;
end;
/
5、檢視因空間分配問題掛起的會話
col name for a10
col sql_text for a30
col error_parameter1 for a10
col error_parameter2 for a10
col error_parameter3 for a10
col error_parameter4 for a10
col error_parameter5 for a10
col error_msg for a30
select user_id,
session_id,
instance_id,
status,
timeout,
start_time,
suspend_time,
resume_time,
name,
sql_text,
error_number,
error_parameter1,
error_parameter2,
error_parameter3,
error_parameter4,
error_parameter5,
error_msg
from dba_resumable;
USER_ID SESSION_ID INSTANCE_ID STATUS TIMEOUT START_TIME SUSPEND_TIME RESUME_TIME NAME SQL_TEXT ERROR_NUMBER ERROR_PARA ERROR_PARA ERROR_PARA ERROR_PARA ERROR_PARA ERROR_MSG
---------- ---------- ----------- --------- ---------- -------------------- -------------------- -------------------- ---------- ------------------------------ ------------ ---------- ---------- ---------- ---------- ---------- ------------------------------
84 74 1 SUSPENDED 7200 01/25/18 09:42:18 01/25/18 09:42:18 t1_insert INSERT INTO SCOTT.T1 VALUES (' 1653 SCOTT T1 128 TEST ORA-01653: 表 SCOTT.T1 無法透過 128
a row') (在表空間 TEST 中) 擴充套件
6、修復問題,會話將繼續執行
alter database datafile 'd:\oradata\mes\test01.dbf' resize 4m;
7、再次檢視因空間分配問題掛起的會話,顯示會話已經恢復
select user_id,
session_id,
instance_id,
status,
timeout,
start_time,
suspend_time,
resume_time,
name,
sql_text,
error_number,
error_parameter1,
error_parameter2,
error_parameter3,
error_parameter4,
error_parameter5,
error_msg
from dba_resumable;
USER_ID SESSION_ID INSTANCE_ID STATUS TIMEOUT START_TIME SUSPEND_TIME RESUME_TIME NAME SQL_TEXT ERROR_NUMBER ERROR_PARA ERROR_PARA ERROR_PARA ERROR_PARA ERROR_PARA ERROR_MSG
---------- ---------- ----------- --------- ---------- -------------------- -------------------- -------------------- ---------- ------------------------------ ------------ ---------- ---------- ---------- ---------- ---------- ------------------------------
84 74 1 NORMAL 7200 01/25/18 10:00:39 t1_insert 0
8、刪除表並清理表空間
drop table scott.t1;
drop tablespace test including contents and datafiles;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2150412/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用可恢復空間分配技術自動分配表空間
- Oracle表空間時間點恢復技術TSPITROracle
- Oracle RMAN 表空間恢復Oracle
- 【Oracle 恢復表空間】 實驗Oracle
- 恢復Oracle表空間的方法Oracle
- Oracle RMAN 表空間的完全恢復Oracle
- Oracle 11g RMAN恢復-只讀表空間的恢復Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))Oracle
- 儲存管理之段收縮、可恢復空間
- ORACLE資料庫恢復技術Oracle資料庫
- oracle實驗記錄 (恢復-表空間基於時間點恢復(手動))Oracle
- Oracle建立表空間、使用者、分配許可權語句Oracle
- oracle建立使用者,表空間,臨時表空間,分配許可權步驟詳解Oracle
- rman恢復資料檔案 恢復表空間
- 【Oracle】rman 恢復只讀表空間資料庫Oracle資料庫
- SYSAUX表空間管理及恢復UX
- Oracle 11g RMAN恢復-只讀表空間的恢復(備份是在表空間只讀狀態下做的)Oracle
- 表空間TSPITR恢復-實驗
- oracle小知識點10--表空間時間點恢復(TSPITR)Oracle
- (Les16 執行資料庫恢復)-表空間恢復資料庫
- oracle資料庫特種恢復技術(五)--redo篇Oracle資料庫
- ORACLE 11g TSPITR恢復被刪除的表空間Oracle
- 根據表空間的TSPITR恢復
- SHARED POOL 空閒空間分配流程
- Oracle 11g RMAN恢復-使用者誤刪除表空間Oracle
- oracle8i誤刪除臨時表空間後的恢復Oracle
- ORACLE空間管理實驗2:區的管理與分配Oracle
- Oracle 最佳化,備份和恢復技術培訓Oracle
- Oracle資料庫特種恢復技術(一)—原理篇Oracle資料庫
- oracle資料庫特種恢復技術(二)—塊內篇Oracle資料庫
- oracle資料庫特種恢復技術(三)—轉換篇Oracle資料庫
- Oracle資料庫特種恢復技術(四)--實驗篇Oracle資料庫
- mysql無備份恢復-獨立表空間MySql
- flashback database 恢復誤刪除的表空間。Database
- system表空間檔案損壞----完全恢復
- UNDO 表空間檔案損壞的恢復
- 表空間級資料庫備份恢復資料庫
- 恢復表空間到不同的ASM磁碟組ASM