Oracle 数据字典查询

来源:互联网 发布:新手开淘宝店怎么才有生意 编辑:程序博客网 时间:2024/04/30 06:52

1,表空间大小查询

当前表空间大小
select tablespace_name, sum(bytes)/1024/1024/1024 GB from dba_data_files
group by tablespace_name order by 2 desc


已使用的表空间大小
select tablespace_name, sum(bytes)/1024/1024/1024 from dba_segments
group by tablespace_name order by 2 desc

未使用空间大小
select sum(bytes)/1024/1024/1024 from dba_free_spacewhere tablespace_name='BIDWDATA_TBS' 

 

2,表大小和行数查询

SELECT DBA_SEGMENTS.owner,SEGMENT_NAME,SEGMENT_TYPE,num_rows/100000000 亿行, SUM(BYTES) / 1024 / 1024/1024 GBYTESE 
  FROM DBA_SEGMENTS  ,dba_tables
 WHERE --SEGMENT_TYPE = 'TABLE'  and
 DBA_SEGMENTS.tablespace_name in ('BIDWDATA_TBS','DATA_TBLSPC','BIODSDATA_TBS')
 and SEGMENT_NAME like 'TF_DBD%'
 and SEGMENT_NAME not like '%$%'
 and
DBA_SEGMENTS.segment_name=dba_tables.table_name
 and dba_tables.owner in ('BI_DW','BI_ODS','BI_STAGE')
 and num_rows>0
 GROUP BY  DBA_SEGMENTS.owner,SEGMENT_NAME,SEGMENT_TYPE,num_rows
 order by 5 desc

 

3,获取对象DDL语句

包括表,表分区,索引,存储过程等

SELECT DBMS_METADATA.GET_DDL('TABLE', 'TF_DBD_SALE_HOSP_STRUC') FROM DUAL;

SELECT DBMS_METADATA.GET_DDL('INDEX', 'IDX_TF_DBD_SALE_HOSP_STRUC_ADJ') FROM DUAL;

 

4,索引查询

select * from DBA_PART_INDEXES s where s.table_name='TF_DBD_SALE_HOSP_STRUC' --分区索引(global/local)

select * from Dba_ind_partitions i where i.index_owner='OWBI_DW' and i.index_name like '%SALE_HOSP%'  --每个分区索引的分区级统计信息
select * from Dba_Indexes where table_name='TF_DBD_SALE_HOSP_STRUC' --所有索引

 


显示分区表信息
  显示数据库所有分区表的信息:DBA_PART_TABLES
  显示当前用户可访问的所有分区表信息:ALL_PART_TABLES
  显示当前用户所有分区表的信息:USER_PART_TABLES
  显示表分区信息 显示数据库所有分区表的详细分区信息:DBA_TAB_PARTITIONS
  显示当前用户可访问的所有分区表的详细分区信息:ALL_TAB_PARTITIONS
  显示当前用户所有分区表的详细分区信息:USER_TAB_PARTITIONS
  显示子分区信息 显示数据库所有组合分区表的子分区信息:DBA_TAB_SUBPARTITIONS
  显示当前用户可访问的所有组合分区表的子分区信息:ALL_TAB_SUBPARTITIONS
  显示当前用户所有组合分区表的子分区信息:USER_TAB_SUBPARTITIONS
  显示分区列 显示数据库所有分区表的分区列信息:DBA_PART_KEY_COLUMNS
  显示当前用户可访问的所有分区表的分区列信息:ALL_PART_KEY_COLUMNS
  显示当前用户所有分区表的分区列信息:USER_PART_KEY_COLUMNS
  显示子分区列 显示数据库所有分区表的子分区列信息:DBA_SUBPART_KEY_COLUMNS
  显示当前用户可访问的所有分区表的子分区列信息:ALL_SUBPART_KEY_COLUMNS
  显示当前用户所有分区表的子分区列信息:USER_SUBPART_KEY_COLUMNS


5.临时表使用情况监控

select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; 
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;

select * from v$TEMP_SPACE_HEADER
--select * from v$tempstat
select * from v$tempfile
 
--oracle 查看表空间使用率(包括临时表)
select * from ( 
Select a.tablespace_name, 
to_char(a.bytes/1024/1024,'99,999.999') total_bytes, 
to_char(b.bytes/1024/1024,'99,999.999') free_bytes, 
to_char(a.bytes/1024/1024 - b.bytes/1024/1024,'99,999.999') use_bytes, 
to_char((1 - b.bytes/a.bytes)*100,'99.99') || '%' use 
from (select tablespace_name, 
sum(bytes) bytes 
from dba_data_files 
group by tablespace_name) a, 
(select tablespace_name, 
sum(bytes) bytes 
from dba_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,'99,999.999') total_bytes, 
to_char( (c.bytes-d.bytes_used)/1024/1024,'99,999.999') free_bytes, 
to_char(d.bytes_used/1024/1024,'99,999.999') use_bytes, 
to_char(d.bytes_used*100/c.bytes,'99.99') || '%' use 
from 
(select tablespace_name,sum(bytes) bytes 
from dba_temp_files group by tablespace_name) c, 
(select tablespace_name,sum(bytes_cached) bytes_used 
from v$temp_extent_pool group by tablespace_name) d 
where c.tablespace_name = d.tablespace_name 
)


 

 

 

 


0 0