Oracle数据库服务中常见的6个错误

Oracle数据库服务中常见的6个错误
Oracle数据库服务中常见的6个错误

Oracle数据库服务中常见的6个错误

没有人会否认Oracle是全球最有影响的数据库产品之一;不过好的东西似乎总不是那么好用(初看起来如此),甚至有些无情--总会给layman们一个个无情的错误号。下面是我个人的总结,条条有用,希望能给初学者一点启示。

关于“好的东西似乎总不是那么好用(初看起来如此)”的一个笑话:在参加 IBM DB2 512、513培训前,在校园网上下载到了安装程序,不过任凭我们几个同学研究个半天,也不知哪个文件是安装文件,竟没有安装成功。最后,一致认为:看来这个培训真是太有必要了!事后,才知道--我们下载的是4linux的!

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开头的服务名

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空间有多少:

如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。你也可以用以下语句来检测一下rollback segment的竞争状况:

如果任何一个class in count/sum(value)大于1%,就应该考虑增加rollback segment。

ORA-01652:unable to extend temp segment by num in tablespace name

产生原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。

解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:

返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:

通过下面的SQL命令修改临时段表空间的缺省存储值:

SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY);

适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:

SQL>ALTER USER username TEMPORARY TABLESPACE new_tablespace_name;

使用ALTER TABLESPACE命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。

一个报错例子如下:

ORA-01578:Oracle data block corrupted(file # num,block # num)

产生原因:当ORACLE访问一个数据块时,由于:

1、硬件的I/O错误;

2、操作系统的I/O错误或缓冲问题;

3、内存或paging问题;

4、ORACLE试图访问一个未被格式化的系统块失败;

5、数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者物理坏块,这时就会报ORA-01578的错误。

解决方式:由于ORACLE只有在访问到有问题的数据文件时才会报错,所以报错的时间有可能会比实际出错的时间要晚,如果ORA-01578出错信息提示数据坏块指向的是用户自己的数据文件,则用以下方法来解决:

如果通过下面的SQL语句查出的坏块出现有索引上,则只需重建索引即可

如果坏块出现在表上,先用以下语句分析是否为永久性坏块(建议多执行一两次,有助于鉴别数据坏块是永久性的(硬盘上的物理坏块)还是随机性的(内存或硬件错误引起)):

SQL>Analyze table validate structure cascade;

执行该命令后,可能会出现以下的结果:

ORA-01578:与原先错误信息有相同的参数,为永久性的物理或逻辑坏块;与原先错误信息有不同的参数,可能与内存,page space和I/O设备有关。

如果用户有此表的最新备份,那么最好是用此备份来恢复此表,或者使用event 10231来取出坏块以外的数据:

<1>.先关闭数据库

<2>.编辑init.ora文件,加入:

<3>.startup restrict

<4>.创建一个临时表:SQL>create table errortemp as select * from error;(error是坏表的表名)

<5>.把event从init.ora文件中删掉并重起数据库

<6>.rename坏表,把临时表rename成坏表的表名

<7>.创建表上的INDEX等

如果ORA-01578出错信息提示数据坏块指向的是数据字典或者是回滚段的话,你应该立即与ORACLE公司联系,共同商量一个好的解决办法。

这里所讲的解决方法只是比较常见的一种,一些更为具体的解决办法可以查看一下ORACLE的故障解决手册,那里面有浞及使用ROWID方法来取出坏块以外的数据的方法,这里就不介绍了

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更改其名字,然后再装载表回数据库。

查看其错误出现的地方,如果出现在回滚段或索引上,那么必须将其删除并重建,如果出现在临时表空间,修改临时表空间的存储字段,便可解决这个问题。

一个报错例子如下:

ORA-00600:internal error code,arguments:[num],[?],[?],[?],[?]

产生原因:这种错误通常为ORACLE的内部错误,只对OSS和ORACLE开发有用。ORA-600的错误经常伴随跟踪文件的状态转储(系统状态和进程状态),系统状态存储将包括ORACLE RDBMS持有的当前对象的信息,

进程状态转储则将显示特殊进程持有的对象,当进程符合了某错误条件时,经常是由于一些信息取自它持有的一个块,如果我们知道这些错误进程持有的块,就容易跟踪问题的来源。

解决方法:一般来说出现这个错误我们本身是无法解决的,只有从提高系统本身各方面来解决这个内部问题,如增加硬件设备,调整系统性能,使用OPS(当然OPS从某种意义上说并不是一种好的解决方式)等。ORA-600错误的第一个变量用于标记代码中错误的位置(代码中的每个部分的第一变量都不一样),从第二个到第五个变量显示附加信息,告诉OSS代码在哪里出现了错误。

一个报错例子如下:

ORA-03113:end-of-file on communication channel

产生原因:通讯不正常结束,从而导致通讯通道终止

解决方法:

1>.检查是否有服进程不正常死机,可从alert.log得知

2>.检查sql*Net Driver是否连接到ORACLE可执行程序

3>.检查服务器网络是否正常,如网络不通或不稳定等

4>.检查同一个网上是否有两个同样名字的节点

5>.检查同一个网上是否有重复的IP地址

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”状态,可以直接使用,不用再集合它。

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被破坏了。

ORA-01688:unable to extend table https://www.360docs.net/doc/6714290275.html, partition NAME by NUM in tablespace NAME

产生原因:指定的tablespace空间已经被占用满,无法扩展。

解决方法:使用“ALTER TABLESPACE ADD DATAFILE”命令增加文件系统文件和原始分区,或者增加INITIAL 的大小(如:alter tablespace CDRS101 default storage(next 500M pctincrease 1))应该能够解决,否则就是有人使用你的表空间上创建了一个比较大的数据文件导致你的表空间不够用。

一个报错例子如下:

Oracle权限不足问题集锦

Oracle Oracle权限不足问题集锦 跟Oracle数据库打交道的DBA都会遇到过 “Insufficient privileges”这样的错误, 出现权限不足问题的情况各有不同在本次的 Oracle系列电子书中,我们就总结了网友在 使用Oracle数据时遇到的Insufficient privileges错误。 ORA-01031:Insufficient privileges错误解决方法 以sysdba登录时的Insufficient privileges错误 Windows集群下的ORA-12638和ORA-01031错误 在不同的模式下执行SQL语句 TechTarget 中国《Oracle电子书》 1

TechTarget 中国《Oracle 电子书》 2

TechTarget 中国《Oracle 电子书》 3 解决创建存储过程时的 Insufficient privileges 错误 问:我需要使用Toad 在我的schema 中创建一个存储过程。 但是出现了“Insufficient privileges.”的错误。当我以 System 连接并将schema 的名称添加到表的前缀中 (schema.tablename),系统提示表不存在。请问问题出在哪里?我该如何解决? 答:为了在你的schema 中创建一个存储过程,你需要 有CREATE PROCEDURE 系统权限。你可以通过查询用户的DBA_SYS_PRIVS 来进行查看。此外,如果存储过程要参考对象,该用户还需要拥有相应的对象权限。举例来说,如果存储过程插入一行数据到SCOTT .EMP 表中,针对该表,用户必须被授予INSERT 权限。授权不能通过角色,你必须直接将对象权限授予用户。 (作者:Brian Peasland 译者:孙瑞 来源:TT 中国)

Oracle错误代码案例总结及解决方案

常见错误: ORA-00001:违反唯一约束条件(主键错误) ORA-00028:无法连接数据库进程 ORA-00900:无效sql语句 ORA-00904:字段名写错或是建表时最后一个字段有逗号 ORA-00907:缺少右括号 ORA-00911:无效字符 ORA-00917:缺少逗号 ORA-00918:未明确定义列 ORA-00922:丢失或无效的选项(表名等可能有空格) ORA-00923:未找到FROM关键字 ORA-00926:缺少value ORA-00933: SQL命令未正确结束 ORA-00936:缺少表达式 ORA-00937:不是单组分组函数 ORA-00942:表或视图不存在 ORA-00947:没有足够的值(一般是插入语句出现的错,插入值的数量与字段不符) ORA-00979:不是group by的表达式 ORA-01009:缺少法定参数(eg:sql做参数时,且sql语句为空时,报错) ORA-01098:数据库无法关闭及启动 ORA-01400:无法将null值插入 ORA-01401:插入的值对于列过大 ORA-01476:sql中存在除数为零 ORA-01579: 恢复过程中出现写错误 ORA-01580: 创建控制备份文件时出错 ORA-01581: 尝试使用已分配的回退段() 新区()

ORA-01582: 无法打开要备份的控制文件 ORA-01583: 无法获得要备份的控制文件的块大小 ORA-01584: 无法获得要备份的控制文件的文件大小 ORA-01585: 标识备份文件时出错 ORA-01586: 无法打开要备份的目标文件 ORA-01587: 复制控制文件的备份文件时出错 ORA-01588: 要打开数据库则必须使用RESETLOGS 选项 ORA-01589: 要打开数据库则必须使用RESETLOGS 或NORESETLOGS 选项ORA-01590: 段可用列表数() 超出最大数 ORA-01591: 锁定已被有问题的分配事务处理挂起 ORA-01592: 将第7 版回退段() 转换为Oracle 8 版格式时出错 ORA-01593: 回退段最佳大小( blks) 小于计算的初始大小( blks) ORA-01594: 尝试放回已释放的回退段() 区() ORA-01595: 释放区() 回退段() 时出错 ORA-01596: 无法在参数中指定系统 ORA-01597: 无法改变联机或脱机系统回退段 ORA-01598: 回退段''未联机 ORA-01599: 无法获得回退段(), 高速缓存空间已满 ORA-01600: 至多只有一个""在子句""()中 ORA-01601: 子句""()中的存储桶大小非法 ORA-01603: 子句""()中的分组大小非法 ORA-01604: 子句""()中的编号范围非法 ORA-01605: 子句""()中缺少编号 ORA-01606: gc_files_to_locks 不同于另一已安装例程的参数 ORA-01608: 无法将回退段''联机,其状态为() ORA-01609: 日志是线程的当前日志- 无法删除成员 ORA-01610: 使用BACKUP CONTROLFILE 选项的恢复必须已完成 ORA-01611: 线程编号无效- 必须介于1 和之间 ORA-01612: 线程已经启用 ORA-01613: 线程只有日志- 要求至少启用2 个日志 ORA-01614: 线程正忙- 无法启用 ORA-01615: 线程已安装- 无法禁用 ORA-01616: 线程已打开- 无法禁用 ORA-01617: 无法安装: 不是有效的线程编号 ORA-01618: 线程未启用- 无法安装

Oracle常见错误汇总

1.Oracle ORA-01555快照过旧的错误 首先了解Oracle在什么情况下会产生ORA-01555错误: 假设有一张6000万行数据的testdb表,预计testdb全表扫描1次需要2个小时,参考过程如下: 1、在1点钟,用户A发出了select * from testdb;此时不管将来testdb怎么变化,正确的 结果应该是用户A会看到在1点钟这个时刻的内容。 2、在1点30分,用户B执行了update命令,更新了testdb表中的第4100万行的这条记录, 这时,用户A的全表扫描还没有到达第4100万条。毫无疑问,这个时候,第4100万行的这条记录是被写入了回滚段,假设是回滚段UNDOTS1,如果用户A的全表扫描到达了第4100万行,是应该会正确的从回滚段UNDOTS1中读取出1点钟时刻的内容的。 3、这时,用户B将他刚才做的操作提交了,但是这时,系统仍然可以给用户A提供正确的数据, 因为那第4100万行记录的内容仍然还在回滚段UNDOTS1里,系统可以根据SCN到回滚段里找到正确的数据,但要注意到,这时记录在UNDOTS1里的第4100万行记录已经发生了重大的改变:就是第4100万行在回滚段UNDOTS1里的数据有可能随时被覆盖掉,因为这条记录已经被提交了! 4、由于用户A的查询时间漫长,而业务在一直不断的进行,UNDOTS1回滚段在被多个不同的 transaction使用着,这个回滚段里的extent循环到了第4100万行数据所在的extent,由于这条记录已经被标记提交了,所以这个extent是可以被其他transaction覆盖掉的!5、到了1点45分,用户A的查询终于到了第4100万行,而这时已经出现了第4条说的情况, 需要到回滚段UNDOTS1去找数据,但是已经被覆盖掉了,这时就出现了ORA-01555错误。

Oracle连接错误故障排除讲解

Oracle 连接错误故障排除 产品:Tableau Desktop, Tableau Server 版本:All 上次修改日期:24 Aug 2015 Oracle 驱动程序需要具有唯一格式的特定连接语句。然而,可能并不总是需要TNSNames.ora 文件。例如,如果仅安装了 Tableau 提供的 Oracle 文件,且不具有独立的 Oracle 客户端。Oracle 错误消息涉及 TNSNames.ora 文件。 通常,纠正“高级 Oracle 连接”对话框中的路由或命名语法,或者使 用 .WORLD 数据库全名,即可解决大部分 Oracle 连接问题。如果连接错误需要进一步进行故障排除,请参阅下面列出的 4 种常见连接错误。 ?ORA-03113:通信信道上的文件结尾 ?ORA-12154:TNS:无法解决指定的连接标识符 HOST 值不正确或者全局名称不正确或未知的问题 ?ORA-12514:TNS 侦听器当前无法识别连接描述符中请求的服务SERVICE 值不正确 ?ORA-12541:TNS:无侦听器 PORT 值不正确 ?ORA-00932:数据类型不一致 ORA-03113:通信信道上的文件结尾 ORA-03113 是任何干扰 Oracle 会话的问题的全捕获类型错误。造成该错误的原因可能有很多。请参阅下表,了解故障排除指南。 ?请参阅特定于此错误的 Oracle 文档:我的 Oracle 支持。 o请参阅 Oracle 的 B 常见错误故障排除页面。 ?Oracle 建议您检查网络问题并审查 SQL*Net 设置。 ?如果连接到 Oracle 9.2.0.5,则在很多情况下,造成此错误的主要原因是 Oracle 错误 3010227。请要求 Oracle 数据库管理员应用 Oracle 修补程序 9.2.0.6 或适合您服务器的另一个修补程序。 ?将 Oracle 初始化参数“STAR_TRANSFORMATION_ENABLED”设置为FALSE。 ?或者,如果您想进一步测试此问题,请遵循下面列出的可选过程。 Step 1 从 Tableau Desktop 开始页面,选择“连接到数据”。

oracle操作常见错误

1.[Err] ORA-02438: Column check constraint cannot reference other columns ORA-02438: 列检查约束条件无法引用其它列 --通常可能是constraint 拼写错误 2. [Err] ORA-02250: missing or invalid constraint name 约束条件名缺失或者无效。 比如: alter table tbl_school add s_level number(7) constraint unique; //错误的 ====add s_level number(7) unique; 正确的 4. [Err] ORA-01861: literal does not match format string ORA-01861: 文字与格式字符串不匹配 比如: insert into tbl_school(id,s_name,address,establish_time,style) values(1,'清华','北京','1976-05-05','理'); 日期的输入,要有固定的格式 =====values(1,'清华','北京',to_date('1976-05-01','rrrr-mm-dd'),'理'); 5:select index_name,table_name from user_indexes Where table_name=’s_emp’; 提示错误:为选定行。 ‘’里面的就变成了字符串,是区分大小写的, select index_name,table_name from user_indexes Where table_name=’S_EMP’; 6:Ora-02290【】违反检查约束条件 可能原因:check里面出错,在传值的时候,出现乱码了,只能重建表

Oracle常见问题及其解决方法(doc 10页)

Oracle常见问题及其解决方法(doc 10页)

iSQL*Plus URL:http://10.10.43.137:5560/isqlplus Enteprise Manager 10g Database Control URL: http://information:5500/em OracleDBConsoleorcl不能启动,报错误码2解决策略 解决策略一: 修改你的主机参数文件 修改一下: C:\WINDOWS\system32\drivers\etc下的host文件. 如果没有的话就自己加一个IP和你的计算机名对应,如果已有了就把你的IP地址和你的计算机名对应起来. 如: # copyright (c) 1993-1999 microsoft corp. # # this is a sample hosts file used by microsoft tcp/ip for windows. # # this file contains the mappings of ip addresses to host names. each # entry should be kept on an individual line. the ip address should # be placed in the first column followed by the corresponding host name. # the ip address and the host name should be separated by at least one # space. # # additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # for example: # # 102.54.94.97 https://www.360docs.net/doc/6714290275.html, # source server # 38.25.63.10 https://www.360docs.net/doc/6714290275.html, # x client host 127.0.0.1 localhost 10.10.43.137 information 解决策略二: 启动电脑,到登陆界面,电脑报有个服务启动失败,电脑没有新装软件,周六还没有问题,怎么突然报这个错误?于是到事件查看器中看看什么问题,显示是OracleDBConsoleorcl启动失败,到服务里一看,确实没有启动。手动启动一下,报错误码2 我装的是10g,于是到ORACLEproduct10.2.0db_1test_orclsysmanlog目录看一下log里写了什么,打开OracleDBConsoleorclsrvc.log. log最后记录的是: 日志让看emdbconsole.nohup文件,目录里没有这个文件呀。 手动执行一下emctl.bat,于是启动控制台,执行emctl.bat istart dbconsole,报错,ORACLE_SID 没有定义,打开emctl.bat看看,这里是定义环境变量的地方,其中已经设置了这些:if not defined REMOTE_EMDROOT (set ORACLE_HOME=Ec:oracleproduct10.2.0db_1)

安装oracle数据库常见的错误

安装oracle数据库容易出现的几个错误及解决办法 这几天因为学习的关系,需要安装oracle数据库。以前在机子上装过,但是卸载了,在再次安装的过程,碰到一些问题,查了一些网上的资料,现在整理起来,相信蛮有用的! 一、第一次安装容易出现的错误。 第一次安装出现“加载数据库错误areasQueries”的错误,一般是因为Oracle安装目录带有中文字符的目录 二、再次安装容易出现的错误 第一次安装失败或者卸载后再次安装oracle数据库,需要在注册表里删除相关注册信息才行。 1、删除ORACLE注册表,位置如下: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE ORACLE8i 与ORACLE9i的注册表与ORACLE8 ,ORACLE7有所不同,oracle9i注册表的主要内容在HOME0中,再安装其他产品则会出现HOME1,HOME2等。所以如果机子上没有别的产品的话同,把ORACLE 及以下键值全部删除。 2、删除oracle服务,位置如下: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\oracle 含oracle 在内全部删除掉,当然,服务可以用关工具进行删除,同等效果的。 注意,如果已经安装了ArcSDE For Oracle,在删除Oracle键值的时候,不能删除带有ArcSDE 关键字的键值,否则容易造成ArcSDE无法运行。 3.删除事件日志,置如下: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Eventlog\Application

Oracle_ORA一些错误整理

1、ORA-12560: TNS: 协议适配器错误 场景:在cmd窗口输入:sqlplus "/as sysdba"想打开数据库时报的错; 原因:没有启动Oracle服务器; 解决:WIN+R,跳出运行窗口,输入"services.msc",打开服务窗口;找到OracleServiceORACLE服务,查看是否为启动,右键启动即可。 2、ORA-12541:TNS:no listener 场景:用pl/sql developer客户端连接数据库; 原因:监听器没有启动; 解决:打开服务,启动OracleOraDB12Home1TNSListener。 3、ORA-28547:connection to server failed,probable Oracle Net admin error 场景:将监听器配置文件:listener.ora中的SID_NAME 更改后导致的; 原因:多数是因为navicat本地的OCI版本与Oracle服务器器不符造成的; 解决:将SID_NAME修改为原来的名称。 4、ORA-01438 因为插入的数值大于所在的列的最大允许精度。 5、ORA-12899 字符值大于此列指定的允许精度 6、ORA-00942:表或视图不存在 表或试图不存在 7、ORA-01400: 无法将NULL 插入("SCOTT"."ITEMS"."ITEMNAME") 因向表中插入数据时,主键/约束的列为空。 8、ORA-00001: 违反唯一约束条件(SCOTT.PK_ITEMS) 因想表中插入数据时,某列设置了唯一约束,插入的值,表中已经存在了。 9、ORA-01017: 用户名/口令无效; 登录被拒绝 有可能用户名或者密码错误

oracle常见等待事件及处理方法

我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息 看书笔记db file scattered read DB ,db file sequential read DB,free buffer waits,log buffer space,log file switch,log file sync 我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息,从而可确定出产生瓶颈的类型及其对象。v$session_wait的p1、p2、p3告诉我们等待事件的具体含义,根据事件不同其内容也不相同,下面就一些常见的等待事件如何处理以及如何定位热点对象和阻塞会话作一些介绍。 <1> db file scattered read DB 文件分散读取(太多索引读,全表扫描-----调整代码,将小表放入内存) 这种情况通常显示与全表扫描相关的等待。当全表扫描被限制在内存时,它们很少会进入连续的缓冲区内,而是分散于整个缓冲存储器中。如果这个数目很大,就表明该表找不到索引,或者只能找到有限的索引。尽管在特定条件下执行全表扫描可能比索引扫描更有效,但如果出现这种等待时,最好检查一下这些全表扫描是否必要。因为全表扫描被置于LRU(Least Recently Used,最近最少适用)列表的冷端(cold end),所以应尽量存储较小的表,以避免一次又一次地重复读取它们。 ================================================== 该类事件的p1text=file#,p1是file_id,p2是block_id,通过dba_extents即可确定出热点对象(表或索引) select owner,segment_name,segment_type from dba_extents

Oracle常见错误及解决方案

O r a c l e常见错误及解决方案 问题1:Oracle服务器进入PL/SQL Developer时报ora-01033:oracle initialization or shutdown in progress 错误提示,应用系统无法连接Oracle服务。 解决方法如下: ⑴进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID; ⑵运行sqlplus "/as sysdba" SQL>shutdown immediate 停止服务 SQL>startup 启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号 SQL>shutdown immediate 再次停止服务 SQL>startup mount SQL> recover datafile 2 恢复出错的数据文件 SQL>shutdown immediate 再次停止服务 SQL>startup 启动服务,此次正常。 ⑶进入PL/SQL Developer检查,没有再提示错误。 问题2:Oracle密码忘记了怎么办? 解决方法有很多种,这里讲述以下三种: ⑴打开cmd,输入sqlplus /nolog,回车; 输入“conn / as sysdba”; 输入“alter user sys identified by 新密码”。 注意:新密码最好以字母开头,否则可能出现错误Ora-00988。有了这个方法后,只要自己对oracle 服务器有管理员权限,Oracle密码忘记了也不用着急,可以随意修改密码。 ⑵在命令行执行如下命令: sqlplus "/@服务名as sysdba" 然后在sqlplus中运行以上命令即可修改密码: alter user sys identified by 新密码; alter user system identified by 新密码; ⑶运行到C盘根目录 输入:SET ORACLE_SID = 你的SID名称 输入:sqlplus/nolog 输入:connect/as sysdba 输入:alert user sys identified by sys 输入:alert user system identified by system 完成以上5步,则密码更改完成,密码是Oracle数据库的初始密码。 问题3:表空间不足而引发错误怎么办? 解决方法如下: oracle表空间不足,一般有两个原因:

ORACLE数据库常见问题诊断方法(内部错误篇)-20021224-A2

ORACLE数据库常见问题诊断方法 (内部错误篇) ORACLE的错误各种各样,包括应用错误、一般错误、内部错误等,前面两类错误在ORALCE的文档中有说明,但内部错误没有相应的文档说明,只是请求报告ORACLE技术支持,本文档主要讨论ORACLE的内部错误,且这些内部错误在ICD中经常出现,仅供参考。 内部错误一般为格式为ORA-00600或ORA-006XX,其中前者最普遍,后者较少见,ORA-600中的第一个变量用于标记代码中错误的位置,第二个到第五个变量显示附加信息,例如文件号、函数号等具体信息。 1ORA-00600【12330】错误 特征:数据库告警日志中经常有这个错误及相应的trace文件 原因:用户异常中断操作或客户端字符集与SERVER端字符集不一致 措施:如果偶尔出现,则为用户异常中止,例如代理或应用服务器的断连,有时会产生这个错误;如果经常出现,则为客户端与服务端字符集不一致。 客户端的字符集在注册表里定义: HKEY__LOCAL__MACHINE/SOFTWARE/ORACLE/NLS__LANG 2ORA-00604【xxx】错误 特征:在分析SQL语句时,查询数据字典表发生错误 原因:这类错误一般与内存管理有关,有可能是由于内存泄漏导致该错误 措施:如果偶尔出现,适当加大SHARE_POOL_SIZE;如果经常出现,则需要打相应的补丁。 3ORA-00600【3339】错误 特征:数据冲突,包括:块格式冲突、非法索引入口 原因:oracle系统本身bug;操作系统或介质故障 措施:ORACLE升级或打补丁;检查硬件故障 4ORA-00600【13004】错误 特征:逻辑冲突,例如查询返回错误的数据等 原因:oracle系统本身bug; 措施:ORACLE升级或打补丁;

Oracle数据库全部错误一览表

Oracle数据库全部错误一览表 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程;无法转换会话ORA-00022: 无效的会话 ID;访问被拒绝 ORA-00023: 会话引用进程私用内存;无法分离会话ORA-00024: 单一进程模式下不允许从多个进程注册ORA-00025: 无法分配 ORA-00026: 丢失或无效的会话 ID ORA-00027: 无法删去当前会话 ORA-00028: 您的会话己被删去 ORA-00029: 会话不是用户会话 ORA-00030: 用户会话 ID 不存在。 ORA-00031: 标记要删去的会话 ORA-00032: 无效的会话移植口令

ORA-00033: 当前的会话具有空的移植口令 ORA-00034: 无法在当前 PL/SQL 会话中 ORA-00035: LICENSE_MAX_USERS 不能小于当前用户数 ORA-00036: 超过递归 SQL () 级的最大值 ORA-00037: 无法转换到属于不同服务器组的会话 ORA-00038: 无法创建会话: 服务器组属于其它用户 ORA-00050: 获取入队时操作系统出错 ORA-00051: 等待资源超时 ORA-00052: 超出最大入队资源数 () ORA-00053: 超出最大入队数 ORA-00054: 资源正忙,要求指定 NOWAIT ORA-00055: 超出 DML 锁的最大数 ORA-00056: 对象 '.' 上的 DDL 锁以不兼容模式挂起 ORA-00057: 超出临时表锁的最大数 ORA-00058: DB_BLOCK_SIZE 必须为才可安装此数据库 (非 ) ORA-00059: 超出 DB_FILES 的最大值 ORA-00060: 等待资源时检测到死锁 ORA-00061: 另一个例程设置了不同的 DML_LOCKS ORA-00062: 无法获得 DML 全表锁定;DML_LOCKS 为 0

oracle常见问题分析

第一楼目录 故障分类一数据库挂起故障 1 由于ARCHIVE挂起导致数据库挂死 2 NIT文件中SGA区设置太大,导致内存不够用,数据库和系统都挂死 3 由于临时表空间无法扩展导致数据库被挂起 4由于未打补丁导致RMAN备份时将数据库挂起 故障分类二数据库功能/性能异常 5由于BLOB类型的表记录数太多操作又太频繁导致数据库效率急差 6由于未对特大表(达到或超过100万条记录)定期做表分析导致数据库操作特别慢 7由于空间不够导致插入数据时扩展索引失败 8由于REDOLOG破坏导致数据库异常 9由于控制文件被破坏导致数据库无法正常启动 10由于数据文件丢失或破坏导致数据库无法正常启动 11由于空间参数设置不合理导致扩展表空间、索引等失败 12由于时间格式的环境变量设置问题导致话单无法入库 13由于大事务未使用大回滚段导致事务挂起 14由于数据库连接数太多导致服务器进程数多或内存耗尽 15由于使用了MTS方式,导致数据库操作特别慢(包括备份) 16由于存在一个大事务操作,导致数据库性能特别差或产生频繁日志切换 17由于没有COMMIT,导致数据库表被锁住 18索引创建不合理,导致数据库查询特别慢 19 由于BUFFER参数设置不合理导致EXP失败 20由于EXP不向上兼容,语言不兼容,导致不同版本、不同字符集的数据库无法导入 21 由于创建表空间时误将其创建在以‘本地管理’,导致在表空间上的所有对象无法修改其存储参数 22 错误地在系统表空间上建无关的数据文件 23 ORACLE客户端在P4上安装不成功 24由于LISTENER.ORA或TNSNAMES.ORA配置问题导致网络问题 25由于环境变量设置问题导致VERSOIN版本启动问题 26用户数据、表破坏下的数据恢复 27 由于OS层问题导致数据库ORA-600错误 故障分类三将导致数据库安装失败或打补丁失败的情况 28 由于环境变量或没有安装MAKE文件导致数据库安装失败 29 由于/TMP等文件系统设置太小导致数据库无法正常安装 30 HPUX上由于核心参数设置不对导致数据库无法正常启动 31 在64位的ORACLE817上打32的补丁失败 32由于安装备机数据库时是使用的拷贝方式,所以导致在备机上安装补丁失败 33由于安装ORACLE时错误地在$ORACLE_HOME目录下创建LINK,导致将打过补丁后的版本拷贝到备机失败

Oracle常见错误代码的分析与解决

Oracle常见错误代码的分析与解决 作者:chensheng 发文时间:2005.06.15 在使用ORACLE的过程中,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个合理解决这些错误的方法,同时也希望你能够提出你的不同看法。毕竟作为一种交流的手段,个人意见难免过于偏颇,而且也必定存在着不足,出错之处在所难免。写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步。 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=''; 如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。你也可以用以下语句来检测一下rollback segment的竞争状况: 和

ORACLE SPATIAL常见使用错误解决办法

ORACLE SPATIAL常见错误解决办法1、ORA-13226: 没有空间索引接口将不被支持 当使用一个空间操作符时,如果没有使用空间索引导致该操作符不能被完成将会返回该错误。这可能会发生在当你使用的列上没有空间索引、或者优化器没有选择以所用为基础进行计算时。 解决办法:如果在空间操作符的列上没有索引,就创建一个索引。如果优化器没有选择空间索引,那么久显式地指定index或ordered以确保空间索引被使用。 例如: select b.gwm_fid, b.gwm_fno, b.gwm_vno, a.gwm_tileid, b.districtid from gs_tile_p2 a, VP_street_area b where b.gwm_vno = 13001 and b.deletetag = 0 and b.gwm_status = 0 and sdo_relate(a.gwm_geometry, b.gwm_geometry, '' MASK = ANYINTERACT '') = '' TRUE ''; 查询提示该错误,原因gs_tile_p2该表没有创建控件索引。 2、ORA-13203: 读取USER_SDO_GEOM_METADA TA视图失败 如果在USER_SDO_GEOM_METADATA视图中对没有任何元数据的表进行索引,就会返回该错误。 解决办法:在该视图中插入一条与空间层相关的记录。

比如: CREATE INDEX INDEX_GS_TILE_P2 ON GS_TILE_P2(GWM_GEOMETRY)INDEXTYPE IS MDSYS.SPATIAL_INDEX; 提示ORA-13203错误,经查询发现没有在元数据中插入记录。 INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) V ALUES ('GS_TILE_P2', 'GWM_GEOMETRY', MDSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT('X', -5000000, -5000000, 0.000000050), MDSYS.SDO_DIM_ELEMENT('Y', -5000000, -5000000, 0.000000050), MDSYS.SDO_DIM_ELEMENT('Z', 0,0, 0.000000050) ), NULL); 3、ORA-13365:层的SRID与几何体的SRID 不符 该错误暗示着在一个表的几何体中的SRID与USER_SDO_GEOM_METADA TA视图中相应的SRID值不符。 解决办法:将两者的SRID设为一致。 4、ORA-13223: SDO_GEOM_METADA TA中的重复项

Oracle数据库服务中常见的6个错误

Oracle数据库服务中常见的6个错误 没有人会否认Oracle是全球最有影响的数据库产品之一;不过好的东西似乎总不是那么好用(初看起来如此),甚至有些无情--总会给layman们一个个无情的错误号。下面是我个人的总结,条条有用,希望能给初学者一点启示。 关于“好的东西似乎总不是那么好用(初看起来如此)”的一个笑话:在参加 IBM DB2 512、513培训前,在校园网上下载到了安装程序,不过任凭我们几个同学研究个半天,也不知哪个文件是安装文件,竟没有安装成功。最后,一致认为:看来这个培训真是太有必要了!事后,才知道--我们下载的是4linux的! 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:协议适配器错误(顽固性的) 原因:未知。

编写SQL语句时常见的10种错误-推荐下载

Java开发者编写SQL语句时常见的10种错误 Java开发者对于面向对象编程思维与命令行编程思维的协调程度, 取决于他们如下几种能力的水平: 1.技巧(任何人都可以编写命令行形式的代码) 2.教条(有的人使用“模式 - 模式”的方式,即模式无处不在, 并以名字作为标识) 3.情绪状况(在初期,真正面向对象形式的代码比起命令式代码 会更加难懂。) 但是,当Java开发人员编写SQL语句时,一切都变得不同了。SQL 是一种说明式语言,与面向对象思想和命令式思想无关。在SQL语 言中,查询非常容易表达。但它也不是那么容易以最佳或最正确地

方式编写出来。开发人员不仅需要重新思考自己的编程模式,还需要从集合论的角度进行深入思考。 以下是Java开发人员使JDBC或jOOQ编写SQL语句时,几种常见的错误(排名不分先后) 1.忘记了NULL 误解NULL的含义可能是Java开发人员编写SQL最常犯的错误。这有可能是因为NULL也被称为UNKNOWN,但也有其他的原因。当然如果它只被叫做UNKNOWN,会更容易理解一些。另一个原因是,JDBC 在获取数据,或绑定变量时,SQL中的NULL被映射到Java中的null。这可能会导致人们认为类似Java中null==null的情况,SQL 中也存在NULL= NULL。 一个更离奇的误解NULL的例子是,当NULL谓词用于行值表达式时。另一个微妙的问题产生与对NOTIn 反连接中NULL含义的误解。 解决办法 不断的训练自己。要时刻明确NULL的含义,每次你写SQL时,都要考虑: 对于NULL来说谓词是否正确?

NULL是否影响该函数的结果? 2.在Java内存中处理数据 一些Java开发者十分了解SQL特性。偶尔JOIN,零散的UNION,没什么问题。但如果遇到视窗功能,结果集分组等情况又怎么样呢?很多Java开发人员会把SQL数据加载到内存,把数据转换成一些适合的集合类型,以十分冗长的循环结构在集合上执行恼人数学运算(至少在Java 8改进容器之前是这样的)。 但一些SQL数据库除了支持SQL标准外,还支持先进的OLAP特性,执行效率更好,且更容易编写。一个非标准的例子就是甲骨文的MODEL子句。只是让数据库进行数据处理过程,将最终获取的结果加载到Java内存中。因为一些非常聪明的人已经优化了这些昂贵的产品。所以,事实上,通过向OLAP数据库上进行迁移,您将得到两个好处: 1.简洁。它可能使得在SQL中编写正确代码会比在Java中相对 容易 2.性能。该数据库将可能比你的算法要快。更重要的是,你不必 再通过网络传输数百万条记录。 解决办法

Oracle错误代码大全

Oracle错误代码大全 ORA-01579: 恢复过程中出现写错误 ORA-01580: 创建控制备份文件时出错 ORA-01581: 尝试使用已分配的回退段 () 新区 () ORA-01582: 无法打开要备份的控制文件 ORA-01583: 无法获得要备份的控制文件的块大小 ORA-01584: 无法获得要备份的控制文件的文件大小 ORA-01585: 标识备份文件时出错 ORA-01586: 无法打开要备份的目标文件 ORA-01587: 复制控制文件的备份文件时出错 ORA-01588: 要打开数据库则必须使用 RESETLOGS 选项 ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 ORA-01590: 段可用列表数 () 超出最大数 ORA-01591: 锁定已被有问题的分配事务处理挂起 ORA-01592: 将第 7 版回退段 () 转换为 Oracle 8 版格式时出错 ORA-01593: 回退段最佳大小 ( blks) 小于计算的初始大小 ( blks) ORA-01594: 尝试放回已释放的回退段 () 区 () ORA-01595: 释放区 () 回退段 () 时出错 ORA-01596: 无法在参数中指定系统 ORA-01597: 无法改变联机或脱机系统回退段 ORA-01598: 回退段''未联机 ORA-01599: 无法获得回退段 (), 高速缓存空间已满 ORA-01600: 至多只有一个""在子句""()中 ORA-01601: 子句""()中的存储桶大小非法 ORA-01603: 子句""()中的分组大小非法 ORA-01604: 子句""()中的编号范围非法 ORA-01605: 子句""()中缺少编号 ORA-01606: gc_files_to_locks 不同于另一已安装例程的参数 ORA-01608: 无法将回退段''联机,其状态为 () ORA-01609: 日志是线程的当前日志 - 无法删除成员 ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成 ORA-01611: 线程编号无效 - 必须介于 1 和之间 ORA-01612: 线程已经启用 ORA-01613: 线程只有日志 - 要求至少启用 2 个日志 ORA-01614: 线程正忙 - 无法启用 ORA-01615: 线程已安装 - 无法禁用 ORA-01616: 线程已打开 - 无法禁用 ORA-01617: 无法安装: 不是有效的线程编号 ORA-01618: 线程未启用 - 无法安装 ORA-01619: 线程已由另一例程安装 ORA-01620: 没有可用于安装的公用线程 ORA-01621: 数据库打开时无法重命名当前日志的成员

代码常见的错误

PHP的错误和异常处理 任何程序员在开发时都可能遇到过一些失误,或其他原因造成错误的发生。当然,用户如果不愿意或不遵循应用程序的约束,也会在使用时引起一些错误发生。PHP程序的错误发生一般归属于下列三个领域。 ?语法错误 语法错误最常见,并且最容易修复。例如,遗漏了一个分号,就会显示错误信息。这类错误会阻止脚本执行。通常发生在程序开发时,可以通过错误报告进行修复,再重新运行。 ?运行时错误 这种错误一般不会阻止PHP脚本的运行,但是会阻止脚本做希望它所做的任何事情。例如,在调用header()函数前如果有字符输出,PHP 通常会显示一条错误消息,虽然PHP脚本继续运行,但header()函数并没有执行成功。 ?逻辑错误 这种错误实际上是最麻烦的,不但不会阻止PHP脚本的执行,也不会显示出错误消息。例如,在if语句中判断两个变量的值是否相等,如果错把比较运行符号“==”写成赋值运行符号“=”就是一种逻辑错误,很难会被发现。 一个异常则是在一个程序执行过程中出现的一个例外,或是一个事件,它中断了正常指令的运行,跳转到其他程序模块继续执行。所以异常处

理经常被当做程序的控制流程使用。无论是错误还是异常,应用程序都必须能够以妥善的方式处理,并做出相应的反应,希望不要丢失数据或者导致程序崩溃。

E_COMPILE_WARNING致命的编译时警告 E_USER_ERROR用户导致的错误消息 E_USER_WARNING用户导致的警告 E_USER_NOTICE用户导致的注意消息 E_ALL所有的错误、警告和注意 E_STRICT关于PHP版本移植的兼容性和互操作性建议

如果用户希望在PHP脚本中,遇到上表中的某个级别的错误时,将错误消息报告给用户。则必须在配置文件php.ini中,将display_errors 指令的值设置为On,开启PHP输出错误报告的功能。也可以在PHP 脚本中调用ini_set()函数,动态设置配置文件php.ini中的某个指令。如果display_errors被启用,就会显示满足已设置的错误级别的所有错误。当用户在访问时,看到显示的这些消息不仅会感到迷惑,而且还可能会过多地泄露有关服务器的信息,使服务器变得很不安全。所以在项目开发或测试期间启用此指令,可以根据不同的错误报告更好的调试程序。出于安全性和美感的目的,让公众用户查看PHP的详细出错消息一般是不明智的,所以在网站投入使用时要将其禁用。 当你正在开发站点时,你将希望PHP报告特定类型的错误,可以通过调整错误报告的级别实现,可以通过以下两种方法设置错误报告级别。?可以通过在配置文件php.ini中,修改配置指令error_reporting 的值,修改成功后重新启动Web服务器,则每个PHP脚本都可以按调

相关主题
相关文档
最新文档