Oracle表空间管理脚本

    技术2025-08-09  11

    首先申明:这是转帖的

     1:表空间大小    select tablespace_name,count(*),sum(blocks),sum(bytes)/1024/1024  from dba_data_files  group by tablespace_name;         2:表空间使用情况    select df.tablespace_name "表空间名",totalspace "总空间M",freespace "剩余空间M",round((1-freespace/totalspace)*100,2) "使用率%"  from   (select tablespace_name,round(sum(bytes)/1024/1024) totalspace  from dba_data_files  group by tablespace_name) df,  (select tablespace_name,round(sum(bytes)/1024/1024) freespace  from dba_free_space  group by tablespace_name) fs  where df.tablespace_name=fs.tablespace_name;         3:删除表空间  --select t.name,d.name from v$tablespace t,v$datafile d where t.name='DATA_HOST_A' and t.ts#=d.ts#;  --alter tablespace DATA_HOST_A offline;  --drop tablespace DATA_HOST_A including contents;      4:为这个表空间增加一个数据文件  --SQL> alter tablespace 表空间名 add datafile '/u1/oradata/userdata_002.ora' size 50m;  --Unix中  --SQL> alter tablespace 表空间名 add datafile 'c:/oradata/userdata_002.ora' size 50m;   --Windows NT中    5:重新调整数据文件的大小  --SQL> alter database datafile '/u1/oradata/userdata_001.ora' resize 50M;  --Unix中  --SQL> alter database datafile 'c:/oradata/userdata_002.ora' resize 50M;  --Windows NT中      6:查看数据库的大小,和空间使用情况     col tablespace format a20  select b.file_id  文件ID,    b.tablespace_name  表空间,    b.file_name     物理文件名,    b.bytes       总字节数,    (b.bytes-sum(nvl(a.bytes,0)))   已使用,    sum(nvl(a.bytes,0))        剩余,    sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比     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.file_id,b.bytes     order by b.tablespace_name    /    dba_free_space --表空间剩余空间状况    dba_data_files --数据文件空间占用情况 

    最新回复(0)