Amigo,

confere o tnsnames e faltou também o SID na hora do connect.

att.

Anderson Santiago
DBA Sr.
www.ruevers.webs.com


----- Mensagem original ----
De: Alfredo Guimarães <[EMAIL PROTECTED]>
Para: [email protected]
Enviadas: Segunda-feira, 28 de Abril de 2008 17:12:46
Assunto: [oracle_br] PRO*C com Oracle 10G

Pessoal,

há alguém que possa me ajudar?

PROBLEMA:

tenho uma aplicação em C que executa o seguinte código para conectar ao
banco:

void con_bd (void)
/* Conectar `a Base de Dados Oracle. */
{
/* EXEC SQL BEGIN DECLARE SECTION; */
/* VARCHAR username [50]; */
struct { unsigned short len; unsigned char arr[50]; } username;
/* VARCHAR password [50]; */
struct { unsigned short len; unsigned char arr[50]; } password;
/* EXEC SQL END DECLARE SECTION; */

/* Obter das variaveis de ambiente o nome e a senha da base de dados a
ser acessada. */
strcpy ( (char *) username.arr, (char *) getenv ("ads_bdus") );
username.len = strlen (username.arr) ;
strcpy ( (char *) password.arr, (char *) getenv ("ads_bdpw") );
password.len = strlen (password.arr) ;

/* Logar na ORACLE. */
/* EXEC SQL WHENEVER SQLERROR DO sqlerror (); */

/* EXEC SQL CONNECT :username IDENTIFIED BY :password; */
{
sqlstm.iters = (unsigned int )10;
sqlstm.offset = (unsigned int )2;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlstm.sqhstv[ 0] = (unsigned char *)&username;
sqlstm.sqhstl[ 0] = (unsigned int )52;
sqlstm.sqindv[ 0] = ( short *)0;
sqlstm.sqharm[ 0] = (unsigned int )0;
sqlstm.sqhstv[ 1] = (unsigned char *)&password;
sqlstm.sqhstl[ 1] = (unsigned int )52;
sqlstm.sqindv[ 1] = ( short *)0;
sqlstm.sqharm[ 1] = (unsigned int )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlcex(&sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) sqlerror();
}

este código funciona perfeitamente com o oracle8i.

porém quando tento executá-lo no Oracle 10g ocorre o seguinte erro:
SQLNET.LOG

OBS: (HOST=yyyyy) (USER=xxxxx) ) eu alterei os verdadeiros

Fatal OSN connect error 12545, connecting to:
(DESCRIPTION= (ADDRESS= (PROTOCOL= beq)(PROGRAM= /home/oraaurig/ app/frs10g/ 
product/10. 1.2/bin/oracle) (ARGV0=oracleboc aina10i1) (ARGS='(DESCRIPT 
ION=(LOCAL= YES)(AD
DRESS=(PROTOCOL= beq)))')( DETACH=NO) )(CONNECT_ DATA=(CID= (PROGRAM= )
(HOST=yyyyy) (USER=xxxxx) )))

VERSION INFORMATION:
TNS for SVR4: Version 2.1.6.0.0 - Production
Unix Domain Socket IPC NT Protocol Adaptor for SVR4: Version
2.1.6.1.0 - Production
Oracle Bequeath NT Protocol Adapter for SVR4: Version 2.1.6.1.0 -
Production
TCP/IP NT Protocol Adapter for SVR4: Version 2.1.6.1.0 - Production
Time: 28-APR-08 16:43:02
Tracing not turned on.
Tns error struct:
nr err code: 12206
TNS-12206: TNS:received a TNS error during navigation
ns main err code: 12545
TNS-12545: Connect failed because target host or object does not exist
ns secondary err code: 12560
nt main err code: 515
TNS-00515: Connect failed because target host or object does not exist
nt secondary err code: 2
nt OS err code: 0

MINHA PERGUNTA, quando eu executo o sqlplus na linha de comando apenas
passando o user e password o que tem que estar setado em meu ambietne para
não ocorrer o erro acima???

OBS: meu ambiente está em UNIX Solaris 10.

obrigado para quem possa me ajudar.

Alfredo

[As partes desta mensagem que não continham texto foram removidas]


 


      Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
armazenamento!
http://br.mail.yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]

Responder a