Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Восстановить пару таблиц в БД / 16 сообщений из 16, страница 1 из 1
15.02.2022, 19:07
    #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
15.02.2022, 19:13
    #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
15.02.2022, 19:26
    #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
15.02.2022, 19:36
    #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
15.02.2022, 19:45
    #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
15.02.2022, 20:12
    #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
15.02.2022, 20:30
    #40134364
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановить пару таблиц в БД
Попробовал использовать REMAP_SCHEMA.
Создал пользователя BACKUP, в параметрах impdp указал REMAP_SCHEMA=usr:backup.
Получаю ошибки:
Код: plaintext
1.
ORA-31631: требуются полномочия
ORA-39122: Непривилегированные пользователи не могут изменять отображения REMAP_SCHEMA.

Можно ли пользователю usr дать полные права на схему backup?
Или нужно будет запускать импорт под учетной записью sys?
...
Рейтинг: 0 / 0
15.02.2022, 20:53
    #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
15.02.2022, 21:03
    #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
15.02.2022, 21:07
    #40134374
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановить пару таблиц в БД
dmdmdm
Приводите полный журнал.

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

Работайте под SYSTEM
...
Рейтинг: 0 / 0
15.02.2022, 21:12
    #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
15.02.2022, 22:19
    #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
15.02.2022, 22:49
    #40134394
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановить пару таблиц в БД
А что такое раздел USERS?
Если это tablespace, то квоты я добавлял, не помогло.
Для grant я не нашел объектов, которые могли бы называться USERS.
А роли DATAPUMP_EXP_FULL_DATABASE у меня нет вообще.
...
Рейтинг: 0 / 0
15.02.2022, 23:12
    #40134400
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Восстановить пару таблиц в БД
Alibek B.

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

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

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

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


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