错误一、ORA-00942: table or view does not exist
此时需要查看连接数据库接口使用的的用户名下是否存在操作的数据表,以及该用户对该数据表操作的权限。
show user
查看当前是以哪个用户登录的
conn / as sysdba 以SYS用户登录进数据库
此时可以退出以数据库连接的用户名登陆。
select owner,table_name from all_tables where table_name='BOOKS';
查看OWNER字段是谁 也就是这个表的所有者
假设所有者为yuandan
则进行如下查询
select * from yuandan.books
输出这个,这是不是说不存在books表?
错误二、ORA-32104
此为OCCI接口Environment::createEnvironment(Environment::DEFAULT)错误代码:需要设置ORACLE_HOME
错误三、ORA-12541
ORA-12541: TNS: 无监听程序,listener监听服务没有开启
在服务器端机器:
1.保证listener已经启动
2.保证数据库已经启动。
如果数据库没有启动,用:
Oracle 9i:
dos>sqlplus “/ as sysdba”
sqlplus> startup
命令启动数据库
如果listener没有启动,用:
lsnrctl start [listener name]
lsnrctl status [listener name]
命令启动listener
【总结】:
oracle数据库服务器安装或重启后,应该先设置ORACLE_BASE ,ORACLE_HOME ,RACLE_SID和LD_LIBRARY_PATH 环境变量。然后startup数据库,最后执行下面命令,可以消除以上错误。
$ ORACLE_BASE=/u01/app/oracle
$ ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1
$ export ORACLE_BASE ORACLE_HOME
$ export ORACLE_SID=gtpDB
$ export LD_LIBRARY_PATH=/u01/app/oracle/oracle/product/10.2.0/db_1/lib
$ emctl start dbconsole #启动 Oracle Enterprise Manager 数据库控制
$ isqlplusctl start #启动和停止 iSQL*Plus
$ lsnrctl start #启动监听器, 监听器接受客户端的连接请求
错误四、ORA-01013: user requested cancel of current operation
数据库连接正常,但执行select、update、insert等语句操作时程序会暂停,按下ctrl-c终止程序时就会出现这个错误,此时要退出数据库sqlplus连接端的用户。
即程序中使用数据库连接时
m_env->createConnection(“user”,“pass”,m_szDbName)
使用的这个用户如果同时又用了sqlplus连接到Oracle,就会出现如上错误。
sqlplus端退出该用户登陆
SQL > exit;
此时再运行程序则不会出现上面的错误。
也有可能是表被锁住了,将表解锁就行了
--锁表查询SQL SELECT object_name, machine, s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid; 找到被锁定的表,解锁 复制代码 代码如下:--释放SESSION SQL: --alter system kill session 'sid, serial#';