我在后台用sqlplus 能连接数据库但是我用proc的代码编译后的程序连接数据可就报:
ORA-01034: ORACLE not available
ORA-27101: shared memory ed memory realm does not
求教各位这是怎么回事啊
sqlnet.ora有配置:
SQLNET.AUTHENTICATION_SERVICES = (BEQ,NONE)listener.ora配置:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = “oracle所在ip”)(PORT = 1521))
)
)SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORAC146)
(SID_NAME = ORAC146)
(ORACLE_HOME = /opt/oracle/app/oracle/product/11.1.0/db_1)
)
)proc关键代码:
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR passwd[20];
VARCHAR dbname[20];
char db_link_name[20];
EXEC SQL END DECLARE SECTION;
......
EXEC SQL CONNECT :username IDENTIFIED BY :passwd
AT :db_link_name USING :dbname;...... Oracleproc数据库C/C++
ORA-01034: ORACLE not available
ORA-27101: shared memory ed memory realm does not
求教各位这是怎么回事啊
sqlnet.ora有配置:
SQLNET.AUTHENTICATION_SERVICES = (BEQ,NONE)listener.ora配置:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = “oracle所在ip”)(PORT = 1521))
)
)SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORAC146)
(SID_NAME = ORAC146)
(ORACLE_HOME = /opt/oracle/app/oracle/product/11.1.0/db_1)
)
)proc关键代码:
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR passwd[20];
VARCHAR dbname[20];
char db_link_name[20];
EXEC SQL END DECLARE SECTION;
......
EXEC SQL CONNECT :username IDENTIFIED BY :passwd
AT :db_link_name USING :dbname;...... Oracleproc数据库C/C++
SQL> startup;
ORACLE instance started.Total System Global Area 5010685952 bytes
Fixed Size 2143984 bytes
Variable Size 3087010064 bytes
Database Buffers 1879048192 bytes
Redo Buffers 42483712 bytes
Database mounted.
Database opened.
SQL> 该程序想实现在本地登陆别的id上的指定db
源程序:
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR passwd[20];
VARCHAR dbname[20];
char db_link_name[20];
EXEC SQL END DECLARE SECTION;EXEC SQL INCLUDE SQLCA;int main(int argc, char** argv)
{
printf("begin %s\n",argv[0]);
strcpy(username.arr,argv[1]);
username.len = strlen(username.arr);
strcpy(passwd.arr,argv[2]);
passwd.len = strlen(passwd.arr);
strcpy(dbname.arr,argv[3]); //"d:ORCL151"
passwd.len = strlen(dbname.arr);
memset(db_link_name,0,sizeof(db_link_name));
strcpy(db_link_name,argv[4]);//"ORCL151"
//EXEC SQL DECLARE db_link_name DATABASE;
EXEC SQL WHENEVER SQLERROR do sqlerror();
EXEC SQL CONNECT :username IDENTIFIED BY :passwd
AT :db_link_name USING :dbname;
printf("Connect to ORACLE as username:%s",username);
//LOGOUT
EXEC SQL COMMIT WORK RELEASE;
printf("end %s\n",argv[0]);
return 0;
}sqlerror()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("ORACLE error detected:\n");
printf("%s\n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK WORK RELEASE;
exit(1);
}程序执行:
./test username password orcl151 db151报错就是我开始说的 ORA-01034 和 ORA-27101
本人新手求大神指教啊