Fish and chips

Несколько мелких улучшений в работе администратора СУБД: установка клиента, GUI, настройка ssh  и т.п.  Буду благодарен если в комментариях сообщите о своих улучшениях для каждодневной работы




Instant Client. На моем рабочем месте мне не нужен клиент весом 500 Mb - мне нужен по большей части sqlplus. Oracle предоставляет возможность скачать instant client (basic + sqlplus) в котором есть все что нужно. Все файлы лежат в одной директории. Но оказалось что glogin.sql (то что автоматические запускается после того как вы запустили sqlplus) у меня не заработал. Решив, что это кривизна моих рук, я так же расстроился от отсуствия tnsping. Вот это меня напрягла окончательно и я выдрал tnsping из полного клиента а заодно пришлось и создать неколько директорий

ls -lR
total 0
drwxr-xr-x   5 dsvolk  admin  170 16 Feb 15:48 bin
drwxr-xr-x  13 dsvolk  admin  442 16 Feb 15:45 lib
drwxr-xr-x   4 dsvolk  admin  136 16 Feb 15:48 network
drwxr-xr-x   3 dsvolk  admin  102 16 Feb 15:48 sqlplus

./bin:
total 120
-rwxr-xr-x@ 1 dsvolk  admin  12612 25 Mar  2009 sqlplus
-rwxr-xr-x@ 1 dsvolk  admin  17284  7 Mar  2008 tnsping
-rwxr-xr-x@ 1 dsvolk  admin  21824  7 Mar  2008 trcroute

./lib:
total 200768
-r--r--r--@ 1 dsvolk  admin   1609607  2 Feb  2008 classes12.jar
-rwxr-xr-x@ 1 dsvolk  admin     30556  1 Apr  2009 genezi
-rwxr-xr-x@ 1 dsvolk  admin  21537536 31 Mar  2009 libclntsh.dylib.10.1
-rwxr-xr-x@ 1 dsvolk  admin   1683924 11 Feb  2009 libnnz10.dylib
-rwxr-xr-x@ 1 dsvolk  admin   1142284 11 Feb  2009 libocci.dylib.10.1
-rwxr-xr-x@ 1 dsvolk  admin  72626824  1 Apr  2009 libociei.dylib
-rwxr-xr-x@ 1 dsvolk  admin    106184 25 Mar  2009 libocijdbc10.dylib
-rwxr-xr-x@ 1 dsvolk  admin    106184 25 Mar  2009 libocijdbc10.jnilib
-rwxr-xr-x@ 1 dsvolk  admin    933744 25 Mar  2009 libsqlplus.dylib
-rwxr-xr-x@ 1 dsvolk  admin   1442316 11 Feb  2009 libsqlplusic.dylib
-r--r--r--@ 1 dsvolk  admin   1555682  2 Feb  2008 ojdbc14.jar

./network:
total 0
drwxr-xr-x  3 dsvolk  admin  102 16 Feb 15:48 admin
drwxr-xr-x  4 dsvolk  admin  136 16 Feb 15:29 mesg

./network/admin:
total 8
-rw-r--r--  1 dsvolk  admin  928 10 Feb 16:51 tnsnames.ora

./network/mesg:
total 576
-rw-r--r--@ 1 dsvolk  admin   47104 16 Feb 15:29 tnsus.msb
-rw-r--r--@ 1 dsvolk  admin  243597 16 Feb 15:29 tnsus.msg

./sqlplus:
total 0
drwxr-xr-x  3 dsvolk  admin  102 16 Feb 15:49 admin

./sqlplus/admin:
total 8
-rw-r-----  1 dsvolk  staff  1805  7 Feb 12:29 glogin.sql



Заработал и tnsping и glogin.




Установил rlwrap. Во первых позволяет отредактировать  ошибки синтаксиса, во вторых по ctrl-R позволяет искать ранее набранные команды. И установить rlwrap можно даже под Windows.

alias sqlplus='rlwrap -f ~/.sqlplus_completions sqlplus'

Тут надо быть внимательным если вы захотите запускать неинтерактивные скрипты. Возможно лучше всего сделать alias sqlp, а не sqlplus.

Настроил GUI.  Сколько я не пытался играть с Oracle SQL Developer у меня ничего не вышло. Он  в силу бесплатности весьма хорош для разработки, но вот для администрирования не походит. Не тороплив и на нескольких платформах у меня был весьма не стабилен. Мой выбор - для Windows - это Pl/SQL Developer, для Unix - Emacs + sqlplus mode. Картинку вы видете в этом сообщении. Основное - позволяет выделить кусок буфера и выполнить. Буквально каждое действие можно настроить самому правда это все достаточно долго если вы не пишите на lisp.

Ну и наверно основное - настройка ssh. Разложить ключи может каждый. Но так же оказалось что если вы не работаете в каком-то окне произойдет timeout. На Windows  в Putty это решается с помощью установки параметра сесии, после того как сессия открылась и запомнить мне это поведение не удалось, на Unix рекомендуется поправить настройки ssh.


dsvolk$ cat .ssh/config
TCPKeepAlive yes
ServerAliveCountMax 999999
ServerAliveInterval 10

Это конечно поможет только если timeout VPN клиента гораздо больше. Последний Cisco VPN под Windows исключительно надежен, а вот для Mac OS родной клиент подводит...


В любом случае, доверять надежности канала нельзя, поэтому все запускается только с nohup:

nohup sqlplus /nolog @my.sql  >my.out 2>1&

После этого я всегда даю команду disown (я не знаю надо или нет, я всегда так делаю).

Да, если вы случайно запустили скрипт и он выполняется гораздо дольше чем вы рассчитывали, можно без остановки скрипта  послать его в background и "отцепиться" (disown) от терминала. Прочитать можно например здесь.

7 комментариев:

  1. Я очень долго боялся команды screen, но когда освоил её - получил очень много удовольствия.
    На некоторых серверах screen -R у меня стоит в .bashrc - никаких tcp timeouts и много терминалов (для putty), приличная "история вывода" - можно листать очень далеко, возможность переключать сессию с одного физического терминала на другой, даже разных размеров!!!
    Короче - must have!

    ОтветитьУдалить
  2. Об "обработке напильником" Instant Client неплохо описано в презентации http://www.nyoug.org/Presentations/2007/200703_Ji_Instant%20Client.pdf
    В Instant Client работает login.sql после установки переменной SQLPATH.
    Ну и +много к screen.

    ОтветитьУдалить
  3. Анонимный8/3/11 3:23 PM

    Поствил на мак crossover и запускаю там plsql developer и toad(лагает, но пашет).
    Как таковое, все oracle gui для мака довольно убогие...

    ОтветитьУдалить
  4. Да, screen выглядит очень прилично, единственная проблема - не все заказчики захотят что-то устанавливать у себя (если этот пакет уже не стоит). Но каюсь, я не недооценивал эту возможность.

    ОтветитьУдалить
  5. Анонимный15/3/11 11:47 AM

    Обратите внимание, что rlwrap падает, если вы в строке соединения не указали пароль и sqlplus предлагает его ввести на этапе соединения. Может конечно это можно как-то обойти и я об этом не знаю...

    ОтветитьУдалить
  6. Анонимный1/4/11 11:29 AM

    А утилиты exp/imp, получилось добавить в клиент? Если да то каким образом?

    ОтветитьУдалить
  7. screen ацтой. В нём не работает Ctrl-A. По этой причине он был послан на йюх.

    ОтветитьУдалить