创建、管理撤销表空间

撤销管理模式:

用户通过设定撤销管理模式(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语句进行更改,并无须重新启动数据库。
不能使当前正在使用的撤销表空间脱机;
如果指定的表空间不存在,或不是一个撤销类型的表空间,则更改时会有错误提示。
在成功更改表空间之后,任何新开始的事务都将在新的撤销表空间中保留撤销数据。但是在旧的撤销表空间中可能还会保留着当前未提交的事

务的撤销数据。这时,旧的撤销表空间并不会立即进入脱机状态,而是进入“悬挂脱机状态”。在这种情况下,当前未提交的事务继续使用旧

的撤销表空间,知道提交后,旧的撤销表空间才进入脱机状态。
需要注意,在RAC(REAL APPLICATION CLUSTER)结构中,不同例程必须使用各自的、独立的撤销表空间,而不能使用同一个撤销表空间。
更改撤销表空间,不会清空V$UNDOSTAT视图中的内容,仍然会继续向其中每隔10分钟就增加一条记录。只有在关闭数据库时才会清空

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 MAX FROM
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 on next 50M;

--使用撤销表空间
alter system set undo_tablespace = undotbs2;

时间: 2024-08-19 08:34:27

创建、管理撤销表空间的相关文章

Oracle创建、管理撤销表空间

撤销管理模式: 用户通过设定撤销管理模式(undo mode)就可以灵活地选择使用手动撤销管理(manual undo management)或自动撤销管理(automatic undo management).数据库系统既可以运行在手动撤销管理模式下,也可以运行于自动撤销管理模式下.在手动撤销管理模式下,撤销空间通过回滚段(rollback segment)管理.在自动撤销管理模式下,撤销空间通过撤销表空间(undo tablespace)管理.如需使用自动撤销管理模式,数据库管理员只需为每个

本地化管理的表空间的创建相关参数说明

语法: 本地化管理的表空间的创建过程: 语法:CREATE TABLESPACE 表空间名字 DATAFILE '数据文件详细信息' [EXTENT MANAGEMENT { LOCAL {AUTOALLOCATE | UNIFORM [SIZE INTETER [K|M] ] } } ] 先来看一个创建表空间的参数: CREATE TABLESPACE testdata DATAFILE '/oracle/oradata/orcldb/test.dbf' SIZE 250M AUTOEXTEN

4.windows和Linux下创建oracle用户名表空间,表,插入数据,用户管理表等操作

进入超级管理员,执行以下命令 Window下创建数据库,表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 根据实际安装环境进行调整 CREATE TABLESPACE ts_myscott LOGGING DATAFILE 'F:/app/to-to/oradata/orcl/ts_myscott.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL; CREATE TABLESPACE ts_myscott2 LOGGING DATAFILE

【翻译自mos文章】在一个使用uniform size的 本地管理的表空间中建立一个表,为什么会忽略INITIAL 参数?

翻译:Why Does a Table Created in a Locally Managed Tablespace With Uniform Extents Ignore INITIAL? (文档 ID 753662.1) 在一个使用uniform size的 本地管理的表空间中建立一个表,为什么会忽略INITIAL 参数? 适用于: Oracle Database - Enterprise Edition - Version 8.1.5.0 to 11.1.0.7 [Release 8.1

oracle创建表空间 创建用户指定表空间并授权

1.创建表空间 例如: (1)表空间名为myplace: (2)数据文件路径为E:\oracle\oracle_home\oradata\myspace (3)文件名为mydbf.dbf,空间大小为32M (4)设置表空间自动扩展,每次扩展32M,最大空间为2048M (5)本地管理表空间 create tablespace myspace     logging       datafile 'E:\oracle\oracle_home\oradata\myspace\mydbf.dbf' 

oracle创建大文件表空间

大文件表空间是oracle10g以及以后的版本引进的一个新表空间类型,主要用于决解存储大文件不够的问题.与普通表空间不同的是,大文件表空间只能对应唯一一个数据文件或临时文件,而普通表空间则可以最多对应1022个数据文件或临时文件. 虽然大文件表空间只能对应一个数据文件或临时文件,但其对应的文件可达4G数据块大小,而普通表空间对应的文件最大可达4M个数据块大小. 创建大文件表空间 创建大文件表空间需要使用bigfile关键字,而且只能为其指定一个数据文件或临时文件. 与大文件表空间相对应,普通表空

oracle 创建临时表空间、用户表空间、创建用户关联表空间、授权等总结

1.创建临时表空间 CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'C:\oracle\product\10.1.0\oradata\orcl\test_temp01.dbf' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL; 一般从第二步开始就可以 2.创建用户表空间 CREATE TABLESPACE gzjssapce LOGGING DATAFILE

1. orcle 创建可扩展表空间

create tablespace tablespacename datafile 'D:\tablespace\tablespacename.dbf' size 200m autoextend on extent management local uniform size 64k segment space management auto; 1. orcle 创建可扩展表空间

Oracle菜鸟之如何创建和删除表空间

1.创建临时表空间 创建表空间时,dbf文件一般存放在datafile文件的存放目录下(一般是在实例名命名的文件夹下面) 可以通过 select * from v$datafile;查看所有数据文件的存放位置 create temporary tablespace 表空间名 tempfile '/data/oradata/CHUANSHU/datafile/tmp_文件名.dbf' size 50M autoextend on next 1M maxsize 1024M extent manag