Chapter 08—managing tablespace & data files

1、表空间

   •只能属于一个数据库

   •可以包含一个或多个数据文件

   •可以进一步划分成更细的逻辑单元

 

2、数据文件

   •属于一个表空间和一个数据库

 

3、系统表空间

   •随着数据库的创建而创建

   •包含数据字典

   •包含system undo段

 

4、表空间的类型

   permanent、undo、temporary

 

5、查看表空间信息:

SQL> select * from v$tablespace;

 

      TS# NAME                          INC

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

        3 CWMLITE                       YES

        4 DRSYS                         YES

        5 EXAMPLE                       YES

        6 INDX                          YES

        7 ODM                           YES

        0 SYSTEM                        YES

        8 TOOLS                         YES

        1 UNDOTBS1                      YES

        9 USERS                         YES

       10 XDB                           YES

        2 TEMP                          YES

 

      TS# NAME                          INC

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

       12 ASSM                          YES

       13 MSSM                          YES

 

13 rows selected.

 

SQL>

 

6、如何知道哪些表空间有哪些数据文件呢?(查看视图dba_data_files):

SQL> desc dba_data_files;

 Name                                     Null?   Type

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

 FILE_NAME                                         VARCHAR2(513)

 FILE_ID                                           NUMBER

 TABLESPACE_NAME                                   VARCHAR2(30)

 BYTES                                             NUMBER

 BLOCKS                                            NUMBER

 STATUS                                            VARCHAR2(9)

 RELATIVE_FNO                                      NUMBER

 AUTOEXTENSIBLE                                    VARCHAR2(3)

 MAXBYTES                                          NUMBER

 MAXBLOCKS                                         NUMBER

 INCREMENT_BY                                      NUMBER

 USER_BYTES                                        NUMBER

 USER_BLOCKS                                       NUMBER

 

SQL>

 

SQL> select file_name,tablespace_name from dba_data_files;

 

FILE_NAME                               TABLESPACE_NAME

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

/u01/oradata/denver/system01.dbf        SYSTEM

/u01/oradata/denver/undotbs01.dbf       UNDOTBS1

/u01/oradata/denver/cwmlite01.dbf       CWMLITE

/u01/oradata/denver/drsys01.dbf         DRSYS

/u01/oradata/denver/example01.dbf       EXAMPLE

/u01/oradata/denver/indx01.dbf          INDX

/u01/oradata/denver/odm01.dbf           ODM

/u01/oradata/denver/tools01.dbf         TOOLS

/u01/oradata/denver/users01.dbf         USERS

/u01/oradata/denver/xdb01.dbf           XDB

/u01/oradata/denver/assm_1.dbf          ASSM

 

FILE_NAME                               TABLESPACE_NAME

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

/u01/oradata/denver/mssm_1.dbf          MSSM

 

12 rows selected.

 

SQL>

 

7、表空间的空间管理

(1)、本地管理

   •free extent在表空间内被管理

   •位图被用来记录free extent

(2)、字典管理

   •free extent被数据字典管理

 

8、将系统表空间由字典管理移植到本地管理

   使用包DBMS_SPACE_ADMIN。

   TABLESPACE_MIGRATE_TO_LOCAL(‘SYSTEM’);

 

9、undo表空间

   用来存储undo段数据,不能存储其它内容。

   Extent是本地管理。

 

10、临时表空间

   存放sort操作结果,可以被多个用户共享。

   不能包含permanent对象。可以是本地管理或者字典管理。

 

11、缺省的临时表空间

   •不能被删除,除非有新的缺省的临时表空间可以使用

   •不能离线

   •不能改成permanent表空间

 

一个数据库可以有多个临时表空间,但是只有一个缺省的临时表空间。

一个数据库可以有多个undo表空间,但是任何时候只能有一个是活动状态的。

 

12、将表空间置为只读模式

   ALTER TABLESPACE userdata READ ONLY;

   执行这条语句后,oracle会产生一个检查点。虽然是只读的,但是可以在只读表空间中删除一些对象。

 

13、不可以离线的表空间

   System tablespace、tablespace with active undo segments、default temporary tablespace

 

14、移动表空间内的数据文件

(1)、使用alter tablespace命令(表空间要离线状态、目标文件必须存在)

(2)、使用alter database命令(数据库必须处于mounted状态、目标数据库必须存在)

 

15、创建一个数据文件:

 

SQL> create tablespace bb datafile

 2 '/u01/oradata/denver/bb01.dbf' size 20m;

 

Tablespace created.

 

SQL> 

 

临时表空间

SQL> select * from database_properties;

查看表空间的类型:

SQL> select tablespace_name,contents,extent_management from dba_tablespaces;

 

TABLESPACE_NAME               CONTENTS EXTENT_MAN

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

SYSTEM                        PERMANENT LOCAL

UNDOTBS1                      UNDO     LOCAL

TEMP                          TEMPORARY LOCAL

CWMLITE                       PERMANENT LOCAL

DRSYS                         PERMANENT LOCAL

EXAMPLE                       PERMANENT LOCAL

INDX                          PERMANENT LOCAL

ODM                           PERMANENT LOCAL

TOOLS                         PERMANENT LOCAL

USERS                         PERMANENT LOCAL

XDB                           PERMANENT LOCAL

 

TABLESPACE_NAME               CONTENTS EXTENT_MAN

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

ASSM                          PERMANENT LOCAL

MSSM                          PERMANENT LOCAL

BB                            PERMANENT LOCAL

 

14 rows selected.

 

SQL>

 

将表空间置为只读的:

alter tablespace bb read only

 

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

创建表空间:

SQL> create tablespace wenchun

 2 datafile '/u01/oradata/denver/wenchun1.dbf' size 20m

 3 extent management local uniform. size 128k;

 

Tablespace created.

 

SQL>

 

创建用户并授权:

SQL> create user dz identified by dz default tablespace wenchun;

 

SQL> grant connect,resource to dz;

 

使表空间离线、在线:

alter tablespace bb offline

 

alter tablespace bb online