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,执行之!
PS:
1、我的ora_startup.bat:
net start OracleOraHome81TNSListener
net start ORACLESERVICEORADB
svrmgrl 一般情况下不用,不过有时少不了它的,具体步骤见第5步。
2、我的ora_shutdown.bat:
net stop OracleOraHome81TNSListener
net stop ORACLESERVICEORADB
3、ORACLE相关服务名请参见“管理工具”之“服务”中以ORACLE开头的服务名。
1)错误信息:ORA-01045 User scglesi Lacks create Session privilege;logon denied;
原因:用户还没有被授权创建会话的权利。
解决方法:使用命令授予用户会话的权利。
例如:Grant Connect To scglesi。
2)错误信息:ORA-01950 表空间SYSTEM中无权限。
原因:用户还没有被授权使用的权利。
解决方法:使用命令授予用户创建资源的权利。
例如:Grant Resource To 用户名;
3)错误信息:ORA-28009 Connection to SYS should be as sysdba or sysoper;
原因:用SYS用户登录数据库时,语法与其它操作用户写法不同,必须写明登录权限。
解决方法:使用正确的书写方式。
例如:SYS/口令@服务名 AS SYSDBA;
4)错误信息:ORA-01017 Invalid username/password logon denied;
原因:除口令错误外,如果存在多个数据库实例时,要求书写数据库服务名。
解决方法:使用正确的书写方式。
例如:SQLPLUS 用户名/口令@服务名
5)错误信息:VTK-1000:无法连接到Management server。请验证您已输入Oracle Management Server的正确主机名和状态。
原因:除用户名,口令,主机名错误外,最主要原因是未创建Oracle Management Server资料档案库,另外请检查在控制面板中“服务”中Oracle Management Server服务未启动,请手动检查。
解决方法:用户名用默认管理员sysman口令为oem_temp,主机名为计算机名,资料档案库的创建方法运行Configuration and Migration tools中的Enterprise Manager Configuration Assistant。

6)错误信息:ORA-03106 two-task communication protoco1 error
注册表中同时含有与现有版本冲突的信息要求安装或导入注册表信息时,删除注册表中原有Oracle版本信息。
7)错误信息:ORA-12154:TNS不能解析服务名。
原因:主要出现在客户机与服务器连接过程中,网络服务名不对,主机地址等参数不对。
解决方法:用Net Configuration Assistant重新配置一个连接别名测试或者将服务器中的
tnsnames.ora拷贝覆盖客户机中的同名文件,应为低版本tnsnames.ora语法与高版本不兼容。
8)故障:低版本数据导入到高版本数据库中时中文信息丢失,显示为问号。
原因:两个版本的字符集不一致。
解决方法:可以用程序将低版本表数据另存为dbf格式,再用工具将dbf格式引入到高版本数据库中(如pb工具)。
9)故障:数据从客户端程序录入获查询数据,中文信息丢失,显示为问号。
原因:客户端与服务器端安装时的字符集不一致。
解决方法:按照服务器注册表中的NLS_LANG修改客户机注册表中相应的NLS_LANG值。
注意:以上方法在服务器为Windows 2000 Server安装Oracle 9.2.1.0企业版,客户机为Windows 98操作系统,安装Oracle 9.2.1.0客户端测试通过。(n101)

   10)ORA-01033: ORACLE initialization or shutdown in progress
     >>svrmgrl
   >>connect  internal
   >>shutdown
>>startup mount

11)ORA-03113: 通信通道的文件结束
这个错误是因为Oracle客户端和数据库服务器连接中断或还未连接成功导致的
等待或者重启服务器

12)oracle 数据库链接未处于活动状态
检查下有没有跟数据库链接一样服务名的网络服务名,就是本地服务里的名字

13)java oracle ORA-01839: date not valid for month sp
这是在java类里报的错,在plsql下执行同样的语句没有问题
sql:SELECT * FROM jizhang.bookuse_book WHERE to_date('2005-1-1','yyyy-mm-dd') and to_date('2005-1-31','yyyy-mm-dd') group by DATECREATED  
这个语句在java类里,就会报错,解决办法就是给一位的月份和日期前边加0
就是在to_date的位置,to_date('2005-01-01','yyyy-mm-dd')
改成下边这样执行通过
sql:SELECT * FROM jizhang.bookuse_book WHERE to_date('2005-01-01','yyyy-mm-dd') and to_date('2005-01-31','yyyy-mm-dd') group by DATECREATED  


14)oracle ORA-00904 invalid identifier解决办法,字段名错误
ORA-00904 invalid identifier
这个错误是因为 字段名写错了
检查下字段名

15) oracle Database C0038:ora-00904:无效的标识符
关键字: oracle database c0038 ora-00904 无效的标识符
是执行有temp语句时提示的错误
Sql代码
select rowNUM, temp.* from (select * from dzjc.dzjc_flow )  
select rowNUM, temp.* from (select * from dzjc.dzjc_flow )

16)ORA-01810 格式代码出现两次,日期格式,时间格式,to_date错误
关键字: 01810 格式代码 两次 日期 时间 格式 to_date
这个错误的原因是使用了两次MM
C#代码
to_date('YYYY-MM-DD HH:MM:SS')  
to_date('YYYY-MM-DD HH:MM:SS')
需要把分钟的MM改成MI
C#代码
to_date('YYYY-MM-DD HH:MI:SS')  
to_date('YYYY-MM-DD HH:MI:SS')
这样可能会出现小时变成了上下午的12小时格式,所以可以给小时设置成24小时格式
C#代码
to_date('YYYY-MM-DD HH24:MI:SS')

17) ORA-01033: ORACLE initialization or shutdown in progress提示:ORA-01033: ORACLE initialization or shutdown in progress
解释:数据库正在启动中。多等一会儿然后再登录就可以了

转载于:https://www.cnblogs.com/jiangguang/articles/2761091.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值