Skip to content

Instantly share code, notes, and snippets.

@xtender
Last active August 29, 2015 13:59
Show Gist options
  • Save xtender/71aecdd0658e0f9eef24 to your computer and use it in GitHub Desktop.
Save xtender/71aecdd0658e0f9eef24 to your computer and use it in GitHub Desktop.

xt_scripts

Вспомогательные скрипты для SQL*Plus

Установка

Для удобной и корректной работы скриптов нужно:

  1. Скопировать папку к себе в любую директорию(или получить с помощью git clone http://src.orasql.org/root/xt_scripts.git). При этом очень удобно подмонтировать эту папку как отдельный диск. Например, я обычно создаю и добавляю в автозагрузку файл mount_disc.bat в котором эта директория монтируется как диск S

    @echo off
    cd c:\oracle\11.2.0\client_1\scripts\
    subst s: .
    
  2. Затем путь к ней(или к диску) прописываем в реестре в ветке клиента оракла или в переменных средах.(Этот пункт не обязательный, если запускать SQL*Plus из директории скриптов.)

    • Если в реестре, то это будет ветка вроде HKLM\SOFTWARE\ORACLE\KEY_OraClient11g_home1 В ней нужно будет создать строковую переменную SQLPATH с этим путем. Например, если это диск S:, то пишем S:\
    • Если через "переменные среды", то нужно будет создать переменную с таким же именем(SQLPATH) и путем.
  3. Создать папки:

    c:\temp\sqlplus-tmp\
    c:\temp\spools\
    
  4. Добавить в конец файла c:\oracle\11.2.0\client_1\sqlplus\admin\glogin.sql строчки

    @inc/on_login_win.sql;
    @inc/on_login.sql;
    -- путь к любимому текстовому редактору:
    DEFINE _EDITOR  ="c:\Program Files\SciTE\SciTE.exe"
    
  5. Скопировать к себе директорию O:\DIT\software development\AnsiCon\ и установить программку запуском с параметром -i: ansicon.exe -i. Если этот пункт не выполнять, то тогда нужно будет заменить в glogin.sql строчку @inc/on_login.sql; на @inc/on_login_colors_off.sql;

  6. Перед запуском SQLPlus нужно настроить cmd: выполнить chcp 1251 и установить шрифт Lucida console. Шрифт можно установить однократно для всех окон cmd. Можно написать .bat-файл для запуска sqlplus такого вида:

    @echo off
    set NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
    S:
    start /B chcp 1251 > nul && sqlplus /NOLOG
    
  7. Если вы хотите пользоваться автодополнением в консоли, то можно установить Cygwin с утилитой rlwrap. Этот пункт я описывать не буду, т.к. он необязателен.

  8. Еще очень удобно пользоваться многооконными терминалами. Можете посмотреть и сравнить [ConEmu](http://www.pvsm.ru/programmirovanie/24024 Альтернативный терминал для Windows) или Console2 (тут или тут )

В принципе вы можете точно так же пользоваться этими скриптами и в командном окне PL/SQL developer'a.

Основные директории и скрипты

Имя файла описание
@sessions [маска [active]] Выводит текущие подключенные сессии. При вызове без параметров показывает все активные сессии, при вызове с первым параметром выводит сессии отфильтрованные по маске, включая простаивающие(idle) сессии, для показа только активных нужно добавить второй параметр.
@my_sessions Выводит все сессии с данного компьютера
@my_active Выводит все активные сессии с данного компьютера
@my_plan Выводит план выполняющегося в данный момент запроса из активной сессии с данного компьютера
@sqlid sqlid Выводит информацию о запросе, включая отформатированный текст запроса.
@text sqlid Выводит отформатированный текст запроса.
@textu sqlid Выводит неотформатированный текст запроса.
@plan sqlid [child_number [format]] Выводит реальные планы запроса.
@sql_stat sqlid Выводит краткую информацию о запросе
@binds sqlid Выводит все сохраненные binds-переменные запроса.
@ash sid n Выводит историю сессии по SIDу за N последних минут.
@snapper_sid interval count sid Показывает информацию о топе выполняющегося в сессии с данным SID, анализируя по "interval" секунд и count раз. Например, @snapper_sid 5 1 1234 выведет топ за 5 секунд в сессии с SID=1234.
@open_cursors sid Показывает курсоры указанной сессии
@find_sql mask Находит запросы по тексту
@find_code mask Находит pl/sql объекты по тексту
@rtsm/sid SID Выводит HTML-версию отчета real-time sql monitor'a о выполняющемся в указанной сессии
@rtsm/sqlid sqlid Выводит текстовую версию отчета real-time sql monitor'a о конкретном запросе
@rtsm/sqlid_html sqlid Выводит HTML-версию отчета real-time sql monitor'a о конкретном запросе
@rtsm/sqlid_exec sqlid exec_id Выводит HTML-версию отчета real-time sql monitor'a о конкретном запросе c конкретным ID выполнения
@rtsm/execs sqlid Выводит краткую информацию о выполнениях по конкретному sqlid, сохраненную real-time sql monitor'ом
@rtsm/binds sqlid Выводит бинд-переменные заданного запроса
@awr/sqlid sqlid Выводит информацию о запросе, когда-либо сохраненную в AWR.
@awr/plan sqlid Выводит реальные планы запроса, когда-либо сохраненные в AWR.
/* todo */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment