关于Oracle数据库表空间的整理语句

1. 查看所有表空间大小

 

SQL> selecttablespace_name,sum(bytes)/1024/1024 from dba_data_files

 2  group by tablespace_name;

 

2. 已经使用的表空间大小

SQL> selecttablespace_name,sum(bytes)/1024/1024 from dba_free_space

 2  group by tablespace_name;

 

3. 所以使用空间可以这样计算

 

select a.tablespace_name,total,free,total-freeused from

( selecttablespace_name,sum(bytes)/1024/1024 total from dba_data_files

  group by tablespace_name) a,

( selecttablespace_name,sum(bytes)/1024/1024 free from dba_free_space

  group by tablespace_name) b

wherea.tablespace_name=b.tablespace_name;

 

 

4. 下面这条语句查看所有segment的大小。

SelectSegment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

 

5. 还有在命令行情况下如何将结果放到一个文件里。

SQL> spool out.txt

SQL> select * from v$database;

SQL> spool off

 

 

查看临时表空间的使用率

select *
  from (Selecta.tablespace_name,
               to_char(a.bytes /
1024 / 1024 ) total_bytes,
               to_char(b.bytes /
1024 / 1024) free_bytes,
               to_char(a.bytes /
1024 / 1024 - b.bytes / 1024 / 1024) use_bytes,
               to_char((
1 - b.bytes /a.bytes) * 100) || '%' use
          from
(selecttablespace_name, sum(bytes) bytes
                  fromdba_data_files
                 group bytablespace_name) a,
               (selecttablespace_name, sum(bytes) bytes
                  fromdba_free_space
                 group by tablespace_name) b
         where a.tablespace_name =b.tablespace_name
        union all
        select
c.tablespace_name,
               to_char(c.bytes /
1024 / 1024) total_bytes,
               to_char((c.bytes -d.bytes_used) /
1024 / 1024) free_bytes,
               to_char(d.bytes_used /
1024 / 1024) use_bytes,
               to_char(d.bytes_used *
100 / c.bytes, '99.99') || '%' use
          from
(selecttablespace_name, sum(bytes) bytes
                  fromdba_temp_files
                 group by tablespace_name) c,
               (selecttablespace_name, sum(bytes_cached) bytes_used
                  fromv$temp_extent_pool
                 group bytablespace_name) d
         where c.tablespace_name =d.tablespace_name)

 

 

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB"表空间大小(M)",
D.TOT_GROOTTE_MB- F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB- F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
'990.99')"使用比",
F.TOTAL_BYTES"空闲空间(M)",
F.MAX_BYTES"最大块(M)"
FROM(SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES)/ (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES)/ (1024 * 1024), 2) MAX_BYTES
FROMSYS.DBA_FREE_SPACE
GROUPBY TABLESPACE_NAME) F,
(SELECTDD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES)/ (1024 * 1024), 2) TOT_GROOTTE_MB
FROMSYS.DBA_DATA_FILES DD
GROUPBY DD.TABLESPACE_NAME) D
WHERED.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDERBY 4 DESC

 

 

 

 

 

--查询表空间使用情况
SELECTUPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB"表空间小(M)",
D.TOT_GROOTTE_MB- F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB- F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES"空闲空间(M)",
F.MAX_BYTES"最块(M)"
FROM(SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES)/ (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES)/ (1024 * 1024), 2) MAX_BYTES
FROMSYS.DBA_FREE_SPACE
GROUPBY TABLESPACE_NAME) F,
(SELECTDD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROMSYS.DBA_DATA_FILES DD
GROUPBY DD.TABLESPACE_NAME) D
WHERED.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDERBY 1
--查询表空间的free space
selecttablespace_name,
count(*)as extends,
round(sum(bytes)/ 1024 / 1024, 2) as MB,
sum(blocks)as blocks
fromdba_free_space
groupby tablespace_name;
--查询表空间的总容量
selecttablespace_name, sum(bytes) / 1024 / 1024 as MB
fromdba_data_files
groupby tablespace_name;
--查询表空间使用率
selecttotal.tablespace_name,
round(total.MB,2) as Total_MB,
round(total.MB- free.MB, 2) as Used_MB,
round((1- free.MB / total.MB) * 100, 2) || '%' as Used_Pct
from(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
fromdba_free_space
groupby tablespace_name) free,
(selecttablespace_name, sum(bytes) / 1024 / 1024 as MB
fromdba_data_files
groupby tablespace_name) total
wherefree.tablespace_name = total.tablespace_name;

 

 

 

 

 

 

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
      
  D.TOT_GROOTTE_MB"表空间大小(M)",
         D.TOT_GROOTTE_MB- F.TOTAL_BYTES "已使用空间(M)",
         TO_CHAR(ROUND((D.TOT_GROOTTE_MB- F.TOTAL_BYTES) /
                         D.TOT_GROOTTE_MB* 100,
                        
  2),
                  
   '990.99') "使用比",
      
  F.TOTAL_BYTES"空闲空间(M)",
         F.MAX_BYTES"最大块(M)"   FROM (SELECTTABLESPACE_NAME,
                                                     ROUND(SUM(BYTES) /
                                                             (1024 * 1024),
                                                             
2) TOTAL_BYTES,
                                                    
  ROUND(MAX(BYTES)/
                                                             (
1024 * 1024),
                                                             
2) MAX_BYTES   FROM SYS.DBA_FREE_SPACE  GROUP BY TABLESPACE_NAME) F,
          (SELECTDD.TABLESPACE_NAME,
                      ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB   FROMSYS.DBA_DATA_FILES DD   GROUP BYDD.TABLESPACE_NAME) D   WHERE D.TABLESPACE_NAME =F.TABLESPACE_NAME   ORDER BY 4 DESC

 

 

 

/*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;  

 

/*2步:创建数据表空间  */

create tablespace user_data  

logging  

datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf' 

size 50m  

autoextend on  

next 50m maxsize 20480m  

extent management local;  

 

/*3步:创建用户并指定表空间  username为需要创建的用户名,password为需要的密码*/

create user username identified by password  

default tablespace user_data  

temporary tablespace user_temp;  

 

/*4步:给用户授予权限  */

grant connect,resource,dba to username;  

 

2.删除表空间和用户
            
可以先将其offline
            altertablespace xx offline;

            将磁盘上的数据文件一同删除
            droptablespace xxx including contents and datafiles;


            删除用户:
            dropuser xxx;

            如果用户的schema中有objects ,需要加cascade参数,即drop user xxxcascade;

 

3.导入导出数据
           
数据的导入: 

    1)将D:\daochu.dmp 中的数据导入 TEST数据库中。
              imp system/manager@TEST  file=d:\daochu.dmp
               
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
              
在后面加上 ignore=y 就可以了。
             
2d:\daochu.dmp中的表table1 导入
             impsystem/manager@TEST  file=d:\daochu.dmp  tables=(table1)

   

数据导出:
            1) 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp
              exp system/manager@TEST file=d:\daochu.dmp full=y
             (2)将数据库中system用户与sys用户的表导出
              expsystem/manager@TEST file=d:\daochu.dmp owner=(system,sys)
             (3)将数据库中的表table1 table2导出
              expsystem/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
             (4)将数据库中的表table1中的字段filed1"00"打头的数据导出
              expsystem/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" wherefiled1 like  '00%'\"
             注:    上面是常用的导出,对于压缩我不太在意,用winzipdmp文件可以很好的压缩。
                    不过在上面命令后面加上 compress=y  就可以了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值