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每一块。