- Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 8 anos, 2 meses atrás por José Laurindo Chiappa.
-
AutorPosts
-
24 de agosto de 2016 às 9:31 pm #108363buoroParticipante
Boa tarde,
Por gentileza, exportei via DATA PUMP, dados de um tablespace que contém tabelas com colunas tipo DATA.
Ao importar em outro banco de dados, as mesmas foram criadas como tipo STRING.Verifiquei que existe o parâmetro REMAP_DATA, mas pela documentação diz que deve ser especificado o nome da tabela e da coluna.
Como tenho centenas de tabelas de um ERP se torna inviável ter que especificar cada tabela e coluna, então gostaria de saber se conhecem alguma alterativa que determine que todos os campos data sejam criados como tal.
Obrigado
25 de agosto de 2016 às 12:55 am #108364José Laurindo ChiappaModeradorSorry por duvidar, mas o que vc descreve (ie, o datapump ** por si só ** alterar o datatype de uma coluna) simplesmente NÂO EXISTE num datapump default sendo importado num banbco sem customizações : com certeza ** OU ** alguém já tinha criado antes do export a tabela lá no banco-destino com o datatype string, ** OU ** usaram alguma opção de REMAP nesse export, ** OU ** tem alguma trigger de DDL nesse banco-destino Alterando o CREATE TABLE que o datapump faz…
Pra vc comprovar, faça um export aí num dos schemas de exemplo do RDBMS Oracle (ou nalgum schema pequeno que vc tenha aí na origem e ** não tenha criado *** ainda no destino SEM informar nenhum tipo de remap , veja o conteúdo desse dump file com a opção SQLFILE do impdp (E comprove que o CREATE TABLE ** vai ser sim ** Igualzinho ao que estava na origem), importe o dump file no banco-destino aonde os objetos exportados ** não existam ** ** E ** não haja nenhum trigger de DDL/customização particular que vc Comprovará o que digo…[]s
Chiappa
25 de agosto de 2016 às 8:09 pm #108366José Laurindo ChiappaModeradorOpa – só pra não ficar no blablablá, eis um exemplo ** pequeno ** mas real de que o datapump por si só ** não ** muda datatype nem (muito menos) estruturas e propriedades de objetos exportados :
==> tenho um schema pequeno de teste, com duas tabelas, uma das quais possuindo coluna DATE :
XE:SQL> desc usertest.dept;
Name Null? Type
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)XE:SQL> desc usertest.emp
Name Null? Type
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)SQL> exit
==> faço o export via datapump normal, ** SEM ** nenhum tipo de remapeamento nem nada não-default :
E:apporacleadminXEdpdump>expdp system/oracle schemas=USERTEST directory=DATA_PUMP_DIR dumpfile=usertest.dmp logfile=usertest.exp
Export: Release…….
….
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
. . exported “USERTEST”.”DEPT” 5.898 KB 2 rows
. . exported “USERTEST”.”EMP” 8.085 KB 2 rows
Master table “SYSTEM”.”SYS_EXPORT_SCHEMA_01″ successfully loaded/unloaded
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
E:APPORACLEADMINXEDPDUMPUSERTEST.DMP
Job “SYSTEM”.”SYS_EXPORT_SCHEMA_01″ successfully completed==> transfiro o dumpfile pro local do banco-destino, e antes de importar vou EXIBIR O CONTEÚDO do dumpfile, para demonstrar que NADA foi alterado :
e:apporacleproduct12.1.0dbhome_12cdatapump_dir>impdp system/oracle directory=datapump_dir dumpfile=USERTEST.DMP sqlfile=USERTEST.SQL logfile=USERTEST.imp
Import: Release 12.1.0.2.0 – Production….
…..
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Job “SYSTEM”.”SYS_SQL_FILE_FULL_01″ successfully completed==> Olha só o conteúdo, o CREATE tá ESPECIFICANDO DATE na coluna criada com datatype DATE :
e:apporacleproduct12.1.0dbhome_12cdatapump_dir>type USERTEST.SQL
— CONNECT SYSTEM
…— new object type path: SCHEMA_EXPORT/USER
CREATE USER “USERTEST” IDENTIFIED BY VALUES ‘S:87165BFE5D5B83D631FBB00D44AFBA37E86FD9DF82AAD0DDC4C8BBB5A3DE;4AC478BD86DC5767’
TEMPORARY TABLESPACE “TEMP”;
— new object type path: SCHEMA_EXPORT/SYSTEM_GRANT
….
— new object type path: SCHEMA_EXPORT/TABLE/TABLE
— CONNECT SYSTEM
CREATE TABLE “USERTEST”.”DEPT”
( “DEPTNO” NUMBER(2,0),
“DNAME” VARCHAR2(14 BYTE),
“LOC” VARCHAR2(13 BYTE)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE “SYSTEM” ;
CREATE TABLE “USERTEST”.”EMP”
( “EMPNO” NUMBER(4,0),
“ENAME” VARCHAR2(10 BYTE),
“JOB” VARCHAR2(9 BYTE),
“MGR” NUMBER(4,0),
“HIREDATE” DATE,
“SAL” NUMBER(7,2),
“COMM” NUMBER(7,2),
“DEPTNO” NUMBER(2,0)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE “SYSTEM” ;
— new object type path: SCHEMA_EXPORT/TABLE/INDEX/INDEX
— CONNECT USERTEST
BEGIN
NULL;
END;
/
….==> OK, agora vou fazer o import de verdade pra dentro do banco. SEM INDICAR nenhum tipo de remap, banco esse que NÂO TEM nenhuma trigger de DDL, que NÂO TEM nem o schema nem os objetos anteriormente criados (e que assim VÂO SER CRIADOS como estavam na origem), e SEM indicar nenhum tipo de remap ou não-defaults :
e:apporacleproduct12.1.0dbhome_12cdatapump_dir>impdp system/oracle@pdborcl directory=datapump_dir dumpfile=USERTEST.DMP logfile=USERTEST.log
Import: Release 12.1.0.2.0 – Production…
…
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported “USERTEST”.”DEPT” 5.898 KB 2 rows
. . imported “USERTEST”.”EMP” 8.085 KB 2 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Job “SYSTEM”.”SYS_IMPORT_FULL_01″ successfully completed==> O resultado :
e:apporacleproduct12.1.0dbhome_12cdatapump_dir>sqlplus system/oracle@pdborcl
PDBORCL:SQL> desc usertest.dept;
Name Null? Type
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)PDBORCL:SQL> desc usertest.emp;
Name Null? Type
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)PDBORCL:SQL>
=====>> OU SEJA, se alguém te falou que o datapump por si só faz essas coisas, a pessoa falou Asneiras, okdoc ?? Trate de checar aí com quem fez o export e o import quais parâmetros usou/que besteira fez, confira se o schema-destino já não estava criado com datatype errado, consulte views e triggers que possam estar interferindo, é isso aí pra vc descobrir QUEM é o culpado…. Descoberto QUEM fez O QUE, aí fica mais fácil resolver…
[]s
Chiappa
-
AutorPosts
- Você deve fazer login para responder a este tópico.