Копирование файлов в oracle

Обновлено: 07.07.2024

Перед выполнением 'холодного' резервного копирования все пользователи должны прекратить работу, а базу данных необходимо остановить с помощью Oracle Enterprise Manager или с помощью утилиты ORADIM ( oradim.exe ), расположенной в подкаталоге \Bin домашнего каталога Oracle, например:

<oracle_sid> - имя инстанса Oracle;

< password_sys > - пароль пользователя sys , заданный при создании инстанса.

После останова базы данных необходимо средствами операционной системы скопировать да диск или ленту следующие файлы:

Все файлы базы данных и табличные пространства, включая system, temp, и rollback/undo;

Перечень и расположение файлов базы данных можно посмотреть с помощью Oracle Enterprise Manager во вкладке = Administration = по ссылке Datafiles группы Storage (см. Рис. 2).

Управляющие файлы в текстовой и двоичной версии

Информация об управляющих файлах может быть получена с помощью следующего запроса в SQL PLUS:

или с помощью Oracle Enterprise Manager во вкладке = Administration = по ссылке Control Files группы Storage (см. Рис. 3).

Копия текстовой версии управляющего файла может быть получена с помощью следующего запроса:

где <имя файла> - имя файла, в который необходимо сохранить копию управляющего файла.

Файлы паролей Oracle, если они существуют

Файл паролей PWD<SID>.ora обычно расположен в подкаталоге \Database домашнего каталога Oracle.

Файлы параметров инициализации init<SID>.ora и sp-файл

Рис. 2 Файлы базы данных

Рис. 3 Управляющие файлы

Место расположения sp-файла можно посмотреть с помощью Oracle Enterprise Manager во вкладке = Administration = по ссылке All Initialization Parameters группы Database Configuration (см. Рис. 4).

Пути на каталоги, в которых хранятся журналы оповещений (damp-файлы) заданы в файле параметров init<SID>.ora в параметрах

Оперативные журналы повтора (redo log)

Перечень имеющихся групп redo log файлов можно посмотреть с помощью Oracle Enterprise Manager во вкладке = Administration = по ссылке Redo Log Groups группы Storage (см. Рис. 5).

Рис. 5 Redo Log файлы

Для просмотра имен и расположения самих файлов необходимо перейти на страницу каждой группы по ссылке в поле Group .

После завершения копирования необходимо стартовать базу данных с помощью Oracle Enterprise Manager или с помощью утилиты ORADIM ( oradim.exe ), например:

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

Работа с внешними файлами из Oracle SQL*Plus, команды GET, START, символы @ и @@, команды SAVE и SPOOL

В принципе, можно и не вызывать текстовый редактор операционной системы из SQL*Plus , а заранее написать код во внешнем редакторе и сохранить его в файле операционной системы. SQL*Plus позволяет работать с такими файлами: считывать их в буфер, запускать на выполнение, сохранять набранные в SQL*Plus команды в файле, а также записывать в файл результаты выполнения запросов.

Отметим, что во всех случаях SQL*Plus подразумевает, что для скрипта используется расширение sql . Если используется именно это расширение, его можно опускать. Если же расширение другое, потребуется указать имя файла вместе с расширением.

Для того, чтобы просмотреть из SQL*Plus код, который находится в файле на диске, можно использовать команду GET , например:

GET C :\ OracleScript . sql

Информация из файла C :\ OracleScript . sql будет загружена в буфер SQL*Plus (и выведена на экран).

Запустить на выполнение код из внешнего файла можно при помощи команды START . Можно также просто дописать символ @ к имени файла:

START C :\ OracleScript . sql

@ C :\ OracleScript . sql

Для запуска внешнего файла можно также использовать формат @@имя_файла. Отличие между применением одного символа At (@) и двумя символами At (@@) — в их поведении, когда полный путь к файлу скрипта не указан. Обычно при использовании двух символов @@ в ситуации, когда этой командой запускается один скрипт из другого скрипта, поиск второго скрипта будет производиться SQL*Plus в том же каталоге, в котором находится первый скрипт. Если же использовать один символ @, то поиск будет производиться в каталоге скриптов по умолчанию (зависит от операционной системы и установленных экземпляров Oracle ).

Сохранить содержимое буфера SQL*Plus в файле можно при помощи команды SAVE :

Для команды SAVE можно указать дополнительные параметры:

  • CREATE (по умолчанию) — создать новый файл;
  • REP ( REPLACE ) — заменить имеющийся на диске файл новым (если такого файла еще нет, он будет просто создан);
  • APP ( APPEND ) — дописать содержимое буфера SQL*Plus к файлу на диске, например:

SAVE c:\MyScript.sql APP

Часто возникает необходимость записать результаты выполнения запросов SQL*Plus в файл. Для этой цели используется команда SPOOL :

SPOOL C :\ ScriptResults . rpt

select * from emp

Для отключения вывода информации в файл используется команда SPOOL OFF .

Отметим некоторые моменты, связанные с перенаправлением вывода SPLPlus в файл:

· если расширение для файла не указано, по умолчанию SQL*Plus добавит расширение lst ;

· перенаправлять вывод можно не только в файл, но и на служебные устройства операционной системы (принтер, NULL ) и т.п.;

· при выводе информации в файл производится буферизация вывода. Поэтому не удивляйтесь, если непосредственно после выполнения запроса обнаружится, что его результаты в файл не добавились. Они будут добавлены полностью только после выполнения команды SPOOL OFF , закрытия SQL*Plus или других действий по очистке кэша результатов;

· команду SPOOL можно использовать для формирования результатов выполнения запросов в формате HTML ;

· отключить/включить вывод результатов на экран SQL*Plus можно при помощи команд SET TERMOUT ON / SET TERMOUT OFF .

Отметим, что запуск внешнего скрипта на выполнение и запись результатов во внешний файл можно осуществить и при помощи параметров командной строки SQL*Plus (см. раздел 1.2.2).

Илья Дергунов

Копирование файлов на сервере Oracle

Копировать двоичные файлы можно с использованием сервера баз данных, полностью минуя операционную систему. Пакет DBMS_FILE_TRANSFER позволяет копировать двоичные файлы на одном и том же сервере или передавать их между разными базами данных Oracle.

Требования к копированию файлов

Существуют некоторые условия, которые должны быть удовлетворены при использовании пакета DBMS_FILE_TRANSFER для копирования файлов.

  • Исходные файл должны быть того же типа, что и целевые файлы. То есть файлы в двух системах должны быть либо файлами операционной системы, либо файлами ASM.
  • Файлы не могут быть размером больше 2 Тбайт, и размер каждого должен быть кратен 512 байт.
  • Нельзя выполнять преобразование наборов символов при копировании файлов.
  • Потребуется выдать явные привилегии всем непривилегированным пользователям базы данных, прежде чем они смогут использовать файлы, переданные пакетом DBMS_FILE_TRANSFER .

Копирование файлов в локальной системе

Копирование файлов между каталогами одного и того же сервера выполняется с помощью процедуры COPY_FILE из пакета DBMS_FILE_TRANSFER . Предположим, что необходимо скопировать файл по имени example.txt из каталога /u01/app/oracle в каталог /u01/app/Oracle/dba. Для этого потребуется выполнить следующие шаги.

  1. Создайте объект исходного каталога, указывающий на исходный каталог (source_dir):
  2. Создайте объект целевого каталога, указывающий на целевой каталог (dest_dir):
  3. Воспользуйтесь процедурой COPY_FILE для копирования файла example.txt (DESTINATION_FILE_NAME) из исходного каталога в целевой (при желании, изменив его имя в процессе копирования):

Если теперь заглянуть в целевой каталог (/u01/app/oracle/test), там будет находиться копия исходного файла из исходного каталога (/u01/app/oracle).

Совет. Чтобы выполнить процедуру DBMS_FILE_TRANSFER.COPY_FILE, необходимо иметь привилегию READ в исходном каталоге и привилегию WRITE — в целевом.

Как скопировать файлы базы данных Oracle к себе или в другую базу

Новый мастер OEM Database Control Load Data Wizard автоматизирует процесс создания управляющих файлов SQL*Loader. Вы специфицируете файлы данных и предоставляете информацию о их структуре, в Load Data Wizard использует ее для автоматической генерации контрольного файла SQL*Loader, а также создания задания SQL*Loader для загрузки файла данных в базу.

Передача файла в другую базу

Пакет DBMS_FILE_TRANSFER позволяет пересылать копии файлов с сервера на удаленный сервер посредством процедуры PUT_FILE. Вы выполняете те же шаги, что описаны в предыдущем разделе, но используете дополнительный параметр DESTINATION_DATABASE, чтобы указать удаленный сервер:

Совет. Прежде чем использовать процедуру PUT_FILE для пересылки файлов на удаленный сервер, следует удостовериться в существовании в локальной базе связи удаленной базы данных.

Процедура PUT_FILE сначала читает указанный файл на локальном сервере, а затем создает копию этого файла на удаленном сервере, который указывается в параметре DESTINATION_DATABASE. Таким образом, исходный каталог находится на локальном сервере, а удаленный каталог — на удаленном сервере.

Процедура GET_FILE является аналогом процедуры PUT_FILE и позволяет копировать файлы с удаленного сервера на локальный сервер. В этой процедуре целевой каталог и целевой файл находятся на локальном сервере, а исходный файл и каталог — на удаленном сервере. Вот структура GET_FILE:

Привет хабровчане, в этой статье я расскажу о перемещаемых табличных пространствах(Transportable tablespaces) в Oracle 11g. Табличное пространство можно клонировать и затем включить в другую базу данных путем копирования, а также можно исключить из одной базы данных Oracle и включить в другую базу данных Oracle на той же платформе с помощью перемещения.

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

Работа с утилитами экспорта и импорта

Oracle Database позволяет копировать данные между базами данных, а также обмениваться ими с внешними файлами. Копирование осуществляется посредством экспорта и импорта.
Для осуществления данной задачи есть утилиты imp.exe и exp.exe

Переносимые табличные пространства

Оперативное предоставление разработчикам свежей копии данных производственной системы. Использование информации, публикуемой на неперезаписываемых носителях (CD-ROM, DVD и т.п.). Быстрое перемещение данных из оперативной системы в хранилище или в витрину данных.
Ускорение переноса информации достигается за счет замены ресурсоемких процессов экспорта-импорта или выгрузки-загрузки значительно более быстрым копированием файлов данных с одной вычислительной установки на другую.

Выбор самодостаточного набора табличных пространств

Существует ряд условий ограничивающих применение описываемой возможности.
Можно перемещать табличные пространства только между такими базами данных, которые:

1. Имеют одинаковый размер блока (db_block_size), созданы с одинаковой кодировкой (character set), в файлах инициализации (INIT.ORA) исходной и целевых баз данных параметр COMPATIBLE должен быть установлен в значение, работают на совместимых платформах одного и того же производителя оборудования.
Удовлетворение требований можно проверить, выполнив в исходной и целевой БД запрос:

Результаты запросов в исходной и целевой БД, должны быть одинаковые.

2. В целевой базе данных не должно быть табличного пространства с таким же именем, как у подключаемого.

3. Не поддерживается транспортировка: снапшотов и тиражируемых таблиц, функциональных индексов, локальных ссылок на объекты, доменных индексов.

4. Выбор самодостаточного набора табличных пространств
Самодостаточный набор табличных пространств – это совокупность табличных пространств, объекты которых не ссылаются на какие-либо объекты, не содержащиеся в данном наборе.
Для проверки самодостаточности удобно использовать процедуру TRANSPORT_SET_CHECK(для выполнения процедуры требуется роль EXECUTE_CATALOG_ROLE).

Результаты ее работы записываются во временную таблицу и их можно посмотреть через системное представление SYS.TRANSPORT_SET_VIOLATIONS:

Перенос набора табличных пространств

Сначала следует перевести табличные пространства в состояние READ ONLY(далее в тексте XXX — имя табличного пространства):

Затем с помощью утилиты EXP экспортируются метаданные словаря.
В командной строке следует изменить кодировку для корректного отображения информации.


oracle попросит ввести имя пользователя и пароль:
Имя пользователя: sys/system@orcl2012 as sysdba
orcl2012 – строка подключения к исходной БД.
TRANSPORT_TABLESPACE=Y — указывает, что выполняется экспорт метаданных транспортируемых табличных пространств, TABLESPACES=(USERS, USER_DATA, INDX) — задает список транспортируемых табличных пространств, TRIGGERS=Y – Экспортировать табличные триггеры (если указать N, то триггеры экспортироваться не будут) CONSTRAINTS=Y – Экспортировать ограничения целостности (при N не экспортируются ограничения типов PRIMARY KEY, UNIQUE, FOREIGN KEY и CHECK, однако ограничения NOT NULL экспортируются), GRANTS=Y – Экспортировать привилегии доступа к таблицам (N отменяет экспорт привилегий), FILE=exp_tts и log=exp_tts имя файла с данными и имя файла журнала экспорта.
После того как утилита успешно экспортирует метаданные на выходе будет файл с расширением .dmp.(exp_xxx.dmp)
После экспорта метаданных, можно перевести табличные пространства назад в состояние READ WRITE:

Подключение набора табличных пространств к целевой БД

Перед импортом, необходимо перенести данные от исходной базы данных к целевой:
Это можно сделать средствами ftp, командной строки или копированием средствами Windows.
Нужно копировать файл табличного пространства(.dbf) от исходной БД к целевой.
В командной строке.

\\server1\oradata\orcl\TS_XXX.dbf — путь к файлу перемещаемого табличного пространства на исходной базе данных
\\server2\oradata\orcl\ — путь, где будет хранится перемещаемое табличное пространство на целевой базе данных
Теперь можно подключать набор табличных пространств к целевой БД

Читайте также: