『管理調優』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'
-----------------------------------------------------------------------

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