Копирование файлов в 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).
Копировать двоичные файлы можно с использованием сервера баз данных, полностью минуя операционную систему. Пакет 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. Для этого потребуется выполнить следующие шаги.
- Создайте объект исходного каталога, указывающий на исходный каталог (source_dir):
- Создайте объект целевого каталога, указывающий на целевой каталог (dest_dir):
- Воспользуйтесь процедурой COPY_FILE для копирования файла example.txt (DESTINATION_FILE_NAME) из исходного каталога в целевой (при желании, изменив его имя в процессе копирования):
Если теперь заглянуть в целевой каталог (/u01/app/oracle/test), там будет находиться копия исходного файла из исходного каталога (/u01/app/oracle).
Совет. Чтобы выполнить процедуру DBMS_FILE_TRANSFER.COPY_FILE, необходимо иметь привилегию READ в исходном каталоге и привилегию WRITE — в целевом.
Новый мастер 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\ — путь, где будет хранится перемещаемое табличное пространство на целевой базе данных
Теперь можно подключать набор табличных пространств к целевой БД
Читайте также: