oracle表空间的管理

来源:互联网 发布:网络电话卡app制作 编辑:程序博客网 时间:2024/06/07 07:22

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;

原创粉丝点击