Как анализировать oracle файл дампа - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно проанализировать большой Oracle DMP файл. Пока у меня нет опыта работы с Oracle.

Я знаю, что база данных содержит информацию об определенных людях, например о человеке по имени Смит. Я не знаю, как структурирована база данных (какая таблица содержит какую информацию, есть ли триггеры, ...).

Пока я не знаю, какие таблицы мне нужно искать, лучший способ Я обнаружил, что для работы с файлами базы данных нужно использовать grep. Таким образом, я могу по крайней мере убедиться, что база данных действительно содержит имя «Смит». В конечном счете, я хотел бы иметь дамп SQL, который можно было бы просмотреть, отфильтровать и понять в текстовом редакторе.

Файл DMP был создан с помощью

expdp system / [PW] directory = [expdp_dir] dumpfile = [dumpfile.dmp] full = yes logfile = [logfile.log] reuse_dumpfiles = y

Я знаю, что имя Смит часто встречается в базе данных. Запуск grep -ai smith dumpfile.dmp возвращает много совпадений.

Для дальнейшего анализа базы данных я установил oracle -database и sqldeveloper-20.2.0.175.1842-x64. Я импортировал файл DMP с

impdp USERID = system / [PW] FULL = y FILE = [dumpfile.dmp]

Папка C:\app\[user]\oradata\orcl теперь содержит файлы SYSAUX01.DBF и SYSTEM01.DBF, среди прочих. Я подозреваю, что это файлы базы данных.

Команда grep -ai smith * .DBF не не возвращает какие-либо совпадения. Либо файлы SYSAUX01.DBF и SYSTEM01.DBF не являются базами данных, либо что-то не работает при импорте.

Используя SQL разработчик, я вхожу в систему со следующими данными:

Пользователь: системный Пароль: [PW] (= PW из команды expdp) SDI: orcl

В SQL разработчике Смита не нахожу. SQL разработчик отображает множество таблиц, большинство из которых кажутся пустыми, и я не понимаю ни одной из них. Я подозреваю, что эти таблицы не те, которые я ищу. Возможно, мне нужно войти в систему другим способом (другой пользователь, другой SDI?).

Я пытался экспортировать базу данных в файл дампа SQL, пробуя различные варианты, которые предоставляет разработчик SQL, но результат не содержит строки «Smith».

Что-то не так:

  1. Импорт ошибочный
  2. неправильный SDI
  3. Экспорт неисправен
  4. что-то еще

Что могло пойти не так в пути?

1 Ответ

1 голос
/ 05 августа 2020

В вашем вопросе много неправильных представлений.

  • Oracle Datapump - это утилита для базы данных, предназначенная для экспорта и импорта. Но содержимое, будь то команды DDL (например, создание таблицы, создание индекса) или данные из таблиц, хранятся как двоичные, поэтому вы не можете проверить содержимое этих файлов. Существуют варианты извлечения команд DDL из файла дампа и помещения их в сценарий.
  • Упомянутые вами файлы данных являются частью самой базы данных, они не имеют ничего общего с дампа данных. Не трогайте эти файлы
  • Я не знаю, что вы имеете в виду под «Smith», если вы имеете в виду схему, после импорта сделайте выбор над dba_users, ищущим поле username = ' SMITH '
  • Если вы имеете в виду поиск «Smith» как часть любой из этих таблиц, вам придется искать в любой отдельной таблице базы данных (кроме схем, принадлежащих Oracle) и каждое поле, представляющее собой строку
  • SDI, ничего не означает. Я предполагаю, что вы имели в виду SID или Oracle System ID, уникальный идентификатор для идентификации базы данных в определенной c среде

Нет ничего плохого. Я считаю, что проблема в том, что вы точно не знаете, что ищете.

Отметьте это

Пользователь / схема с именем SMITH

SQL> SELECT USERNAME FROM DBA_USERS WHERE USERNAME = 'SMITH' ;

Таблица в названии которого есть слово СМИТ (маловероятно)

SQL> SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME LIKE '%SMITH%' ;    
...