当前位置:文档之家› oracle中的sql%found、sql%notfound、sql%rowcount和sql%isopen

oracle中的sql%found、sql%notfound、sql%rowcount和sql%isopen

oracle中的sql%found、sql%notfound、sql%rowcount和sql%isopen
oracle中的sql%found、sql%notfound、sql%rowcount和sql%isopen

在执行DML(insert,update,delete)语句时,可以用到以下三个隐式游标(游标是维护查询结果的内存中的一个区域,运行DML时打开,完成时关闭,用sql%isopen检查是否打开):

sql%found (布尔类型,默认值为null)

sql%notfound(布尔类型,默认值为null)

sql%rowcount(数值类型默认值为0)

sql%isopen(布尔类型)

当执行一条DML语句后,DML语句的结果保存在四个游标属性中,这些属性用于控制程序流程或者了解程序的状态。当运行DML语句时,PL/SQL打开一个内建游标并处理结果,游标是维护查询结果的内存中的一个区域,游标在运行DML语句时打开,完成后关闭。隐式游标只使用SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三个属性.SQL%FOUND,SQL%NOTFOUND是布尔值,SQL%ROWCOUNT是整数值。

SQL%FOUND和SQL%NOTFOUND

在执行任何DML语句前SQL%FOUND和SQL%NOTFOUND的值都是NULL,在执行DML语句后,SQL%FOUND的属性值将是:

. TRUE :INSERT

. TRUE :DELETE和UPDATE,至少有一行被DELETE或UPDATE.

. TRUE :SELECT INTO至少返回一行

当SQL%FOUND为TRUE时,SQL%NOTFOUND为FALSE。

SQL%ROWCOUNT

在执行任何DML语句之前,SQL%ROWCOUNT的值都是NULL,对于SELECT INTO语句,如果执行成功,SQL%ROWCOUNT的值为1,如果没有成功或者没有操作(如update、insert、delete 为0条),SQL%ROWCOUNT的值为0.

SQL%ISOPEN

SQL%ISOPEN是一个布尔值,如果游标打开,则为TRUE, 如果游标关闭,则为FALSE.对于隐式游标而言SQL%ISOPEN总是FALSE,这是因为隐式游标在DML语句执行时打开,结束时就立即关闭。

no_data_found 与sql%notfound 以及sql%rowcount 的区别:

NO_DATA_FOUND:该异常可以在两种不同的情况下出现:第一种:当SELECT。。。。INTO

语的 WHERE子句没匹配任何数据行时;第二种:试图引用尚未赋值的PL/SQL index-by表元素时。

SQL%NOTFOUND:是隐匿游标的属性,当没有可检索的数据时,该属性为:TRUE;常作为检索循环退出的条件。若某UPDATE或DELETE语句的WHERE子句不匹配任何数据行,该属性为:TRUE,但不并不出现NO_DATA_FOUND异常.

SQL%ROWCOUNT:该数字属性返回了到目前为止,游标所检索数据库行的个数。

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常见问题及其解决方法(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.doczj.com/doc/109404899.html, # source server # 38.25.63.10 https://www.doczj.com/doc/109404899.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数据库常见异常的诊断方法

目录 第1章 Oracle数据库常见问题诊断方法 (1) 1.1 常见错误篇 (1) 1.1.1 ORA-12571、ORA-03113、ORA-03114、ORA-01041 (1) 1.1.2 ORA-01000 (1) 1.1.3 ORA-01545 (2) 1.1.4 ORA-0165x (2) 1.1.5 ORA-01555 (3) 1.1.6 ORA-04031 (3) 1.1.7 ORA-04091 (3) 1.1.8 ORA-01242、ORA-01113 (4) 1.2 内部错误篇 (4) 1.2.1 ORA-00600【12330】错误 (4) 1.2.2 ORA-00604【xxx】错误 (5) 1.2.3 ORA-00600【3339】错误 (5) 1.2.4 ORA-00600【13004】错误 (5) 1.3 分布式事务篇 (6) 1.3.1 诊断分布式事务 (6) 1.3.2 检查其它节点的事务(DBA_2PC_NEIGHBORS) (6) 1.3.3 通过DBA_2PC_PENDING字典表检查事务的状态 (6) 1.3.4 检查处理结果 (7) 1.3.5 COMMIT FORCE或ROLLBACK FORCE命令 (7) 1.4 OPS或RAC篇 (8) 1.4.1 准备工作 (8) 1.4.2 紧急情况下的状态备份 (8) 1.4.3 OPS设计、配置准则 (9) 1.4.4 OPS常见问题 (9) 1.4.5 诊断分析步骤 (9) 1.5 非OPS篇 (18) 1.5.1 ORACLE数据库系统常见问题:空间方面问题 (18) 1.5.2 ORACLE数据库系统常见问题:性能方面问题 (18) 1.5.3 ORACLE数据库系统常见问题:锁争用方面问题 (19) 1.5.4 ORACLE数据库系统常见问题:内存方面问题 (20) 1.5.5 ORACLE问题分析脚本 (20) 1.5.6 SQL*NET篇 (24) 1.5.7 TNS-12154 Error 或ORA-12154 (24) 1.5.8 NL-00462 Error 或ORA-00462 (25) 1.5.9 NL-00405 Error 或ORA-00405 (26)

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常见问题解决

问题一:注册表相关项被优化软件优化(删除) 对于系统的每一个服务,在注册表中都有所保存: 监听服务的注册表项 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\OracleOraDb10g_home1TNSListener 里面有一个"ImagePath"项,内容是: D:\server\oracle\product\10.2.0\db_1\BIN\TNSLSNR 这一项可能会在使用优化软件的时候被自动删除 如果被删除了,应该按照下面的方式建立一个新的项 如图: 问题二:网络环境发生改变 Oracle 10g中,如果网络环境发生了改变,有可能原始配置网络无法正常运行,此时必须手动进行网络配置的修改 网络环境的改变,最多的是指计算机名称的改变。 【我的电脑】-【属性】-【计算机名】-【更改计算机名】

计算机名一旦更改,这样一来实际的计算机网络名称已经发生变化,如果在Oracle 11g中,这个问题可以帮助用户自动配置,但在Oracle 10g中必须手动配置 监听服务(OracleOraDb10g_home1TNSListener)就会启动失败 解决办法分两步: 第一步:分别修改D:\server\Oracle\product\10.2.0\db_1\NETWORK\ADMIN目录下的连个文件:tnsnames.ora和listener.ora tnsnames.ora(把红色加粗的地方修改成当前的计算机名) -------------------------------------------------------------------------------- # listener.ora Network Configuration File: D:\server\oracle\product\10.2.0\db_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER =

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常见问题分析

第一楼目录 故障分类一数据库挂起故障 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常见问题及解决方法(个人遇到问题解决经验)

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.doczj.com/doc/109404899.html, # source server # 38.25.63.10 https://www.doczj.com/doc/109404899.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经验分享-常用报错及解决办法

问题一、监听器未能启动专用的服务器进程 今天通信频道,在更新代码后,出现WEB或PLSQL客户端连接数据库连接不上。重启下数据库和TOMCA T后正常一段后又出现此故障。监听器日志后面都提示:08-1月 -2010 14:10:59 * (CONNECT_DATA=(SID=vnet)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=某IP)(PORT=3947)) * establish * fjroom * 12500 TNS-12500: TNS:监听器未能启动专用的服务器进程 TNS-12560: TNS: 协议适配器错误 TNS-00530: 协议适配器错误 PLSQL客户端连接的时候提示: 监听器未能启动专用的服务器进程 原因: ORACLE数据库所在服务器的防火墙被启动,之前是关着(不知被谁启起来的)。而且防火墙仅开放1521端口。 分析: 服务器A安装有:ORACLE数据库和运行WEB程序(连接本台数据库)。同样的WEB 程序在服务器B运行并连接服务器A的数据库。 问题出现在12月31号,应该是防火墙被启起来时候。由于防火墙只开放1521监听器端口。由于ORACLE用到不止一个端口(还有一个随机端口),所有服务器B程序虽然可以监听到ORACLE可就是获取不上数据库的连接!(之前,我查看ORACLE监听日志有从服务器B过来的记录,我错以为服务器B有连接上数据库。另外,服务器B程序访问少,所以我没去在意他是否连接程序)这样服务器B程序可以监听到但获取不到数据库连接,故导致死循环:监听->获取不到连接->再监听->获取不到连接。在监听日志有大量这样连接记录: 08-1月 -2010 12:14:02 * (CONNECT_DATA=(SID=vnet)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=某IP)(PORT=4280)) * establish * fjroom * 0 时间过去几个小时候后,便会出现上面所说的故障。 疑问: 如何配置防火墙?不想去改ORACLE数据库相关配置。或者服务器如何把自己的端口全部开放给另外一台服务器。 问题二、请问oracle数据库的日志文件会一直增大吗?如果一直增大肯定不合理,他是什么机制呢? 1、Oracle 数据库默认情况下,在安装的时候,会有三个重做日志文件。 2、当第一个重做日志文件达到一定容量时,就会停止写入,而会转向第二个日志文件。 3、第二个也满时,就会转向第三个,当第三个满时,就会往第一个日志文件中写入。 4、在往这原来的纪录中写入重做日志文件的时候,是否需要对原有的纪录进行备份则是根据用户需求的不同,存在两种处理模式。 一种是不需要数据库进行自动备份,这种模式就叫做非归档模式;

oracle安装及使用常见问题及解决方案

第一部分: 1、win7_oracle11g_64位连接32位PLSQL_Developer 解决思路: 1)下载instantclient-basic-win32-11.2.0.1.0文件并解压。复制到数据库 安装的文件夹下的product文件夹下。 2)然后找到两个文件listener.ora和tnsnames.ora。 在…\product\11.2.0\dbhome_1\NETWORK\ADMIN里面。都复制 到…\product\instantclient_11_2的下面。 注意!!!以后使用的listener.ora和tnsnames.ora文件都是 instantclient_11_2路径下的。 3)然后找到PLSQL_Developer安装的目录,在里面新建一个记事本,写入 以下类似代码: @echo off set path=E:\app\Administrator\product\instantclient_11_2 set ORACLE_HOME=E:\app\Administrator\product\instantclient_11_ 2 set TNS_ADMIN=E:\app\Administrator\product\instantclient_11_2 set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 start plsqldev.exe 注意!!!! 我的instantclient_11_2地址是: E:\app\Administrator\product\instantclient_11_2 而你的跟我的可能不一样,所以要修改成你的instantclient_11_2的路径! 写好后,将你的记事本名称改为start.bat然后点击运行。 如果PLSQL Developer没有打开,请仔细检查你上面的步骤和代码是否 正确,然后在运行start.bat。 4)打开PLSQL_Developer后,取消登陆,进入主界面。

Oracle常见错误

ORA-00911: 无效字符问题和解决 我今天写JDBC插入数据库数据时出现ORA-00911: 无效字符问题, 我把SQL打到控制台上面,然后COPY到SQL PULS中是可以插入数据的, 但是在ECLIPSE中执行就报ORA-00911: 无效字符的错误, 我查了一下, 我的是类似这种的insert into tablea(aaa) values('111'); 把最后面的;去掉,修改为 insert into tablea(aaa) values('111')就可以执行了。 原因:没有找到sql语句中要调用的表(可能根本不存在、可能表明不对,也可能没有区分大小写)。 解决方法:1、打断点,转到定义,在整个解决方案中搜索看sql语句的出处,然后排查具体原因。 第一、不存在:用plsql往里面导入表。 第二、表名不对,修改表的名字。 第三、没有区分大小写: https://www.doczj.com/doc/109404899.html,/jtmjx/archive/2012/07/03/2574766.html 采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现 “ORA-00942: 表或视图不存在”,很是郁闷,这个问题以前出现过,当初解决了,但因好久没有使用,这次竟然忘了,害得我浪费了好些时间,为了避免再次忘记,将它记下来,同时和大家一起分享。 1、问题产生的原因 Oracle 是大小写敏感的,我们创自己写Sql脚本创建表的时候Oracle会自动将我们的表名,字段名转成大写, eg: createtable T_WindRadar (

wr_id VARCHAR2(64) not null, wr_reciveTime DATE, wr_image BLOB, constraint PK_T_WINDRADAR primarykey (wr_id) ); 但是Oracle 同样支持"" 语法,将表名或字段名加上""后,Oracle不会将其转换成大写eg: createtable "T_WindRadar" ( "wr_id" VARCHAR2(64) not null, "wr_reciveTime" DATE, "wr_image " BLOB, constraint PK_T_WINDRADAR primarykey (wr_id) ); 如果加上了"",那么我们采用一般的SQL语句查询则会产生“ORA-00942: 表或视图不存在”,因此SQL脚本中需要将表名也加上""。 eg: select*from "T_WindRadar"; 这种情况在我们手写SQL的时候一般不会发生,但是我们使用powerdesigner设计数据库的时候,由于不注意会经常出现此类问题,因为Powerdesigner生成的SQL文件默认是加""的。 2、解决的办法 因为我们使用的是Powerdesigner,所以可以不用手工改写SQL脚本,只要设置Powerdesigner重新生成即可。 在PowerDesiger中,在physical data model 中找到菜单中的Database下的Edit current DBMS中, 选择Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment 为“Determines if the case sensitivity for identifiers is managed using double quotes”, 表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”,点击【应用】按钮。 这样再生成sql语句时,表和字段名上是没有引号了。

oracle遇到的问题及答案

问题一:Oracle 11G用EXP时,空表不能导出解决方法 第一查询空表到底有多少张,也就是查询为分配分配segment的表有多少张 SQL> select table_name from user_tables where NUM_ROWS=0; TABLE_NAME ------------------------------ DATA_BACKUP EQUIPMENT FEEDBACK_ACCESSORIES SPECIALPIC TASK_THIRD TASK_THIRDBATCH TASK_THIRD_DATA TASK_THIRD_FEEDBACK TESTDATA_THIRD THIRD_ACCESSORIES 已选择10行。 第二查询在当前用户下有总的有多少张表 SQL> select count(*) FROM USER_TABLES; COUNT(*) ---------- 32 第三导出当前用户下的数据 C:\Users\Administrator>exp lcpt/lcpt file=E:\0702bj\lcpt.dmp wner=lcpt log=E 702bj\lcpt.log Export: Release 11.2.0.1.0 - Production on 星期一 7月 2 10:42:07 2012 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Productio With the Partitioning, OLAP, Data Mining and Real Application Testing options 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集 即将导出指定的用户... . 正在导出 pre-schema 过程对象和操作 . 正在导出用户 LCPT 的外部函数库名 . 导出 PUBLIC 类型同义词 . 正在导出专用类型同义词 . 正在导出用户 LCPT 的对象类型定义 即将导出 LCPT 的对象... . 正在导出数据库链接 . 正在导出序号

Oracle Enterprise Manager常见问题

Oracle Enterprise Manager常见问题 2010-06-03 00:06 Oracle Enterprise Manager(Oracle企业管理器,简称OEM)是通过一组Oracle程序,为管理分布式环境提供了管理服务。OEM包括了一组DBA工具,一个 repository,以及一个图形化显示的控制台。OEM控制台与每一个服务器上的智能化代理(IntelligentAgent)相对应。 智能化代理能够监控系统的特定事件并且执行任务(作业)就象你在系统本地一样。事件和作业的结果会被送回控制台,这样可以在一个地方管理所有的系统。 OEM与Server Manager Motif相比,有以下优点: 1)从适用范围看,OEM可以同时监控管理多个系统上的多个数据库,因而特别适合分布式环境;而Server Manager只能监控管理一个数据库。 2)从管理对象看,OEM可以监控管理节点,数据库和监听进程(listener),而Server Manager只能监控数据库。 3)从适用版本看,OEM可以同时监控管理Oracle7.x和8.x,而从8版开始,Server Manager已不存在。 本文主要介绍一些OEM的常见问题及其解决方法。 Q:OEM数据库工具组的功能是什麽?? A:OEM数据库工具组是一组使DBA能够通过GUI界面管理Oracle数据库的工具。包括以下工具: Data Manager(数据管理器):这工具使你能够象加载数据一样执行数据的export/import。 Schema Manager:这工具使你能够在数据库中管理对象。可以用于创建,修改,和删除 tables,indexes,views,snapshots,sequences等等。 Security Manager(安全性管理器):这工具使你能够管理用户,角色,权限及profiles。 StorageManager(存储管理器):这工具允许你创建和修改表空间,数据文件和回滚段. InstanceManager(实例管理器):这工具允许你关闭,启动实例并且存储和管理数据库参数。 SQL*Worksheet:这工具使你能够运行或创造SQL脚本并且存储在硬盘上。

ORACLE面试常见的问题及回答

1.冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2.如果你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 解答:重建控制文件,用带backup control file子句的recover命令恢复数据库。 3.如何转换init.ora到spfile? 解答:使用create spfile from pfile命令. 4.解释data block,extent和segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent.一个数据库对象拥有的所有extents被称为该对象的segment. 5.给出两个检查表结构的方法 解答:1.DESCRIBE命令 2.DBMS_METADATA.GET_DDL包 6.怎样查看数据库引擎的报错 解答:alert log. 7.比较truncate和delete命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要rollback segment.而Delete是DML操作,需要rollback segment 且花费较长时间.

oracle常见错误及代码

1、ORA-12541:TNS:没有监听器 原因:没有启动监听器或者监听器损坏。若是前者,使用命令net start OracleOraH ome10gTNSListener(名字可能有出入)即可;如果是后者,则使用“Net Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路O K。在添加之前可能需要把所有的监听器先删!) 2、ORA-12500:TNS:监听程序无法启动专用服务器进程或ORA-12560:TNS:协议适配器错误 原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORA DB(ORADB为数据库名字)即可。如果仍没有解决,请继续向下看。 3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步: 1)ORADIM -DELETE -SID oradb 删除数据库服务项 2)ORADIM -NEW -SID oradb 新增数据库服务项 注:这个过程中如果出错,就重启计算机! 4、ORA-12154:TNS:能解析服务名 原因:ORACLE的网络服务名没有正确配置。请使用“Net8 Configuration Assistan t”工具向导之“本地网络服务名配置”配置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、TNS-12154 Error 或ORA-12154 特征:SQL*NET没有找到连接串或别名 原因1:(1)没有找到TNSNAMES.ORA文件,该文件的缺省路径为: windows 95/98 client sql*Net 2.x - ORAWIN95NETWORKADMIN Net8 - ORAWIN95NET80admin

orcel常见问题解决方法

Orcel学习——常见问题解决方法 1、登录oracle过程报错: ORA-12526:TNS:listener:all appropriate instances are in restricted mode。 问题原因: 数据库维护时执行了下面的语句限制用户登陆: Sql代码 ALTER SYSTEM ENABLE RESTRICTED SESSION; 解决办法: Sql代码 ALTER SYSTEM DISABLE RESTRICTED SESSION; 2、设置sga_target非正常值导致ORA-00093 新装了一台oracle服务器 装好后修改参数,结果一不小心 SQL> alter system set sga_target = 1320 scope = spfile; System altered sga_target漏了内存单位M 结果shutdown immediate再startup

SQL> startup; ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0 解决办法 SQL> create pfile = '/oracle/tmp_init.ora' from spfile; File created. SQL> !echo '*.sga_target=200m' >> '/oracle/tmp_init.ora'; SQL> create spfile from pfile = '/oracle/tmp_init.ora'; File created. SQL> startup; ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0 SQL> startup ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0 SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options [oracle@CallCenter-Data tmp]$ sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production

oracle中常出现的错误信息及解决方案

Oracle中常出现的错误信息及解决方案错误信息一:ORA-00001 违反唯一约束条件 最常见的问题原因是:主键序列化问题,即ORACLE表主键ID突然从已经存在的ID值开始自动生成,导致违反主键唯一性约束; 解决方案,修改序列值,将序列最小值值设置的大一些。如果在修改的时候出现违反唯一约束,说明你对主键值进行修改时出现重复,或者没加where条件。 错误信息二:oracle ORA-01745: 无效的主机/绑定变量名最常见的原因:sql语句中语法错误太多,例:多写了一个冒号或逗号,或者变量名称使用了oracle关键字 解决方案:审查sql语句,更改为正确的sql语句。 错误信息三:ORA-01460: 转换请求无法实现或不合理 常见原因有一下几种: 1.读入到数据库中的字符过长无法实现。 解决方案:将字符串(只有4000)类型改为clob类型 2.客户端和服务端字符集不一致。

解决方案: step1、通过执行select * from V$NLS_PARAMETERS查看服务端字符集 PARAMETER VALUE NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_CHARACTERSET ZHS32GB18030 NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_NCHAR_CHARACTERSET UTF8 NLS_COMP BINARY

相关主题
文本预览
相关文档 最新文档