『管理调优』Oracle维护常用SQL语句整理一

I) 数据库对象相关内容

-----------------------------------------------------------------------
1、查看数据库的版本 

SELECT Version
  FROM Product_Component_Version
 WHERE Substr(Product, 1, 6) = 'Oracle';
-----------------------------------------------------------------------
2、查看数据库对象

SELECT Owner, Object_Type, Status, COUNT(*) Count#
  FROM All_Objects
 GROUP BY Owner, Object_Type, Status;
-----------------------------------------------------------------------
3、查看数据库的创建日期和归档方式

SELECT Created, Log_Mode, Log_Mode
  FROM V$database;
-----------------------------------------------------------------------
4、查看sga情况

SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC
-----------------------------------------------------------------------
5、查看回滚段名称及大小

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;
-----------------------------------------------------------------------
6、查看控制文件

select name from v$controlfile;
-----------------------------------------------------------------------
7、查看日志文件

select member from v$logfile;
-----------------------------------------------------------------------
8、查看catched object

SELECT Owner, NAME, Db_Link, Namespace, TYPE, Sharable_Mem, Loads,
       Executions, Locks, Pins, Kept
  FROM V$db_Object_Cache
-----------------------------------------------------------------------
9、查看V$SQLAREA

SELECT Sql_Text, Sharable_Mem, Persistent_Mem, Runtime_Mem, Sorts,
       Version_Count, Loaded_Versions, Open_Versions, Users_Opening,
       Executions, Users_Executing, Loads, First_Load_Time, Invalidations,
       Parse_Calls, Disk_Reads, Buffer_Gets, Rows_Processed
  FROM V$sqlarea
-----------------------------------------------------------------------
10、求表中定义的触发器
select table_name,index_type,index_name,uniqueness from user_indexes where table_name='&1';
select trigger_name from user_triggers where table_name='&1';
-----------------------------------------------------------------------
11、求未定义索引的表
select table_name from user_tables where table_name not in (select table_name from user_ind_columns);
-----------------------------------------------------------------------
12、执行常用的过程
exec print_sql('select count(*) from tab');
exec show_space2('table_name'); 
-----------------------------------------------------------------------
13、查看数据表的参数信息

SELECT Partition_Name, High_Value, High_Value_Length, Tablespace_Name,
       Pct_Free, Pct_Used, Ini_Trans, Max_Trans, Initial_Extent, Next_Extent,
       Min_Extent, Max_Extent, Pct_Increase, Freelists, Freelist_Groups,
       Logging, Buffer_Pool, Num_Rows, Blocks, Empty_Blocks, Avg_Space,
       Chain_Cnt, Avg_Row_Len, Sample_Size, Last_Analyzed
  FROM Dba_Tab_Partitions
--WHERE table_name = :tname AND table_owner = :towner
 ORDER BY Partition_Position
-----------------------------------------------------------------------
14、求出无效的对象

SELECT Owner, Object_Type, Object_Name
  FROM Dba_Objects
 WHERE Status = 'INVALID';
 
SELECT Constraint_Name, Table_Name
  FROM Dba_Constraints
 WHERE Status = 'INVALID';

SELECT 'alter procedure ' || Object_Name || ' compile;' AS Novalidate_Obj
  FROM Dba_Objects
 WHERE Status = 'INVALID'
   AND Owner = '&'
   AND Object_Type IN ('PACKAGE', 'PACKAGE BODY');
-----------------------------------------------------------------------
15、求表的索引信息

SELECT Ui.Table_Name, Ui.Index_Name
  FROM User_Indexes Ui, User_Ind_Columns Uic
 WHERE Ui.Table_Name = Uic.Table_Name
   AND Ui.Index_Name = Uic.Index_Name
   AND Ui.Table_Name LIKE '&table_name%'
   AND Uic.Column_Name = '&column_name';
-----------------------------------------------------------------------
16、显示表的外键信息

col search_condition format a54

SELECT Table_Name, Constraint_Name
  FROM User_Constraints
 WHERE Constraint_Type = 'R'
   AND Constraint_Name IN (SELECT Constraint_Name
                             FROM User_Cons_Columns
                            WHERE Column_Name = '&1');
                           
SELECT Rpad(Child.Table_Name, 25, ' ') Child_Tablename,
       Rpad(Cp.Column_Name, 17, ' ') Referring_Column,
       Rpad(PARENT.Table_Name, 25, ' ') Parent_Tablename,
       Rpad(Pc.Column_Name, 15, ' ') Referred_Column,
       Rpad(Child.Constraint_Name, 25, ' ') Constraint_Name
  FROM User_Constraints Child, User_Constraints PARENT, User_Cons_Columns Cp,
       User_Cons_Columns Pc
 WHERE Child.Constraint_Type = 'R'
   AND Child.r_Constraint_Name = PARENT.Constraint_Name
   AND Child.Constraint_Name = Cp.Constraint_Name
   AND PARENT.Constraint_Name = Pc.Constraint_Name
   AND Cp.Position = Pc.Position
   AND Child.Table_Name = '&table_name'
 ORDER BY Child.Owner, Child.Table_Name, Child.Constraint_Name, Cp.Position;
-----------------------------------------------------------------------
17、显示表的分区及子分区(user_tab_subpartitions)
col table_name format a16
col partition_name format a16
col high_value format a81

SELECT Table_Name, Partition_Name, High_Value
  FROM User_Tab_Partitions
 WHERE Table_Name = '&table_name'
-----------------------------------------------------------------------

18、求某个隐藏参数的值
col ksppinm format a54
col ksppstvl format a54
select ksppinm, ksppstvl
from x$ksppi pi, x$ksppcv cv
where cv.indx=pi.indx and pi.ksppinm like '/_%' escape '/' and pi.ksppinm like '%?meer%';
-----------------------------------------------------------------------
19、求系统中较大的latch

select name,sum(gets),sum(misses),sum(sleeps),sum(wait_time)
from v$latch_children
group by name having sum(gets) > 50 order by 2;
-----------------------------------------------------------------------
20、查看object分类数量

SELECT Decode(o.Type#,
                  1, 'INDEX', 2, 'TABLE',  3, 'CLUSTER',
                  4,  'VIEW', 5, 'SYNONYM',  6, 'SEQUENCE',
                  'OTHER') Object_Type, COUNT(*) Quantity
  FROM Sys.Obj$ o
 WHERE o.Type# > 1
 GROUP BY Decode(o.Type#,
                  1, 'INDEX', 2, 'TABLE',  3, 'CLUSTER',
                  4,  'VIEW', 5, 'SYNONYM',  6, 'SEQUENCE',
                  'OTHER')
UNION
SELECT 'COLUMN', COUNT(*)
  FROM Sys.Col$
UNION
SELECT 'DB LINK', COUNT(*)
  FROM Sys.Dba_Db_Links
-----------------------------------------------------------------------
21、按用户查看object种类

SELECT u.NAME SCHEMA, SUM(Decode(o.Type#, 1, 1, NULL)) Indexes,
       SUM(Decode(o.Type#, 2, 1, NULL)) Tables,
       SUM(Decode(o.Type#, 3, 1, NULL)) Clusters,
       SUM(Decode(o.Type#, 4, 1, NULL)) Views,
       SUM(Decode(o.Type#, 5, 1, NULL)) Synonyms,
       SUM(Decode(o.Type#, 6, 1, NULL)) Sequences,
       SUM(Decode(o.Type#, 1, NULL, 2, NULL,
                           3, NULL, 4, NULL,
                           5, NULL, 6, NULL, 1)) OTHERS
  FROM Sys.Obj$ o, Sys.User$ u
 WHERE o.Type# >= 1
   AND u.User# = o.Owner#
   AND u.NAME <> 'PUBLIC'
 GROUP BY u.NAME
 ORDER BY Sys.Link$
UNION
SELECT 'CONSTRAINT', COUNT(*)
  FROM Sys.Con$
-----------------------------------------------------------------------
22、求对象的创建代码
column column_name format a36
column sql_text format a99
select dbms_metadata.get_ddl('TABLE','&tab') from dual;
select dbms_metadata.get_ddl('INDEX','&idx') from dual;
-----------------------------------------------------------------------
23、求表的索引
set linesize 131
select a.index_name,a.column_name,b.status, b.index_type
from user_ind_columns a,user_indexes b
where a.index_name=b.index_name and a.table_name='&1';
-----------------------------------------------------------------------
24、求索引中行数较多的
select index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where num_rows > 10000 and blevel > 0
select table_name,index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where status <> 'VALID'
-----------------------------------------------------------------------
25、求对象所在的文件及块号

SELECT Segment_Name, Header_File, Header_Block
  FROM Dba_Segments
 WHERE Segment_Name LIKE '&1';
-----------------------------------------------------------------------
26、求对象发生事务时回退段及块号

SELECT a.Segment_Name, a.Header_File, a.Header_Block
  FROM Dba_Segments a, Dba_Rollback_Segs b
 WHERE a.Segment_Name = b.Segment_Name
   AND b.Segment_Id = '&1'
-----------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章