Янв 152014
 

С точки зрения usability незаменимая утилита SQL*Plus представляет собой насилие над пользователем, и к использованию человеком, хоть раз увидившим нормальный софт, написанный с использованием библиотеки readline, совершенно непригодна.
К счастью, существует великолепная утилита rlwrap. Она создаёт обёртку из readline для SQL*Plus, что позволяет нормально редактировать команды, искать по истории команд, и даже использовать автодополнение!
Просто установить rlwrap мало, его надо правильно приготовить. Об этом и будет статья.

Готовим rlwrap для SQL*Plus.

Continue reading »

Июн 172011
 

Иногда бывает, что нужно оценить размер некоторых таблиц в дампе, сделанном утилитой exp, но без импорта его в базу. Можно, конечно, сделать импорт с параметром show=y, но это не всегда удобно, т.к. imp в этом режиме показывает размеры таблиц в строках (а мы хотим в мегабайтах, к примеру), и требует подключения к базе данных, даже для имитации. Выход - написать свой скрипт для оценки размеров таблиц (прошу прощения за неряшливый код): Continue reading »

Май 252011
 

При настройке SQL*Net бывает нужно посмотреть трассировку утилиты tnsping. Чтобы сделать это, надо добавить в файл $ORACLE_HOME/network/admin/sqlnet.ora две строчки:

TNSPING.TRACE_LEVEL=SUPPORT
TNSPING.TRACE_DIRECTORY=/usr/oracle/coredump

Continue reading »

Май 112011
 

При копировании OID'ов (например, в целях создания тестового окружения или для резервирования) ORACLE рекомендует использовать утилиту ldifwrite, которая выгружает данные в файл формата LDIF.

Примерно так (нам нужно выгрузить всё содержимое): Continue reading »

Апр 052011
 

Если файлы данных у расположены на файловой системе, то скопировать их на другой сервер (например, в процессе создания standby или клонирования базы) не составит труда, например, расшарив каталог с файлами по NFS и скопировав файлы командой cp. Если же они расположены на raw devices, то процедура будет немного иной: Continue reading »

Мар 152011
 

В Solaris и HP-UX есть утилита iostat, которая позволяет посмотреть статистику ввода-вывода по дискам. Но если используется Veritas Volume Manager, то удобнее будет воспользоваться утилитой /usr/sbin/vxstat, т.к. она показывает статистику не только по дискам, но и по томам, субдискам, плексам, и т.д.

Вот, например, как можно посмотреть статистику ввода-вывода в группе test с использованием мегабайт вместо блоков в качестве единицы измерения: Continue reading »

Фев 282011
 

При создании дампа схемы с помощью утилиты exp иногда бывает нужно экспортировать не некоторые таблицы по списку, а все таблицы, кроме некоторого списка. При большом количестве таблиц в экспортируемой схеме удобно будет автоматизировать создание файла параметров (parfile) для exp.

Для этого создадим файл build_parfile.sh с таким содержимым: Continue reading »

Фев 112011
 

Часто при компиляции объектов в PL/SQL Developer можно получить ошибку "ORA-03114: not connected to ORACLE". На первый взгляд может показаться, что это локальный или сетевой сбой, но в alert log можно увидеть такие сообщения об ошибках:

Thu Feb 10 19:08:05 2011
Errors in file /usr/oracle/coredump/testdb_ora_3696.trc:
ORA-07445: exception encountered: core dump [ptmak()+372] [SIGSEGV] [Address not mapped to object] [0x000000010] [] []

Это баг, описанный на металинке: Doc ID 726611.1. Связан он с тем, что PL/SQL Developer добавляет отладочную информацию в код пакета, что иногда приводит к возникновению этой ошибки.
Возможных путей решения проблемы два: Continue reading »

Янв 262011
 

В состав Oracle Application Server входит утилита opmnctl, служащая для управления процессами, запуска/останова инстанса, и т.д. В целом, она дублирует возможности Enterprise Manager Console. Вот основные команды: Continue reading »

Янв 252011
 

Утилита DataPump появилась начиная с 10-й версии Oracle как замена устаревшим утилитам exp и imp в более ранних версиях. Она имеет больше возможностей, чем классические exp и imp, автоматически настраивает некоторые параметры, такие как размер буфера приёма/передачи, число потоков, etc. Одной из самых интересных возможностей DataPump является осуществление "перекачки" данных из одной базы данных в другую используя Database Link, что заметно упрощает импорт, если целевая и исходная базы находятся в одной сети.
Итак, задача: на исходной БД есть пользователь cube в табличном пространстве cube. Нужно перенести все объекты в новую базу в схему cube2 табличном пространстве cube2. Оба пользователя, исходный и целевой, не привилегированны.
Решение: Continue reading »