1.表空间概念
把oracle数据库看作一个实在房间,表空间可以看作这个房间的空间,是可以自由分配,在这空间里面可以堆放多个箱子(箱子可以看作数据库文件),箱子里面再装物件(物件看作表)。用户指定表空间也就是你希望把属于这个用户的表放在那个房间(表空间)里面。ORACLE数据库被划分成称作为表空间 的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
2、表空间的分类
(1)、永久表空间:是一个系统的空间,其中存放了数据字典(统计信息、表信息、索引信息、用户信息)
(2)、临时表空间:是一个必须存在的空间,是一个临时的表空间,当提交后(commit),数据就会从临时表空间清空,保存到永久表空间去
(3)、UNDO表空间(回退表空间):更新数据,commit时,发生错误,此时可以恢复,之前正确的数据就存在回退表空间中。
表空间相关操作的举例说明:
[root@orcal ~]# su - oracle
-bash-4.2$ sqlplus /nolog
SQL> conn sys/oracle as sysdba 用户登录
Connected.
创建表空间
SQL> create tablespace test_tablespace datafile 'test1file.dbf' size 10m; ---创建表空间
Tablespace created.
SQL> create temporary tablespace temtest1_tablespace tempfile 'tempfile1.dbf' size 10m; ---创建临时表空间
Tablespace created.
创建大文件表空间
SQL> create bigfile tablespace tablespace2 datafile 'fikename' size 19M;
Tablespace created.
查看所有的数据库文件的存放位置
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/XE/system.dbf
/u01/app/oracle/oradata/XE/sysaux.dbf
/u01/app/oracle/oradata/XE/undotbs1.dbf
/u01/app/oracle/oradata/XE/users.dbf
/u01/app/oracle/product/11.2.0/xe/dbs/test1file.dbf
查看表空间的方法
SQL> select file_name from dba_data_files where tablespace_name = 'test1_tablespace';
no rows selected
SQL> select file_name from dba_temp_files where tablespace_name = 'temtest1_tablespace';
no rows selected
查看表空间
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
2 UNDOTBS1 YES NO YES
1 SYSAUX YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
6 TEST_TABLESPACE YES NO YES
7 TEMTEST1_TABLESPACE NO NO YES
7 rows selected.
查看每个表空间有哪些数据文件:
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
ONLINE_STATUS VARCHAR2(7)
查看详细数据文件:
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
/u01/app/oracle/oradata/XE/users.dbf
USERS
/u01/app/oracle/oradata/XE/sysaux.dbf
SYSAUX
/u01/app/oracle/oradata/XE/undotbs1.dbf
UNDOTBS1
FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
/u01/app/oracle/oradata/XE/system.dbf
SYSTEM
/u01/app/oracle/product/11.2.0/xe/dbs/test1file.dbf
TEST_TABLESPACE
查看表空间的容量
SQL> select tablespace_name,sum(bytes) from dba_free_space group by tablespace_name;
TABLESPACE_NAME SUM(BYTES)
------------------------------ ----------
SYSAUX 34209792
UNDOTBS1 1638400
USERS 102170624
SYSTEM 7077888
TEST_TABLESPACE 9437184
查看某个用户的默认表空间
SQL> select default_tablespace,username from dba_users where username='username';
查看所有的表空间
SQL> select * from dba_tablespaces;
TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
------------------------------ ---------- -------------- ----------- -----------
MAX_EXTENTS MAX_SIZE PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING FOR
----------- ---------- ------------ ---------- --------- --------- --------- ---
EXTENT_MAN ALLOCATIO PLU SEGMEN DEF_TAB_ RETENTION BIG PREDICA ENC
---------- --------- --- ------ -------- ----------- --- ------- ---
COMPRESS_FOR
------------
SYSTEM 8192 65536 1
2147483645 2147483645 65536 ONLINE PERMANENT LOGGING NO
LOCAL SYSTEM NO MANUAL DISABLED NOT APPLY NO HOST NO
查看表空间数据文件的信息
SQL> select * from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- ---------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
ONLINE_
-------
/u01/app/oracle/oradata/XE/users.dbf
4 USERS 104857600 12800 AVAILABLE
4 YES 1.1811E+10 1441792 1280 103809024 12672
ONLINE
重命名表空间
格式:ALTER TABLESPACE oldname RENAME TO newname;
SQL> alter tablespace test_tablespace rename to test1_tablespace;
Tablespace altered.
设置表空间的读写状态
格式:ALTER TABLESPACE tablespace_name READ ONLY | WRITE;
SQL> alter tablespace test1_tablespace read only;
Tablespace altered.
查询临时表空间组
SQL> select * from dba_tablespace_groups;
设置临时表空间为默认表空间
SQL> alter database default temporary tablespace tablespace_name;
删除表空间
SQL> drop tablespace tablespace2 ;
创建临时表空间
SQL> create temporary tablespace tablespace_aa tempfile 'filename1' size 10M;
Tablespace created.
设置临时表空间为默认表空间
SQL> alter database default temporary tablespace tablespace_aa;
Database altered.
删除表空间
SQL> drop tablespace tablespace_name including contents and datafiles;