Добрый день, друзья! Столкнулся тут с необходимостью переезда базы данных Oracle. База крупная, нагруженная. Клиентов много. Потому используется через shared подключение. На новом сервере базу установили, но настроена она была на dedicated режим, который нам не подходит. Пришлось потратить не один час, чтобы разобраться, как же именно перевести в shared режим. В общем-то, всё просто.
Рубрика: Oracle
Импорт данных в другую схему
Сегодня мы поговорим о достаточно редкой ситуации — переносе данных из одной схемы в другую. Я столкнулся с такой ситуацией, когда потребовалось перенести данные из одной базы в другую. Схема во второй базе отличается от первой. Плюс ко всему, новая схема не пуста и перед заливкой данных надо её почистить. Итого, у нас три вопроса:
Оптимизация запросов в ORACLE при помощи плана выполнения
Сразу уточню, что описывать буду на примере использования фри утилиты OraDeveloper Studio. Почему? Потому что обычными запросами этого сделать не удалось, а времени и желания разбираться не было, раз уж есть способ проще. 😉 Итак, для чего это вообще нужно? Опишу вам конкретный пример, из-за которого я и был вынужден проводить оптимизацию.
Oracle. Комментарии в таблицах и ещё кое-что
В целях улучшения качества кода и структуры базы некоторые сознательные личности используют комментарии. Это хорошая практика, особенно если комментарии правильные. Прочесть комментарий в исходном коде не проблема, но как это сделать в Oracle? Обычный DESC или просмотр структуры таблицы в EMC здесь не помощники. Как быть? Использовать вот такие запросы:
1 2 |
column comments format a50 select table_name, comments from user_tab_comments where table_name like 'SOME%' |
для таблиц и
1 2 |
column comments format a50 select table_name, column_name, comments from user_col_comments where table_name like 'SOME%' |
row_number() и rank() в SELECT-запросах
Эти две функции в аналитическом режиме могут принести вам большую пользу. Рассмотрим пару примеров.
Как из оракла выгрузить всё желаемое?
Как и ожидалось, легко. Вот только нашлось решение почему-то далеко не сразу. Видимо, в прошлые разы не настолько хотелось. Или времени было слишком мало. Для выгрузки из оракла используется утилита expdp. Очень мощная и быстрая утилита, особенно если уметь пользоваться. 🙂 У этой утилиты есть два интересных параметра — EXCLUDE и INCLUDE. В первом параметре
Oracle. Убиение зависшей джобы
В очередной раз столкнулся с зависшими джобами (те, что DBMS_JOB). Перегружать оракл на сервере и поднадоело, и явно не лучший выход. Посему пришлось искать другие пути. Шеф подсказал, что можно убить сессию. Но как найти сессию? Оказалось, не так уж и сложно:
1 2 3 |
select djr.job, djr.sid, vs.serial# from dba_jobs_running djr left join v$session vs on vs.sid = djr.sid; |
Ищем в столбце job своего висельника, смотрим его sid/serial и расстреливаем на
ORACLE. ORA-12528
Сегодня была довольно странная ситуация. Для меня странная, ибо я не специалист в оракле, но, похоже, начинающий шаман. 🙂 В общем, суть такова. Передо мной стояла задача сменить режим базы обратно на noarchivelog (менял ранее на archivelog чтобы можно было создать горячий бэкап базы RMON’ом). Менять режим базы надо в состоянии mount, но не open.
ORACLE. Финты ушами. Заметка #3
Бывает так, что пользователи не могут подключиться к ораклу. Это может происходить, например по причине того, что база находится в не открытом состоянии. Или пользователь заблокирован (например, после жёсткой остановки оракла посредством команды shutdown abort). Перевод базы в состояние open:
1 2 3 |
shutdown immediate startup mount alter database open; |
Разблокирование пользователя:
1 |
ALTER USER "LOGIN" IDENTIFIED BY "PASSWORD" ACCOUNT UNLOCK; |
ORACLE. Финты ушами. Заметка #2
Так что же делать, если восстановление базы после поднятия бэкапа обнаруживает испорченные файлы?