SQLT 概要和安裝

pxbibm發表於2020-03-16



主要方法
特殊方法
高階方法和模組

SQLT 概覽

SQLTXPLAIN,也稱為  SQLT,是 Oracle Server Technologies Center of Expertise - ST CoE 提供的一款工具。  SQLT  主要方法 透過輸入的一個 SQL 語句,可輸出一組診斷檔案。這些檔案通常用於診斷效能不佳或者產生錯誤結果的 SQL 語句。

對於sql語句的調優,SQLT 需要您有一些專業的知識來進行分析。對於許多問題來說我們推薦首先使用SQL Health Check 來檢查您的SQL,假如不能解決再嘗試使用SQLT。SQLHC的詳細介紹請看:

Document 1366133.1 SQL Tuning Health-Check Script (SQLHC)

一旦 安裝,便可透過向  SQLT 傳遞一個包含 SQL 語句指令碼(包括繫結變數)的文字檔案或者其  SQL_ID,對 SQL 語句進行分析。SQL_ID 可在 AWR 和 ASH 的報告中找到,HASH_VALUE 出現在 SQL_TRACE 的輸出中(SQL 文字的上面以"hv="的標誌來識別)。您也能在 V$SQL 檢視中發現這些欄位。請參照接下來的文件:

Document 1627387.1 How to Determine the SQL_ID for a SQL Statement

SQLT  主要方法 會連線到資料庫,收集執行計劃、基於成本的 Optimizer CBO 統計資訊、Schema 物件後設資料、效能統計資訊、配置引數和會影響正在分析的 SQL 效能的其他元素。這些方法會對有問題的SQL_ID產生一攬子輸出,包括一個html格式的"main"報表。關於如何使用"main"報表,您可以參考下面的文件:

Document 1922234.1 SQLT Main Report: Usage Suggestions

SQLT 可以使用 Oracle Diagnostic 和(或)Oracle Tuning Packs,前提是您的資料庫需要具有這兩個軟體包的許可證。這兩個軟體包向  SQLT 工具提供了增強的功能。在  SQLT 安裝期間,您可以指定是否其中一個軟體包在您的資料庫被授權使用。如果一個都沒有, SQLT 仍會提供一些基本資訊,用於最開始的 SQL 效能診斷。


安全模式

SQLT 在  安裝的過程中會建立兩個使用者和一個角色。這些使用者和角色的名字都是固定的。

SQLT repository 是由使用者  SQLTXPLAIN管理的。 SQLT 的使用者每次使用  SQLT 提供的 主要方法時都要提供  SQLTXPLAIN 的密碼。  SQLTXPLAIN 使用者被賦予了以下系統許可權:

  • CREATE SESSION
  • CREATE TABLE

SQLT 包含的 PL/SQL 程式包以及檢視都是由使用者  SQLTXADMIN 管理的。 SQLTXADMIN 使用者處於鎖定狀態並且由一個隨機產生的密碼保護。 SQLTXADMIN 使用者被賦予了以下系統許可權:

  • ADMINISTER SQL MANAGEMENT OBJECT
  • ADMINISTER SQL TUNING SET
  • ADVISOR
  • ALTER SESSION
  • ANALYZE ANY
  • SELECT ANY DICTIONARY
  • SELECT_CATALOG_ROLE

所有  SQLT 的使用者在使用  SQLT 提供的 主要方法之前必須被賦予  SQLT_USER_ROLE 這個角色。 SQLT_USER_ROLE 角色被賦予了以下系統許可權:

  • ADVISOR
  • SELECT_CATALOG_ROLE

12c 在預設情況下 SYS 使用者不能作為  SQLT 的使用者,因為 PL/SQL 安全模型上改變的原因。
為了處理這個改變, SQLTADMIN 需要在 SYS 上被授予  INHERIT PRIVILEGES 許可權。
GRANT INHERIT PRIVILEGES ON USER SYS TO SQLTXADMIN
更多詳細的內容請參見 Oracle? Database PL/SQL Language Reference 12c Release 1 (12.1) - Invoker's Rights and Definer's Rights (AUTHID Property) and in Oracle? Database Security Guide 12c Release 1 (12.1) - Managing Security for Definer's Rights and Invoker's Rights


安裝  SQLT

SQLT 安裝在其自己的 schema  SQLTXPLAIN 和  SQLTXADMIN 下。它不會將任何物件安裝到應用程式 schema 中。您可以在 UNIX、Linux 或 Windows 平臺,Oracle DB 10.2、11.1、11.2 及更高版本中安裝此版本的 SQLT。對於所有“應用於:”的資訊,請參照文件215187.1。

安裝步驟:

  1. 解除安裝先前版(可選)。
  2. 該可選步驟將刪除所有廢棄的  SQLTXPLAIN/SQLTXADMIN schema 物件,併為全新安裝準備環境。如果要保留 SQLT Repository 的現有內容,請跳過此步驟(推薦)。

    # cd sqlt/install
    # sqlplus / as sysdba
    SQL> START sqdrop.sql
  3. 以  SYS 身份連線資料庫並執行安裝指令碼  sqlt/install/sqcreate.sql
  4. # cd sqlt/install
    # sqlplus / as sysdba
    SQL> START sqcreate.sql

在安裝期間,系統將要求您輸入以下引數值:

  1. 可選連線識別符號(當安裝在一個可插拔資料庫上時是必須的)
  2. 在一些受限訪問的系統中,您可能需要指定連線識別符號,例如  @PROD。如果不需要連線識別符號,則不要輸入任何資料,只需單擊Enter鍵。什麼也不鍵入是最常使用的安裝方法。
    當安裝在一個可插拔資料庫上時連線識別符號是必須提供的。

  3. SQLTXPLAIN 密碼。
  4. 在大多數系統中區分大小寫。

  5. SQLTXPLAIN 預設表空間。
  6. 從可用的永久表空間列表中,選擇  SQLT Repository 的  SQLTXPLAIN 應使用的表空間。它必須具有 50MB 以上的可用空間。

  7. SQLTXPLAIN 臨時表空間。
  8. 從可用的臨時表空間列表中,選擇  SQLTXPLAIN 臨時操作和臨時物件應使用的表空間。

  9. 可選應用程式使用者。
  10. 這是發出要分析 SQL 語句的使用者。例如,在 EBS 系統上,指定為  APPS;在 Siebel 上,應指定為 SIEBEL;在 People Soft 上,應指定為  SYSADM。系統不會要求您輸入此使用者的密碼。也可以在安裝該工具後新增其他的  SQLT 使用者,方法為:授予他們角色  SQLT_USER_ROLE

  11. 授權的 Oracle Pack。(T,D 或 N)
  12. 可以指定  T 表示 Oracle Tuning; D 表示 Oracle Diagnostic,或  N 表示都沒有。如果選擇  T 或  D,SQLT 可以在它生成的診斷檔案中包含授權的內容。預設值為  T。如果選擇  N,SQLT 將只安裝限定的功能。

如果需要靜默安裝,可以使用下面三個選項來傳遞所有 6 個安裝引數:

  1. 在檔案中。
  2. 首先使用一個指令碼進行值的預先定義,類似於示例指令碼  sqlt/install/sqdefparams.sql。然後使用  sqlt/install/sqcsilent.sql,而不是  sqlt/install/sqcreate.sql

    # cd sqlt/install
    # sqlplus / as sysdba
    SQL> START sqdefparams.sql
    SQL> START sqcsilent.sql
  3. 命令列。
  4. 執行  sqlt/install/sqcsilent2.sql,而不是  sqlt/install/sqcreate.sql。前者以內嵌形式輸入 6 個安裝引數。

    # cd sqlt/install
    # sqlplus / as sysdba
    SQL> START sqcsilent2.sql '' sqltxplain USERS TEMP '' T
  5. 在 Oracle 內部安裝。
  6. 執行  sqlt/install/sqcinternal.sql,而不是  sqlt/install/sqcreate.sql。前者首先執行  sqlt/install/sqdefparams.sql,然後是  sqlt/install/sqcsilent.sql

    # cd sqlt/install
    # sqlplus / as sysdba
    SQL> START sqcinternal.sql

假如您需要更多關於安裝問題的幫助,您能從下面的論壇得到幫助:


解除安裝  SQLT

解除安裝  SQLT 會同時移除  SQLT Repository 以及所有  SQLTXPLAIN/SQLTXADMIN schema 物件。另外還會刪除  SQLTXPLAIN 和  SQLTXADMIN 使用者。要解除安裝  SQLT,只需以 SYS 身份連線,執行  sqlt/install/sqdrop.sql

# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqdrop.sql

升級  SQLT

如果在系統中已安裝先前版本的  SQLT,則可以將  SQLT 升級到其最新版本,同時部分保留現有  SQLT Repository 的一些物件。然後可以使用新遷移的  SQLT Repository 來恢復 CBO 統計資訊,或者在  SQLT 的新舊執行程式之間執行  COMPARE

要升級  SQLT,只需執行 安裝,而不用執行可選 解除安裝步驟。

如果升級失敗,可能是先前的  SQLT 版本太舊而無法升級。在這種情況下,請先繼續 解除安裝  SQLT,然後執行全新 安裝


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-2680518/,如需轉載,請註明出處,否則將追究法律責任。

相關文章