oracle表空间简介:
Oracle数据库是由若干个表空间(tablespace)构成的。任何数据库对象在存储时都必须存储在某个表空间中。表空间对应于若干个数据文件,即表空间是由一个或多个数据文件构成的,一个数据文件只可以属于一个表空间。表空间相当于操作系统中的文件夹,这是Oracle数据库逻辑结构与物理文件之间的一个映射。所以数据库的存储空间在物理上表现为数据文件,在逻辑上表现为表空间。每个数据库至少有一个表空间,表空间的大小等于所有从属于它的数据文件大小的总和。
一 查看表空间相关信息
字典表或字典视图 | 说 明 |
V$TABLESPACE | 控制文件中保存的所有表空间的名称和数量 |
DBA_TABLESPACES | 所有表空间的描述信息 |
USER_TABLESPACES | 所有用户可访问表空间的描述信息 |
DBA_TABLESPACE_GROUPS | 所有表空间组及其所属的表空间信息 |
DBA_SEGMENTS | 所有表空间中的区间信息 |
USER_SEGMENTS | 所有用户表空间中的区间信息 |
DBA_FREE_SPACE | 所有表空间中的空闲区间信息 |
USER_FREE_SPACE | 所有用户表空间中的空闲区间信息 |
V$DATAFILE | 所有数据文件信息 |
V$TEMPFILE | 所有临时文件信息 |
DBA_DATA_FILES | 显示所有属于表空间的数据文件信息 |
DBA_TEMP_FILES | 显示所有属于临时表空间的临时文件信息 |
----查看表空间对应的名称及大小
select dtb.tablespace_name,dta.file_name,dta.bytes/(1024*1024) 大小MB
from DBA_TABLESPACES dtb
inner join dba_data_files dta
on dtb.tablespace_name=dta.tablespace_name
;
----查看表空间当前的使用情况
select b.tablespace_name 表空间,b.file_name 物理文件名
,b.bytes/1024/1024 大小M,(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用Mb
,substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name;
二 创建表空间
语法:
create [bigfile|temporary|undo] tablespace 表空间名
tempfile | datafile <数据文件名及存储路径> size <n K | M> [RESUSE]
[autoextend on[next <n K | M> maxsize unlimited | <n K | M>]
…
[extent management local[autoallocate | uniform[size <n K | M>]]]
[logging | nologging]
[online | offline]
示例:
[本地管理表空间]
在CREATE TABLESPACE语句中使用EXTENT MANAGEMENT LOCAL子句,可以创建一个本地管理表空间,代码如下:
SQL> CREATE TABLESPACE OrclTBS01
DATAFILE 'C:\oracle\product\11.2.0\oradata\orcl\OrclTBS01.dbf' SIZE 50M
autoextend on next 5m maxsize 200m
extent management local;
表空间已创建。
[临时表空间]
【例】创建临时表空间tmptbs,代码如下:
SQL> CREATE TEMPORARY TABLESPACE tmptbs
TEMPFILE 'C:\oracle\product\11.2.0\oradata\orcl\tmptbs.dbf'
SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL;
表空间已创建。
三 设置和修改表空间的属性
1.重命名表空间
【例】将表空间OrclTBS02修改为OrclTBS03,可以使用下面的语句:
ALTER TABLESPACE OrclTBS02 RENAME TO OrclTBS03;
表空间已更改。
2.增加数据文件
【例】在ALTER TABLESPACE语句中使用ADD DATAFILE子句,可以在本地管理表空间中增加数据文件,代码如下:
ALTER TABLESPACE OrclTBS01
ADD DATAFILE 'C:\oracle\product\11.2.0\oradata\orcl\OrclTBS011.dbf' SIZE 10M;
表空间已更改。
四 表空间和用户相关的命令
1.创建用户时指定默认表空间
CREATE USER jack
IDENTIFIED BY test123
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
2. 修改用户表空间
ALTER USER user名 DEFAULT TABLESPACE tablespace名;
3. 查看当前用户默认表空间
select * from user_users;
五 删除表空间
如果某个用户及它默认的表空间不用了, 可以使用如下命令来完成删除。
步骤一: 删除user
drop user ×× cascade
说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。
步骤二: 删除tablespace ,包括里面的内容和数据
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;