Восстановление из бэкапа базы Oracle
Восстановление базы данных Oracle из бэкапа может быть осуществлено несколькими способами.
1 способ
При восстановлении базы данных Oracle из бэкапа рекомендуется использовать данный способ. В данном случае необходимо выполнить следующие действия:
1. Запустить программу Toad for Oracle 11.6.
2. Подключиться под системным пользователем (по умолчанию уже сохранены параметры и пароль): Пользователь (User/Shema) – SYS, Тип подключения (Connect as) – SYSDBA.
Следует отметить, что в Oracle 12с для создания пользователя без префикса C## в имени может потребовать выполнить команду:
alter session set "_ORACLE_SCRIPT"=true.
3. Создать базу и пользователей запросом:
create user AIST1 identified by q1234567;
grant all PRIVILEGES to AIST1;
GRANT SELECT ON "SYS"."GV_$RESERVED_WORDS" TO AIST1;
GRANT SELECT ON "SYS"."V_$RESERVED_WORDS" TO AIST1 ;
где: AIST1 – название базы, q1234567 – пароль подключения.
И нажать на клавиатуре на клавишу F5.
5. Запустить командную строку (cmd) от имени администратора.
6. Выполнить запрос (данный запрос будет работать правильно в том случае, если совпадают имя бэкапа и базы данных):
impdp aist/q1234567@ORATEST schemas=Aist directory=dpump_aist dumpfile=aist.dmp logfile=aist1_imp.log
- где: impdp aist – импорт в базу;
- q1234567@ORATEST – коннект до базы;
- schemas=Aist – сессия;
- directory=dpump_aist – папка, из которой берется бэкап;
- dumpfile=aist.dmp – имя бекапа;
- logfile=aist_imp.log – лог создаётся сам;
- select * from dba_directories – просмотр директории из какой может восстанавливаться бекап.
7. Бэкап из другой schemas (то есть когда имя базы одно, а имя бэкапа другое):
impdp aist1/q1234567@ORATEST directory=dpump_aist dumpfile=aist.dmp logfile=aist1.log REMAP_SCHEMA=AIST:AIST1 TRANSFORM=oid:n:type
8. После восстановления необходимо зайти в созданную базу AIST1 с типом подключения Normal:
9. Выполнить запрос.
При восстановлении базы Oracle из backup оптимизируются индексы, но не совсем корректно. Например, изначально существуют 2 индекса: на (Первичный ключ) и второй сложный на (Первичный ключ, Любая колонка). После восстановления базы из бэкапа происходит оптимизация и индекс становится только 1: (Первичный ключ, Любая колонка) и привязывается к первичному ключу. Тем самым он становится индексом первичного ключа и его нельзя удалить без удаления первичного.
Изменить такое поведение при восстановлении с нашей стороны нет возможности, так как это особенности утилит экспорта/импорта Oracle.
1 2 3 4 5 6 7 8 9 10 11 | ALTER TABLE ORGANIZATIONITEM DROP PRIMARY KEY CASCADE ; DROP INDEX IX_ORGANIZATIONITEM_N2; ALTER TABLE ORGANIZATIONITEM ADD CONSTRAINT ORGANIZATIONITEM_PK PRIMARY KEY ( "Id" ); ALTER TABLE BASEMESSAGE DROP PRIMARY KEY CASCADE ; DROP INDEX BASEMESSAGEIDINDEX; ALTER TABLE BASEMESSAGE ADD CONSTRAINT BASEMESSAGE_PK PRIMARY KEY ( "Id" ); ALTER TABLE WORKFLOWINSTANCE DROP PRIMARY KEY CASCADE ; DROP INDEX IX_WORKFLOWINSTANCE_STATUS; ALTER TABLE WORKFLOWINSTANCE ADD CONSTRAINT WORKFLOWINSTANCE_PK PRIMARY KEY ( "Id" ); |
После выполнения сценария запустите систему ELMA.
2 способ
Данный способ восстановления базы данных рекомендуется использовать только в том случае, если не удалось восстановить базу первым способом. В данном случае необходимо выполнить следующие действия:
1. Запустить программу Toad for Oracle 11.6.
2. Подключиться под системным пользователем (по умолчанию уже сохранены параметры и пароль): Пользователь (User/Shema) – SYS, Тип подключения (Connect as) – SYSDBA.
Следует отметить, что в Oracle 12с для создания пользователя без префикса C## в имени может потребовать выполнить команду:
alter session set "_ORACLE_SCRIPT"=true;
3. Создать базу и пользователей запросом:
create user AIST1 identified by q1234567;
grant all PRIVILEGES to AIST1;
GRANT SELECT ON "SYS"."GV_$RESERVED_WORDS" TO AIST1;
GRANT SELECT ON "SYS"."V_$RESERVED_WORDS" TO AIST1;
где: AIST1 – название базы, q1234567 – пароль подключения.
И нажать на клавиатуре на клавишу F5.
4. Далее восстанавливаем из бэкапа в созданную базу Import - SQL “LoaderWizard:
5. Выбираем Import database (Imports the entire export file):
6. Нажимаем Далее(Next) и выбираем название базы Selectschema, куда будем импортировать. В нашем случае – это AIST1:
7. Нажимаем Далее(Next). На следующем шаге оставляем все по умолчанию.
8. Нажимаем Далее(Next) и выбираем путь до бэкапа.
9. Нажимаем Далее(Next) и на следующем шаге оставляем все по умолчанию.
10. Нажимаем Далее(Next). База будет долго восстанавливаться.
11. После восстановлени необходимо зайти в созданную базу AIST1 с типом подключения Normal:
12. Далее необходимо выполнить запрос.
При восстановлении базы Oracle из backup оптимизируются индексы, но не совсем корректно. Например, изначально существуют 2 индекса: на (Первичный ключ) и второй сложный на (Первичный ключ, Любая колонка). После восстановления базы из бэкапа происходит оптимизация и индекс становится только 1: (Первичный ключ, Любая колонка) и привязывается к первичному ключу. Тем самым он становится индексом первичного ключа и его нельзя удалить без удаления первичного.
Изменить такое поведение при восстановлении с нашей стороны нет возможности, так как это особенности утилит экспорта/импорта Oracle.
1 2 3 4 5 6 7 8 9 10 11 | ALTER TABLE ORGANIZATIONITEM DROP PRIMARY KEY CASCADE ; DROP INDEX IX_ORGANIZATIONITEM_N2; ALTER TABLE ORGANIZATIONITEM ADD CONSTRAINT ORGANIZATIONITEM_PK PRIMARY KEY ( "Id" ); ALTER TABLE BASEMESSAGE DROP PRIMARY KEY CASCADE ; DROP INDEX BASEMESSAGEIDINDEX; ALTER TABLE BASEMESSAGE ADD CONSTRAINT BASEMESSAGE_PK PRIMARY KEY ( "Id" ); ALTER TABLE WORKFLOWINSTANCE DROP PRIMARY KEY CASCADE ; DROP INDEX IX_WORKFLOWINSTANCE_STATUS; ALTER TABLE WORKFLOWINSTANCE ADD CONSTRAINT WORKFLOWINSTANCE_PK PRIMARY KEY ( "Id" ); |
После выполнения сценария запустите систему ELMA.