Olá,
Estou precisando acessar dados de uma tabela que esta em uma outra base de dados Oracle. como posso fazer?
Ex.: tenho a tab. A que esta no banco de dados X e preciso copiar os dados da tabela B que esta no banco de dados Y.
Oracle acessar dados de uma tabela de outra base
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
via dblink
-
- Rank: Analista Júnior
- Mensagens: 76
- Registrado em: Seg, 11 Jul 2011 9:55 am
- Localização: Curitiba
Uma dúvida. No TNSNAMES.ORA, coloco no SID o banco que eu conectar?
O DBlink consegui criar:
Exemplo =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.72.0.171)(PORT = 1521))
)
(CONNECT_DATA =
(SID = Nome_do_BD_Origem???)
)
)
CREATE DATABASE LINK DBExemplo
CONNECT TO bd1 IDENTIFIED BY db1
USING 'Exemplo'
-
- Rank: Analista Júnior
- Mensagens: 76
- Registrado em: Seg, 11 Jul 2011 9:55 am
- Localização: Curitiba
TNS
quando executo o comando acima, aparece a seguinte mensagem:
Exemplo =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.72.0.171)(PORT = 1521))
)
(CONNECT_DATA =
(SID = Nome_do_BD_Origem???)
)
)
quando executo o comando acima, aparece a seguinte mensagem:
ORA-00928: palavra-chave SELECT não encontrada
00928. 00000 - "missing SELECT keyword"
-
- Rank: Programador Sênior
- Mensagens: 45
- Registrado em: Qui, 12 Mai 2011 4:54 pm
- Localização: Porto Alegre - RS
É pra ser isso mesmo.
Olha na internet sobre como criar DB links ou usa algum wizard do TOAD ou do SQL Developer.
Abraço!
Olha na internet sobre como criar DB links ou usa algum wizard do TOAD ou do SQL Developer.
Abraço!
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
SID é o nome da instancia brother..
depois do dblink criado
você faz o select normal so que vai colocar na tabela o arroba e o nome do dblink que você criou ..
depois do dblink criado
você faz o select normal so que vai colocar na tabela o arroba e o nome do dblink que você criou ..
select * from sua_tabela_no_outro_banco@DBExemplo
-
- Rank: Analista Júnior
- Mensagens: 76
- Registrado em: Seg, 11 Jul 2011 9:55 am
- Localização: Curitiba
Olá,
Eu consegui criar o DBlink.
Mas o select não funciona, dá erro.
Meu procedimento foi o seguinte:
1º No banco que eu quero acessar o outro banco, fiz o seguinte:
-- O nome do banco é banco mesmo e o usuário é consulta e senha teste.
Criou o DBlink normalmente.
2º Tentei fazer um select:
O erro é o seguinte:
Eu consegui criar o DBlink.
Mas o select não funciona, dá erro.
Meu procedimento foi o seguinte:
1º No banco que eu quero acessar o outro banco, fiz o seguinte:
CREATE DATABASE LINK exemplo
CONNECT TO consulta IDENTIFIED BY teste
USING 'banco'
Criou o DBlink normalmente.
2º Tentei fazer um select:
select * from cidade@exemplo;
O erro é o seguinte:
RA-12154: TNS:não foi possível resolver o identificador de conexão especificado
12154. 00000 - "TNS:could not resolve the connect identifier specified"
*Cause: A connection to a database or other service was requested using
a connect identifier, and the connect identifier specified could not
be resolved into a connect descriptor using one of the naming methods
configured. For example, if the type of connect identifier used was a
net service name then the net service name could not be found in a
naming method repository, or the repository could not be
located or reached.
*Action:
- If you are using local naming (TNSNAMES.ORA file):
- Make sure that "TNSNAMES" is listed as one of the values of the
NAMES.DIRECTORY_PATH parameter in the Oracle Net profile
(SQLNET.ORA)
- Verify that a TNSNAMES.ORA file exists and is in the proper
directory and is accessible.
- Check that the net service name used as the connect identifier
exists in the TNSNAMES.ORA file.
- Make sure there are no syntax errors anywhere in the TNSNAMES.ORA
file. Look for unmatched parentheses or stray characters. Errors
in a TNSNAMES.ORA file may make it unusable.
- If you are using directory naming:
- Verify that "LDAP" is listed as one of the values of the
NAMES.DIRETORY_PATH parameter in the Oracle Net profile
(SQLNET.ORA).
- Verify that the LDAP directory server is up and that it is
accessible.
- Verify that the net service name or database name used as the
connect identifier is configured in the directory.
- Verify that the default context being used is correct by
specifying a fully qualified net service name or a full LDAP DN
as the connect identifier
- If you are using easy connect naming:
- Verify that "EZCONNECT" is listed as one of the values of the
NAMES.DIRETORY_PATH parameter in the Oracle Net profile
(SQLNET.ORA).
- Make sure the host, port and service name specified
are correct.
- Try enclosing the connect identifier in quote marks.
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
ta quase la meu camarada.. go ahead and don´t give up
você entendeu que o dblink é uma conexao com outro banco e este banco que vai ser acessado deve ter uma conexao mapeada no seu tnsnames ??
você entendeu que o dblink é uma conexao com outro banco e este banco que vai ser acessado deve ter uma conexao mapeada no seu tnsnames ??
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
você tem q achar ele la no servidor..
você está criando esse dblink porque não tem um dba?
e no seu tnsnames, do seu client.. ele ta la?
você consegue acessar esse banco que esta tentando criar o dblink, por alguma ide (pl sql developer da vida)?
você está criando esse dblink porque não tem um dba?
e no seu tnsnames, do seu client.. ele ta la?
você consegue acessar esse banco que esta tentando criar o dblink, por alguma ide (pl sql developer da vida)?
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
rsalbano,
Você está quase lá. Vamos fazer de conta que o servidor remoto/destino (no qual você precisa consultar
a tabela por meio de um DBLINK criado em outro banco) apresenta as seguintes configurações abaixo (exemplo):
De posse destas informações, siga os passos abaixo para criar seu DBLINK:
1) No servidor de banco (DBORIGEM), a partir do qual você pretende acessar a tabela remota, edite o tnsnames.ora
dele e configure o nome de serviço para acessar o banco remoto (DBDESTINO):
2) No servidor de banco (DBORIGEM), faça um teste para verificar se consegue acessar o banco remoto (DBDESTINO). Use:
3) O teste do passo 2 é MUITO importante, pois você assegura que consegue se conectar no servidor remoto a partir do servidor de
origem e também que não existe nenhum problema de usuário, senha ou permissão de acesso à tabela. Se você tiver sucesso no
passo 2 e conseguir acessar a tabela, ótimo. Você já resolveu metade do problema. Se o seu teste não teve sucesso, revise
o TNSNAMES.ORA ou procure pesquisar mais sobre a eventual mensagem de erro que ocorreu;
4) No servidor de banco DBORIGEM) crie o seu DBLINK, apontando para o servidor onde se encontra DBDESTINO.
Ele pode ser um DBLINK público ou privado. Se optar pelo privado, crie ele no schema a partir do qual deseja acessar
o banco de dados. Se for público, crie ele através do usuário SYSTEM, por exemplo:
5) Pronto, agora basta você fazer um teste para verificar se está tudo OK. No servidor de banco DBORIGEM)
faça a seguinte querie:
6) Se neste ponto não deu certo, veja se você está executando o comando no schema certo (caso o DBLINK seja privado)
Abraços e boa sorte,
Sergio
Você está quase lá. Vamos fazer de conta que o servidor remoto/destino (no qual você precisa consultar
a tabela por meio de um DBLINK criado em outro banco) apresenta as seguintes configurações abaixo (exemplo):
SID = DBDESTINO
IP = 10.75.0.200
PORT = 1529
SCHEMA = SCOTT
PASSWORD = TIGER
NOME_TABELA_QUE_DESEJA_ACESSAR = EMP
1) No servidor de banco (DBORIGEM), a partir do qual você pretende acessar a tabela remota, edite o tnsnames.ora
dele e configure o nome de serviço para acessar o banco remoto (DBDESTINO):
banco_destino.world =
(description =
(address_list =
(address = (protocol = tcp)(host = 10.75.0.200)(port = 1528)))
(connect_data =
(sid = DBDESTINO))
obs: o ".world" é opcional, dependendo de como estiver configurado seu SQLNET.ORA
$> sqlplus scott/tiger@banco_destino.world
SQL> select count(*) from emp;
obs: o ".WORLD" é opcional, dependendo de como estiver configurado seu SQLNET.ORA
origem e também que não existe nenhum problema de usuário, senha ou permissão de acesso à tabela. Se você tiver sucesso no
passo 2 e conseguir acessar a tabela, ótimo. Você já resolveu metade do problema. Se o seu teste não teve sucesso, revise
o TNSNAMES.ORA ou procure pesquisar mais sobre a eventual mensagem de erro que ocorreu;
4) No servidor de banco DBORIGEM) crie o seu DBLINK, apontando para o servidor onde se encontra DBDESTINO.
Ele pode ser um DBLINK público ou privado. Se optar pelo privado, crie ele no schema a partir do qual deseja acessar
o banco de dados. Se for público, crie ele através do usuário SYSTEM, por exemplo:
create database link DB_SERVIDOR_DESTINO
connect to SCOTT identified by TIGER
using 'BANCO_DESTINO.WORLD'
OU
create PUBLIC database link DB_SERVIDOR_DESTINO
connect to SCOTT identified by TIGER
using 'BANCO_DESTINO.WORLD'
obs: o ".WORLD" é opcional, dependendo de como estiver configurado seu SQLNET.ORA
faça a seguinte querie:
SQL> select * from EMP@DB_SERVIDOR_DESTINO;
<< resultados>>
SQL> commit; <- só pra não deixar pendente uma sessão no servidor de destino
6) Se neste ponto não deu certo, veja se você está executando o comando no schema certo (caso o DBLINK seja privado)
Abraços e boa sorte,
Sergio
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Qui, 24 Mar 2022 3:17 pm
- Localização: Goias
Olá! Colega estou tentando criar um link para acessar banco Oracle no PostgreSQL.
Quando executo o seguinte scripts no Postgres
CREATE DATABASE LINK bd_geop
CONNECT TO geop IDENTIFIED BY lf2012
USING 'GEOP';
Recebo o erro:
ERROR: syntax error at or near "TO"
LINE 2: CONNECT TO geop IDENTIFIED BY lf20oh
Preciso fazer algum comando no Postgresql para aceitar esse comando?
Quando executo o seguinte scripts no Postgres
CREATE DATABASE LINK bd_geop
CONNECT TO geop IDENTIFIED BY lf2012
USING 'GEOP';
Recebo o erro:
ERROR: syntax error at or near "TO"
LINE 2: CONNECT TO geop IDENTIFIED BY lf20oh
Preciso fazer algum comando no Postgresql para aceitar esse comando?
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Qui, 24 Mar 2022 3:17 pm
- Localização: Goias
Olá, Estou tentando acessar uma tabela do banco Oracle a partir do SGBD do PostgreSQL. Estou tentando fazer essa conexão através de Db_link, quando executo recebo a mensagem:
ERROR: could not establish connection DETAIL: could not connect to server: Connection timed out (0x0000274C/10060) Is the server running on host "10.138.100.109 and accepting TCP/IP connections on port 5432?
Como faço a conexão entre esses dois bancos?
ERROR: could not establish connection DETAIL: could not connect to server: Connection timed out (0x0000274C/10060) Is the server running on host "10.138.100.109 and accepting TCP/IP connections on port 5432?
Como faço a conexão entre esses dois bancos?
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 1 visitante