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参数来指定该序列何时进行循环。