溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle可恢復空間分配技術是怎樣的

發(fā)布時間:2021-11-12 14:41:22 來源:億速云 閱讀:134 作者:柒染 欄目:關系型數(shù)據(jù)庫

今天就跟大家聊聊有關Oracle可恢復空間分配技術是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

許多操作因為空間不夠而失敗,如果啟用了可恢復空間分配,當操作遇到空間問題而不是因為錯誤而失敗時,操作將暫停,顯示為會話掛起。當錯誤得到解決時,它將繼續(xù)。所有掛起的會話(當前掛起的和之前掛起但現(xiàn)在再次運行的)列在視圖dba_resumable中。會話關閉后,視圖中的記錄將消除。

要在會話級別啟用可恢復空間分配,命令如下:

alter session enable resumable [timeout <seconds>] [name <opname>];

timeout選項指定語句將掛起多長時間。如果到達這個時間,但問題沒有解決,語句失敗,返回錯誤。如果沒有指定timeout,會話將無限期掛起。name選項指定在視圖dba_resumable中顯示的名稱,幫助確定在多語句進程的哪個點出現(xiàn)空間問題。

執(zhí)行該命令需要授予會話用戶相應的權限:

grant resumable to <username>;

也可以通過設置實例參數(shù)resumable_timeout為所有會話啟用可恢復空間。這是一個動態(tài)參數(shù),如要設置一分鐘的超時:

alter system set resumable_timeout=60;

這將導致所有會話在遇到空間問題時掛起一分鐘。

Data Pump實用程序expdpimpdp有一個命令行開關resumable=y(默認為n),允許Data Pump作業(yè)如果遇到空間問題就掛起。

當會話掛起時,它將保持對使用的所有資源的控制,包括撤銷空間、臨時空間、PGA內(nèi)存和記錄鎖定。

在遇到問題時,可以通過另一個會話交互式的進行修復。或者可以創(chuàng)建一個在會話掛起時將運行的after suspend on database觸發(fā)器。這個觸發(fā)器可以報告問題,如通過電子郵件,或包括檢查并自動修復問題的代碼,這就意味著可以在一些操作如插入數(shù)據(jù)導致表空間容量不夠時,通過觸發(fā)器程序確認后自動給表空間分配容量。

以下實驗測試可恢復空間分配功能的使用:

1、創(chuàng)建表空間和表

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、向表中插入數(shù)據(jù),因空間不足會話將被掛起

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、修復問題,會話將繼續(xù)執(zhí)行

alter database datafile 'd:\oradata\mes\test01.dbf' resize 4m;

7、再次查看因空間分配問題掛起的會話,顯示會話已經(jīng)恢復

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;

看完上述內(nèi)容,你們對Oracle可恢復空間分配技術是怎樣的有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI