Oracle常见错误及解决方法
1、ORA-12541:TNS:没有监听器 原因:没有启动监听器或者监听器损坏。如果是前者,使用命令net start OracleOraHome81TNSListener(名字可能有出入)即可;如果是后者,则使用“Net8 Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路OK。在添加之前可能需要把所有的监听器先删除!)
2、ORA-12500:TNS:监听程序无法启动专用服务器进程 或 ORA-12560:TNS:协议适配器错误 原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。如果仍没有解决,请继续向下看。
3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步: 1)ORADIM -DELETE -SID oradb 删除数据库服务项 2)ORADIM -NEW -SID oradb 新增数据库服务项 注:这个过程中如果出错,就重启计算机!
4、ORA-12154:TNS:能解析服务名 原因:ORACLE的网络服务名没有正确配置。请使用“Net8 Configuration Assistant”工具向导之“本地网络服务名配置”配置TNS即可。如果仍没有解决,请继续向下看。
5、ORA-1034 :TNS:ORACLE不可用 原因:ORACLE的数据库服务正确启动,但是数据库没有打开! 使用命令: 1)svrmgrl 启动服务管理器 2)connect internal 以internal身份登陆 3)startup 打开数据库
6、ORA-12560:TNS:协议适配器错误(顽固性的) 原因:未知。 解决:必杀技--打开“Windows任务管理器”,杀死ORACLE.exe及ORADIM.exe进程,书写自己的ora_startup.bat,执行之!
7、ORA-12638:身份证明检索失败 原因:服务端开了防火墙,且使用了本地操作系统认证 解决:修改sqlnet.ora文件, 1)NTS改为NONE,oracle将采用口令文件认证(此时 remote_login_passwordfile=exclusive)如connect /as sysdba 登录,后报错RA-01031: insufficient privileges,实际上是要求你输入sysdba的用户名和密码 SQLNET.AUTHENTICATION_SERVICES= (NONE) 2)修改查找连接的字符串顺序:tnsnames.ora,直接使用简单连接字符串,使用计算机名称 NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)
8、ArcSDE数据被锁定后的解锁方法 描述:(1)删除所选对象失败 锁定请求与已有锁定冲突。 (2)在sde数据被锁定的情况下,编辑、创建featureclass或者注册版本的时候会报告:Lock request conflicts with an established lock。多半情况下关闭数据库连接可以解决这个问题,但有时候问题依然存在。 原因:ArcSDE数据被锁定 解决:sqlplus下查询lock表,如果有记录返回,那么手工删除这些表中的记录。 select t.,t.rowid from sde.state_locks t; select t.,t.rowid from sde.object_locks t; select t.,t.rowid from sde.layer_locks t; select t.,t.rowid from sde.table_locks t;
9、基础 DBMS 错误 ORA-01950: 对表空间 ‘SYSTEM’ 无权限 描述:新建用户(默认表空间SYSTEM)后用于上传shp,提示该错误 原因:对表空间权限不足,无法提交数据到该表空间 解决:对用于存储矢量数据的用户授权 – Grant/Revoke role privileges grant connect to user_name; grant resource to user_name; grant select_catalog_role to user_name; – Grant/Revoke system privileges grant unlimited tablespace to user_name;
10、客户端连接Oracle 12c的时候,报错误:ORA-28040: No matching authentication protocol 描述: 原因:oracle 12c的参数SQLNET.ALLOWED_LOGON_VERSION默认等于11。当我们使用11g JDBC之前版本的thin驱动连接的时候,就会报错。此处的ALLOWED_LOGON_VERSION不同于oracle版本号,而是内部连接驱动版本号。 解决:在数据库服务器上的oracle/network/admin/sqlnet.ora文件添加一行SQLNET.ALLOWED_LOGON_VERSION=8,重启数据库,重新连接数据库,可以成功连接,问题解决。
11、任何ArcGIS连接Oracle问题 描述:ArcMap、ArcCatalog连接Oracle失败问题 原因:一般会直接弹出错误信息,若信息不全,请参考%TEMP% 目录中的 sdedc_Oracle.log 文件以获得更多的错误消息。
12、conn / as sysdba报错连接不上 1、检查sqlnet.ora是否包含: SQLNET.AUTHENTICATION_SERVICES = (NTS)
2、检查listener.ora是否包含: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))
3、检查 我的电脑|右键|管理|本地用户和组|ora_dba 组中是否包含当前电脑登录用户
4、报错:协议适配器错误 检查本机是否有32、64位两种sqlplus.exe,且cmd默认启动的是32位的 必须使用dbhome中的64位sqlplus.exe程序启动,因此在cmd中键入以下命令 >cd /d %ORACLE_HOME%BIN %ORACLE_HOME%BIN > sqlplus / as sysdba