本人很喜欢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分钟生成一行统计信息。
【编辑推荐】