ORACLE表空间创建及资源使用情况分析

1 查询某个用户下所有表占用空间

select segment_name, bytes/1024/1024/1024 from dba_segments where owner = user_name;
 查询表的内存

```sql
-- 单表查询
select sum(bytes)/(1024*1024*1024) as size_GB FROM USER_SEGMENTS WHERE SEGMENT_NAME = table_name;
-- 多表查询
select segment_name, round(sum(bytes)/(1024*1024*1024) ,4) as size_GB 
from user_segments 
where segment_type = 'TABLE'
and TABLESPACE_NAME = 表空间名称
group by segment_name
ORDER BY sum(bytes)/(1024*1024*1024)  DESC; 

-- 查法2: 说明(一个BLOCK大于2KB)
SELECT OWNER,
       TABLE_NAME, 
       SUM(BLOCKS * 2)/1024  AS SIZE_MB  
 FROM ALL_ALL_TABLES 
 WHERE OWNER IN ( 'ower1', 'ower2')
 GROUP BY OWNER, TABLE_NAME 
 ORDER BY TABLE_NAME DESC

2 查询表空间文件及表空间

-- 查询表空间
select * from dba_tablespace;
-- 查询表空间文件
select * from dba_data_files where tablespace = spaceName;  -- spaceName 自己指定

  -- 查询表中单条记录平均字节数 
   SELECT  '事件地区电量' AS TABLE_NAME , 
                   round(RES1.B/ RES2.CNT_N ,4)AS 单条记录平均字节数 
 FROM
  (
      SELECT sum(BYTES)  AS B FROM DBA_SEGMENTS WHERE SEGMENT_NAME='事件地区电量' AND OWNER='SYSTEM' 
    ) RES1,
          (
    SELECT COUNT(1)  AS CNT_N  FROM SYSTEM.事件地区电量
    ) RES2;

3 新增数据文件,并且允许数据文件自动增长

ALTER TABLESPACE spaceName ADD DATAFILE
'文件位置\文件名称.DBF' SIZE 50M
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

-- 备注:文件位置可根据select * from dba_data_files where tablespace = spaceName;  查看

4 创建表空间

create tablespace spaceName LOGGING 
DATAFile '文件位置\文件名称.DBF' size 20480M
AUTOEXTEND ON 500M MAXSIZE 30720M;

10 查询表空间的数据文件

-- 查看表数据文件情况    
     SELECT A.TABLESPACE_NAME AS 表空间,
                     A.FILE_NAME AS 物理文件名 ,
                     A.FILE_ID    AS 文件ID,
                     ROUND(A.BYTES / 1024 / 1024/ 1024,4)   文件大小G,
                     NVL(B.FREE_SPACE ,0) AS 未利用空间,
                     ROUND(1- NVL(B.FREE_SPACE ,0)/ROUND(A.BYTES / 1024 / 1024/ 1024,4) ,4) as 利用率
              
     FROM DBA_DATA_FILES A 
     LEFT JOIN 
     (
     SELECT FILE_ID , 
                    TABLESPACE_NAME   ,
                   ROUND(  SUM(BYTES/1024 / 1024/ 1024) ,4) AS FREE_SPACE
     FROM  DBA_FREE_SPACE 
     GROUP BY FILE_ID , 
                         TABLESPACE_NAME 
     ) B
     ON A.FILE_ID = B.FILE_ID;

-- 根据表名找到表空间
select * from all_all_tables where table_name= TABLE_NAME;

– 查询表空间文件数量

SELECT  TABLESPACE_NAME AS 表空间名称 , COUNT(1)  AS 数据文件数量 FROM dba_data_files GROUP BY TABLESPACE_NAME; 

–查询被锁的sql语句以及其他的信息

SELECT A.OWNER,
               A.OBJECT_NAME,
               A.OBJECT_ID,
               A.DATA_OBJECT_ID,
               A.OBJECT_TYPE,
               A.STATUS,
               A.NAMESPACE,
               V.SESSION_ID,
               V.ORACLE_USERNAME,
               V.OS_USER_NAME,
               V.PROCESS,
               V.LOCKED_MODE,
               S.SQL_ID,
               S.SQL_TEXT
FROM   ALL_OBJECTS A , V$LOCKED_OBJECT V , V$SESSION V2 , V$SQL S
WHERE V.OBJECT_ID = A.OBJECT_ID
AND V.SESSION_ID = V2.SID
AND S.SQL_ID = V2.SQL_ID;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值