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) от терминала. Прочитать можно например здесь.
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) от терминала. Прочитать можно например здесь.
Я очень долго боялся команды screen, но когда освоил её - получил очень много удовольствия.
ОтветитьУдалитьНа некоторых серверах screen -R у меня стоит в .bashrc - никаких tcp timeouts и много терминалов (для putty), приличная "история вывода" - можно листать очень далеко, возможность переключать сессию с одного физического терминала на другой, даже разных размеров!!!
Короче - must have!
Об "обработке напильником" Instant Client неплохо описано в презентации http://www.nyoug.org/Presentations/2007/200703_Ji_Instant%20Client.pdf
ОтветитьУдалитьВ Instant Client работает login.sql после установки переменной SQLPATH.
Ну и +много к screen.
Поствил на мак crossover и запускаю там plsql developer и toad(лагает, но пашет).
ОтветитьУдалитьКак таковое, все oracle gui для мака довольно убогие...
Да, screen выглядит очень прилично, единственная проблема - не все заказчики захотят что-то устанавливать у себя (если этот пакет уже не стоит). Но каюсь, я не недооценивал эту возможность.
ОтветитьУдалитьОбратите внимание, что rlwrap падает, если вы в строке соединения не указали пароль и sqlplus предлагает его ввести на этапе соединения. Может конечно это можно как-то обойти и я об этом не знаю...
ОтветитьУдалитьА утилиты exp/imp, получилось добавить в клиент? Если да то каким образом?
ОтветитьУдалитьscreen ацтой. В нём не работает Ctrl-A. По этой причине он был послан на йюх.
ОтветитьУдалить