表空间详细解析

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;

 

 


 

 

 

  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值