查看表空间使用情况

---------------
SELECT a.tablespace_name "表空间名",
       total "表空间大小",
       free "表空间剩余大小",
       (total - free) "表空间使用大小",
       total / (1024 * 1024 * 1024) "表空间大小(G)",
       free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
       (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
       round((total - free) / total, 4) * 100 "使用率 %"
  FROM (SELECT tablespace_name, SUM(bytes) free
          FROM dba_free_space
         GROUP BY tablespace_name) a,
       (SELECT tablespace_name, SUM(bytes) total
          FROM dba_data_files
         GROUP BY tablespace_name) b
 WHERE a.tablespace_name = b.tablespace_name   order by a.tablespace_name

 --查询默认临时表空间
 select * from database_properties where property_name = 'DEFAULT_TEMP_TABLESPACE'
 select t.tablespace_name,t.file_name,t.bytes/1024/1024 file_size,t.autoextensible from dba_data_files t;
 select t.tablespace_name,t.file_name,t.bytes/1024/1024 file_size,t.autoextensible from dba_temp_files t;
 --扩展临时表空间:
 --方法一
 alter database tempfile '/oracle/oratest/temp2.dbf' resize 1G;
 alter database DATAFILE '/u01/app/oracle/oradata/amldb/users01.dbf' resize 2G;
 --方法二
 alter database tempfile '/oracle/oratest/temp2.dbf' autoextend on next 5m maxsize unlimited;
--追加物理文件
非临时表空间:ALTER TABLESPACE tsodsdat add DATAFILE '/u01/app/oracle/oradata/amldb/tsodsdat_02.dbf' SIZE 4096M;
临时表空间: ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/ora_data/temp02.dbf' size 512M reuse  autoextend on next 640K maxsize unlimited;
删除物理文件:ALTER TABLESPACE temp drop TEMPFILE '/oradata/ora_data/temp02.dbf';
--删除表空间
drop TABLESPACE test_space including contents and datafiles;
--查询表空间对应表使用情况  TSIND05 TSIND04 TSIND03 TSDAT03 TSDAT04
select * from dba_segments t where t.tablespace_name like '%TSDAT04%' and t.segment_type = 'TABLE'
select t.owner,t.segment_name,bytes/1024/1024 a from dba_segments t -- 11111 9211
where t.tablespace_name like '%TSDAT02%' and t.segment_type = 'TABLE' order by a desc
select t.owner,t.segment_name,bytes/1024/1024 a from dba_segments t   --9684 8027;
where t.tablespace_name like '%TSIND02%' and t.segment_type = 'INDEX' order by a desc
============================================================================================
--创建表空间:
--1、自增
CREATE TABLESPACE tsdat01 LOGGING DATAFILE '/u01/app/oracle/oradata/amldb/tsdat01.dbf' SIZE 5119M 
AUTOEXTEND ON NEXT 40M MAXSIZE UNLIMITED DEFAULT STORAGE (MAXEXTENTS UNLIMITED PCTINCREASE 5);
--2、非自增
CREATE SMALLFILE TABLESPACE TSDAT01 LOGGING DATAFILE  '/data/oradata/amldb/TSDAT01.dbf' SIZE 6G EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO ;

--收缩表空间
--1、查询file_id
select d.file_name,d.file_id,d.bytes/1024/1024 as d_byte from dba_data_files d;
--2、查询file_id对应的表空间使用率
select d.file_name,d.file_id,d.bytes/1024/1024 as d_byte,sum(f.bytes/1024/1024) as free_byte
from dba_data_files d,dba_free_space f
where d.file_id=f.file_id and d.file_id=5
group by d.file_name,d.file_id,d.bytes/1024/1024;
--移动表
SQL>select DISTINCT 'alter table '|| segment_name || ' move tablespace users;' from dba_extents where segment_type='TABLE' and file_id=5;
--移动索引
SQL>select DISTINCT 'alter index '|| segment_name || ' rebuild tablespace users;' from dba_extents where segment_type='INDEX' and file_id=5;
--移动分区表
SQL>select DISTINCT 'alter table '|| segment_name || ' move partition '|| partition_name || ' tablespace tsind02;' 
from dba_extents where segment_type='TABLE PARTITION' and file_id=4;
--移动分区索引
SQL>select DISTINCT 'alter index '|| segment_name || ' rebuild partition '|| partition_name || ' tablespace tsind02;' 
from dba_extents where segment_type='INDEX PARTITION' and file_id=4;
=====================================================================================
 select * from v$tablespace
 select * from sys.dba_tablespaces;
1、查看表空间的名称及大小
  SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
    FROM dba_tablespaces t, dba_data_files d
   WHERE t.tablespace_name = d.tablespace_name
   GROUP BY t.tablespace_name;
--2、查看表空间物理文件的名称及大小
SELECT tablespace_name,
       file_id,
       file_name,
       round(bytes / (1024 * 1024), 0) total_space
  FROM dba_data_files
 ORDER BY tablespace_name;
--3、查看回滚段名称及大小
SELECT segment_name,
       tablespace_name,
       r.status,
       (initial_extent / 1024) initialextent,
       (next_extent / 1024) nextextent,
       max_extents,
       v.curext curextent
  FROM dba_rollback_segs r, v$rollstat v
 WHERE r.segment_id = v.usn(+)
 ORDER BY segment_name;
--4、查看控制文件
SELECT NAME FROM v$controlfile;
--5、查看日志文件
SELECT MEMBER FROM v$logfile;
--6、查看表空间的使用情况
SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name
  FROM dba_free_space
 GROUP BY tablespace_name;
SELECT a.tablespace_name,
       a.bytes total,
       b.bytes used,
       c.bytes free,
       (b.bytes * 100) / a.bytes "% USED ",
       (c.bytes * 100) / a.bytes "% FREE "
  FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c
 WHERE a.tablespace_name = b.tablespace_name
   AND a.tablespace_name = c.tablespace_name;
--7、查看数据库库对象
SELECT owner, object_type, status, COUNT(*) count#
  FROM all_objects
 GROUP BY owner, object_type, status;
--8、查看数据库的版本 
SELECT version
  FROM product_component_version
 WHERE substr(product, 1, 6) = 'Oracle';
--9、查看数据库的创建日期和归档方式
SELECT created, log_mode, log_mode FROM v$database;

--查看当前用户的缺省表空间
SQL >  select username, default_tablespace from user_users;
  查看当前用户的角色

  SQL >
  select * from user_role_privs;

  查看当前用户的系统权限和表级权限

  SQL >
  select * from user_sys_privs;

  SQL >
  select * from user_tab_privs;

  查看用户下所有的表

  SQL >
  select * from user_tables;

  1、用户

  查看当前用户的缺省表空间

  SQL >
  select username, default_tablespace from user_users;

  查看当前用户的角色

  SQL >
  select * from user_role_privs;

  查看当前用户的系统权限和表级权限

  SQL >
  select * from user_sys_privs;

  SQL >
  select * from user_tab_privs;

  显示当前会话所具有的权限

  SQL >
  select * from session_privs;

  显示指定用户所具有的系统权限

  SQL >
  select * from dba_sys_privs where grantee = 'GAME';

  2、表

  查看用户下所有的表

  SQL >
  select * from user_tables;

  查看名称包含log字符的表

  SQL >
  select object_name, object_id
    from user_objects

           where instr(object_name, 'LOG') > 0;

  查看某表的创建时间

  SQL >
  select object_name, created
    from user_objects
   where object_name = upper('&table_name');

  查看某表的大小

  SQL >
  select sum(bytes) / (1024 * 1024) as "size(M)"
    from user_segments

           where segment_name = upper('&table_name');

  查看放在ORACLE的内存区里的表

  SQL >
  select table_name, cache from user_tables where instr(cache, 'Y') > 0;

  3、索引

  查看索引个数和类别

  SQL >
  select index_name, index_type, table_name
    from user_indexes
   order by table_name;

  查看索引被索引的字段

  SQL >
  select * from user_ind_columns where index_name = upper('&index_name');

  查看索引的大小

  SQL >
  select sum(bytes) / (1024 * 1024) as "size(M)"
    from user_segments

           where segment_name = upper('&index_name');

  4、序列号

  查看序列号,last_number是当前值

  SQL >
  select * from user_sequences;

  5、视图

  查看视图的名称

  SQL >
  select view_name from user_views;

  查看创建视图的select语句

  SQL > set view_name, text_length from user_views;

  SQL > set long 2000;
说明:可以根据视图的text_length值设定set long 的大小

  SQL >
  select text from user_views where view_name = upper('&view_name');

  6、同义词

  查看同义词的名称

  SQL >
  select * from user_synonyms;

  7、约束条件

  查看某表的约束条件

  SQL >
  select constraint_name,
         constraint_type,
         search_condition,
         r_constraint_name

           from user_constraints
   where table_name = upper('&table_name');

  SQL >
  select c.constraint_name,
         c.constraint_type,
         cc.column_name

           from user_constraints c,
         user_cons_columns cc

           where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')

           and c.owner = cc.owner and c.constraint_name = cc.constraint_name

           order by cc.position;

  8、存储函数和过程

  查看函数和过程的状态

  SQL >
  select object_name, status
    from user_objects
   where object_type = 'FUNCTION';

  SQL >
  select object_name, status
    from user_objects
   where object_type = 'PROCEDURE';

  查看函数和过程的源代码

  SQL >
  select text
    from all_source
   where owner = user
     and name = upper('&plsql_name');

1. 查看所有表空间大小SQL >
  select tablespace_name, sum(bytes) / 1024 / 1024
    from dba_data_files 2
   group by tablespace_name;
2. 已经使用的表空间大小SQL >
  select tablespace_name, sum(bytes) / 1024 / 1024
    from dba_free_space 2
   group by tablespace_name;
3. 所以使用空间可以这样计算
select a.tablespace_name, total, free, total - free used from(
  select tablespace_name, sum(bytes) / 1024 / 1024 total
    from dba_data_files
   group by tablespace_name) a, (select tablespace_name,
                                        sum(bytes) / 1024 / 1024 free
                                   from dba_free_space
                                  group by tablespace_name) b where a.tablespace_name = b.tablespace_name;
4. 下面这条语句查看所有segment的大小。Select Segment_Name, Sum(bytes) / 1024 / 1024 From User_Extents Group By Segment_Name

5. 还有在命令行情况下如何将结果放到一个文件里。SQL > spool out.txtSQL >
  select * from v$database;
SQL > spool off

查看默认临时表空间:select * from date

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值