ORACLE报错和解决方案

ORA-01034: ORACLE not available ORA-27101

出现ORA-01034和ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正常启动,共享内存并没有分配给当前实例.所以,通过设置实例名,再用操作系统身份验证的方式,启动数据库。这样数据库就正常启动了,就不会报ORA-01034和ORA-27101两个启动异常了。

还有就是可能是登录数据库后,不正常的退出,比如直接关掉窗口,而这时数据库里有未完成的动作,再次登录时就会提示“insufficient privileges”的报错,SQL>shutdown immediate;SQL>startup;就恢复正常了。

最后可能你虚拟机的共享内存问题,看下数据库的配置文件是否对应了512M内存?还是你设置的大了,本身给的不足。

方法/步骤

先看oracle的监听和oracle的服务是否都启动了。

启动oracle监听:cmd命令行窗口下,输入lsnrctl start,回车即启动监听。

查看oracle的sid叫什么,比如创建数据库的时候,实例名叫“orcl”,那么先手工设置一下oralce的sid,cmd命令窗口中,set ORACLE_SID=orcl

再输入sqlplus  /nolog,回车

再输入 conn / as sysdba;回车

再输入startup,回车.这步是启动oracle服务。如果startup启动被告知已经启动了,可以先输入shutdown immediate;等shutdown结束之后,再输入startup。

过几秒钟等命令运行完成,就能连接了。这个时候,可以输入"select * from user_tables;"测试一下,看是否有查询结果。

ORA-12560: TNS: 协议适配器错误的解决方法

造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:

1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。

2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.

3.注册表问题。regedi 然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.

ORACLE错误码及解决方法

以下内容均以错误码,错误名,错误原因,修改建议形式介绍。

ORA-00903    无效的表名    试图在不存在的表中创建的索引。设置正确的表名。

ORA-00904    无效的标识符    试图在不存在的列中创建的索引。检查表中的列名,并且确定应该使用的列名。

ORA-01408    已经索引过的列表    试图创建索引,而带有相同顺序的列集合已经存在。确保列具有正确的顺序,如果索引已经存在,就不需要再次创建该索引了。

ORA-00959    表空间已经存在    试图在不存在的表空间中创建索引。使用DBA_TABLESPACES或者USER_TABLESPACES视图来找出正确的表空间名称。

ORA-01418    指定的索引不存在    试图删除不存在的索引。检查ALL_INDEXES视图来确定要删除的索引的实际名称。

ORA-01631,ORA-01632    索引中可以达到的最大的区号    索引扩展超出了maxextents所设置的值,扩展操作将会失败。这时需要增大索引的maxextents设置值或者使用更大的initial和next设置值来重新创建索引。

ORA-01467    排序键太长    数据库会遇到排序操作的问题。这些问题可能是由于给过多的列排序造成的,或者可能是由于使用过多的组函数所造成的也有可能是由于ORACLE数据库自身运行的错误所造成的。应该使用ORDER BY子句来减少列的数目,这是因为一此排序操作受限于数据库的块大小。需要注意的是,这个错误与sort_area_size无关。

ORA-01031    权限不够    创建索引的权限不正确。如果在除自己模式外的另一个模式中创建索引,则需要确保拥有create any index的权限;如果创建基于函数的索引,则需要确保拥有query rewrite的权限。

ORA-01654     不能表空间中扩展对象    "数据试图向所列出的索引中添加额外的区,而该操作执行失败,可能产生的原因是:
1.    表空间中的空闲空间已用尽
2.    在表空间中没有足够的相邻数据文件存在
3.    Pctincrease设置的值不正确
解决办法包括向表空间添加空间或者为索引重新设置next 参数值"。

ORA-02243    修改索引或修改物化视图的选项无效    使用了有语法错误的alter index命令。检查命令的正确性并且更正命令。

ORA-02429    不能删除用于强制使用唯一性键/主键约束的索引    试图删除用于强制使用表的主键或者唯一性键约束的索引。需要删除该约束来使索引得以删除。

ORA-01452    不能创建唯一性索引    试图在表中创建唯一性索引,而索引中的行不是唯一的。在试图重新创建的UNUSABLE索引,并且失败的数据加载操作创建了重复键的时候也可能发生这个错误。

ORA-0922    缺少选项或无效选项    试图使用无效的选项来创建视图。通过检查以确保已经正确地定义了视频的约束,包括disable novalidate键的使用。

ORA-0942    表或视图不存在    在不存在的表中创建视图。检查CREATE VIEW语句的语法是否正确

ORA-1779    不能修改映射到非键保留表中的列    试图在没有保留的的视图上执行DML语句。检查视图上所使用语句的语法,确定没有键保留的原因。检查该视图所有的表是否都有主键。对该视图进行改写并重新创建,然后重新执行该DML语句。

ORA-2261    表中已经存在唯一性键或主键    要在视图上创建视图约束,但类似的约束已经存在。

ORA-2443    不能删除约束——不存在的约束    试图删除不存在的约束。

ORA-4031    视图view_name有错    要使用的视图是无效的。重新编译该视图,然后使用show errors命令以确定产生这个问题的原因。可能是缺少视图所要调用的表、过程或者函数

ORA-00904    无效标识符    发出引用列的语句,而该列在引用 对象中不存在。例如:试图创建没有集群键的集群。

ORA-00906    缺少左括号    在使用的语句中存在语法错误。找出该错误,修改后重新执行这个语句。

ORA-00907    缺少右括号    在使用的语句中存在语法错误。找出该错误,修改后重新执行这个语句。

ORA-00941    缺少集群的名称    在create cluster命令中忘记包含集群的名称

ORA-00943    集群不存在    对一个不存在的集群发出alter cluster or drop cluster语句

ORA-00944    集群中的列数目不足    试图创建加入到集群中的表,但是表中没有包含足够数量的列来与集群相匹配。

ORA-00945    集群中所指定的列不存在    试图创建加入到集群中的表,但是没有在集群中指定正确的列。

ORA-00951    要删除非空的集群    试图删除非空的集群。应该先删除加入到集群中的表,或者使用including table子句来解决该问题。

ORA-00955    想要使用的名称正在由已存在的对象使用    想要使用的名称在表空间中已经存在。确定哪个对象正在使用这个名称,然后确定是否应该对该对象或者所创建的表进行重新命名。

ORA-00959    表空间不存在    试图在不存在的表空间创建对象。检查在CREATE 语句中使用的表空间名称,或者创建表空间。

ORA-01031    权限不够    没有足够的权限来执行请求操作。数据库管理员应该使用GRANT命令来授予合适的权限。

ORA-01447    ALTER TABLE命令不能用于集群中的列操作    在ALTER TABLE MODIFY命令中所指定的列是集群键的一部分不允许修改集群键中的列。

ORA-01655    不能在表空间中扩展集群    集群在列出的表空间中没有足够的空间来分配给另一个区。给该表空间分配更多的空间。

ORA-01656    达到了集群中最大的区号    集群中的区号已经达到了规定区号的最大值。使用ALTER CLUSTER命令将集群存储参数中所允许的最大区号更改为更大的数字。

ORA-01701    所使用的集群不合适    试图在语句中指定集群的名称,而在该语句中不允许出现这个集群。需要修改这个语句来解决该问题。

ORA-01715    UNIQUE子句不能用于集群索引中    试图使用UNIQUE子句来创建集群索引,不允许执行该操作。

ORA-01716    向集群中加入表的列定义与该集群中的列定义不相兼容    试图向集群中添加一个表,而该表列的数据类型与该集群键的列数据类型不相同。可以通过使用不同的列数据类型,或使数据类型相匹配来解决这个问题。

ORA-01769    多次使用CLUSTER选项说明    当创建用来加和集群中的表时,试图指定两个或多个CLUSTER子句。应该仅使用一个CLUSTER子句。

ORA-01770    在CREATE CLUSTER命令中不允许出现CLUSTER选项    试图在CREATE CLUSTER命令中添加CLUSTER子句。应该将该子句删除。

ORA-01771    在使用集群中表的命令时包含了不合法的选项    当在集群的表中使用ALTER命令或者CREATE命令时,试图包含下面选项中的一个:
intrans\maxtrans\pctfree\pctused\storage\tablespace.这些选项只允许在集群的ALTER命令或CREATE命令中使用,而不允许在集群中表的ALTER命令或CREATE命令中使用。

ORA-01782    不能为集群或集群中的表指定UNRECOVERABLE子句    试图使用UNRECOVERABLE子句来创建集群。不允许执行该操作。

ORA-01794    集群键列的最大数目为32    创建集群所使用的集群键列的数目超过了32。最多只能使用32列集群键来创建集群。

ORA-02033    为集群创建的集群索引已经存在    在集群上所要创建的索引已经存在。

ORA-2202    不允许向集群中添加更多的表    向集群中添加表的数量超过了32个。在集群中最多使用32个表。

ORA-02227    无效的集群名    在语句中包含了无效的集群名。应该使用有效的集群名称。

ORA-02228    多次出现SIZE子句    在语句中包含了两个或多个SIZE子句。应该仅使用一个SIZE子句。

ORA-02229    无效的SIZE选项值    所指定的SIZE值无效。应该使用正确的SIZE值。

ORA-03292    执行截断操作的表是集群的一部分    想要执行截断操作的表是集群中的一部分。不允许执行该操作。应该使用TRUNCATE CLUSTER命令来解决这个问题。

ORA-00955    想要使用的名称正在由已存在的对象使用    试图分配给序列的名称已经由数据库名称空间中的对象使用了。应该确保该序列在命名空间中尚未存在。

ORA-04003    序列参数START WITH超出了允许的最大大小(28位)    选择使用较小的START WITH参数值。

ORA-08004    序列号超出了MAXVALUE的值,并且不能实例化该序列    已经用完了给定序列中所有可用的序列号。可以选择用来删除和重新创建序列。可以使用ALTER SEQUENCE命令为序列增大MAXVALUE的设置值;或者使用ALTER SEQUENCE CYCLE来允许索引循环。

ORA-02287    该位置不允许使用序列号    试图在SQL中不允许使用序列的位置上使用序列。检查SQL语句,找到语句中使用的不合法序列号。

ORA-01722    无效的数字    该错误通常表明在CREATE SEQUENCE命令中使用了不正确的语法。检查该命令,确保所执行的命令正确。

ORA-01031    权限不够    没有创建序列所需要的权限。让数据库管理员授予合适的权限,然后重新执行创建操作。

ORA-04014    CYCLE类型的递减序列必须指定MINVALUE参数    定义一个递减序列,并且定义该序列的类型为CYCLE类型。需要添加MINVALUE参数来指定该序列何时进行循环。

ORA-04015    CYCLE类型的递增序列必须指定MAXVALUE参数    定义一个递增序列,并且定义该序列的类型为CYCLE类型。需要再添加MAXVALE参数来指定该序列何时进行循环。

猜你喜欢

转载自www.cnblogs.com/boomoom/p/10628034.html