powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Восстановить пару таблиц в БД
16 сообщений из 16, страница 1 из 1
Восстановить пару таблиц в БД
    #40134344
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник такой вопрос.
Есть БД Oracle 10g, с которой каждый день делается бэкап (rman), а также экспорт данных (expdp).
Мне нужно восстановить пару таблиц из бэкапа в текущую БД под новым именем (и желательно в отдельную схему).
Дамп данных делается так:
Код: plaintext
expdp usr/pwd@db DUMPFILE=data.dmp DIRECTORY=EXTRA_DUMP_DIR SCHEMAS=usr CONTENT=ALL
Размер дампа около 50 ГБ, но мне нужно взять с него только небольшую часть данных, меньше 10 МБ.
Не подскажите, как это сделать?
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134348
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так?
Код: plaintext
impdp usr/pwd@db DUMPFILE=data.dmp DIRECTORY=EXTRA_DUMP_DIR SCHEMAS=usr CONTENT=ALL TABLES=usr.table1 REMAP_TABLE=usr.table1:table_copy
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134349
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую использовать файл параметров.

Код: powershell
1.
2.
3.
4.
5.
USERID=system/***@//localhost:1522/XE
DUMPFILE=DBOFFICE.dmp
DIRECTORY=backup
LOGFILE=db.import.log
TABLES=SUPERMAG.CLIENT_1C



REMAP_TABLE - да, верно.
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134352
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне скрипт удобнее тем, что можно задавать параметры в командной строке.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#!/bin/bash

. /home/oracle/.bash_profile

IMPDP=$ORACLE_HOME/bin/impdp
USR=usr
PSW=psw
DB=db
BASE=/extra/net/oracle/dump/
DDIR=EXTRA_DUMP_DIR

if [ -z $1 -o -z $2 ]; then
  echo "Usage: $0 <date> <table>"
  exit
fi

FILE="${USR}_${1}"
TBL=$2

if [ ! -f $BASE/$FILE.dmp.gz ]; then
  echo "Dump $FILE.dmp not found"
  exit
fi

if [ ! -f $BASE/$FILE.dmp ]; then
  echo Unpacking $FILE.dmp.gz...
  zcat $BASE/$FILE.dmp.gz > $BASE/$FILE.dmp
fi

echo Import $FILE.dmp...
echo $IMPDP $USR/$PSW@$DB DUMPFILE=$FILE.dmp DIRECTORY=$DDIR SCHEMAS=$USR CONTENT=ALL TABLES=$USR.$TBL REMAP_TABLE=$USR.$TBL:${TBL}_${1}
Так?

DIRECTORY должен быть физическим каталогом или строкой в dba_directories ?
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134355
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне скрипт удобнее тем, что можно задавать параметры в командной строке.

В файле параметров можно без маскирования писать, например, кавычки, как обычные, так и апостроф, что в командной строке сопряжено с дополнительными плясками.

DIRECTORY должен быть физическим каталогом или строкой в dba_directories ?

Неплохо бы читать help.


impdp help=y 2> 1

DIRECTORY
Directory object to be used for dump, log and SQL files.
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134360
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
impdp usr/psw@db DUMPFILE=usr_test.dmp DIRECTORY=EXTRA_DUMP_DIR CONTENT=ALL TABLES=usr.tmp_ll REMAP_TABLE=usr.tmp_ll:tmp_ll_test

LRM-00101: неизвестное имя параметра 'REMAP_TABLE'

А как-нибудь еще можно?

Или может быть есть утилиты, чтобы из dmp сгенерировать SQL-файл?
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134364
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал использовать REMAP_SCHEMA.
Создал пользователя BACKUP, в параметрах impdp указал REMAP_SCHEMA=usr:backup.
Получаю ошибки:
Код: plaintext
1.
ORA-31631: требуются полномочия
ORA-39122: Непривилегированные пользователи не могут изменять отображения REMAP_SCHEMA.

Можно ли пользователю usr дать полные права на схему backup?
Или нужно будет запускать импорт под учетной записью sys?
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134369
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приводите полный журнал.


Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
C:\ora18xe\dbhomeXE\bin>impdp system/qqq@XE DUMPFILE=DBOFFICE.dmp DIRECTORY=BACKUP TABLES=SUPERMAG.SMSTORELOCATIONS REMAP_TABLE=SM123

Import: Release 18.0.0.0.0 - Production on Tue Feb 15 20:42:37 2022
Version 18.4.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
UDI-00014: invalid value for parameter, 'remap_table'


impdp system/qqq@XE DUMPFILE=DBOFFICE.dmp DIRECTORY=BACKUP LOGFILE=import.log TABLES=SUPERMAG.SMSTORELOCATIONS REMAP_SCHEMA=SUPERMAG:SYSTEM


;;; 
Import: Release 18.0.0.0.0 - Production on Tue Feb 15 20:44:26 2022
Version 18.4.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
;;; 
Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Master table "SYSTEM"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
import done in AL32UTF8 character set and AL16UTF16 NCHAR character set
export done in CL8MSWIN1251 character set and AL16UTF16 NCHAR character set
Warning: possible data loss in character set conversions
Starting "SYSTEM"."SYS_IMPORT_TABLE_01":  system/********@XE DUMPFILE=DBOFFICE.dmp DIRECTORY=BACKUP LOGFILE=import.log TABLES=SUPERMAG.SMSTORELOCATIONS REMAP_SCHEMA=SUPERMAG:SYSTEM 
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE
ORA-39151: Table "SYSTEM"."SMSTORELOCATIONS" exists. All dependent metadata and data will be skipped due to table_exists_action of skip
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/INDEX
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/CONSTRAINT
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TRIGGER
Job "SYSTEM"."SYS_IMPORT_TABLE_01" completed with 1 error(s) at Tue Feb 15 20:45:17 2022 elapsed 0 00:00:49


...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134372
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не выходит каменный цветок.
Если запускаю под sys, то получаю ошибку ORA-28009: соединение в качестве SYS следует заменить на соединение в качестве SYSDBA или SYSOPER.
Как заменить на sysdba, так и не смог; impdp 'sys/sys@billing as sysdba' ... не работает.

И с отдельным пользователем backup тоже не выходит. Даже если дать роли EXP_FULL_DATABASE и IMP_FULL_DATABASE, то все равно ошибка:
Код: plaintext
1.
2.
3.
4.
5.
ORA-31626: задание не существует
ORA-31633: невозможно создать главную таблицу "BACKUP.SYS_IMPORT_TABLE_05"
ORA-06512: на  "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: на  "SYS.KUPV$FT", line 871
ORA-01950: нет привилегий на раздел 'USERS'

Даже если дать основному пользователю роли EXP_FULL_DATABASE и IMP_FULL_DATABASE (чего бы мне не хотелось), то все равно ошибки:
Код: plaintext
1.
2.
ORA-31631: требуются полномочия
ORA-39122: Непривилегированные пользователи не могут изменять отображения REMAP_SCHEMA.
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134374
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm
Приводите полный журнал.

В моей версии нет REMAP_TABLE, в справке этот параметр отсутствует.
Есть REMAP_SCHEMA, но с ним тоже не получается запустить, не хватает привилегий.
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134376
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Работайте под SYSTEM
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134377
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот из под system получилось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
impdp system/pwd@db DUMPFILE=$FILE.dmp DIRECTORY=$DDIR CONTENT=ALL TABLES=billing.$TBL REMAP_SCHEMA=billing:backup

Import: Release 10.2.0.4.0 - 64bit Production on Вторник, 15 Февраль, 2022 21:10:30

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Соединен с: Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
Главная таблица "SYSTEM"."SYS_IMPORT_TABLE_01" успешно загружена/выгружена
Выполняется запуск "SYSTEM"."SYS_IMPORT_TABLE_01":  system/********@billing DUMPFILE=billing_test.dmp DIRECTORY=EXTRA_DUMP_DIR CONTENT=ALL TABLES=billing.tmp_ll REMAP_SCHEMA=billing:backup 
Обрабатывается объект типа TABLE_EXPORT/TABLE/TABLE
Обрабатывается объект типа TABLE_EXPORT/TABLE/TABLE_DATA
. . импортировано "BACKUP"."TMP_LL"                           11.32 KB     100 строк
Обрабатывается объект типа TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Задание "SYSTEM"."SYS_IMPORT_TABLE_01" успешно завершено в 21:10:32

Спасибо, на тестовой таблице все получилось.
Сейчас попробую на обычной таблице.
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134387
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну все мимо.

Alibek B.

Если запускаю под sys, то получаю ошибку ORA-28009: соединение в качестве SYS следует заменить на соединение в качестве SYSDBA или SYSOPER.
Как заменить на sysdba, так и не смог; impdp 'sys/sys@billing as sysdba' ... не работает.

Do not start Import as SYSDBA, except at the request of Oracle technical support.
SYSDBA is used internally and has specialized functions; its behavior is not the same as for general users.

При этом запустить под SYSDBA можно, ищи экранирование под свою ось.

Alibek B.

Даже если дать роли EXP_FULL_DATABASE и IMP_FULL_DATABASE, то все равно ошибка:

Для data_pump используются:
DATAPUMP_EXP_FULL_DATABASE
DATAPUMP_IMP_FULL_DATABASE

Alibek B.

ORA-31633: невозможно создать главную таблицу "BACKUP.SYS_IMPORT_TABLE_05"
ORA-01950: нет привилегий на раздел 'USERS'

Вот же четко расписано, чего именно не хватает.
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134394
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое раздел USERS?
Если это tablespace, то квоты я добавлял, не помогло.
Для grant я не нашел объектов, которые могли бы называться USERS.
А роли DATAPUMP_EXP_FULL_DATABASE у меня нет вообще.
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134400
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.

А роли DATAPUMP_EXP_FULL_DATABASE у меня нет вообще.

Возможно, в 10 версии ее еще не было, спорить не стану.

Alibek B.
А что такое раздел USERS?
Если это tablespace, то квоты я добавлял, не помогло.

Неужели после добавления квот была именно ORA-01950: нет привилегий на раздел 'USERS' ?
Все ошибки сыпятся в лог, приводи его после выдачи грантов.
...
Рейтинг: 0 / 0
Восстановить пару таблиц в БД
    #40134407
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, после добавления квот на tablespace все равно не хватало привилегий.
Я восстановил таблицу под system, этого пока достаточно.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Восстановить пару таблиц в БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]