Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
Georgi Fofanov
Member

Откуда: Ижевск
Сообщений: 75
Здравствуйте.

Oracle 10.2.0.5

Вот управляющий файл для Export Data Pump:

+
DIRECTORY=DP_FULLEXPDP
TRACE=480300
METRICS=Y
DUMPFILE="./fullexpdp%U.dmp"
FILESIZE=2G
FULL=Y
COMPRESSION=NONE
PARALLEL=4
EXCLUDE=SCHEMA:"='SYS'",SCHEMA:"='SYSTEM'",SCHEMA:"='SYSMAN'",SCHEMA:"='MONITOR'",SCHEMA:"='PERFSTAT'",SCHEMA:"='DBSNMP'",SCHEMA:"='TSMSYS'",SCHEMA:"='XDB'"
EXCLUDE=STATISTICS,TABLESPACE
EXCLUDE=USER,ROLE
EXCLUDE=TABLE:"LIKE 'AUD\_%' ESCAPE '\\'"
EXCLUDE=TABLE:"IN ('SALARY.SAL_ACCUM_OLD','SALARY.PFR_STAZH_OLD','SALARY.NAK_ALL_16_08_12','TIMEBOARD.TIMEBOARD_DAY_OLD','CAS_PDI.PROGDM_K_OLD')"
LOGFILE="./fullexpdp.log"


Проблема в этих 2-х строчках:
EXCLUDE=TABLE:"LIKE 'AUD\_%' ESCAPE '\\'"
EXCLUDE=TABLE:"IN ('SALARY.SAL_ACCUM_OLD','SALARY.PFR_STAZH_OLD','SALARY.NAK_ALL_16_08_12','TIMEBOARD.TIMEBOARD_DAY_OLD','CAS_PDI.PROGDM_K_OLD')"

Смысл в том, что я не хочу выгружать все таблицы с именами, начинающимися на 'AUD_', а еще не хочу выгружать несколько других больших таблиц.

Отрывок лог-файла:
+
Processing object type DATABASE_EXPORT/DIRECTORY/GRANT/OWNER_GRANT/OBJECT_GRANT
Completed 32 OBJECT_GRANT objects in 0 seconds
Processing object type DATABASE_EXPORT/DIRECTORY/GRANT/CROSS_SCHEMA/OBJECT_GRANT
Completed 3 OBJECT_GRANT objects in 0 seconds
Processing object type DATABASE_EXPORT/CONTEXT
Completed 1 CONTEXT objects in 2 seconds
Processing object type DATABASE_EXPORT/SCHEMA/PUBLIC_SYNONYM/SYNONYM
Completed 350 SYNONYM objects in 2 seconds
Processing object type DATABASE_EXPORT/SCHEMA/SYNONYM
. . exported "SALARY"."PFR_STAZH_OLD" 19.58 MB 263516 rows
Completed 1174 SYNONYM objects in 7 seconds
Processing object type DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
Completed 26 TYPE objects in 4 seconds
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PRE_SYSTEM_ACTIONS/PROCACT_SYSTEM
Completed 3 PROCACT_SYSTEM objects in 17 seconds
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PROCOBJ
Completed 3 PROCOBJ objects in 1 seconds
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/POST_SYSTEM_ACTIONS/PROCACT_SYSTEM
. . exported "CAS_PDI"."PROGDM_K_OLD" 402.9 MB 5529282 rows
Completed 3 PROCACT_SYSTEM objects in 17 seconds
Processing object type DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA
. . exported "SALARY"."SAL_ACCUM_OLD" 606.8 MB 12871473 rows
. . exported "PURCHASE"."DEF_SCHET" 11.67 MB 391025 rows
Completed 407 PROCACT_SCHEMA objects in 18 seconds
Processing object type DATABASE_EXPORT/SCHEMA/CLUSTER/CLUSTER
Completed 2 CLUSTER objects in 4 seconds
Processing object type DATABASE_EXPORT/SCHEMA/CLUSTER/INDEX
Completed 2 INDEX objects in 11 seconds
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE
. . exported "SALARY"."NAK_ALL_16_08_12" 386.7 MB 10853424 rows
. . exported "FINANS"."SALDO_ITEMS" 1.033 MB 24206 rows
. . exported "FINANS"."SALDO_ITEMS_PERIOD" 12.88 KB 81 rows


Т.е. указанные таблицы все равно выгружаются.
Вопрос - что я делаю не так?
28 мар 14, 14:04    [15800759]     Ответить | Цитировать Сообщить модератору
 Re: expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
Изя Кацман
Member

Откуда: Великий Эксперимент
Сообщений: 2019
EXCLUDE=TABLE:"LIKE 'AUD\_%' ESCAPE '\\'"
попробуй поменять на
EXCLUDE=TABLE:"LIKE 'AUD\_%' ESCAPE '\'"
(одын слеш)

Ибо с таким выражением имеем:
SQL> SELECT * FROM dba_tables
  2  where table_name LIKE 'AUD\_%' ESCAPE '\\';
where table_name LIKE 'AUD\_%' ESCAPE '\\'
                                      *
ERROR at line 2:
ORA-01425: escape character must be character string of length 1
28 мар 14, 14:11    [15800815]     Ответить | Цитировать Сообщить модератору
 Re: expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
eev
Member

Откуда: -
Сообщений: 1156
Georgi Fofanov,

http://docs.oracle.com/cd/B12037_01/server.101/b10825/dp_export.htm#i1007829
The name_clause is optional. It allows selection of specific objects within an object type. It is a SQL expression used as a filter on the type's object names

чисто гипотетически: and
28 мар 14, 14:12    [15800822]     Ответить | Цитировать Сообщить модератору
 Re: expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
Georgi Fofanov
Member

Откуда: Ижевск
Сообщений: 75
Изя Кацман
EXCLUDE=TABLE:"LIKE 'AUD\_%' ESCAPE '\\'"
попробуй поменять на
EXCLUDE=TABLE:"LIKE 'AUD\_%' ESCAPE '\'"
(одын слеш)


Не уверен. Вот отрывок трейса:
KUPM: 00:17:01.758: *******IN DISPATCH at 01021, request type=1032              
KUPM: 00:17:01.758: Current user is: ORA_IMZ_EXP                                
KUPM: 00:17:01.758: In metadata filter....                                      
KUPM: 00:17:01.759: DBMS_DATAPUMP.METADATA_FILTER (hand, 'EXCLUDE_NAME_EXPR', 'LIKE 'AUD\_%' ESCAPE '\'', 'TABLE');
KUPM: 00:17:01.759: Not a list filter                                           
KUPM: 00:17:01.765: *******OUT DISPATCH  , request type=1032   response type =2041
KUPM: 00:17:01.794: *******IN DISPATCH at 01021, request type=1032              
KUPM: 00:17:01.794: Current user is: ORA_IMZ_EXP                                
KUPM: 00:17:01.794: In metadata filter....                                      
KUPM: 00:17:01.794: DBMS_DATAPUMP.METADATA_FILTER (hand, 'EXCLUDE_NAME_EXPR', 'IN ('SALARY.SAL_ACCUM_OLD','SALARY.PFR_ST
AZH_OLD','SALARY.NAK_ALL_16_08_12','TIMEBOARD.TIMEBOARD_DAY_OLD','CAS_PDI.PROGDM_K_OLD')', 'TABLE');
KUPM: 00:17:01.795: Not a list filter                                           
KUPM: 00:17:01.804: *******OUT DISPATCH  , request type=1032   response type =2041
KUPM: 00:17:01.848: *******IN DISPATCH at 01021, request type=1032              
KUPM: 00:17:01.849: Current user is: ORA_IMZ_EXP                                
KUPM: 00:17:01.849: In metadata filter....                                      
KUPM: 00:17:01.850: DBMS_DATAPUMP.METADATA_FILTER (hand, 'EXCLUDE_PATH_LIST', ''STATISTICS','TABLESPACE','USER','ROLE'',
 '');                                                                           
KUPM: 00:17:01.872: *******OUT DISPATCH  , request type=1032   response type =2041

Видно, что в трейсе уже один слэш.
Это было давно написано. Вроде бы, работает,
28 мар 14, 14:24    [15800926]     Ответить | Цитировать Сообщить модератору
 Re: expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
Georgi Fofanov
Member

Откуда: Ижевск
Сообщений: 75
eev
Georgi Fofanov,

http://docs.oracle.com/cd/B12037_01/server.101/b10825/dp_export.htm#i1007829
The name_clause is optional. It allows selection of specific objects within an object type. It is a SQL expression used as a filter on the type's object names

чисто гипотетически: and


Не понял. Можете пояснить?
Добавить AND в конце первого EXCLUDE?
28 мар 14, 14:30    [15800984]     Ответить | Цитировать Сообщить модератору
 Re: expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
eev
Member

Откуда: -
Сообщений: 1156
Georgi Fofanov,
в одном слепить 2 условия
28 мар 14, 14:35    [15801036]     Ответить | Цитировать Сообщить модератору
 Re: expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
Georgi Fofanov
Member

Откуда: Ижевск
Сообщений: 75
Попробовал написать так:
EXCLUDE=SCHEMA:"='SYS'",SCHEMA:"='SYSTEM'",SCHEMA:"='SYSMAN'",SCHEMA:"='MONITOR'",SCHEMA:"='PERFSTAT'",SCHEMA:"='DBSNMP'",SCHEMA:"='TSMSYS'",SCHEMA:"='XDB'"
EXCLUDE=STATISTICS,TABLESPACE
EXCLUDE=USER,ROLE
EXCLUDE=TABLE:"LIKE 'AUD\_%' ESCAPE '\\'"
EXCLUDE=TABLE:"LIKE 'SALARY.SAL_ACCUM_OLD'"
EXCLUDE=TABLE:"LIKE 'SALARY.PFR_STAZH_OLD'"
EXCLUDE=TABLE:"LIKE 'SALARY.NAK_ALL_16_08_12'"
EXCLUDE=TABLE:"LIKE 'TIMEBOARD.TIMEBOARD_DAY_OLD'"
EXCLUDE=TABLE:"LIKE 'CAS_PDI.PROGDM_K_OLD'"

Не помогло:
Processing object type DATABASE_EXPORT/SCHEMA/SYNONYM                           
. . exported "SALARY"."SAL_ACCUM_OLD"                    606.8 MB 12871473 rows 
. . exported "CAS_PDI"."PROGDM_K_OLD"                    402.9 MB 5529282 rows  
     Completed 1174 SYNONYM objects in 8 seconds                                
Processing object type DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC                    
     Completed 26 TYPE objects in 5 seconds                                     
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PRE_SYSTEM_ACTIONS/PROCACT_SYSTEM
. . exported "PURCHASE"."DEF_SCHET"                      11.67 MB  391025 rows  
     Completed 3 PROCACT_SYSTEM objects in 14 seconds                           
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/PROCOBJ                
     Completed 3 PROCOBJ objects in 2 seconds                                   
Processing object type DATABASE_EXPORT/SYSTEM_PROCOBJACT/POST_SYSTEM_ACTIONS/PROCACT_SYSTEM
. . exported "SALARY"."NAK_ALL_16_08_12"                 386.7 MB 10853424 rows 
. . exported "FINANS"."SALDO_ITEMS"                      1.033 MB   24206 rows  

Может, имя схемы надо как-то не так писать в этой фразе?
30 мар 14, 22:07    [15808396]     Ответить | Цитировать Сообщить модератору
 Re: expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
eev
Member

Откуда: -
Сообщений: 1156
Georgi Fofanov,
с просторов, адаптируй
table:”in (select table_name from user_tables where table_name like ‘FOO%’ or table_name like ‘BAR%’ )”

и лучше уж, посхемно, режиме эксорта схемы, что бы исключить возможное дублирование имен (а вдруг)
30 мар 14, 23:23    [15808685]     Ответить | Цитировать Сообщить модератору
 Re: expdp. Как правильно написать несколько опций EXCLUDE=TABLE  [new]
Georgi Fofanov
Member

Откуда: Ижевск
Сообщений: 75
eev
Georgi Fofanov,
с просторов, адаптируй
table:”in (select table_name from user_tables where table_name like ‘FOO%’ or table_name like ‘BAR%’ )”

и лучше уж, посхемно, режиме эксорта схемы, что бы исключить возможное дублирование имен (а вдруг)


Да, такой пример я тоже нашел.
Но он не подходит в случае дублирования имен таблиц в разных схемах.
Ну ладно, в моем конкретном случае я проверю, возможно, попробую убрать имена схем...
А посхемно экспортировать - потом задолбаешся писать скрипт импорта ;-)
1 апр 14, 11:16    [15814958]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить