oracle中表空间详解

来源:互联网 发布:超级基因优化液无弹窗 编辑:程序博客网 时间:2024/06/02 13:01

oracle与其他数据库不同的地方就是表空间设计。表空间可以将oracle数据库划分为多个逻辑区域,这有点像MySQL中的create 

database的感觉。在一个oracle数据库中能够有一个或多个表空间,而一个表空间对应一个或多个物理的数据库文件。表空间是

oracle数据库恢复的最小单位,容纳这许多数据库实体,如表,视图,索引,聚簇,回退段和临时段等。


每一个oracle数据库用户都会对应一个默认的表空间,下面我们就对表空间的一些操作进行详解。
1.创建一个表空间("//"后面表示备注):

create tablespace 表空间名  
datafile '路径(要先建好路径)\***.dbf' size   //*M  
tempfile ' 路径\***.dbf ' size                        //可选, *M  
autoextend on                                            //可选,--自动增长  
next size                                                    //可选,size表示每次自动扩展大小,单位(M)
maxsize size;  


例如创建一个名为Jerry,可扩展的,每次扩展50M的表空间:

create tablespace jerry datafile 'C:\jerrydata.dbf' size 50M autoextend on next 50M;


2.在名为space_name的表空间下建立表格table_name

create table table_name(属性值) tablespace space_name;

3.查看表空间下的表格:(注意表空间名要大写,不然找不到)

select table_name,tablespace_name from dba_tables where tablespace_name='表空间';

4.查看oracle中拥有的表空间

select tablespace_name from dba_tablespaces;

5.查看某个特定用户的默认表空间

select username,default_tablespace from dba_users where username='用户名';//用户名大写

6.为用户更改默认表空间

alter user username default tablespace 表空间;

7.oracle数据库中一个用户只能有一个默认表空间,其实表空间就相当于MySQL中的数据库一样。

8.oracle数据库中区分大小写的,当我们用单引号来起一些名字时,会自动转为大写,比如 username='liuwei'

就会转为LIUWEI,tablespace=jq110就会自动转为JQ110;也可以实现小写的,只是要用双引号框起来,比如username="liuwei",

这样就是小写的了。


9.查看表空间大小:

select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name;

10.查看空余的表空间大小:

select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

11.查看表空间是否自动扩展:

select file_id,file_name,tablespace_name,autoextensible,increment_by from dba_data_files order by file_id desc;

select file_id,file_name,tablespace_name,autoextensible,increment_by from dba_data_files where 

tablespace_name='spacename';


12.查看Oracle表空间大小--已经使用的百分比

select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",               

b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used" from

(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,

(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b

where a.tablespace_name=b.tablespace_name order by ((a.bytes-b.bytes)/a.bytes) desc;


13.查看表空间物理文件的名称和大小:

SELECT tablespace_name,file_id,file_name,round(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name;


14.修改表空间为自动扩展,并且每一次扩展500兆(这里以HAIDING.ORA数据库中的jq110表空间为例,修改表空间实质上是对其所

在的数据库进行修改操作)

alter database datafile 'C:/HAIDING.ora' autoextend on next 500M;

15.表空间中increment_by字段其实是表示每一次扩展多大的意思,单位是数据库中默认的块的大小,一般是8k每一块。


0 0
原创粉丝点击