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

原文地址:https://www.cnblogs.com/publiter/p/13595698.html