Недокументовані утиліти Oracle. Частина1, Інші СУБД, Бази даних, статті








Рекомендовано для:

  • Oracle Database 8i
  • Oracle Database 9i R1
  • Oracle Database 9i R2
  • Oracle Database 10g R1
  • Oracle Database 10g R2
  • Oracle Database 11g R1
 

Кожна нова версія Oracle несе нові приховані утиліти. Зазвичай вони використовуються розробниками, і ці утиліти залишають для екстреної підтримки. Багато з цих утиліт мають більші можливості.


Приховані утиліти це не ті, які фізично приховані в програмному забезпеченні Oracle. Як правило це виконувані файли або пакети PL / SQL, які недокументірованни або документація по яких складна для пошуку. Наприклад, деякі PL / SQL пакети які ніколи не завантажуються інсталятором Oracle, проте їх опис присутній в файлах операційної системи.


Основні директорії представляють інтерес:



  • $ ORACLE_HOME / bin – Містить бінарні виконувані файли використовуються сервером Oracle. Багато з прихованих утиліт розташовані тут.
  • $ ORACLE_HOME / plsql / demo – Ця директорія містить набір SQL скриптів свазанних з багатьма утилітами, включаючи dbms_profiler.
  • $ ORACLE_HOME / rdbms / admin – Ця директорія містить багато SQL скриптів використовуються для створення PL / SQL пакетів і необхідного оточення.
  • $ ORACLE_HOME / sqlplus / admin – Ця директорія містить скрипти використовуються автоматичним перетворенням та іншими утилітами.
  • $ ORACLE_HOME / otrace / admin – Це адміністраторська директорія для утиліт налагодження Oracle і діагностичних утиліт.
  • $ ORACLE_HOME / otrace / sysman – Ця директорія використовується утилітами, як oemctl і Oracle Management Server (OMS).
  • $ ORACLE_HOME / otrace / lib – Містить файли використовуються утилітою oerr.

Знаходження прихованих утиліт

Найпростіший шлях це знаходження нових пакетів між різними версіями. Наступний запит порівнює пакети між Oracle 8i і Oracle 9i, використовуючи посилання на базу даних:


SELECT OBJECT_NAME
FROM DBA_OBJECTS@ORACLE9I
WHERE OWNER = “SYS” AND
      OBJECT_ENGINE= “PACKAGE BODY”
MINUS
SELECT OBJECT_NAME
FROM DBA_OBJECTS@ORACLE8I
WHERE OWNER = “SYS” AND
      OBJECT_ENGINE= “PACKAGE BODY”;

Цей запит покаже всі пакети належать SYS які є в Oracle 9i, але відсутні в Oracle 8i.


Пошук прихованих виконуваних файлів

Для пошуку нових бінарних файлів порівнюються дві директорії в операційній системі і ігноруються збіги. Команда UNIX dircmp може використовуватися для цих цілей:


dircmp — s
/u01/aoracle/product/8.1.7/bin
/u01/oracle/product/9.0.3/bin


Порівнюються дві директорії, і ключ – s виключає збіги.


Приховані ініціалізацій параметри

Приховані ініцалізаціонние параметри можуть бути дуже небезпечні, тому що їх використання не документовано, але вони можуть бути дуже цінними, якщо знати як їх використовувати. Можна використовувати SQL * Plus для знаходження нових ініціалізацій параметрів в новій версії Oracle:


SELECT NAME
FROM V$PARAMETER@ORACLE9I
MINUS
SELECT NAME
FROM V$PARAMETER@ORACLE8I;


Кожна версія Oracle містить спеціальні, недокументовані ініціалізацій параметри. Ці параметри зазвичай використовуються в екстрених випадках і тільки за вказівкою адміністратора служби підтримки Oracle. Всі імена прихованих параметрів починається з підкреслення “_”, тому легко можна написати запит для отримання їх списку:


COLUMN PARAMETER        FORMAT A37
COLUMN DESCRIPTION FORMAT A30 WORD_WRAPPED
COLUMN “SESSION VALUE” FORMAT A10
COLUMN “INSTANCE VALUE” FORMAT A10
SET LINES 100
SET PAGES 0
SPOOL UNDOC.LIS
SELECT A.KSPPINM “Parameter”,
A.KSPPDESC “Description”,
B.KSPPSTVL “Session Value”,
C.KSPPSTVL “Instance Value”
FROM X$KSPPI A,
X$KSPPCV B,
X$KSPPSV C
WHERE A.INDX = B.INDX AND
A.INDX = C.INDX AND
A.KSPPINM LIKE “/_%” ESCAPE “/”;

Слід пам’ятати, що не кожен знає про недокументованих параметрах, і мало хто знає як їх використовувати. Oracle не дозволяє адміністраторам баз даних використовувати ці параметри без дозволу спеціалістів підтримки Oracle. Адміністратор повинен бути впевнений в застосуванні та використанні таких параметрів.


У багатьох випадках недокументовані параметри описані або в попередніх версіях або будуть описані в майбутньому. Звичайно використання недокументованих можливостей сильно ускладнене відсутністю документації.


Приховані подання V $

Уявлення V $ показиают новий функціонал всередині бази даних, і не всі уявлення описані в документації Oracle. Наступний запит дозволяє швидко знайти нові вистави:


SELECT VIEW_NAME
FROM V$FIXED_VIEW_DESCRIPTION@ORACLE9I
MINUS
SELECT VIEW_NAME
FROM V$FIXED_VIEW_DESCRIPTION@ORACLE8I;

Приховані системні події

З кожною версією Oracle, системні події та системна статистика змінюється. Наприклад, нижче представлений запит для показу відмінностей в статистиці між Oracle8i і Oracle9i:


SELECT DISTINCT NAME
FROM V$SYSSTAT
WHERE NAME LIKE “DBWR%”;
NAME
—————————————————————-
DBWR Flush object call found no dirty buffers
DBWR Flush object cross instance calls
DBWR buffers scanned
DBWR checkpoint buffers written
DBWR checkpoint write requests
DBWR checkpoints
DBWR cross instance writes
DBWR free buffers found
DBWR incr. ckpt. write requests
DBWR lru scans
DBWR make free requests
DBWR revisited being-written buffer
DBWR skip hot writes
DBWR summed scan depth
DBWR timeouts
DBWR transaction TABLE writes
DBWR undo block writes

Далі список отриманий в Oracle 9i:


SELECT DISTINCT NAME
FROM V$SYSSTAT
WHERE NAME LIKE “DBWR%”;
NAME
—————————————————————-
DBWR buffers scanned
DBWR checkpoint buffers written
DBWR checkpoints
DBWR cross instance writes
DBWR free buffers found
DBWR fusion writes
DBWR lru scans
DBWR make free requests
DBWR revisited being-written buffer
DBWR summed scan depth
DBWR transaction TABLE writes
DBWR undo block writes

Для визначення нових системних подій можна використовувати запит до подання V $ EVENT_NAME:


SELECT NAME
FROM V$EVENT_NAME@ORACLE9I
MINUS
SELECT NAME
FROM V$EVENT_NAME@ORACLE8I;

Недокументовані SQL хинти

Отримання списку хінтів для налаштування SQL досить складно. Список хінтів Oracle зберігається всередині виконуваних файлів, і ви можете отримати список використовуючи команди UNIX. В UNIX ви можете використовувати grep і strings для отримання їх безпосередньо з виконуваних файлів Oracle:


strings $ORACLE_HOME/bin/oracle > hints.lst


Для Oracle 9.0.2 отримаємо список із 124 значень, з них 57 недокументовані. Вони можуть бути використані при вирішенні проблем виконання SQL. Із за їх недокументірованності мало хто може їх використовувати, але для людини знає їх призначення і як використовувати, можуть принести багато користі.


В наступній частині будуть розглянуті деякі приховані параметри та їх призначення. І пам’ятайте, використання цих параметрів може бути небезпечним.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*