zoukankan      html  css  js  c++  java
  • ORACLE_DBA管理脚本

    SYS @ prod >col index_name for a10

    SYS @ prod >col table_name for a10

    SYS @ prod >col start_monitoring for a20

    SYS @ prod >col end_monitoring for a20

    SYS @ prod >set linesize 1000

    SYS @ prod >set pagesize 1000

    监控索引是否使用

    SYS @ prod >create index ind_deptno on childen(deptno);

    Index created.

    SYS @ prod >select * from v$object_usage where index_name = &index_name;

    Enter value for index_name: 'IND_DEPTNO'

    old   1: select * from v$object_usage where index_name = &index_name

    new   1: select * from v$object_usage where index_name = 'IND_DEPTNO'

    INDEX_NAME TABLE_NAME MON USE START_MONITORING     END_MONITORING

    ---------- ---------- --- --- -------------------- --------------------

    IND_DEPTNO CHILDEN    YES NO  06/09/2014 01:38:27

    求数据文件的I/O分布

    SYS @ prod >select df.name,phyrds,phywrts,phyblkrd,phyblkwrt,singleblkrds,readtim,writetim from v$filestat fs,v$dbfile df where fs.file#=df.file# order by df.name;

    NAME                                                   PHYRDS    PHYWRTS   PHYBLKRD  PHYBLKWRT SINGLEBLKRDS    READTIM   WRITETIM

    -------------------------------------------------- ---------- ---------- ---------- ---------- ------------ ---------- ----------

    /u01/app/oracle/oradata/prod/example01.dbf                  6          1          6          1            3          8          0

    /u01/app/oracle/oradata/prod/sysaux01.dbf                 706        147       1588        195          483        444          3

    /u01/app/oracle/oradata/prod/system01.dbf                4237         54       5164         65         4142       1344          8

    /u01/app/oracle/oradata/prod/undotbs01.dbf                 27         57         27        100           24         65         34

    /u01/app/oracle/oradata/prod/users01.dbf                    5          1          5          1            2          6          0

    求系统中较大的latch

    SYS @ prod >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;

    NAME         SUM(GETS) SUM(MISSES) SUM(SLEEPS) SUM(WAIT_TIME)

    -------------------------------------------------- ---------- ----------- ----------- --------------

    client/application info              72           0           0              0

    Shared B-Tree                     79           0           0              0

    channel handle pool latch                                  88           0           0              0

    transaction allocation                                    116           0           0              0

    In memory undo latch                                      120           0           0              0

    OS process                                                219           0           0              0

    parallel query alloc buffer                               276           0           0              0

    post/wait queue                                           291           0           0              0

    library cache pin allocation                              369           0           0              0

    session idle bit                                          395           0           0              0

    object queue header heap                                  507           0           0              0

    library cache lock allocation                             699           0           0              0

    kks stats                                                1753           0           0              0

    redo allocation                                          1840           0           0              0

    undo global data                                         3610           0           0              0

    channel operations parent latch                         10662           0           0              0

    object queue header operation                           11613           0           0              0

    cache buffers lru chain                                 11724           1           1             39

    simulator lru latch                                     13895           0           0              0

    checkpoint queue latch                                  14910           0           0              0

    simulator hash latch                                    15304           0           0              0

    library cache lock                                      36630           0           0              0

    enqueue hash chains                                     47441           0           0              0

    SQL memory manager workarea list latch                  49156           0           0              0

    library cache pin                                       82231           0           0              0

    shared pool                                            103254           0           0              0

    row cache objects                                      111045           0           0              0

    library cache                                          133841           0           0              0

    cache buffers chains                                   337148           0           0              0

    求归档日志的切换频率(生产系统可能时间会很长)

    SYS @ prod >select start_recid,start_time,end_recid,end_time,minutes from (select test.*, rownum as rn from (select b.recid start_recid,to_char(b.first_time,'yyyy-mm-dd hh24:mi:ss') start_time,a.recid end_recid,to_char(a.first_time,'yyyy-mm-dd hh24:mi:ss') end_time,round(((a.first_time-b.first_time)*24)*60,2) minutes from v$log_history a,v$log_history b where a.recid=b.recid+1 and b.first_time > sysdate - 1 order by a.first_time desc) test) y where y.rn < 30;

    no rows selected

    求回滚段正在处理的事务

    SYS @ prod >select a.name,b.xacts,c.sid,c.serial#,d.sql_text from v$rollname a,v$rollstat b,v$session c,v$sqltext d,v$transaction e where a.usn=b.usn and b.usn=e.xidusn and c.taddr=e.addr and c.sql_address=d.address and c.sql_hash_value=d.hash_value order by a.name,c.sid,d.piece;

    no rows selecte

    求出无效的对象

    SYS @ prod >select 'alter procedure '||object_name||' compile;' from dba_objects where status='INVALID' and owner='&owner' and object_type in ('PACKAGE','PACKAGE BODY','PROCEDURE');

    Enter value for owner: SYS

    old   1: select 'alter procedure '||object_name||' compile;' from dba_objects where status='INVALID' and owner='&owner' and object_type in ('PACKAGE','PACKAGE BODY','PROCEDURE')

    new   1: select 'alter procedure '||object_name||' compile;' from dba_objects where status='INVALID' and owner='SYS' and object_type in ('PACKAGE','PACKAGE BODY','PROCEDURE')

    'ALTERPROCEDURE'||OBJECT_NAME||'COMPILE;'

    ---------------------------------------------------------------------------------------------------------------------------------------------------------

    alter procedure REMOVE_EMP compile;

    求process/session的状态

    SYS @ prod >select p.pid,p.spid,s.program,s.sid,s.serial# from v$process p,v$session s where s.paddr=p.addr;

           PID SPID         PROGRAM                                                 SID    SERIAL#

    ---------- ------------ ------------------------------------------------ ---------- ----------

             2 2908         oracle@cuug (PMON)                                      170          1

             3 2910         oracle@cuug (PSP0)                                      169          1

             4 2912         oracle@cuug (MMAN)                                      168          1

             5 2914         oracle@cuug (DBW0)                                      167          1

             6 2916         oracle@cuug (LGWR)                                      166          1

             7 2918         oracle@cuug (CKPT)                                      165          1

             8 2920         oracle@cuug (SMON)                                      160          1

             9 2922         oracle@cuug (RECO)                                      164          1

            10 2924         oracle@cuug (CJQ0)                                      163          1

            11 2926         oracle@cuug (MMON)                                      162          1

            12 2928         oracle@cuug (MMNL)                                      161          1

            15 2934         sqlplus@cuug (TNS V1-V3)                                159          3

            16 2936         oracle@cuug (ARC0)                                      156          1

            17 2938         oracle@cuug (ARC1)                                      155          1

            18 3074         sqlplus@cuug (TNS V1-V3)                                147         20

            19 2942         oracle@cuug (QMNC)                                      152          7

            20 2956         oracle@cuug (q000)                                      141          3

            25 2958         oracle@cuug (q001)                                      148          2

    求当前session的状态

    求表的索引信息

    SYS @ prod >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';

    Enter value for table_name: CHILDEN

    Enter value for column_name: DEPTNO

    old   1: 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'

    new   1: 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 'CHILDEN%' and uic.column_name='DEPTNO'

    TABLE_NAME INDEX_NAME

    ---------- ----------

    CHILDEN    IND_DEPTNO

    显示表的外键信息

    SYS @ prod >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');

    Enter value for 1: DEPTNO

    old   1: 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')

    new   1: 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='DEPTNO')

    TABLE_NAME CONSTRAINT_NAME

    ---------- ------------------------------

    CHILDEN    FK_DEPTNO

    显示表的分区及子分区(user_tab_subpartitions)

    SYS @ prod >col table_name format a16

    SYS @ prod >col partition_name format a16

    SYS @ prod >col high_value format a81

    SYS @ prod >select table_name,partition_name,HIGH_VALUE from user_tab_partitions where table_name='&table_name'

      2  ;

    Enter value for table_name: CHILDEN

    old   1: select table_name,partition_name,HIGH_VALUE from user_tab_partitions where table_name='&table_name'

    new   1: select table_name,partition_name,HIGH_VALUE from user_tab_partitions where table_name='CHILDEN'

    no rows selected

    使用dbms_xplan生成一个执行计划

    SYS @ prod >explain plan set statement_id = '&sql_id' for &sql_text;

    Enter value for sql_id: 062savj8zgzut

    Enter value for sql: UPDATE sys.wri$_adv_parameters SET datatype = :1,value = :2, flags = :3, description = :4 WHERE task_id = :5 AND name = :6

     

    old   1: explain plan set statement_id = '&sql_id' for &sql

    new   1: explain plan set statement_id = '062savj8zgzut' for UPDATE sys.wri$_adv_parameters SET datatype = :1,value = :2, flags = :3, description = :4 WHERE task_id = :5 AND name = :6

    Explained.

    SYS @ prod >select * from table(dbms_xplan.display);

    PLAN_TABLE_OUTPUT

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Plan hash value: 618325093

    ---------------------------------------------------------------------------------------------

    | Id  | Operation          | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |

    ---------------------------------------------------------------------------------------------

    |   0 | UPDATE STATEMENT   |                        |     1 |  2064 |     0   (0)| 00:00:01 |

    |   1 |  UPDATE            | WRI$_ADV_PARAMETERS    |       |       |            |          |

    |*  2 |   INDEX UNIQUE SCAN| WRI$_ADV_PARAMETERS_PK |     1 |  2064 |     0   (0)| 00:00:01 |

    ---------------------------------------------------------------------------------------------

    Predicate Information (identified by operation id):

    ---------------------------------------------------

       2 - access("TASK_ID"=TO_NUMBER(:5) AND "NAME"=:6)

    其中

    sql_id 对应 v$sql里的 SQL_ID,

    Sql_text 对应v$sql里的SQL_TEXT

    SYS @ prod >select * from table(dbms_xplan.display);

    PLAN_TABLE_OUTPUT

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Plan hash value: 618325093

    ---------------------------------------------------------------------------------------------

    | Id  | Operation          | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |

    ---------------------------------------------------------------------------------------------

    |   0 | UPDATE STATEMENT   |                        |     1 |  2064 |     0   (0)| 00:00:01 |

    |   1 |  UPDATE            | WRI$_ADV_PARAMETERS    |       |       |            |          |

    |*  2 |   INDEX UNIQUE SCAN| WRI$_ADV_PARAMETERS_PK |     1 |  2064 |     0   (0)| 00:00:01 |

    ---------------------------------------------------------------------------------------------

    Predicate Information (identified by operation id):

    ---------------------------------------------------

       2 - access("TASK_ID"=TO_NUMBER(:5) AND "NAME"=:6)

    14 rows selected.

    求某个事务的重做信息(bytes)

    SYS @ prod >select s.name,m.value from v$mystat m,v$statname s where m.statistic#=s.statistic# and s.name like '%redo size%';

    NAME                                                    VALUE

    -------------------------------------------------- ----------

    redo size                                               11940

    求cache中缓存超过其5%的对象

    SYS @ prod >select o.owner,o.object_type,o.object_name,count(b.objd) from v$bh b,dba_objects o where b.objd = o.object_id and rownum <2 group by o.owner,o.object_type,o.object_name having count(b.objd) > (select to_number(value)*0.05 from v$parameter where name = 'db_block_buffers') ;

    求谁阻塞了某个session(10g)

    SYS @ prod > select sid, username, event, blocking_session, seconds_in_wait, wait_time from v$session where state in ('WAITING') and wait_class != 'Idle';

           SID USERNAME                       EVENT                                                            BLOCKING_SESSION SECONDS_IN_WAIT  WAIT_TIME

    ---------- ------------------------------ ---------------------------------------------------------------- ---------------- --------------- ----------

           145 SYS                            enq: TM - contention                                                          147             192          0

    求session的OS进程ID

    SYS @ prod >select p.spid "OS Thread", b.name "Name-User", s.program from v$process p, v$session s, v$bgprocess b where p.addr = s.paddr and p.addr = b.paddr UNION ALL select p.spid "OS Thread", s.username "Name-User", s.program from v$process p, v$session s where p.addr = s.paddr and s.username is not null;

    OS Thread    Name-User                      PROGRAM

    ------------ ------------------------------ ------------------------------------------------------

    2934         PMON                           oracle@cuug (PMON)

    2936         PSP0                           oracle@cuug (PSP0)

    2938         MMAN                           oracle@cuug (MMAN)

    2940         DBW0                           oracle@cuug (DBW0)

    2942         LGWR                           oracle@cuug (LGWR)

    2944         CKPT                           oracle@cuug (CKPT)

    2946         SMON                           oracle@cuug (SMON)

    2948         RECO                           oracle@cuug (RECO)

    2950         CJQ0                           oracle@cuug (CJQ0)

    2952         MMON                           oracle@cuug (MMON)

    2954         MMNL                           oracle@cuug (MMNL)

    2962         ARC0                           oracle@cuug (ARC0)

    2964         ARC1                           oracle@cuug (ARC1)

    2966         ARC2                           oracle@cuug (ARC2)

    2968         QMNC                           oracle@cuug (QMNC)

    2960         SYS                            sqlplus@cuug (TNS V1-V3)

    查会话的阻塞

    求DISK READ较多的SQL

    SYS @ prod >select st.sql_text from v$sql sql1,v$sqltext st where sql1.address=st.address and sql1.hash_value=st.hash_value and sql1.disk_reads > 300;

    求DISK SORT严重的SQL

    SYS @ prod >select sess.username, sql.sql_text, sort1.blocks from v$session sess, v$sqlarea sql, v$sort_usage sort1 where sess.serial# = sort1.session_num  and sort1.sqladdr = sql.address and sort1.sqlhash = sql.hash_value and sort1.blocks > 200;

    求对象的创建代码

    SYS @ prod >select dbms_metadata.get_ddl('TABLE','&1') from dual;

    Enter value for 1: FATHER

    old   1: select dbms_metadata.get_ddl('TABLE','&1') from dual

    new   1: select dbms_metadata.get_ddl('TABLE','FATHER') from dual

    DBMS_METADATA.GET_DDL('TABLE','FATHER')

    --------------------------------------------------------------------------------

      CREATE TABLE "SYS"."FATHER"

       (    "DEPTNO" NUMBER(2,0),

            "DNAME" VARCHAR2(14

    求表的索引

    SYS @ prod >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';

    Enter value for 1: CHILDEN

    old   1: 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'

    new   1: 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='CHILDEN'

    INDEX_NAME

    ------------------------------

    COLUMN_NAME

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    STATUS   INDEX_TYPE

    -------- ---------------------------

    IND_DEPTNO

    DEPTNO

    VALID    NORMAL

    索引中行数较多的            

    SYS @ prod >select index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where num_rows > 10000 and blevel > 0 ;

     

     

    SYS @ prod >select table_name,index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where status <> 'VALID';

    求表中有外键但是外键没索引的表

    求有外键的表

    SYS @ prod >select owner,constraint_name,constraint_type,table_name,r_owner,r_constraint_name,status from user_constraints where constraint_type='R' and table_name='CHILDEN';

     

    OWNER CONSTRAINT_NAME      CONSTRAINT_TYPE      TABLE_NAME                     R_OWNER                        R_CONSTRAINT_NAME              STATUS

    ----- -------------------- -------------------- ------------------------------ ------------------------------ ------------------------------ --------

    SYS   FK_DEPTNO            R                    CHILDEN                        SYS                            PK_DEPTNO                      ENABLED

    求外键定义在表的哪个字段

     

    SYS @ prod >select owner,constraint_name,table_name,column_name from user_cons_columns where table_name='CHILDEN';

     

    OWNER CONSTRAINT_NAME   TABLE_NAME      COLUMN_NAM

    ------------------------------------------------------------------------------------------------------

    SYS   FK_DEPTNO            CHILDEN          DEPTNO

    求未定义索引的表

    SYS @ prod >select table_name from user_tables where table_name not in (select table_name from user_ind_columns);

    TABLE_NAME

    ------------------------------

    FET$

    SEG$

    UET$

    TSQ$

     

     

     

     

    SYS @ prod >select * from user_ind_columns where table_name='CHILDEN' and column_name='DEPTNO';

     

    INDEX_NAME                     TABLE_NAME                     COLUMN_NAM COLUMN_POSITION COLUMN_LENGTH CHAR_LENGTH DESC

    ------------------------------ ------------------------------ ---------- --------------- ------------- ----------- ----

    IND_DEPTNO                     CHILDEN                        DEPTNO                   1            22           0 ASC

    查看用户使用内存情况

    SYS @ prod >select username, sum(sharable_mem)/1024/1024 "SIZE:M", sum(persistent_mem)/1024/1024 "SIZE:M", sum(runtime_mem)/1024/1024 "SIZE:M" from sys.v_$sqlarea a, dba_users b where a.parsing_user_id = b.user_id group by username;

     

    USERNAME                           SIZE:M     SIZE:M     SIZE:M

    ------------------------------ ---------- ---------- ----------

    EXFSYS                         .040836334 .014293671 .012340546

    SYS                            3.79944134 3.11385727 2.83478165

     

  • 相关阅读:
    SPOJ 694 (后缀数组) Distinct Substrings
    POJ 2774 (后缀数组 最长公共字串) Long Long Message
    POJ 3693 (后缀数组) Maximum repetition substring
    POJ 3261 (后缀数组 二分) Milk Patterns
    UVa 1149 (贪心) Bin Packing
    UVa 12206 (字符串哈希) Stammering Aliens
    UVa 11210 (DFS) Chinese Mahjong
    UVa (BFS) The Monocycle
    UVa 11624 (BFS) Fire!
    HDU 3032 (Nim博弈变形) Nim or not Nim?
  • 原文地址:https://www.cnblogs.com/iyoume2008/p/4690625.html
Copyright © 2011-2022 走看看