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;