日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

oracle 撤销回退,Oracle 回滚(ROLLBACK)和撤销(UNDO)

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 撤销回退,Oracle 回滚(ROLLBACK)和撤销(UNDO) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

五、計算UNDO表空間的大小

計算公式:

MAX(undoblks)/600 * MAX(maxquerylen)位于v$undostat

* db_block_size位于v$parameter

--創建演示環境

SQL> INSERT INTO tb_test SELECT employee_id,first_name FROM hr.employees;

107 rows created

SQL> INSERT INTO tb_test SELECT * from tb_test;

109 rows created.

--多次執行上述命令,下面是的tb_test表中的記錄數

SQL> /

892928 rows created.

SQL> COMMIT;

Commit complete.

--查看當前undo表空間的大小

SQL> SELECT t.name,d.name,d.bytes/1024/1024 as TotalSize ,t.flashback_on,d.status

2FROM v$tablespace t

3JOIN v$datafile d

4USING (ts#)

5WHERE t.name LIKE 'UNDO%';

NAMENAMETOTALSIZE FLA STATUS

--------------------------------- ------------------------------------------- ---------- --- -------

UNDOTBS1/u01/app/Oracle/oradata/orcl/undotbs01.dbf30 YES ONLINE

--將undo表空間修改為RETENTION GUARANTEE及關閉自動擴展

SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;

Tablespace altered.

SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf' AUTOEXTEND OFF;

Database altered.

SQL> SELECT tablespace_name,contents,retention FROM dba_tablespaces

2WHERE tablespace_name LIKE 'UNDO%';

TABLESPACE_NAMECONTENTSRETENTION

------------------------------ --------- -----------

UNDOTBS1UNDOGUARANTEE

--修改保留時間為分鐘

SQL> ALTER SYSTEM SET undo_retention = 120;

System altered.

--循環刪除tb_test中的記錄,提示undo表空間空間容量不夠

SQL> BEGIN

2FOR i IN 1..1000

3LOOP

4DELETE FROM tb_test WHERE rownum < 1001;

5COMMIT;

6END LOOP;

7END;

8/

BEGIN

*

ERROR at line 1:

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'

ORA-06512: at line 4

--修改回話的時間參數

SQL> ALTER SESSION SET nls_date_format='yyyy-mm-dd HH24:MI:SS';

Session altered.

--查看v$undostat視圖,獲得相關信息

SQL> SELECT begin_time,end_time,undoblks,maxquerylen, ssolderrcnt,nospaceerrcnt

2FROM v$undostat;

BEGIN_TIMEEND_TIMEUNDOBLKS MAXQUERYLEN SSOLDERRCNT NOSPACEERRCNT

------------------- ------------------- ---------- ----------- ----------- -------------

2010-07-12 19:12:18 2010-07-12 19:22:186000

2010-07-12 19:02:18 2010-07-12 19:12:189000

2010-07-12 18:52:18 2010-07-12 19:02:1847000

2010-07-12 18:42:18 2010-07-12 18:52:182136001

2010-07-12 18:32:18 2010-07-12 18:42:186000

2010-07-12 18:22:18 2010-07-12 18:32:18413154100

2010-07-12 18:12:18 2010-07-12 18:22:1817993800

2010-07-12 18:02:18 2010-07-12 18:12:186000

--計算undo表空間所需的大小

SQL> SELECT (

2(SELECT MAX(undoblks)/600 * MAX(maxquerylen) FROM v$undostat) *

3(SELECT value FROM v$parameter WHERE name = 'db_block_size'))/1024/1024 as Need_Size

4FROM dual;

NEED_SIZE

----------

42.8590625

--取消撤銷保留選項

SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;

Tablespace altered

六、UNDO配額

對于超長的事務或不當的SQL腳本將耗用大量的UNDO表空間,使用UNDO表空間配額可以提高資源的利用率

對于不同組的用戶可以分配不同的最大UNDO表空間配額

當某個組超出了最大的資源限制,則該組不允許新的事務產生,直到當前組的UNDO表空間釋放或終止

七、撤銷常見的兩個錯誤

1.ORA-1555 snapshot too old快照過舊錯誤的解決

配置合適的保留時間(undo_retention)

調整undo表空間的大小

考慮保證撤銷保留的使用(retention guarantee)

2.ORA-30036 unable to extend segment in undo tablespace無法擴展撤銷表空間內的撤銷段

調整undo表空間的大小

確保大量的事務能夠周期性的提交

八、UNDO涉及的幾個相關視圖:

V$TRANSACTION

V$SESSION

DBA_ROLLBACK_SEGS--顯示所有的segments

V$ROLLSTAT

V$UNDOSTAT

V$ROLLNAME--顯示當前在線的segments

關于UNDO涉及視圖的更多信息,請參考oracle的在線文檔

總結

以上是生活随笔為你收集整理的oracle 撤销回退,Oracle 回滚(ROLLBACK)和撤销(UNDO)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。