本人很喜歡VB.NET UNDO表空間,在工作中也很喜歡總結關於VB.NET UNDO表空間的經驗教訓,下面就這個問題來詳細說說吧。建立VB.NET UNDO表空間,VB.Net UNDO表空間專門用於存放UNDO數據,並且在UNDO表空間尚不能建立任何數據對象(表,索引,簇)
1.使用CREATE DATABASE命令建立UNDO表空間。
當使用CREATE DATABASE命令建立數據庫時,通過指定UNDO TABLESPACE選項,可以建立UNDO表空間。示例如下:
- CREATE DATABASE db01
- …
- UNDO TABLESPACE undotbs_01
- DATAFILE ‘/u01/Oracle/rbdb1/undo0101.dbf’ SIZE 30M;
注意:UNDO TABLESPACE 子句不是必須的,如果使用自動UNDO管理模式,並且沒有指定該子句,那麼建立數據庫時會自動生成名為SYS_UNDOTBS的UNDO表空間。
2.使用CREATE UNDO TABLESPACE命令建立UNDO表空間。
- CREATE UNDO TABLESPACE undotbs3
- DATAFILE ‘D:demoundotbs3.dbf’ SIZE 10M;
修改VB.Net UNDO表空間,使用ALTER TABLESPACE命令修改UNDO表空間。當事務用盡了UNDO表空間後,使用ALTER TABLESPACE … ADD DATAFILE增加數據文件當UNDO表空間所在的磁盤填滿是,使用ALTER TABLESPACE … RENAME DATAFIEL 命令移動數據文件到其他磁盤上。使用ALTER DATABASE … OFFLINE/ONLINE使表空間脫機/聯機。當數據庫處於ARCHIVELOG模式時,使用ALTER TABLESPACE …BEGIN BACKUP/END BACKUP命令備份UNDO表空間。
切換VB.Net UNDO表空間。
啟動例程並打開數據庫後,同一時刻特定例程只能使用一個UNDO表空間,切換UNDO表空間是指停止例程當前使用的UNDO表空間,並啟動其他UNDO表空間,下面以啟用undotbs2表空間為例,說明切換UNDO表空間的方法。
- ALTER SYSTEM SET undo_tablespace=undotbs02;
在RAC(Real Application Cluster)機構中,不同例程必須使用獨立的UNDO表空間,而不能共用同一個UNDO表空間。
刪除VB.Net UNDO表空間。
當前例程正在使用的VB.Net UNDO表空間是不能被刪除的,如果確定要刪除當前例程正在使用的UNDO表空間,應首先切換UNDO表空間。然後刪除相應的UNDO表空間。DROP TABLESPACE undotbs3;
1.確定當前例程正在使用的UNDO表空間。Show parameter undo_tablespace
2.顯示數據庫的所有UNDO表空間。SELECT tablespace_name FROMdba_tablespaces WHERE contents=’UNDO’;
3.顯示UNDO表空間統計信息。
使用自動UNDO管理模式時,需要合理地設置UNDO表空間的尺寸,為例合理規劃UNDO表空間尺寸,應在數據庫運行的高峰階段搜集UNDO表空間的統計信息。最終根據該統計信息確定UNDO表空間的尺寸。通過查詢動態性能視圖V%UNDOSTAT,可以搜集UNDO統計信息。
- SELECT TO_CHAR(BEGIN_TIME,’HH24:MI:SS’) BEGIN_TIME, TO_CHAR
(END_TIME,’HH24:MI:SS’) END_TIME, UNDOBLKS- FROM V$UNDOSTAT;
BEGIN_TIME用於標識起始統計時間,END_TIME用於標識結束統計時間,UNDOBLKS用於標識UNDO數據所占用的數據塊個數。Oracle每隔10分鐘生成一行統計信息。