Oracle 10g表空间管理

来源:互联网 发布:方媛的淘宝店铺叫什么 编辑:程序博客网 时间:2024/04/29 14:58

表空间是ORACLE数据库中最大的逻辑结构,ORACLE数据库就是由一个或多个表空间组成的。

(一)表空间概述:

一个表空间的大小等于其中所有数据文件的大小之和。数据库的大小等于其中所有表空间的大小之和。表空间可以被联机和脱机,SYSTEM表空间不能脱机。

表空间可以分为系统表空间和非系统表空间

系统表空间包括SYSTEM表空间和SYSAUX表空间,其余的表空间就是非系统表空间。非系统表空间分为临时表空间和撤销表空间

临时表空间可以被所有用户共享使用,例如TEMP表空间可以被所有用户共享使用。某个用户使用哪个临时表空间应该是在创建该用户时候制定的。数据库默认临时表空间是在创建数据库时由DEFAULTTEMPORARY TABLESPACE子句来指定的。撤销表空间是将回退段放入了撤销表空间,而由例程自动处理撤销表空间中的回退段,通过查询数据字典DBA_ROLLBACK_SEGS可以得到撤销表空间中回退段的信息。在ORACLE中可以创建多个撤销表空间但是同一时刻只允许激活一个撤销表空间,在初始化参数文件中用UNDO_TABLESPACE指出要激活的撤销表空间。

大文件表空间是ORACLE 10G新引进的表空间大文件表空间只能放置一个数据文件但其数据文件可以包括4G个数据块,如果每个数据块的大小是8KB那么大文件表空间可以达到32TB。创建语句如下:

CREATE BIGFILE TABLESPACE MYBIGTBS01

DATAFILE 'E:\MYBIGTBS01_1.DBF' SIZE 20G

SEGMENT SPACE MANAGMENT AUTO

小文件表空间是以前的ORACLE表空间的新名称,在小文件表空间中可以放置多个数据文件,一个数据库可以放置多达64K个数据文件,SYSTEM表空间和SYSAUX表空间总是被创建位小文件表空间。

CREATE SMALLFILE TEMPORARY TABLESPACE MYTMPTBS01

TEMPFILE 'E:\MYTMPTBS01_1.DBF' SIZE 4M

UNIFORM SIZE 64K

表空间的区、段管理:

区管理方式分为字典管理方式和本地管理方式。

字典管理方式是传统的管理方式在字典管理方式下使用数据字典来管理存储空间的分配。

ORACLE强烈建议使用本地管理方式代替字典管理方式,在本地管理方式下表空间中区分配和区回收的管理信息都被存储在表空间的数据文件中而与数据字典无关。在本地管理方式下可以用UNIFORM统一分配表空间中所有区的大小都相同和AUTOALLOCATE自动分配两个选项来指定表空间区的分配方式。

在本地管理方式下指定段空间的管理方式可以用MANUAL(手动)方式和AUTO(自动)方式来指定管理方式。通过DBA_TABLESPACES数据字典视图可以查询当前数据库中各个表空间的区、段空间管理方式。此外创建表空间这种修改数据库的物理结构的信息会同时被记录到预警日志文件中

表空间的状态分为读写(READ_WRITE)和只读(READ_ONLY)两种。

(二)管理表空间的准则:

表空间的管理主要包括确定表空间的大小、安排表空间,创建、修改、删除表空间,选择修改表空间的区、段管理方式,设置表空间的状态等

要确定表空间的大小需要了解1.每行大约有多少字节,2.该表最初或至少要包含多少行,3.每个时间段该表中的行的增长情况,4.在该表上进行的操作的类型,5.哪种操作类型比较多

(三)创建表空间创建不同类型的表空间:

1.创建永久表空间:

CREATE TABLESPACE MYTBS01

DATAFILE 'E:\AAA.DBF' SIZE 2M

AUTOALLOCATE; ----自动分配区的大小

 

CREATE TABLESPACE MYTBS01

DATAFILE 'E:\AAA.DBF' SIZE 2M

UNIFORM SIZE 128K; ----手动分配区的大小

 

CREATE TABLESPACE MYTBS01

DATAFILE 'E:\AAA.DBF' SIZE 1M AUTOEXTEND ON NEXT 2M MAXSIZE 11M;---可以在数据文件子句中指定文件的扩展方式

 

CREATE TABLESPACE MYTBS01

DATAFILE 'E:\AAA,DBF' SIZE 3M REUSE

UNIFORM

SEGMENT SPACE MANAGEMENT AUTO;---使用SEGMENT SPACEMANAGEMENT指定AUTO,如不使用就是MANUAL段管理方式

 

CREATE TABLESPACE MYTBS01

DATAFILE 'E:\AAA,DBF' SIZE 3M REUSE

BLOCKSIZE 8K                ----指定标准的ORACLE块大小的表空间

SEGMENT SPACE MANAGEMENT AUTO;

2.创建大文件表空间:

CREATE TABLESPACE MYTBSBIG01

DATAFIEL 'E:\AAA.DBF' SIZE 2M

SEGMENT SPACE MANAGEMENT AUTO;

创建大文件表空间可以指定区分配方式但不能将段管理方式指定为MANUAL方式

3.创建临时表空间:

如果指定了TEMPORARY选项则创建的就是临时表空间,即ORACLE会用这种表空间来创建临时段,以便排序操作时使用

CREATE SMALLFILE TEMPORARY TABLESPACE MYTMPTBS01

TEMPFILE 'E:\AAA.DBF' SIZE 4M

UNIFORM SIZE 64K;  ----创建临时表空间时区分配方式不能指定为AUTOALLOCATE方式

4.创建撤销表空间:

CREATE UNDO TABLESPACE MYUNDO

DATAFILE 'E:\AAA.DBF' SIZE 4M

AUTOALLOCATE;   ----创建撤销表空间不能使用UNIFORM指定统一的区大小

如果要使用UNDO表空间的管理功能就需要在初始化参数文件中设置如下参数:

*.UNDO_MANAGEMENT='AUTO'  *.UNDO_TABLESPACE='UNDOTBS1'

其中UNDO_MANAGEMENT参数必须设置成AUTO否则将使用回退表空间;UNDO_TABLESPACE参数用于指定要使用哪个UNDO表空间

可以使用如下语句修改初始化参数文件,将当前使用的UNDO表空间切换到另一个UNDO表空间

ALTER SYSTEM SET UNDO_TABLESPACE='NEW_UNDO_TABLESPACE'SCOPE=SPFILE;

正在使用的UNDO表空间是不能被删除的,只有在没有未提交的事务时才能将其删除,可以使用V$TRANSACTION视图检查其中是否还有未提交的事务。

(四)修改表空间:

通常扩展表空间的方法有添加数据文件、改变数据文件的大小、允许数据文件自动扩展三种方法

1.添加数据文件:

ALTER TABLESPACE MYTBS01 ADD DATAFILE 'E:\BBB.DBF' SIZE 3M;

ALTER TABLESPACE MYTBS01 ADD TEMPFILE 'E:\BBB.DBF' SIZE 3M;

2.改变数据文件大小:

ALTER DATABASE DATAFILE 'E:\AAA.DBF' RESIZE 4M;

3.允许数据文件自动扩展:

ALTER DATABASE DATAFILE 'E:\BBB.DBF' AUTOEXTEND ON NEXT 1M MAXSIZE20M;

4.使表空间脱机:

ALTER TABLESPACE MYTBS01 OFFLINE;

当表空间处于脱机状态就不能访问该表空间了,SYSTEM\SYSAUX\TEMP\UNDOTBS1表空间不能被脱机

5.使表空间联机:

ALTER TABLESPACE NYTBS01 ONLINE;

6.使表空间只读:

ALTER TABLESPACE MYTBS01 READ ONLY;

7.使表空间可读写:

ALTER TABLESPACE MYTBS01 READ WRITE;

8.修改表空间的备份模式:

首先执行ALTER TABLESPACE TABLESPACE_NAME BEGINBACKUP语句将表空间TABLESPACE_NAME设置成备份模式,类似于系统给需要备份的表空间加锁,防止在备份的过程中用户对此表空间进行操作

最后执行ALTER TABLESPACE TABLESPACE_NAME ENDBACKUP语句将表空间TABLESPACE_NAME设置成备份结束,类似于系统给正在备份的表空间解锁,以便用户对此表空间进行操作

9.修改表空间名称:

ALTER TABLESPACE MYTBS01 RENAME TO MYTBS01_NEW;

当表空间处于脱机状态时不能修改表空间名称

10.设置数据库默认表空间:

ALTER DATABASE DEFAULT TABLESPACE MYTBS01;

11.设置数据库默认临时表空间:

ALTER DATABSE DEFAULT TTMPORARY TABLESPACE MYTMP01;

12.查询数据库的默认表空间:

SELECT USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROMDBA_USERS;

13.删除表空间:

DROP TABLESPACE MYTBS01;

如果要删除一个非空的表空间就要使用INCLUDING CONTENTS选项

DROP TABLESPACE MYTBS07 INCLUDING CONTENTS;

14.查询表空间的基本信息查询视图DBA_TABLESPACES

15.查询表空间中数据文件的信息可以查询视图DBA_DATA_FILES

16.要统计数据库中每个表空间的空闲盘区的信息可以查询DBA_FREE_SPACE视图

17.查询表空间组的信息可以查询DBA_TABLESPACE_GROUPS视图

18.查询临时表空间的临时文件信息可以查询DBA_TEMP_FILES视图

0 0
原创粉丝点击