熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracle系統視圖總結

2022-06-13   來源: Oracle 

  dba視圖

  select * from dba_data_files   指定表空間的數據文件及所在的路徑

  select * from dba_free_space   指定表空間的剩余空間

  select * from dba_users        找出當前數據庫實例中的所有用戶

  select * from dba_segments     找出當前數據庫實例中的所有對象的物理信息所占空間pctincrease等

  select * from dba_tab_columns  指定所有表對應的列名

  select * from dba_col_comments 指定所有列的注釋信息

  select * from dba_tablespaces  列出所有的表空間及相關信息

  select * from dba_tab_partitions 所有表分區的信息

  select * from dba_ind_columns  顯示所有的被索引的列

  select * from dba_indexes      顯示所有的索引信息

  select * from dba_jobs        顯示所有的job信息

  select * from dba_jobs_running 顯示正在運行的job信息

  v$視圖

  select * from v$session        顯示當前所有的session信息

  v$lock視圖

  反映內容該視圖展示當前保持的鎖信息

  名稱                                                類型                                      說明部分

        ********************************

  ADDR                                               RAW()                      //鎖狀態對象地址

  KADDR                                              RAW()                    //鎖地址

  SID                                                NUMBER                       //保持鎖的會話的會話標識符

  TYPE                                               VARCHAR()           //鎖類型 TM:dml排隊TX:事務排隊UL:用戶提供

  ID                                                NUMBER                      //鎖標示

  ID                                                NUMBER                      //鎖標示

  LMODE                                              NUMBER                //會話保持的鎖的模式

  REQUEST                                            NUMBER             //進程請求鎖定時所處的模式

  CTIME                                              NUMBER               //當前的鎖模式所消耗的時間

  BLOCK                                              NUMBER              //阻塞其他鎖

  解釋代表無代表空(null)代表行(ss)代表行(sx)共享SS/行X(SSX)獨占

  通過這個視圖你能初步了解鎖的模式從而判斷鎖會出現的地方

   v$PROCESS視圖

  放映內容包含有關當前活動進程的信息

  SQL> desc v$process

  名稱                                               類型                                     說明部分

          ********************************

  ADDR                                               RAW()                       //進程對象狀態地址

  PID                                                NUMBER                       //oracle進程標識符類似於序號

  SPID                                               VARCHAR()           //操作系統進程標識符可以用來和操作系統進程聯系

  USERNAME                                           VARCHAR()    //操作系統進程用戶名

  SERIAL#                                            NUMBER                  //進程序列號

  TERMINAL                                           VARCHAR()      //操作系統終端標示符

  PROGRAM                                            VARCHAR()    //進程中的程序

  TRACEID                                            VARCHAR()     //跟蹤文件標識符

  BACKGROUND                                         VARCHAR()   //表示後台進程null表示其它

  LATCHWAIT                                          VARCHAR()  //進程正在等待鎖的地址如果該值為n/a則鎖地址為null

  LATCHSPIN                                          VARCHAR()  //進程正在輪循的鎖的地址如果該職位n/a則為地址nill

  PGA_USED_MEM                                       NUMBER   //當前正在使用的pga內存

  PGA_ALLOC_MEM                                      NUMBER  //當前已經分配的pga內存

  PGA_FREEABLE_MEM                                   NUMBER  //可以釋放的已分配的pga內存

  PGA_MAX_MEM                                        NUMBER  //曾經需要的最大的最大pga內存

  這個視圖分很有用可以和操做系統聯系這樣用來診斷跟蹤頂級系統資源使用很有益處這裡就可以有個案例經常用到的通過消耗資源做大的系統進程號的到執行的sql語句需要結合v$session視圖一起來完成

  v$session

  反映內容列出連接到實例的會話這個視圖有非常多的信息字段也比較多

  SQL> desc v$session

  名稱                                               類型

  

  SADDR                                          RAW()                    session地址

  SID                                                NUMBER                    session標識符

  SERIAL#                                        NUMBER                    session會話序列號

  AUDSID                                         NUMBER                     審計的會話id

  PADDR                                          RAW()                      擁有該會話的oracle進程號和v$process聯系

  USER#                                          NUMBER                      oracle用戶

  USERNAME                                   VARCHAR()          oracle用戶名

  COMMAND                                       NUMBER                   執行的命令

  OWNERID                                         NUMBER                   會話的所有者

  TADDR                                            VARCHAR()            事務地址

  LOCKWAIT                                      VARCHAR()           鎖等待地址null if none

  STATUS                                        VARCHAR()               會話的狀態activeinactivekilledcachedsniped

  SERVER                                             VARCHAR()          服務的類型共享還是專用服務器

  SCHEMA#                                            NUMBER                 用戶標示模式

  SCHEMANAME                                VARCHAR()           用戶模式名稱

  OSUSER                                             VARCHAR()         客戶端操作系統名稱

  PROCESS                                       VARCHAR()             操作系統客戶端進程號

  MACHINE                                            VARCHAR()          操作系統機器名稱

  TERMINAL                                           VARCHAR()         操作系統終端名

  PROGRAM                                      VARCHAR()              操作系統程序名

  TYPE                                               VARCHAR()               session種類

  SQL_ADDRESS                                RAW()                             當前回話識別目前執行的sql語句的表示地址

  SQL_HASH_VALUE                  NUMBER                           和sql_address一起唯一標示一條執行的sql語句

  SQL_ID                                             VARCHAR()         目前被執行的sql語句的標識符

  SQL_CHILD_NUMBER                      NUMBER                     目前被執行的sql語句的子句數量

  PREV_SQL_ADDR                              RAW()                 與sql_hash_value一起標示上一條被執行的sql語句

  PREV_HASH_VALUE                      NUMBER                      與PREV_SQL_ADDR 一起表示上一條被執行的sql語句

  PREV_SQL_ID                              VARCHAR()                前一條被執行的sql語句

  PREV_CHILD_NUMBER                    NUMBER                      上一條被執行的sql的子句數量

  MODULE                                             VARCHAR()           這個沒太懂oracle文檔上面的解釋比較清楚

  MODULE_HASH                            NUMBER                           這是針對上面一個字段的hash value

  ACTION         VARCHAR()    當前 正在執行被DBMS_APPLICATION_INFOSET_ACTION procedure調用名稱

  ACTION_HASH                                 NUMBER           針對上一字段name的hash value

  CLIENT_INFO                      VARCHAR()       由APPLICATION_INFOSET_ACTION procedure設定的過程名

  FIXED_TABLE_SEQUENCE    NUMBER   oracle文檔有著詳細的解釋session活動增長記錄最好再去看oracle文檔

  ROW_WAIT_OBJ#          NUMBER      對象id對象是table包含行源數據在OW_WAIT_ROW#中的id標識符

  ROW_WAIT_FILE#  NUMBER    標示數據文件等待在OW_WAIT_ROW#中的row這些行包含在這些數據文件中

  ROW_WAIT_BLOCK#               NUMBER     表示數據塊這些數據塊中行源等待在OW_WAIT_ROW#中

  ROW_WAIT_ROW#                NUMBER       目前被鎖定的行

  LOGON_TIME                        DATE              time of logon

  LAST_CALL_ET  NUMBER  當前session為active時 記錄的是session是session編程active狀態來的運行時間相反則為inactive的時間

  PDML_ENABLED                     VARCHAR()            已經被PDML_STATUS字段所取代

  FAILOVER_TYPE                      VARCHAR()

  這是oracle文檔對以上這個字段的解釋

  Indicates whether and to what extent transparent application failover

  (TAF) is enabled for the session:

  ■ NONE Failover is disabled for this session

  ■ SESSION Client is able to fail over its session following a disconnect

  ■ SELECT Client is able to fail over queries in progress as well

  See Also:

  ■ Oracle Database Concepts for more information on TAF

  ■ Oracle Database Net Services Administrators Guide for information on

  configuring TAF

  FAILOVER_METHOD                 VARCHAR()

  oracle文檔的解釋

  Indicates the transparent application failover method for the session:

  ■ NONE Failover is disabled for this session

  ■ BASIC Client itself reconnects following a disconnect

  ■ PRECONNECT Backup instance can support all connections from

  every instance for which it is backed up

  FAILED_OVER                          VARCHAR()         //判定是否session已經處於失敗狀態yes或者no

  RESOURCE_CONSUMER_GROUP                   VARCHAR()          當前session用戶的源數據組

  PDML_STATUS                        VARCHAR()

  oracle的文檔解釋

  If ENABLED the session is in a PARALLEL DML enabled mode If

  DISABLED PARALLEL DML enabled mode is not supported for the

  session If FORCED the session has been altered to force PARALLEL DML

  PDDL_STATUS                        VARCHAR()

  oracle文檔解釋

  If ENABLED the session is in a PARALLEL DDL enabled mode If

  DISABLED PARALLEL DDL enabled mode is not supported for the

  session If FORCED the session has been altered to force PARALLEL DDL

  PQ_STATUS                       VARCHAR()

  oracle文檔解釋

  If ENABLED the session is in a PARALLEL QUERY enabled mode If

  DISABLED PARALLEL QUERY enabled mode is not supported for the

  session If FORCED the session has been altered to force PARALLEL

  QUERY

  CURRENT_QUEUE_DURATION              NUMBER         if 則session已經在隊列中if 則還未形成排隊

  CLIENT_IDENTIFIER                  VARCHAR()       客戶端session標識符

  BLOCKING_SESSION_STATUS               VARCHAR()

  oracle文檔資料注解

  Blocking session status:

  ■ VALID

  ■ NO HOLDER

  ■ GLOBAL

  ■ NOT IN WAIT

  ■ UNKNOWN

  BLOCKING_INSTANCE                NUMBER    模塊化的實例標識符

  BLOCKING_SESSION             NUMBER       模塊化的session標識符

  SEQ#                   NUMBER         不唯一的標示每個等待的序列號

  EVENT#            NUMBER               事件數量

  EVENT                     VARCHAR()     oracle的session正在等待的數據或者事件

  PTEXT                       VARCHAR()       首個附加參數的描述

  P                                     NUMBER            首個附加參數

  PRAW                      RAW()              首個附加參數和前一個區別我還不是很懂

  PTEXT                     VARCHAR()       第二個附加參數的描述

  P                              NUMBER            第二個附加參數

  PRAW                     RAW()         第二個附加參數

  PTEXT               VARCHAR()   第三個附加參數的描述

  P                                  NUMBER    第三個附加參數

  PRAW                    RAW()    第三個附加參數

  WAIT_CLASS_ID            NUMBER   標記等待事件種類

  WAIT_CLASS#                      NUMBER        等待事件的種類

  WAIT_CLASS                       VARCHAR()      等待事件的名稱

  WAIT_TIME                           NUMBER           非代表上一次session上次等待時間代表session當前正在等待

  SECONDS_IN_WAIT                  NUMBER

  oracle文檔的資料

  If WAIT_TIME = then SECONDS_IN_WAIT is the seconds spent in the

  current wait condition If WAIT_TIME > then SECONDS_IN_WAIT is the

  seconds since the start of the last wait and SECONDS_IN_WAIT WAIT_

  TIME / is the active seconds since the last wait ended

  STATE                VARCHAR()

  oracle資料文檔

  Wait state:

  ■ WAITING (the session is currently waiting)

  ■ WAITED UNKNOWN TIME (duration of last wait is unknown)

  ■ WAITED SHORT TIME (last wait </th of a second)

  ■ > WAITED KNOWN TIME (WAIT_TIME = duration of last wait)

  SERVICE_NAME                   VARCHAR()      session的服務名稱

  SQL_TRACE                          VARCHAR()     標示sql是否能被跟蹤

  SQL_TRACE_WAITS                VARCHAR()     標記是否等待事件被跟蹤

  SQL_TRACE_BINDS                VARCHAR()         標記是否綁定跟蹤可用與否

  v$SQL

  反映內容包括查詢游標等級的詳細信息可以用來找到負責解析游標的會話或者人同樣也有著繁多的信息字段我下面只拿出一些常用的關鍵的列

  SQL> desc v$sql;

  名稱                                                類型

   

  SQL_TEXT                            VARCHAR() sql語句的前千個字符

  SQL_FULLTEXT                         CLOB               sql語句的全部分作為一個clob字段

  SQL_ID                                    VARCHAR()       sql與在liberary cache中的parent cursor的標識符

  SHARABLE_MEM                     NUMBER               被子cursor所使用的共享內存的和bytes

  PERSISTENT_MEM                   NUMBER              整個生命周期child cursor所使用的固定內存的大小bytes

  USERS_OPENING                   NUMBER

  FETCHES                                    NUMBER          這條sql語句返回的數據行數量

  EXECUTIONS                               NUMBER         library cache中這條sql語句被執行的次數

  USERS_EXECUTING                      NUMBER       執行這條sql語句的用戶的數量

  LOADS                                       NUMBER           sql或者object被裝載load或者被reloaded次數

  FIRST_LOAD_TIME             VARCHAR()        parent cursor創建的時間

  INVALIDATIONS                     NUMBER             this child cursor 曾經無效的數量

  PARSE_CALLS                    NUMBER               做語法分析調用child cursor的次數

  DISK_READS                       NUMBER               直接做磁盤讀取的次數

  DIRECT_WRITES                     NUMBER            直接做磁盤寫的次數

  BUFFER_GETS                        NUMBER           邏輯讀次數

  APPLICATION_WAIT_TIME               NUMBER     應用等待時間 單位微秒

  CLUSTER_WAIT_TIME                   NUMBER       集群等待時間 單位微妙

  USER_IO_WAIT_TIME                NUMBER          用戶由於I/O造成等待時間

  PLSQL_EXEC_TIME                      NUMBER          plsql程序執行時間 單位微秒

  ROWS_PROCESSED                 NUMBER            通過語法分析的sql返回的數據總行數

  OPTIMIZER_MODE               VARCHAR()        優化器選擇方式

  OPTIMIZER_COST             NUMBER                     采用上面指定優化器所要花費的代價

  HASH_VALUE                       NUMBER         Hash value of the parent statement in the library cache

  SERVICE                    VARCHAR()       服務名能夠知道是oracle用戶進程做得還是oracle後台進程

  CPU_TIME NUMBER   CPU time (in microseconds) used by this cursor for parsing executingand fetching

  ELAPSED_TIME      NUMBER   用在解析分析取回返回數據所使用的總的時間

  REMOTE                                             VARCHAR()    是否是遠程調用

  LAST_LOAD_TIME                                     VARCHAR()       上次加載時間

  CHILD_LATCH                                        NUMBER        受保護的子闩鎖數量

  LAST_ACTIVE_TIME                                   DATE       上次活動時間

  BIND_DATA                                          RAW()     綁定數據

  這個視圖你能很容易的得到造成過多的解析物理讀物理寫邏輯讀等待sql語句對於查找低效率sql語句很方便

  v$event_name

  反映內容所有等待事件以及相關參數(pp的定義)沒有全部寫出來只寫了最重要的字段

  SQL> desc v$event_name

  名稱                                                               類型

    

  EVENT#                                                         NUMBER           該事件的引用編號

  EVENT_ID                                                       NUMBER          該事件的標識符

  NAME                                                           VARCHAR()     oracle針對次事件的名稱

  PARAMETER                                                VARCHAR()    P信息的描述

  PARAMETER                                              VARCHAR()       P信息的描述

  PARAMETER                                              VARCHAR()       P信息的描述

  V$session_event

  反映的內容最近的所有等待事件的統計信息

  SQL> desc v$session_event

  名稱                           類型

       

  SID                              NUMBER         標識符

  EVENT                            VARCHAR()      該事件的名稱

  TOTAL_WAITS                      NUMBER         該會話總的等待次數

  TOTAL_TIMEOUTS                   NUMBER        該會話在等待事件期間遇到的超時次數

  TIME_WAITED                      NUMBER             該會話等待該事件所消耗的總時間單位

  AVERAGE_WAIT                     NUMBER         該會話等待該事件所消耗平均等待時間

  MAX_WAIT                         NUMBER         進程必須等待該事件的最大時間總值單位

  EVENT_ID                         NUMBER        等待事件的唯一標識符對應V$event_name表

  通過這個動態性能視圖你應該很容易了解到最近常常發生的等待事件的大體情況

  v$session_wait

  反映的內容提供了當前會話的當前等待事件的詳細信息

  SQL> desc v$session_wait

  名稱                    是否為空? 類型

  

  SID                              NUMBER               唯一表示符

  SEQ#    NUMBER           等待次序的計數器進程每開始一次新的等待就就增加

  EVENT                            VARCHAR()   Resource or event for which the session is waiting

  PTEXT                           VARCHAR()    等待事件P參數名稱

  P                               NUMBER          p的值

  PRAW                            RAW()       p參數進制值

  PTEXT                           VARCHAR()   等待事件P參數名稱

  P                               NUMBER      p的值

  PRAW                            RAW()       p參數進制值

  PTEXT                           VARCHAR()    等待事件P參數名稱

  P                               NUMBER     p的值

  PRAW                            RAW()         p參數進制值

  WAIT_TIME                        NUMBER  上一次等待持續的時間單位

  SECONDS_IN_WAIT                  NUMBER      等待時間單位秒

  STATE                            VARCHAR()  指出進程是已經完成了等待還是還在等待

  比如

  SQL> select event nameptext pnamep pvalue from v$session_wait;

  NAME                           PNAME               PVALUE

  

  jobq slave wait                                          

  SQL*Net message from client    driver id        

  Streams AQ: qmn slave idle wai                           

  t

  Streams AQ: qmn coordinator id                           

  le wait

  Streams AQ: waiting for time m                           

  anagement or cleanup tasks

  rdbms ipc message              timeout                 

  rdbms ipc message              timeout                 

  rdbms ipc message              timeout                 

  很容易看到當前等待事件的情況

  v$system_event

  反映的內容列出自從實例啟動以來的等待事件的統計信息

  SQL> desc v$system_event

  名稱                       類型

  

  EVENT                            VARCHAR()   等待事件的名稱

  TOTAL_WAITS                      NUMBER         次等待事件的總的等待次數

  TOTAL_TIMEOUTS                   NUMBER        總的超時等待事件的次數

  TIME_WAITED                      NUMBER             等待事件的總的等待時間

  AVERAGE_WAIT                     NUMBER           平均等待時間單位s

  EVENT_ID                         NUMBER     等待事件的唯一標示符 和v$event_name中的對應

  dba_tables

  反映內容記錄數據庫表所有信息這裡我也只是列出用於性能測試多的字段

  SQL> desc dba_tables;

  名稱                        類型

   

  OWNER                   NOT NULL VARCHAR()    所有者

  TABLE_NAME              NOT NULL VARCHAR()   表名

  TABLESPACE_NAME                  VARCHAR()    表所在的表空間名

  CLUSTER_NAME                     VARCHAR()      所在集群的名稱

  PCT_FREE                         NUMBER      數據塊允許空閒的最小百分比

  PCT_USED                         NUMBER       數據塊允許使用的最大百分比

  MAX_TRANS                        NUMBER        最大事務數

  FREELISTS                        NUMBER      被分配給段的空閒進程數量

  LOGGING                          VARCHAR()        是否記錄日志生成重做日志記錄

  NUM_ROWS                         NUMBER          總共有多少行數據記錄

  BLOCKS                           NUMBER           此表使用的塊數

  EMPTY_BLOCKS                     NUMBER        表中從來不沒有被使用的空塊

  AVG_SPACE                        NUMBER   表中平均可用空閒空間

  AVG_SPACE_FREELIST_BLOC          NUMBER  Average freespace of all blocks on a freelist

  NUM_FREELIST_BLOCKS              NUMBER  空閒列表的塊數

  CACHE                            VARCHAR()         檢查表是否被cache到buffer中

  TABLE_LOCK                       VARCHAR()       表名表是正在否被鎖定

  SAMPLE_SIZE                      NUMBER            表被分析的比例或者數量

  LAST_ANALYZED                    DATE                表上一次被分析的時間點

  NESTED                           VARCHAR()        表是否嵌套

  BUFFER_POOL                      VARCHAR()      buffer_pool中被用於表塊的defaultkeeprecycle

  MONITORING                       VARCHAR()     表名表是否正被監控

  這個視圖非常的有用一般可以用來作為健康檢查檢查數據庫表的分析情況等對於oracle以後的版本都推薦使用基於成本的優化器cbo基於規則的優化器逐漸被放棄了所以分析的了解很重要

  如下

  TABLE_NAME                     TABLESPACE_NAME                  PCT_FREE   PCT_USED   NUM_ROWS BUFFER_ SAMPLE_SIZE LAST_ANALYZED

  

  LT_LHT_COUNT                   LHT_BBS_SPACE                                               DEFAULT          

  LT_LHT_CYXX                    LHT_BBS_SPACE                                              DEFAULT         

  LT_LHT_FLBK                    LHT_BBS_SPACE                                               DEFAULT          

  LT_LHT_SORT                    LHT_BBS_SPACE                                               DEFAULT          

  LT_LHT_STYLE                   LHT_BBS_SPACE                                              DEFAULT         

  LT_LHT_XTYH                    LHT_BBS_SPACE                                               DEFAULT          

  LT_LHT_ZCYH                    LHT_BBS_SPACE                                              DEFAULT         

  LT_LHT_FT                      LHT_BBS_SPACE                                              DEFAULT         

  LT_LHT_HT                      LHT_BBS_SPACE                                              DEFAULT         

  TEST                           LHT_BBS_SPACE                                               DEFAULT          

  TEST_LOG                       LHT_BBS_SPACE                                               DEFAULT          

  可以清晰的了解到裱褙分析的情況如果LAST_ANALYZED沒有值或者時間很早了那就必須重新的分析這張表得到更為准確統計信 息SAMPLE_SIZE代表分析的采樣值如果不合理也可以在分析的時候作調整這些檢查有利於卻確定基於成本的優化器能夠按照最優化的路經化最小的 成本來完成操作和響應

  既然對於dba_tables有這樣應用那麼dba_indexes也就有同樣的使用方式了索引和表達大同小異就不再說了

  V$SGA_TARGET_ADVICE

  采用動態sga內存管理但是你希望能知道如何設置這個最大大小才合適呢那可以采用這個視圖

  SQL> desc V$SGA_TARGET_ADVICE

  名稱                         類型

  

  SGA_SIZE                         NUMBER     sga大小

  SGA_SIZE_FACTOR                  NUMBER  此表中的sga_size和當前的parameter中的sga大小的比值

  ESTD_DB_TIME                     NUMBER

  ESTD_DB_TIME_FACTOR              NUMBER

  ESTD_PHYSICAL_READS              NUMBER  估計的物理讀的次數

  比如

  SQL> select sga_sizesga_size_factorestd_db_timeestd_db_time_factorestd_physical_reads from V$SGA_TARGET_ADVICE;

  SGA_SIZE SGA_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR ESTD_PHYSICAL_READS

  

                                                            

                                                      

                                                          

                                                            

                                                          

                                                         

                                                         

  已選擇

  可以發現當sga設置為M或者更大的時候就沒有性能上的提升了所以最大也就設置為左右是比較合適的

   V$pga_TARGET_ADVICE

  結合的sga設置pga的pga_target_max設置同樣可以采用這樣的方式

  SQL> desc V$pga_TARGET_ADVICE

  名稱                                                       類型

           

  PGA_TARGET_FOR_ESTIMATE                            NUMBER   pga設置大小bytes

  PGA_TARGET_FACTOR                                  NUMBER          與當前parameter中設置的值的比例

  ADVICE_STATUS        VARCHAR()      表名advice是否課可采用on/off取決於STATISTICS_LEVEL

  BYTES_PROCESSED                  NUMBER     被所有的進程所占用的資源bytes

  ESTD_EXTRA_BYTES_RW             NUMBER   被估計的用於讀和寫的資源占用

  ESTD_PGA_CACHE_HIT_PERCENTAGE  NUMBER     估計的命中率當PGA_TARGET_FOR_ESTIMATE等於實際設置的pgaparameter時

  ESTD_OVERALLOC_COUNT    NUMBER  這裡的值如果為零表示pga設置足夠大非零說明pga的設置不是足夠大的

  QL> select * from  V$pga_TARGET_ADVICE;

  GA_TARGET_FOR_ESTIMATE PGA_TARGET_FACTOR ADV BYTES_PROCESSED ESTD_EXTRA_BYTES_RW ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COU

  T

  

  

                ON                                                

  

                 ON                                                     

  

                  ON                                                     

  Oracle維護常用SQL語句(查詢系統表和視圖)

  提要

  查看表空間的名稱及大小

  查看表空間物理文件的名稱及大小

  查看回滾段名稱及大小

  查看控制文件

  查看日志文件

  查看表空間的使用情況

  查看數據庫庫對象

  查看數據庫的版本

  查看數據庫的創建日期和歸檔方式

  捕捉運行很久的SQL

  查看數據表的參數信息

  查看還沒提交的事務

  查找object為哪些進程所用

  回滾段查看

  耗資源的進程(top session)

  查看鎖(lock)情況

  查看等待(wait)情況

  查看sga情況

  查看catched object

  查看V$SQLAREA

  查看object分類數量

  按用戶查看object種類

  有關connection的相關信息

  )查看有哪些用戶連接

  )根據vsid查看對應連接的資源占用等情況

  )根據sid查看對應連接正在運行的sql

  .查詢表空間使用情況

  查詢表空間的碎片程度

  查詢正在運行的數據庫實例

  查看表空間的名稱及大小

  select ttablespace_name round(sum(bytes/(*))) ts_size

  from dba_tablespaces t dba_data_files d

  where ttablespace_name = dtablespace_name

  group by ttablespace_name;

  查看表空間物理文件的名稱及大小

  select tablespace_name file_id file_name

  round(bytes/(*)) total_space

  from dba_data_files

  order by tablespace_name;

  查看回滾段名稱及大小

  select segment_name tablespace_name rstatus

  (initial_extent/) InitialExtent(next_extent/) NextExtent

  max_extents vcurext CurExtent

  From dba_rollback_segs r v$rollstat v

  Where rsegment_id = vusn(+)

  order by segment_name ;

  查看控制文件

  select name from v$controlfile;

  查看日志文件

  select member from v$logfile;

  查看表空間的使用情況

  select sum(bytes)/(*) as free_spacetablespace_name

  from dba_free_space

  group by tablespace_name;

  SELECT ATABLESPACE_NAMEABYTES TOTALBBYTES USED CBYTES FREE

  (BBYTES*)/ABYTES % USED(CBYTES*)/ABYTES % FREE

  FROM SYSSM$TS_AVAIL ASYSSM$TS_USED BSYSSM$TS_FREE C

  WHERE ATABLESPACE_NAME=BTABLESPACE_NAME AND ATABLESPACE_NAME=CTABLESPACE_NAME;

  查看數據庫庫對象

  select owner object_type status count(*) count# from all_objects group by owner object_type status;

  查看數據庫的版本

  Select version FROM Product_component_version

  Where SUBSTR(PRODUCT)=Oracle;

  查看數據庫的創建日期和歸檔方式

  Select Created Log_Mode Log_Mode From V$Database;

  捕捉運行很久的SQL

  column username format a

  column opname format a

  column progress format a

  select usernamesidopname

  round(sofar* / totalwork) || % as progress

  time_remainingsql_text

  from v$session_longops v$sql

  where time_remaining <>

  and sql_address = address

  and sql_hash_value = hash_value

  /

  查看數據表的參數信息

  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

  查看還沒提交的事務

  select * from v$locked_object;

  select * from v$transaction;

  查找object為哪些進程所用

  select

  pspid

  ssid

  sserial# serial_num

  susername user_name

  atype object_type

  sosuser os_user_name

  aowner

  aobject object_name

  decode(sign( command)

  

  to_char(command) Action Code # || to_char(command) ) action

  pprogram oracle_process

  sterminal terminal

  sprogram program

  sstatus session_status

  from v$session s v$access a v$process p

  where spaddr = paddr and

  stype = USER and

  asid = ssid and

  aobject=SUBSCRIBER_ATTR

  order by susername sosuser

  回滾段查看

  select rownum sysdba_rollback_segssegment_name Name v$rollstatextents

  Extents v$rollstatrssize Size_in_Bytes v$rollstatxacts XActs

  v$rollstatgets Gets v$rollstatwaits Waits v$rollstatwrites Writes

  sysdba_rollback_segsstatus status from v$rollstat sysdba_rollback_segs

  v$rollname where v$rollnamename(+) = sysdba_rollback_segssegment_name and

  v$rollstatusn (+) = v$rollnameusn order by rownum

  耗資源的進程(top session)

  select sschemaname schema_name decode(sign( command)

  to_char(command) Action Code # || to_char(command) ) action status

  session_status sosuser os_user_name ssid pspid sserial# serial_num

  nvl(susername [Oracle process]) user_name sterminal terminal

  sprogram program stvalue criteria_value from v$sesstat st v$session s v$process p

  where stsid = ssid and ststatistic# = to_number() and (ALL = ALL

  or sstatus = ALL) and paddr = spaddr order by stvalue desc pspid asc susername asc sosuser asc

  查看鎖(lock)情況

  select /*+ RULE */ lsosuser os_user_name lsusername user_name

  decode(lstype RW Row wait enqueue lock TM DML enqueue lock TX

  Transaction enqueue lock UL User supplied lock) lock_type

  oobject_name object decode(lslmode null Row Share

  Row Exclusive Share Share Row Exclusive Exclusive null)

  lock_mode oowner lssid lsserial# serial_num lsid lsid

  from sysdba_objects o ( select sosuser susername ltype

  llmode ssid sserial# lid lid from v$session s

  v$lock l where ssid = lsid ) ls where oobject_id = lsid and oowner

  <> SYS order by oowner oobject_name

  查看等待(wait)情況

  SELECT v$waitstatclass v$unt count SUM(v$sysstatvalue) sum_value

  FROM v$waitstat v$sysstat WHERE v$sysstatname IN (db block gets

  consistent gets) group by v$waitstatclass v$unt

  查看sga情況

  SELECT NAME BYTES FROM SYSV_$SGASTAT ORDER BY NAME ASC

  查看catched object

  SELECT owner name db_link namespace

  type sharable_mem loads executions

  locks pins kept FROM v$db_object_cache

  查看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

  查看object分類數量

  select decode (otype#INDEX TABLE CLUSTER VIEW

  SYNONYM SEQUENCE OTHER ) object_type count(*) quantity from

  sysobj$ o where otype# > group by decode (otype#INDEX TABLE

   CLUSTER VIEW SYNONYM SEQUENCE OTHER ) union select

  COLUMN count(*) from l$ union select DB LINK count(*) from

  按用戶查看object種類

  select uname schema sum(decode(otype# NULL)) indexes

  sum(decode(otype# NULL)) tables sum(decode(otype# NULL))

  clusters sum(decode(otype# NULL)) views sum(decode(otype#

  NULL)) synonyms sum(decode(otype# NULL)) sequences

  sum(decode(otype# NULL NULL NULL NULL NULL NULL ))

  others from sysobj$ o sysuser$ u where otype# >= and uuser# =

  oowner# and uname <> PUBLIC group by uname order by

  syslink$ union select CONSTRAINT count(*) from n$

  有關connection的相關信息

  )查看有哪些用戶連接

  select sosuser os_user_name decode(sign( command) to_char(command)

  Action Code # || to_char(command) ) action pprogram oracle_process

  status session_status sterminal terminal sprogram program

  susername user_name sfixed_table_sequence activity_meter query

   memory max_memory cpu_usage ssid sserial# serial_num

  from v$session s v$process p where spaddr=paddr and stype = USER

  order by susername sosuser

  )根據vsid查看對應連接的資源占用等情況

  select nname

  vvalue

  nclass

  nstatistic#

  from v$statname n

  v$sesstat v

  where vsid = and

  vstatistic# = nstatistic#

  order by nclass nstatistic#

  )根據sid查看對應連接正在運行的sql

  select /*+ PUSH_SUBQ */

  command_type

  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

  sysdate start_time

  sysdate finish_time

  > || address sql_address

  N status

  from v$sqlarea

  where address = (select sql_address from v$session where sid = )

  .查詢表空間使用情況

  select atablespace_name 表空間名稱

  round((nvl(bbytes_free)/abytes_alloc)*) 占用率(%)

  round(abytes_alloc//) 容量(M)

  round(nvl(bbytes_free)//) 空閒(M)

  round((abytes_allocnvl(bbytes_free))//) 使用(M)

  Largest 最大擴展段(M)

  to_char(sysdateyyyymmdd hh:mi:ss) 采樣時間

  from (select ftablespace_name

  sum(fbytes) bytes_alloc

  sum(decode(fautoextensibleYESfmaxbytesNOfbytes)) maxbytes

  from dba_data_files f

  group by tablespace_name) a

  (select ftablespace_name

  sum(fbytes) bytes_free

  from dba_free_space f

  group by tablespace_name) b

  (select round(max(fflength)*/) Largest

  tsname tablespace_name

  from sysfet$ ff sysfile$ tfsysts$ ts

  where tsts#=ffts# and fffile#=tfrelfile# and tsts#=tfts#

  group by tsname tfblocks) c

  where atablespace_name = btablespace_name and atablespace_name = ctablespace_name

   查詢表空間的碎片程度

  select tablespace_namecount(tablespace_name) from dba_free_space group by tablespace_name

  having count(tablespace_name)>;

  alter tablespace name coalesce;

  alter table name deallocate unused;

  create or replace view ts_blocks_v as

  select tablespace_nameblock_idbytesblocksfree space segment_name from dba_free_space

  union all

  select tablespace_nameblock_idbytesblockssegment_name from dba_extents;

  select * from ts_blocks_v;

  select tablespace_namesum(bytes)max(bytes)count(block_id) from dba_free_space

  group by tablespace_name;

  查詢有哪些數據庫實例在運行

  select inst_name from v$active_instances;


From:http://tw.wingwit.com/Article/program/Oracle/201311/16799.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.