撤銷管理模式:
使用者通過設定撤銷管理模式(undo mode)就可以靈活地選擇使用手動撤銷管理(manual undo management)或自動撤銷管理(automatic undo management)。資料庫系統既可以執行在手動撤銷管理模式下,也可以執行於自動撤銷管理模式下。在手動撤銷管理模式下,撤銷空間通過回滾段(rollback segment)管理。在自動撤銷管理模式下,撤銷空間通過撤銷表空間(undo tablespace)管理。如需使用自動撤銷管理模式,資料庫管理員只需為每個例項(instance)建立乙個撤銷表空間,並將初始化引數 undo_management 設為 auto 即可。oracle建議使用者使用自動撤銷管理模式。
管理撤銷表空間
如果下兩種特殊情況需要人工干預自動撤銷管理方式。他們需要確定撤銷表空間的大小和撤銷資料的保留時間。
1.沒有足夠的撤銷空間來處理所有的活動事務。
2.沒有足夠的撤銷空間來滿足讀一致性需要的撤銷資料。
這些干預的結果都需要對撤銷表空間進行管理。
(一)建立撤銷表空間
可以在建立資料庫的時候建立撤銷表空間。也可以在建立資料庫之後再建立撤銷表空間。
建立撤銷表空間的命令列語法與建立其他表空間的語句基本相同,但必須指定undo關鍵字,只能使用本地管理方式extent management local
而不能使用資料字典管理方式,區管理方式只能是使用autoallocate而不能使用uniform,不能指定任何段空間管理方式,所以其語法是:
create undo tablespace datafile datafile_clause [,datafile_clause]
[extent management local]
[autoallocate]
其中datafile_clause子句的語法是:
'path_filename_suffix' size integer [k|m]
[reuse]
[autoextend off|on]
[next integer [k|m]]
[maxsize unlimited |integer [k|m]]
在datafile_clause子句中指定資料檔案時,不能使用相對路徑,只能使用絕對路徑。並且,如果沒有提供檔名的字尾,則無字尾。
create undo tablespace undotbs01 datafile 'e:\undotbs01_1.dbf' size 3m autoextend on next 1m maxsize 15m;
create undo tablespace undotbs02 datafile 'e:\undotbs02_1.dbf' size 3m autoextend off;
雖然dba最初可以允許資料檔案自動擴充套件,但一旦dba認為撤銷表空間的大小已經合適時,就應該關閉自動擴充套件特性或限制其最大大小,以防止
某個使用者忘記了盡可能頻繁提交事務而意外的用完該資料檔案所在的磁碟空間。
(二)修改撤銷表空間
與其他表空間一樣,可以通過alter tablespace語句,alter database語句來修改撤銷表空間。但因為撤銷表空間的大部分設定都由oracle本
身進行管理,所以只能對撤銷表空間進行如下的修改操作:
1.新增新的資料檔案以便增加更多的儲存空間。
2.移動(修改位置與名稱)資料檔案。
3.將資料檔案設定成聯機或離線狀態。
給undotbs02撤銷表空間新增乙個新的資料檔案。
alter tablespace undotbs02 add datafile 'e:\undotbs02_2.dbf' size 1m autoextend off;
給undotbs02撤銷表空間中e:\undotbs02_2.dbf資料檔案的大小。
alter database datafile 'e:\undotbs02_2.dbf' resize 2m;
刪除undotbs02表空間中的e:\undotbs02_2.dbf資料檔案。
alter database datafile 'e:\undotbs02_2.dbf' offline off;
這條語句只是將該資料檔案的狀態改變成了recover了,而並沒有從資料庫、更沒有從磁碟中刪除該資料檔案。要使該資料檔案可以被重新使
用,需要進行介質恢復,並將該資料檔案的狀態改變為online就可以了。
recover datafile 'e:\undotbs02_2.dbf';
alter database datafile 'e:\undotbs02_2.dbf' online;
可以使表空間離線,但不能使當前正在使用的表空間離線。
(三)更改撤銷表空間
啟動例程並開啟資料庫後,在同一時刻乙個例程只能使用乙個撤銷表空間。如果在資料庫中建立了多個撤銷表空間,那麼在資料庫的執行過程
中,可以更改到另乙個撤銷表空間,即更改undo_tablespace引數,並同時停止當前使用的撤銷表空間。由於該引數是乙個動態引數,所以可
以在資料庫執行過程中,通過alter system set語句進行更改,並無須重新啟動資料庫。
不能使當前正在使用的撤銷表空間離線;
如果指定的表空間不存在,或不是乙個撤銷型別的表空間,則更改時會有錯誤提示。
在成功更改表空間之後,任何新開始的事務都將在新的撤銷表空間中保留撤銷資料。但是在舊的撤銷表空間中可能還會保留著當前未提交的事
務的撤銷資料。這時,舊的撤銷表空間並不會立即進入離線狀態,而是進入「懸掛離線狀態」。在這種情況下,當前未提交的事務繼續使用舊
v$undostat檢視中的內容。
(四)刪除撤銷表空間。
可以使用drop tablespace語句來刪除表空間。
不能刪除當前正在使用的撤銷表空間。
可以刪除沒有使用的撤銷表空間,並且尅指定including contents and datafiles子句,以便在刪除撤銷表空間的時候,將有內容的撤銷表空
間及其對應的作業系統資料檔案也刪除,否則需要在關閉資料庫之後才能刪除這些作業系統資料檔案。
查詢和監控撤消的有關資訊
檢視作用
v$undostat
包含所有撤消表空間的統計資訊,
可用於監控和調整撤消表空間的。dba可以利用該檢視來估算撤消表空間的大小,
oracle利用其完成對撤消表空間的自動管理
v$rollstat
包含撤消表空間各個撤消段的資訊
v$transcation
包含各個事務所使用的撤消段資訊
dba_undo_extents
包含撤消表空間的每個區所對應的事務的提交時間
--查詢撤消有關的引數
sql>
show parameter undo;
--檢視撤消表空間的使用情況
select
bytes
/1024
/1024
byte,maxbytes
/1024
/1024
maxfrom
dba_data_files
where
tablespace_name='
undotbs';
--通過v$undostat來查詢最近產生的撤消資料的oracle塊數,v$undostat每10分鐘產生一條記錄,最多包含144條記錄。
select
to_char(end_time,
'hh24:mi:ss
') etime,
to_char(begin_time,
'hh24:mi:ss
') btime,
(end_time
-begin_time)*24
*60*60
ttime,
undoblks
from
v$undostat;
--撤消表空間以及資料檔案的資訊
select
a.tablespace_name tbs,
a.file_name
,a.blocks,a.bytes
/1024
/1024
bt,a.maxbytes
/1024
/1024
max,
a.autoextensible
from
dba_data_files a,dba_tablespaces b
where
a.tablespace_name
=b.tablespace_name;
--撤消段的統計資訊
select
a.name,b.xacts,b.writes,b.extents
from
v$rollname a ,v$rollstat b
where
a.usn
=b.usn;
--建立撤銷表空間
create
undo tablespace undotbs2
datafile
'e:\oradata\undo\undotbs2.dbf
'size 200m autoextend
onnext
50m;
--使用撤銷表空間
alter
system
setundo_tablespace
=undotbs2;
Oracle建立 管理撤銷表空間
撤銷管理模式 使用者通過設定撤銷管理模式 undo mode 就可以靈活地選擇使用手動撤銷管理 manual undo management 或自動撤銷管理 automatic undo management 資料庫系統既可以執行在手動撤銷管理模式下,也可以執行於自動撤銷管理模式下。在手動撤銷管理模...
ORACLE表空間建立 管理 刪除的基礎用法
1 建立永久表 建立大小為50mb的永久表空間test01,禁止自動擴充套件資料檔案 create tablespace test01 logging reuse autoextend off 建立永久表空間test02,允許自動擴充套件資料檔案,本地管理方式 create tablespace t...
ORACLE SQL建立管理表(DDL)
ddl data definition language 資料定義語言 1.表是基本的資料儲存集合,由行和列組成 表的命名規則 表名和列名 必須以字母開頭,必須在1 30之間,必須只能包含 a z,a z,0 9,和 必須不能和使用者定義的其他物件重名,必須不能是oracle 的保留字 2.資料型別...