Exp - замітки dba

В силу деяких неприємностей з дисками виявилася зіпсована база і бекап (так, я знаю, що це epic fail, але база не дуже важлива і коли її втрату помітили, бекап вже застарів і його видалив скрипт).
Дивом зберігся тільки дамп, зроблений утилітою exp. Все було б непогано, але цей дамп теж виявився побитим. На імпорті однієї з таблиць сесія імпорту зависала надовго. На щастя, ця таблиця містила незначні дані (лог деяких операцій), від яких можна було безболісно відмовитися.
Отже, спробуємо полагодити файл дампа.

Як ми знаємо, класичний exp зберігає дані в полутекстовом форматі. Тому ніщо нам не завадить знайти визначення зіпсованої таблиці у файлі і вирізати його і всі дані цієї таблиці з дампа, використовуючи стандартні утиліти linux. Визначення таблиці передує рядком:

Тут ACT_HIST - ім'я нашої зіпсованої таблиці.

Отже, знайдемо номер рядка у файлі, де починається наша таблиця ACT_HIST: Continue reading »

Обидві утиліти експорту даних, exp і expdp мають параметр query. який дозволяє експортувати не всі рядки таблиці, а тільки ті, які потрапляють під умову. Біда в тому, що в цьому параметрі має використовуватися виключно умова WHERE. Це може привести до того, що план запиту, який буде використовувати exp / expdp виявиться вкрай неоптимальним, і експорт буде йти неприйнятно довго, хоча результуючий набір не такий вже великий.
Є цікавий спосіб змусити утиліту використовувати hint. тим самим вибирати оптимальний план виконання. Continue reading »

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

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

Для цього створимо файл build_parfile.sh з таким вмістом: Continue reading »

Відомо, що за допомогою утиліт exp / imp можна залити дамп в ту ж саму БД, через дублювання OID'ов. Крім того, якщо на цільовій базі ім'я табличного простору не збігається з ім'ям ТП на вихідної, то схему імпортувати не вийде.
Написав скрипт, який прибирає storage clause, tablespace clause, і OID для об'єктів у файлі дампа, створеного утилітою exp:
Continue reading »

Схожі статті