存储过程中查询语句如何返回多行结果? 我们知道,如果存储过程中查询语句有多行结果输出,会报错:ORA-01422: exact fetch returns more than requested number of rows 若想让存储过程中的查询语句返回多行结果不报错,则需要使用游标来实现。 本例主要也是用来熟悉存储过程中游标的简单使用方法。案例所涉及的数据表使用的是oracle自带的scott用户。
Exception是一种PL/SQL标识符,当运行的PL/SQL块出现错误或警告,则会触发异常处理。为了提高程序的健壮性,可以在PL/SQL块中引
异常(EXCEPTION)处理是用来处理正常执行过程中未预料到的事件,包括程序块的异常处理、预定义的错误和自定义错误。如果PL/SQL程序块一旦产生异常,而程序并没有指出如何处理,那么程序就会自动终止运行。
项目需求:SAP系统直接连接中间库数据库,定时的获取中间库的数据,中间库是ORACLE数据库。
0 总结 oracle异常总结 Oracle内部异常统一在《Database Error Messages》中,例如ORA-00910等等,其中-00910就是SQLCODE。 Oracle内部异常有系统内部识别抛出,在Catch时只能使用Other关键字接受(… when others …)。 预定义异常将一些常用SQLCODE绑定名称,所以在Catch是可以使用名字接收(… when ZERO_DIVIDE …)。 用户自定异常有两种使用方式: 定义·xxx EXCEPTION;变量,然后直接
主题:EXP导出aud$报错EXP-00008,ORA-00904 解决 环境:Oracle 11.2.0.4 问题:在自己的测试环境,导出sys用户下的aud$表报错。
1.Oracle连接远程服务器,需要安装客户端的同时需要覆盖D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora文件。
CURSOR_SHARING 参数 (8.1.6 以上) 这个参数需要小心使用。如果它被设为FORCE,那么Oracle会尽可能用系统产生的绑定变量来替换原来SQL中的literals部分。对于很多仅仅是literal不一样的相似的语句,这会让它们共享cursor。这个参数可以在系统级别或者session级别动态设置: ALTER SESSION SET cursor_sharing = FORCE; 或者 ALTER SYSTEM SET cursor_sharing = FORCE; 或者在init.ora中设置 注意:因为FORCE会导致系统产生的绑定变量替换literal,优化器(CBO)可能会选择一个不同的执行计划,因为能够产生最好执行计划的literal值已经不存在了。
Oracle 12.1发布至今已有多年,但国内Oracle 12C的用户并不多,随着12.2在去年的发布,选择安装Oracle 12c的客户量明显增加,在接下来的一两年中,Oracle 12c将逐步得到普及。
作者 杨禹航 出品 沃趣技术 Oracle 12.1发布至今已有多年,但国内Oracle 12C的用户并不多,随着12.2在去年的发布,选择安装Oracle 12c的客户量明显增加,在接下来的几年中,Oracle 12c将逐步得到普及。 目前关于12C新特性的文章很多,但大多都不成体系,本次的文章是一个非常完整、连贯的系列,将带你全面的从基础到深入全方位的理解Oracle 12C。 本篇为Oracle 12c系列的开篇文章《Oracle 12c系列(1)Multitenant Container》。
编辑说明:《Oracle性能优化与诊断案例精选》出版以来,收到很多读者的来信和评论,我们会通过连载的形式将书中内容公布出来,希望书中内容能够帮助到更多的读者朋友们。 10046 事件是 Oracle 提供的内部跟踪事件,是对 SQL_TRACE 的增强,通过10046可以通知Oracle内核执行SQL_TRACE类的跟踪操作。如果我们需要获得更多的跟踪信息,就需要用到10046事件,而在实际工作中最常用的就是10046事件。 自11g开始,10046获得了更多的增强,包括明确的在设置中指定SQL_trac
昨天在微信群中有个朋友也是无意中问了一下,说数据库中的表字段想保持一种相对规范的顺序,怎么办?要知道Oracle中这个操作就比较纠结了,因为是按照追加的方式来处理的。没法在已有的字段1,字段2中间添加一个字段3。但是MySQL却可以,这个方面MySQL看起来要灵活的多,这个是什么原因呢,他们在设计上有什么差别呢。 MySQL中对每个表存在一个定义文件,即frm文件,我们来取出一个表,看看能不能简单解析一下。 比如一个表字段的内容如下: > desc zd_warshrine_prostate; +----
Troubleshooting: Understanding and Tuning the Shared Pool (Doc ID 62143.1)
GitHub:https://github.com/kwwwvagaa/NetWinformControl
需求 通过在页面输入账号密码,实现从数据库查询数据并返回,验证成功后登录,打开主界面。 using System; using System.Collections.Generic; using Sy
跟踪文件(Trace File)一般位于“user_dump_dest”参数所指定的目录中,具体路径可以通过以下几种方式查询获得。
环境:Linux + Oracle 11.2.0.1 ADG 现象:发现备库没有应用日志
ORACLE数据库表示的错误,通常由3个字母加上5个数字来组成,如:ORA-nnnnn,TNS-nnnnn等,其中:
最近SQL查询返回的结果给PL/SQL变量出现ORA-06502错误。这个错误的描述是ORA-06502: PL/SQL: numeric or value error: character string buffer too small. 显而易见的是字符变量定义的长度不够,加到20,到100,继续06502,汗,咋回事呢?
今天下午的时候,准备顺手写一个简单的脚本,但是发现很多事情较真起来真是寸步难行。在写脚本的过程中碰到了太多的问题,很多时候感觉像要实现的功能更通用,就得做更多的检查,更多的校验也就意味着有更多的预先条件,这些条件里面有些是规范和建议,有些是按照已有的配置情况,尽管如此,自己感觉还是缺少了太多的检查。 先来说说今天尝试的简单脚本,就是给主库添加standby logfile,这个需求听起来非常简单,都甚至在我的半自动化脚本中隐去了,但是把这个需求要落到纸面上来,简直了。 首先这个需求会涉及到下面的几个数据
ORA-04030报错形如“ORA-04030 'out of process memory when trying to allocate %s bytes (%s,%s)'”,该错误意味着Oracle Server进程无法从操作系统分配更多内存。该内存由PGA组成,其内容取决于服务器配置。对于专用的服务器进程,内存包含堆栈以及用于保存用户会话数据、游标信息和排序区的UGA。在多线程服务器(共享服务器)中,UGA被分配在SGA中,所以在这种配置下UGA不是造成ORA-04030错误的原因。因此,ORA-04030表示进程需要更多内存(堆栈、UGA或PGA)来执行其任务。
在虚机上执行lsnrctl start,问题解决。 1、当连接异常时,可以通过分析监听日志来查找线索 〜[test]$ find $ORACLE_HOME -name listener.log /opt/64bit/oracle/11.2.0/log/diag/tnslsnr/sinrndvud062/listener/trace/listener .log
昨天处理了一起ora-00600的错误,其中也经历了各种曲折,真是雾里看花,看透了之后发现很多问题都是有原因的。 起初是开发说有一个job运行的时候报错了,数据库版本是11.2.0.2.0 等到问题提
如果数据库只有很少的数据块被破坏,那么块介质恢复(Block Media Recovery,BMR)是较好的块恢复方法。BMR只能用于恢复物理损坏(Physical Corruptions),在数据文件联机时即可恢复相关坏块。BMR主要使用BLOCKRECOVER命令进行恢复坏块,该命令有以下三种使用方式:
但是绝大部分操作其实都是oracle用户来操作,比如启停数据库,操作完成以后就需要检查下集群资源状态。 看到好多DBA在现场操作时就是来回各种切换或开多个窗口。
应用的夜维从夜里00:00开始执行,但因为hang的原因(暂时猜测为夜维处理的某条数据和当前应用正常处理的某条数据相同,出现前后等待同一资源锁的现象),直到第二天白天09:25左右才继续执行,但此时应用日志记录:
之前有个需求,就是在web界面可以实现调用摄像头,用户把手机的个人二维码展示给摄像头,摄像头进行摄像识别用户。
首先创建一个Wpf项目——OpenCV_Face_Wpf,这里版本使用Framework4.7.2。
今天巡检遇到数据库报错 ORA-07445 [qkaMarkQkn] 错误,数据库版本为 11204 (x86_64),错误日志如下:
环境:RHEL 6.4 + Oracle 11.2.0.4 需求:单机静默安装GI软件并创建ASM实例和ASM磁盘组,为后续迁移数据库文件到ASM做准备
100.sql>startup pfile和ifile,spfiled有什么区别?
最近同事报料,数据库无法执行一些关于数据字典的查询。即使是查询dba_users都会出现错误。从错误日志来看,全部是数据字典的一些错误信息,而用户数据还是ok的。Google了一下,看了看metalink,需要重建数据字典。那就执行catalog.sql吧。晕,竟然连执行这个SQL语句都报错!数据没有备份呢,汗!!! 如果你也是无法成功执行catalog.sql,接着往下看。
今天巡检遇到数据库报错 ORA-2730x 错误,数据库版本为Oracle 11204 (x86_64),错误日志如下:
分析Oracle数据库日志文件(1) 一、如何分析即LogMiner解释 从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行, Oracle数据库的所有更改都记录在日志中,但是原始的日志信息我们根本无法看懂,而LogMiner就是让我们看懂日志信息的工具。从这一点上看,它和tkprof差不多,一个是用来分析日志信息,一个则是格式化跟踪文件。通过对日志的分析我们可以实现下面的目的: 1、查明数据库的逻辑更改; 2、侦察并更正用户的误操作; 3、执行事后审计;
最近由于数据库hang住,无奈之下直接干掉了pmon进程,再次启动的时候收到了ORA-01092: ORACLE instance terminated. Disconnection forced以及ORA-12432: LBAC error: zllegnp:OCIStmtExecute。这下好了,有的整了,是个从来没有遇见的错误。下面是对这个错误的描述与解决。
对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据块。恢复整个数据库或数据文件那不是大炮用来打蚊子,有点不值得!但前提条件是你得有一个可用的RMAN备份存在,因此,无论何时备份就是一切。本文演示了产生坏块即使用RMAN实现坏块恢复的全过程。
失败,ORA-03113: end-of-file on communication channel 查看日志: SQL> show parameter db_recovery_file_dest_size;
上一篇文章还停留在腊月二十六,现在正月十五也已经过去了,这个年算是过去了,这二十多天里看到很多大佬都在不停的更新文章,卷的铺天盖地,我就只能假装看不见,算是躺平了,什么也没有干,静静地等待这个年过完。本文是今年年初一位朋友遇到的数据库的小问题,事后指导其记录形成的文档,算是小白记录问题处理过程,也是本公众号的第一篇投稿(还有投稿的读者朋友可以找我私聊),适合初学者通过搜索引擎、MOS 来解决 Oracle 数据库遇到的小问题并按照一定的格式来记录问题处理过程,具有一定的参考性,废话不多说,进入正文。
1. 设置ADR 2. 使用Support Workbench 3. 恢复块介质 Reference
Oracle数据网关,就像一个桥梁,贯通oracle数据库和non-oracle数据库。在配置过程中,我们经常讲到的三个重要文件:第一、tnsnames.ora;第二、lisener.ora;第三、init.ora。他们是如何工作呢?
游标变量与游标相似,有其共性,也有其不同点。就其共性来说两者都是指向多行查询的结果集中的当前行。都要经历声明,打开,检索与关闭的过程。所不同的是游标与游标变量类似于常量与变量。游标是静态的,而游标变量是动态的,因为游标变量并不与某个特定的查询相绑定。所以,游标变量可以打开任何类型兼容的查询。其次可以将游标变量作为参数传递给本地和存储子程序。本文主要描述游标变量的使用。
在Oracle中,为何SYSTEM用户可以将V$SESSION的查询权限赋权给其他用户而SYS用户却不可以?
数据库重新启动的时候,收到了ORA-19815的错误。从错误的提示来看,是由于闪回区的空间被填满导致无法成功启动。这种情形我们通常考虑的是清除归档日志,那就直接在OS层面rm了,真的是这样吗?客官,如果你有相同的情形,接下往下看......
Oracle RAC中,除了基于客户端的TAF方式之外,还有基于服务器端的TAF方式,可以把服务端的TAF方式看作是客户端TAF方式的一个升级版吧。服务器端的TAF,当然是需要在服务器端进行配置了,这个是通过Service来完成的。本文主要描述Oracle 10g rac 下通过service方式配置服务器端的TAF。
最近在学习金老师的《.NET2.0面向对象编程揭秘》,学到了13章,委托、事件驱动和异步调用。书上有个试一试,要求:利用委托,达到一个主窗体统计多个从窗体的按钮单击的次数。 效果如下: fr
SQL Server提供了链接服务器用于分布式查询异构数据库。通过链接服务器可以链接到Oracle、Sybase、DB2、SQL Server等大型关系数据库,也可以连接到Access、Excel等文件数据库,甚至可以连接到目录服务(AD)、索引服务等。要链接到一种数据库需要使用相应的接口。微软为很多数据库提供了驱动接口,所以可以直接使用,但是对于没有提供驱动的数据库比如Sybase,则需要在服务器上安装对应数据库厂商提供的驱动。
在做一套库的迁移准备,测试的时候有些异常,记录一下处理办法。 如果有处理不对的地方,请不吝赐教。
墨墨导读:一个诡异的案例:ORA-12547: TNS:lost contact导致数据库无法启动,甚至sqlplus都无法登录,让我们一一来解开这个案例的真面目。
客户的测试环境已经从10g升级到11g了。但是没过几天,数据hang住了,登都登不了了,而且通过sys,system,普通用户连接的错误都不一样 首先通过 一下命令来查看变量和进程是否都正常 ps -ef|grep smon echo $ORACLE_SID 没发现问题 --使用sys,显示连接到一个空实例 sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Tue Aug 13 14:51:25 2013 Copyright
领取专属 10元无门槛券
手把手带您无忧上云