(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Недокументированные утилиты Oracle. Часть1

Источник: all-oracle

Рекомендовано для:
  • 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_TYPE = 'PACKAGE BODY'
MINUS
SELECT OBJECT_NAME
FROM DBA_OBJECTS@ORACLE8I
WHERE OWNER = 'SYS' AND
      OBJECT_TYPE = '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. Из за их недокументированности немногие могут их использовать, но для человека знающего их назначение и как использовать, могут принести много пользы.

В следующей части будут рассмотрены некоторые скрытые параметры и их назначение. И помните, использование этих параметров может быть небезопасным.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 20.04.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Personal Edition Named User Plus License
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Standard Edition 2 Processor License
Quest Software. TOAD for SQL Server Xpert Edition
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Компьютерная библиотека: книги, статьи, полезные ссылки
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100