Программирование >>  Oracle 

1 ... 125 126 127 [ 128 ] 129 130 131 ... 469


Импорт и экспорт

JServer Release 8.1.6.0.0 - Production

Export done in WE8ISO8859P1 character set and WE8ISO8859P1 NCHAR character set

Dote: table data (rows) will not be exported

About to export transportable tablespace metadata...

For tablespace TTS EX1 . . .

. exporting cluster definitions

. exporting table definitions

. . exporting table EMP

. . exporting table DEPT

For tablespace TTS EX2 . . . . exporting cluster definitions . exporting table definitions

. exporting referential integrity constraints . exporting triggers

. end transportable tablespace metadata export Export terminated successfully without warnings.

Обратите внимание на использование утроенных двойных кавычек для указания идентификатора пользователя в командной строке. В ОС UNIX придется маскировать еше и символ /. Чтобы избежать этого, можно дать указание утилите ЕХР запросить имя пользователя. Учтите также, что использована конструкция AS SYSDBA. Только пользователь SYSDBA (internal) может выполнять перенос в Oracle 8.1.6 и более новых версиях. В Oracle 8.1.5 б1ло достаточно роли DBA. (Обратите внимание: в SQL*Plus эта команда должна вводиться одной строкой. В представленном выше примере строка перенесена.)

Теперь осталось только скопировать файлы данных в другое место. Это можно делать параллельно с экспортированием, чтобы сократить время, в течение которого для пространств установлен режим только для чтения :

31> host S3CEY c:\orade\oradata\tkyte816\tts ex7.dbf c:\temp C:\orade\oradata\tkyte816\TTS EXl.DBF C:\oracle\oradata\tkyte816\TTS EX2.DBF 2 File(s) copied

SQI> alter tablespace tts ex1 read write; Tablespace altered.

SQL> alter tablespace tts ex2 read write; Tablespace altered.

Табличные пространства снова доступны для чтения и записи. Теперь можно перенести эти файлы и присоединить их к другой базе данных:

С:\ехр> imp file=expdat.drop userid=sys/manager as sysdba transport tablespace=y

datafiles=(c:\temp\tts exl.dbf,с:\temp\tts ex2.dbf) Import: Release 8.1.6.0.0 - Production on Mon Mar 19 19:26:39 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved.

Connected to: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production



Глава 8

With the Partitioning option

JServer Release 8.1.6.0.0 - Production

Export file created by EXPORT:V08.01.06 via conventional path About to import transportable tablespace(s) metadata...

import done in WE8ISO8859P1 character set and WE8ISO8859P1 NCHAR character set

. importing SYSs objects into SYS

. importing TTS JSERs objects into TTS USER

. importing table EMP

. importing table DEPT

Import terminated successfully without warnings.

SQL> update emp set ename=lower(ename); update emp set ename=lower(ename)

ERROR at line 1:

ORA-00372: file 9 cannot be modified at this time ORA-01110: data file 9: C:\TEMP\TTS EX1.DBF1

SQL> alter tablespace tts exl read write; Tablespace altered.

SQL> alter tablespace tts ex2 read write; Tablespace altered.

SQL> update emp set ename=lower(ename); 14 rows updated.

Вот и все, файлы присоединены к базе данных. Последний шаг показывает, что они присоединяются в режиме READ ONLY (это логично, поскольку при переносе для них б]л установлен режим только для чтения ). После присоединения может потребоваться изменить режим доступа к ним. Если вы хотите проверить эту процедуру в одной базе данных, можете выполнить следующие или аналогичные команды в базе данных после перевода табличных пространств обратно в режим READ WRITE, но перед импортированием:

SQL> drop tablespace tts exl including contents; Tablespace dropped.

SQL> drop tablespace tts ex2 including contents; Tablespace dropped.

SQL> host erase c:\oracle\oradata\tkyte816\tts ex7.dbf

Именно так я сбрасываю базу данных для тестирования. Я переношу первоначальную тестовую базу данных перед тестированием, а когда необходимо сбросить изменения, удаляю существующие табличные пространства и снова присоединяю первоначальную базу данных.

Переносимые табличные пространства можно также использовать для ручного восстановления табличного пространства на определенный момент времени. Предположим, вы случайно удалили таблицу. Можно восстановить табличные пространства SYSTEM, ROLLBACK и затронутое табличное пространство на другой машине. Эта мини-база дан-



Импорт и экспорт 415

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

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

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

перевести табличное пространство в режим чтения и записи в исходной базе дан-

ных;

выполнить необходимые изменения;

перевести табличное пространство в режим только для чтения ;

экспортировать метаданные и снова импортировать их в другую базу данных.

Если табличное пространство используется несколькими базами данных, оно должно быть доступно в режиме только для чтения .

Получение операторов ЯОД

Утилиту ЕХР можно использовать для получения большей части операторов ЯОД, формирующих базу данных. Это уже было продемонстрировано в главе 6, где я использовал ЕХР и IMP для получения детального оператора CREATE TABLE.

Есть два способа получить операторы ЯОД: SHOW=Y и INDEXFILE = имя фай-ла. Я всегда рекомендую использовать параметр INDEXFILE, а не SHOW=Y. Последний параметр предназначен для отображения действий утилиты ЕХР при реальном экспортировании. Формат выдаваемых результатов такой, что в исходном виде они бесполезны: зачастую в самых неподходящих местах операторы ЯОД переносятся на следующую строку и вставляются двойные кавычки. Кроме того, нет четкого разделения команд. Параметр SHOW = Y хорошо подходит как последнее средство восстановления хотя бы части операторов ЯОД, если другие способы недоступны. Ниже мы сравним результаты использования этих параметров, и вы поймете, почему надо использовать INDEXFILE.

Задав параметр INDEXFILE, можно воссоздать в файле сценария большую часть операторов ЯОД, формирующих схему. Например, если начать так:

tkyte@TKYTE816> create table tl (x int primary key, у int) ; Table created.



1 ... 125 126 127 [ 128 ] 129 130 131 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика