ORACLE常见错误操作及解决方案

 
1. 安装 Oracle 后,更改 Windows 计算机名,导致部分 Oracle 第三方工具,如 :PLSQL 
Developer 无法登陆,并提示 ORA-12541:TNS:no listener ORA-12547:TNS: 丢失联系等错误信息的解决方法。
答:从 Oracle 的错误提示来看 , 是说 TNS:no listener ,估计是某种服务没有启动,打开 windows 管理工具 -> 服务,一看,有一个 OracleOraHome90TNSListener 这样的服务,和错误信息题是一致,基本就可以肯定是这个服务所引发的问题。再一看,该服务没有启动,遂手工启动,刷新后一看,该服务居然马上就自动关闭了。重试 N 次,结果一样。到 Google 搜索看看,没想到这还是一个普遍的问题,有一个人提出,把安装目录下的 listener.ora 打开察看。如: d:/oracle/ora90/network/admin/listener.ora
打开该配置文件后发现如下一段配置信息:
LISTENER =
 (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = local)(PORT = 1521))
      )
    )
 )
 
当看到这一行 HOST=local 的时候,问题解决了。原来是由于几天装好 Oracle 后,又改了 Windows 的计算机名,而这个配置文件中记录的监听主机名还是原来的名称,这也就怪不得, OracleOraHome90TNSListener 服务无法启动了,马上修改为现在的计算机名,再次启动 OracleOraHome90TNSListener 服务成功, PL/SQL Developer 连接 Oracle 数据库成功,不能登陆故障排除。
2 、症状:原来是能启动的,但是在改了域名和机器名之后就不能启动 :
解决:
1. 删除 %oracle_home%/network/agent/*.Q
2. 重新启动服务即可
c:/agentctl start
 
解释:
OracleOraHome90Agent 服务如果不能启动,则 OIA 也就不能运行, OIA 不能运行则无法实现在 OMS 登陆后的 Intelligent Agent 节点搜索功能,如果不是 Intelligent Agent 自动搜索的节点,而是手动搜索配置的节点,则登陆 OMS 后无法使用诸多 OMS 提供的 GUI 功能,例如数据备份和数据导入 / 导出等。
而由于 OracleOraHome90Agent 服务的启动和 Oracle 安装时的机器名域名等密切相关,造成后来改动机器名后, OracleOraHome90Agent 总是无法启动,疑惑了很久,查了很多资料,都没能解决这个问题,于是抱着试试看的心情,在 Google 上以“ OracleOraHome92Agent ”为关键字搜索,结果就出现了最上面所提供的解决方案,真是踏破铁鞋无觅处,得来全不费功夫阿!看了那些 *.Q 的二进制文件,估计是 Agent 在安装时的配置信息,在机器名发生变动后,启动 OracleOraHome90Agent 服务时, OracleOraHome90Agent 要读取这些二进制文件中的配置信息,配置文件中的机器名与现在的机器名不符合,造成了 OracleOraHome90Agent 不能启动,将这些配置文件全部删除,然后用命令行 agentctl start 从新启动 OracleOraHome90Agent ,则会从新将现有的最新机器名写入到配置信息,并从新创建这些配置文件,因而问题得到解决。
总结:
Oracle 对服务器机器名,域名等信息高度依赖,所以如无特殊要求,在 Oracle 数据库安装后,不要轻易修改机器名和域名等相关信息,不然可能会造成很多不必要的麻烦。 
上一页  [1]  [2]  
【责编 :Peng
 
3、安装OracleClient时, Developer 无法登陆,并提示 ORA-12541:TNS:no listener ORA-12547:TNS: 丢失联系等错误信息的解决方法。
原OracleDataBase下 d:/oracle/db_1/network/admin/listener.ora, 没有任何改。只是安装 Client Sql/Devloper 就无法登陆。从而可知原因是由安装C linet 引起,找到 Client 安装路径下的 /network/admin/listener.ora 并更改 listener.ora 正常登陆。
 
4、 ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME

       
产生原因:上述 ORACLE 错误为回滚段表空间不足引起的,这也是 ORACLE 数据管理员最常见的 ORACLE 错误信息。当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。
解决方式:使用 “ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file” 命令向指定的数据增加表空间,根据具体的情况可以增加一个或多个表空间。当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意的增加回滚段表空间的大小,可使用下列的语句先查询一下剩余的 tablespace 空间有多少:
Select user_name,sql_text from V$open_cursor where user_name=’<user_name>’;
  如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。你也可以用以下语句来检测一下 rollback segment 的竞争状况: Select class ,count from V$waitstat where calss in (‘system undo header’,’system undo block’,’undo header’,’undo block’);    Select sum(value) from V$sysstat where name in (‘db_block_gets’,’consistents gets’);
如果任何一个 class in count/sum(value) 大于 1% ,就应该考虑增加 rollback segment  

5、   ORA-01652:unable to extend temp segment by num in tablespace name
产生原因: ORACLE 临时段表空间不足,因为 ORACLE 总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。
解决方法:我们知道由于 ORACLE 将表空间作为逻辑结构 - 单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图 SYS.DBA_FREE_SPACE ,视图中每条记录代表可用空间的碎片大小:   
SQL>Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=’<users>’;
返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:
 
SQL>SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME=name;
 
通过下面的 SQL 命令修改临时段表空间的缺省存储值:
           SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY);
适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:      SQL>ALTER USER username TEMPORARY TABLESPACE new_tablespace_name; 
    
使用 ALTER TABLESPACE 命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。
 
 
6 、ORA-1652:unable to extend temp segment by 207381 in tablespace TEMPSPACE
ORA-01628:max # of extents num reached for rollback segment num
·             产生原因:这种错误通常为一个回滚段和一个表空间已经达到 MAXEXTENTS 参数设置的极限。要注意的是这个 MAXEXTENTS 不是该回滚段或表空间的硬件极限,硬件极限取决于数据库创建时在 init.ora 文件中指定的 DB_BLOCK_SIZE 参数的值。
解决方法:使用 SQL 命令 ALTER TABLESPACE…STORAGE MAXEXTENTS XXXX )来增加 MAXEXTENTS ,其中 “XXXX” 值必须大于错误信息中所指的数值,但不能大于 LARGEST MAXEXTENT 的值,如果已经达到了 LARGEST MAXEXTENT VALUE ,解决的办法就是重新创建较大的范围尺寸,使用带有选项 COMPRESS=Y Export 工具导出表,如果表空间有可用空间,先给表做一个备份,用 alter tablespace tablespace_name 更改其名字,然后再装载表回数据库。
查看其错误出现的地方,如果出现在回滚段或索引上,那么必须将其删除并重建,如果出现在临时表空间,修改临时表空间的存储字段,便可解决这个问题。
7 、ORA-1628:max # extents 50 reached for rollback segment RBS_1
ORA-00600:internal error code,arguments:[num],[?],[?],[?],[?]
产生原因:这种错误通常为 ORACLE 的内部错误,只对 OSS ORACLE 开发有用。 ORA-600 的错误经常伴随跟踪文件的状态转储(系统状态和进程状态),系统状态存储将包括 ORACLE RDBMS 持有的当前对象的信息,进程状态转储则将显示特殊进程持有的对象,当进程符合了某错误条件时,经常是由于一些信息取自它持有的一个块,如果我们知道这些错误进程持有的块,就容易跟踪问题的来源。
解决方法:一般来说出现这个错误我们本身是无法解决的,只有从提高系统本身各方面来解决这个内部问题,如增加硬件设备,调整系统性能,使用 OPS (当然 OPS 从某种意义上说并不是一种好的解决方式)等。 ORA-600 错误的第一个变量用于标记代码中错误的位置(代码中的每个部分的第一变量都不一样),从第二个到第五个变量显示附加信息,告诉 OSS 代码在哪里出现了错误。
8 、 ORA-00600: internal error code, arguments: [1237], [], [], [], [], [], [], []

ORA-03113
end-of-file on communication channel
产生原因:通讯不正常结束,从而导致通讯通道终止
解决方法:
1>. 检查是否有服进程不正常死机,可从 alert.log 得知
2>. 检查 sql*Net Driver 是否连接到 ORACLE 可执行程序
3>. 检查服务器网络是否正常,如网络不通或不稳定等
4>. 检查同一个网上是否有两个同样名字的节点
5>. 检查同一个网上是否有重复的 IP 地址
9 ORA-00942:table or view does not exist
产生原因:这是由于装载的表或视图不存在,多半是 CATEXP.SQL 还没有运行,无法执行 Export 视图 , 如果 CATEXP.SQL 已经运行,则可能是版本错误。
解决方法:因为 Import Export 共享的一些视图是通过运行 CATEXP.SQL 来装载的(它们具有相同的视图),并不生成单独的 CATEXP.SQL ,因而造成视图与 Export 代码不同步,较难保持彼此之间的兼容,用户就必须建立自己的 Export 应用,从而避免 ORA-00942 的错误。
上述错误均为我们在使用回滚段时比较常见的问题, ORA-01598 指明当前使用的回滚段的状态为 “not online” ,不能使用,将它改为 “online” 状态即可使用; ORA-01636 指明当前回滚段已经为 “online” 状态,可以直接使用,不用再集合它。
10 ORA-1636 signalled during: alter rollback segment rb00 online
我们在做统计时还可能遇到下述问题:一个 rollback segment 的状态为 ”Needs Recovery” 的现象,这是由于 ORACLE 回退一个事物表中的没有提交的事物时失败所造成的。通常原因为一个 datafile 或者 tablespace 是在 offline 的状态或者一个 undo 的目标被破坏或者 rollback segment 被破坏。解决的办法是将所有的 tablespace datafile 都置为 online 状态,如果不能解决则做下面的工作:
1>. initsid.ora 中加入 event=”10015 trace name context forever lever 10”;
2>.shutdown 数据库然后重启;
3>. $ORACLE_HOME/rdbms/log 下,找到 startup 时生成的 trace file;
4>. trace 文件中,找到下列信息 “error recovery tx(#,#) object #”;
5>. 根据 object#( sys.dba_objects 表中的 object_id 相同 ) sys.dba_objects 表中查出该 object 的名字;
6>. 将该 object drop ;
7>. init.ora 文件中将该 rollback segment 放回 rollback_segments 参数中,删除 event;8>.shutdown 数据库然后重启。此时 ”Needs Recovery” 的问题应该是完全解决了,否则就是 rollback segment 被破坏了。
11 ORA-01688:unable to extend table name.name partition NAME by NUM in tablespace NAME
产生原因:指定的 tablespace 空间已经被占用满,无法扩展。
解决方法:使用 “ALTER TABLESPACE ADD DATAFILE” 命令增加文件系统文件和原始分区,或者增加 INITIAL 的大小(如: alter tablespace CDRS101 default storage(next 500M pctincrease 1) )应该能够解决,否则就是有人使用你的表空间上创建了一个比较大的数据文件导致你的表空间不够用。
 
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值