- Este tópico contém 14 respostas, 4 vozes e foi atualizado pela última vez 14 anos, 10 meses atrás por
felipeg.
-
AutorPosts
-
11 de maio de 2011 às 6:26 pm #99161
Anônimo
Pessoal,
Tenho uma view em uma base de dados e estou criando uma tabela para receber algumas informações dessa view. Gostaria de saber uma melhor solução para criar uma rotina de carga nessa tabela, sendo que ambas bases são Oracle e não posso criar um dblink.Abração galera.
11 de maio de 2011 às 7:38 pm #99163felipeg
ParticipanteOlá, boa tarde
Amigo, dê uma verficada na parte de EXTERNAL TABLES.
Segue o doc da Oracle sobre o mesmo.http://download.oracle.com/docs/cd/B193 … m#i1009127
OBS: Qual o problema para usar dblink?
Atenciosamente,
Felipe.11 de maio de 2011 às 9:42 pm #99169rman
ParticipantePode ser utilizado o SQL Loader para isso.
Você consegue gerar um arquivo texto das informações a serem exportadas ? Ai depois é só importar pelo SQL Loader.
Outra solução seria simplismente:
CREATE TABLE tabela AS SELECT * FROM visao;
Depois fazer um EXP só desta tabela na base origem e um IMP na base destino.
11 de maio de 2011 às 10:15 pm #99172felipeg
ParticipanteRman
Concordo que estas são opções válidas, porém
1 – Eu, particularmente, acho External tables mais fácil do que SQL Loader
Segue uma discussão no askTom sobre isso:
http://asktom.oracle.com/pls/asktom/f?p … 19621712292 – No caso de export import nunca testei o tempo de transferência importação em relação ao External ou o SQL Loader, então deixo essa pros amigos do fórum.
Atenciosamente,
Felipe.11 de maio de 2011 às 10:24 pm #99175Peterson
ParticipanteNão entendi. Você tem uma view e vai alimentar uma tabela a partir da view? Por que não substituir essa view por uma materialized view?
11 de maio de 2011 às 10:32 pm #99176rman
Participante[quote=”Peterson”:1iimzuhl]Não entendi. Você tem uma view e vai alimentar uma tabela a partir da view? Por que não substituir essa view por uma materialized view?[/quote]
Ele não foi claro no objetivo desta tarefa, mas creio que será feito apenas 1 vez, só para migrar os dados de uma base para outra…
11 de maio de 2011 às 10:52 pm #99180Peterson
Participantebom, nesse caso um dblink resolveria.
11 de maio de 2011 às 11:00 pm #99182felipeg
Participante[quote=”Peterson”:d54aeqsl]bom, nesse caso um dblink resolveria.[/quote]
É, mas ele citou na abertura do post que deveria ser sem dblink…
Eu perguntei na primeira resposta qual o motivo de não usar, mas como ainda não tivemos resposta não sabemos.
Atenciosamente,
Felipe.11 de maio de 2011 às 11:06 pm #99183Peterson
ParticipantePutz, tb não entendi pq não usar um dblink
12 de maio de 2011 às 6:25 pm #99195Anônimo
Desculpe senhores pela demora na minha resposta.
Acho que não fui muito claro.Então,
a questão de não utilizar o DBLINK é por uma análise de impacto e tudo mais que não participei mas estou tentando saber o porque.Na verdade, estava buscando um processo que fizesse uma carga de tempos em tempos( periodicidade a ser definida) de uma view( Base A ) para uma tabela ( Base B). Como precisava de uma solução rápida optei por utilizar o SQL*Loader , gerando um arquivo e carregando pelo loader. Não sei muito bem como funciona a External table e nem se seria melhor , mas vou procurar saber mais sobre.Obrigado a todos.
12 de maio de 2011 às 6:33 pm #99197felipeg
Participante[quote=”janrkrejci”:autib9sh]Desculpe senhores pela demora na minha resposta.
Acho que não fui muito claro.Então,
a questão de não utilizar o DBLINK é por uma análise de impacto e tudo mais que não participei mas estou tentando saber o porque.Na verdade, estava buscando um processo que fizesse uma carga de tempos em tempos( periodicidade a ser definida) de uma view( Base A ) para uma tabela ( Base B). Como precisava de uma solução rápida optei por utilizar o SQL*Loader , gerando um arquivo e carregando pelo loader. Não sei muito bem como funciona a External table e nem se seria melhor , mas vou procurar saber mais sobre.Obrigado a todos.[/quote]
Sem problemas!
Considerando a possibilidade de usar dblinks, para este caso é a melhor opção.
Caso precise de alguma ajuda para reverter essa análise, é só nos avisar aqui no fórum que damos um jeito (risos).Atenciosamente,
Felipe.12 de maio de 2011 às 6:43 pm #99198Anônimo
Obrigado felipe mais uma vez!!!
Abs.
[quote=”felipeg”:2gkrf0dk][quote=”janrkrejci”:2gkrf0dk]Desculpe senhores pela demora na minha resposta.
Acho que não fui muito claro.Então,
a questão de não utilizar o DBLINK é por uma análise de impacto e tudo mais que não participei mas estou tentando saber o porque.Na verdade, estava buscando um processo que fizesse uma carga de tempos em tempos( periodicidade a ser definida) de uma view( Base A ) para uma tabela ( Base B). Como precisava de uma solução rápida optei por utilizar o SQL*Loader , gerando um arquivo e carregando pelo loader. Não sei muito bem como funciona a External table e nem se seria melhor , mas vou procurar saber mais sobre.Obrigado a todos.[/quote]
Sem problemas!
Considerando a possibilidade de usar dblinks, para este caso é a melhor opção.
Caso precise de alguma ajuda para reverter essa análise, é só nos avisar aqui no fórum que damos um jeito (risos).Atenciosamente,
Felipe.[/quote]12 de maio de 2011 às 9:56 pm #99208Peterson
ParticipanteComo não pode usar dblinks, o jeito que configurou parece ser o melhor. Gerando um arquivo externo via Loader em uma área de disco comum aos dois servidores e lendo a partir desse arquivo na outra instância…
18 de maio de 2011 às 11:56 pm #99278rman
Participante[quote=”felipeg”:2w0z7xp2]Rman
Concordo que estas são opções válidas, porém
1 – Eu, particularmente, acho External tables mais fácil do que SQL Loader
Segue uma discussão no askTom sobre isso:
http://asktom.oracle.com/pls/asktom/f?p … 19621712292 – No caso de export import nunca testei o tempo de transferência importação em relação ao External ou o SQL Loader, então deixo essa pros amigos do fórum.
Atenciosamente,
Felipe.[/quote]
ops$tkyte@ORA920.US.ORACLE.COM> create or replace directory data_dir as '/tmp/'
2 /
Directory created.ops$tkyte@ORA920.US.ORACLE.COM> create table external_table
2 (EMPNO NUMBER(4) ,
3 ENAME VARCHAR2(10),
4 JOB VARCHAR2(9),
5 MGR NUMBER(4),
6 HIREDATE DATE,
7 SAL NUMBER(7, 2),
8 COMM NUMBER(7, 2),
9 DEPTNO NUMBER(2)
10 )
11 ORGANIZATION EXTERNAL
12 ( type oracle_loader
13 default directory data_dir
14 access parameters
15 ( fields terminated by ',' )
16 location ('emp.dat')
17 )
18 /
Table created.ops$tkyte@ORA920.US.ORACLE.COM> create or replace view emp_view
2 as
3 select * from scott.emp, all_objects;
View created.ops$tkyte@ORA920.US.ORACLE.COM> host flat / emp_view > /tmp/emp.dat
see
http://asktom.oracle.com/~tkyte/flat/index.html
for 'flat'
Fiquei curioso que comando flat é esse ?
Quando se usa host logado no oracle seria pra acessar um comando do SO, provavelmente é linux…
Tenti o comando flat no Ubuntu 10.10 e no CentOS 5.6, e não existe esse comando, pena que o link que o Tom passa está quebrado…
Tem idéia o que o comando flat faz ??? Que pacote tem que instalar ???
19 de maio de 2011 às 3:40 am #99282felipeg
Participante[quote=”rman”:whwa1a72][quote=”felipeg”:whwa1a72]Rman
Concordo que estas são opções válidas, porém
1 – Eu, particularmente, acho External tables mais fácil do que SQL Loader
Segue uma discussão no askTom sobre isso:
http://asktom.oracle.com/pls/asktom/f?p … 19621712292 – No caso de export import nunca testei o tempo de transferência importação em relação ao External ou o SQL Loader, então deixo essa pros amigos do fórum.
Atenciosamente,
Felipe.[/quote]
ops$tkyte@ORA920.US.ORACLE.COM> create or replace directory data_dir as '/tmp/'
2 /
Directory created.ops$tkyte@ORA920.US.ORACLE.COM> create table external_table
2 (EMPNO NUMBER(4) ,
3 ENAME VARCHAR2(10),
4 JOB VARCHAR2(9),
5 MGR NUMBER(4),
6 HIREDATE DATE,
7 SAL NUMBER(7, 2),
8 COMM NUMBER(7, 2),
9 DEPTNO NUMBER(2)
10 )
11 ORGANIZATION EXTERNAL
12 ( type oracle_loader
13 default directory data_dir
14 access parameters
15 ( fields terminated by ',' )
16 location ('emp.dat')
17 )
18 /
Table created.ops$tkyte@ORA920.US.ORACLE.COM> create or replace view emp_view
2 as
3 select * from scott.emp, all_objects;
View created.ops$tkyte@ORA920.US.ORACLE.COM> host flat / emp_view > /tmp/emp.dat
see
http://asktom.oracle.com/~tkyte/flat/index.html
for 'flat'
Fiquei curioso que comando flat é esse ?
Quando se usa host logado no oracle seria pra acessar um comando do SO, provavelmente é linux…
Tenti o comando flat no Ubuntu 10.10 e no CentOS 5.6, e não existe esse comando, pena que o link que o Tom passa está quebrado…
Tem idéia o que o comando flat faz ??? Que pacote tem que instalar ???[/quote]
Rman
Flat são tipos de arquivos onde existem coleções e armazenamento de dados que podem ser acessados sequencialmente.
Um arquivo csv (excel) é um exemplo de arquivo flat, o /etc/group também.Eu particularmente nunca usei mas já li sobre o mesmo no livro Expert Oracle Database Architecture 9i, 10g and 11, do Tom Kyte, recomendo.
Atenciosamente,
Felipe. -
AutorPosts
- Você deve fazer login para responder a este tópico.