Oracle表空间(Tablespace)(五)

2014-11-24 12:44:27 · 作者: · 浏览: 3
ST01.DBF’,细节还不明白,只知道数据库认为这个数据文件收到破坏,需要使用备份、日志信息来恢复。这本来是个比较严重的问题,但是在这个实例中,还是很好解决的,执行命令:

recover datafile ’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’。提示完成介质恢复,再打开数据库:alter database open;一切就正常了。

4、删除表空间

删除表空间,使用命令drop tablespace 。但是有3个选项需要注意:

INCLUDING CONTENTS:指示删除表空间中的segments;

INCLUDING CONTENTS AND DATAFILES:指示删除segments和datafiles;

CASCADE CONSTRAINTS:删除所有与该空间相关的完整性约束条件。

Drop tablespace test INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

需要注意的是SYSTEM表空间以及具有active segments的表空间是无法删除的。

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

a)TableSpace管理准则

1、使用多个TableSpace

* 用户数据与数据字典数据分离,减少竞争

* 应用程序之间的数据分离,防止某个TableSpace脱机后对多个程序造成影响

* 不同磁盘驱动器上存储数据,减少I/O竞争

* 回滚段数据与用户数据分离,防止单磁盘故障造成数据永久丢失

* 可以控制单个TableSpace脱机,提供更高的整体可用性

* 为特定类型数据库使用保留TableSpace,可优化TableSpace的使用

* 可以备份单独的TableSpace

2、指定表空间默认的存储参数

为TableSpace设置合适的参数,下文中详细介绍。

3、为用户指定表空间限额

可以有效控制TableSpace的大小,限制用户权限防止发生意外。

b)创建TableSpace

1、创建本地管理TableSpace

Oracle创建的TableSpace默认均是本地管理的,明确的表述应该是:

在CREATE TABLESPACE 语句中EXTENT MANAGEMENT 子句中指定LOCAL

然后可以用AUTOALLOCATE 选项(默认)来使Oracle自动管理盘区

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M

EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

也可以使用一个指定大小(UNIFORM SIZE)的同意盘区来管理该TableSpace

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

如果未指定盘区大小,则默认为1M,说明数据文件至少要大于1MB

注:如果TableSpace被期望用于包含需要不同盘区大小和拥有很多盘区的大小变动的对象,那选择AUTOALLOCATE是最好的选择。AUTOALLOCATE是一种管理TableSpace的简便方法,只是有可能会对一些空间造成浪费。如果需要准确控制未用空间,并能够精确预计为一个或多个对象要非配的空间和盘区大小,那就可以使用UNIFORM。

2、在本地管理TableSpace中指定段空间管理

可使用SEGMENT SPACE MANAGEMENT子句来设置端控件的管理模式,有以下几种模式:

MANUAL(默认):使用段中管理空闲空间的空闲列表。

AUTO:使用位图来管理段中的空闲空间。又称为自动段空间管理。

AUTO立功了一种更加简单、有效的管理方法,完全消除了为表空间中创建的段指定和调整PCTUSED、FREELISTS、FREELISTS GROUPS属性的任何必要。

CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M

EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

注:LOB类型不能指定自动段空间管理。

3、修改本地管理TableSpace

* 不能讲本地管理TableSpace改为本地管理的temp TableSpace

* 不能改变TableSpace的段空间管理办法

* 本地管理TableSpace没有必要合并空闲盘区

* 可以添加数据文件

* 可以改变TableSpace状态(ONLINE/OFFLINE)

* 修改TableSpace为只读or只写

* rename数据文件

* 启用/禁用该TableSpace数据文件的自动盘区大小

4、创建字典管理的TableSpace

CREATE TABLESPACE tbsb

DATAFILE '/u02/oracle/data/tbsb01.dbf' SIZE 50M

EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE (

INITIAL 50K

NEXT 50K

MINEXTENTS 2

MAXEXTENTS 50

PCTINCREASE 0);

使用ALTER TABLESPACE语句可以进行以下操作:

* 添加一个新的文件

* 改变默认的存储参数

* 合并TableSpace的空闲空间

* 可以改变TableSpace状态(ONLINE/OFFLINE)

* 修改TableSpace为只读or只写

* rename数据文件

* 启用/禁用该TableSpace数据文件的自动盘区大小

5、临时表空间

临时表空间主要用于提高多个排序操作的并发能力、减小开销,或避免Oracle空间管理操作在一起进行。临时表空间创建之后,可以被多个用户共享。

一个给定实例和表空间的所有排序操作共享一个单一的排序段。即排序段为一个给定表空间的每个执行排序操作的实例而存在。

排序段由使用临时表空间用于排序的第一个语句创建,并在关闭时释放,一个盘区不能被多个事务共享。

可以使用V$SORT_SEGMENT视图来查看临时表空间排序段的空间分配和回收情况

用V$SORT_USAGE视图查看这些段的当前排序用户

注:临时表空间中不能创建明确对象。

6、创建本地管理的临时表空间

CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf' SIZE 20M REUSE

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;

注1:临时数据文件信息查询与数据文件不同,需要查询V$TEMPFILE和