表空间的相关操作

查看oracle所有的表空间的使用情况:
方法一、
select dbf.tablespace_name,dbf.totalspace "总量(M)",
dbf.totalblocks as 总块数,dfs.freespace "剩余总量(M)",
dfs.freeblocks "剩余块数",
(dfs.freespace / dbf.totalspace) * 100 "空闲比例"
from (select t.tablespace_name,
sum(t.bytes) / 1024 / 1024 totalspace,
sum(t.blocks) totalblocks
from dba_data_files t
group by t.tablespace_name) dbf,
(select tt.tablespace_name,
sum(tt.bytes) / 1024 / 1024 freespace,
sum(tt.blocks) freeblocks
from dba_free_space tt
group by tt.tablespace_name) dfs
where trim(dbf.tablespace_name) = trim(dfs.tablespace_name);
方法二、
SELECT Total.name "Tablespace Name",
Free_space, (total_space-Free_space) Used_space, total_space
FROM
(select tablespace_name, sum(bytes/1024/1024) Free_Space
from sys.dba_free_space
group by tablespace_name
) Free,
(select b.name, sum(bytes/1024/1024) TOTAL_SPACE
from sys.v_$datafile a, sys.v_$tablespace B
where a.ts# = b.ts#
group by b.name
) Total
WHERE Free.Tablespace_name = Total.name
查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;

创建表空间:
1、绝对路径:
--创建临时表空间
create temporary tablespace user_temp 
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'
size 50m 
autoextend on 
next 50m maxsize 20480m 
extent management local; 
--创建数据表空间 
create tablespace test_data 
logging 
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'
size 50m 
autoextend on 
next 50m maxsize 20480m 
extent management local; 
--创建用户并指定表空间 
create user username identified by password 
default tablespace user_data 
temporary tablespace user_temp; 
--给用户授予权限
grant connect,resource,dba to username;

2、相对路径:
create tablespace test 
datafile '/oradata/oradata/oradb/test01.dbf' size 8M 
autoextend on 
next 5M 
maxsize 10M; 
create tablespace sales 
datafile '/oradata/oradata/oradb/sales01.dbf' size 800M 
autoextend on 
next 50M 
maxsize unlimited 
--maxsize unlimited 是大小不受限制 
create tablespace sales 
datafile '/oradata/oradata/oradb/sales01.dbf' size 800M
autoextend on
next 50M 
maxsize 1000M 
extent management local uniform; 
--unform表示区的大小相同,默认为1M 
create tablespace sales 
datafile '/oradata/oradata/oradb/sales01.dbf' size 800M 
autoextend on 
next 50M 
maxsize 1000M 
extent management local uniform size 500K; 
--unform size 500K表示区的大小相同,为500K 
create tablespace sales 
datafile '/oradata/oradata/oradb/sales01.dbf' size 800M 
autoextend on 
next 50M 
maxsize 1000M 
extent management local autoallocate; 
--autoallocate表示区的大小由随表的大小自动动态改变,大表使用大区小表使用小区 
create tablespace sales 
datafile '/oradata/oradata/oradb/sales01.dbf' size 800M 
autoextend on 
next 50M 
maxsize 1000M 
temporary; 
--temporary创建字典管理临时表空间 
create temporary tablespace sales 
tempfile '/oradata/oradata/oradb/sales01.dbf' size 800M 
autoextend on 
next 50M 
maxsize 1000M 
--创建本地管理临时表空间,如果是临时表空间,所有语句中的datafile都换为tempfile
更改自动扩展属性:
1、取消自读扩容 
alter database datafile 
  '/oradata/oradata/oradb/01.dbf'
  autoextend off;
2、修改成自增长,扩大了最大容量
alter database datafile '/app/oracle/oradata/orcl/FESCO.dbf' autoextend on next 5M maxsize 500M;
改变表空间数据库文件大小
alter database datafile '/app/oracle/oradata/orcl/FESCO.dbf' resize 800M;
删除表空间:
drop tablespace tbp_name including contents and datafiles

查看表空间属于那个用户或者用户拥有那些表空间:
select tablespace_name, owner,sum(bytes) from dba_segments   group by tablespace_name, owner order by owner;

查找用户拥有的临时表空间:
select username,temporary_tablespace from user_users where username='name(大写)';

猜你喜欢

转载自jadethao.iteye.com/blog/1562825
今日推荐