墨菲最著名的法则
“如果某件事情可能会发生错误,那错误就会发生”。[@more@]
sqlcode
在现网跑过程时,出现了问题不用去进行现网调试,因为这样做很容易造成其他关联对象失效,从而影响系统交易。可以在过程中把sqlcode给记下来,然后在错误手册里把该错误查一下,对于大多数问题,都能通过这种方法得到解决。具体方法如下:[@more@]1. 建错误信息表CREATE TABLE TAB_MOVE_ERRLOG(MOVE_DATE VARCHAR2(19),SQLCOADE VARCHAR2(30))这个表中的字段可以根据具体情况而定,比如可以把造成问题的批次或卡号记录在里面,以便更好跟踪问题;2. 在过程中定义l_result integer;然后在异常处理中进行错误捕捉l_result := sqlcode;insert
PL/SQL Tutorials - HANDLING ERRORS AND EXCEPTIONS
PLSQL handles the errors caused at the server level and publishes them using the following functions:EXCEPTION This datatype is declared in DECLARE section of the PLSQL code enables to call those as and when they are required.[@more@]An internal exception is raised implicitly whenever your PL/SQL program violates an Oracle rule or exceeds a system-dependent limit. Every Oracle error has a number, but exceptions must be handled by name. So, PL/SQL predefines some common Oracle errors as exception
关于内蒙报表核对方法
远程拨号上去进行缴费卡、营帐报表核对,拨号速度慢,费钱又费时。为了更快找出造成差异的原因,特总结如下。首先统计下差异地市的充值笔数,因为差异很有可能是由于报表系统造成。如果有差异的地市的充值量很小,比如在一万笔左右,可以按卡号排序直接把两边数据select出来,分别保存到文本文件中,然后用数据对比工具(我用的是Beyond Compare 2,挺好用)进行对比,这种方法能很快的查出差异数据。如果数据量很大,建议用以下方法:[@more@]1、核对时,根据局方提供的差异,在过程sp_rcpms_searchrecord06的基础上修改;确保无误后,重
Oracle常用维护语句总结
--不断更新中1. 查看表空间使用情况:SELECT a.tablespace_name "表空间名",total 表空间大小,free 表空间剩余大小,(total-free) 表空间使用大小,ROUND((total-free)/total,4)*100 "使用率 %"FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACEGROUP BY tablespace_name ) a,(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILESGROUP BY tablespace_name) bWHERE a.tablespace_name=b.tablespace_name/--根据自己需要,可以对使用率进行order by下[@more@]2. 查看锁的情况select /*+ RULE
顾客是上帝
顾客不是上帝,顾客口袋里的钱才是上帝![@more@]
关于Oralce Trigger中before、after的区别
今天工作中需要用到一个触发器,建好试了几次,发觉都没有成功。后来才发觉,是自己定义的varchar2大小太小所至。看来自己还是太粗心了,下次注意~顺便试了下before、after选项,发现before:(insert,update)可以对:new进行修改;after:不能对:new进行修改。两者都不能修改:old数据,只读。我想Oracle之所以这么设计,是避免嵌套触发吧。[@more@]
为什么总是富不起来 百姓和富人五大差异
作者:陈作新 老百姓很计较物业管理费,觉得越少越好。越少物业管理费的住宅小区,由于缺乏专业人员打理,常常住了5年就已是破破烂烂——为了省一点物业管理费,房子未来的升值空间全被破坏掉。这就是老百姓“小钱精明,大钱糊涂”的经典案例之一。[@more@]HumanRicher1 太保守2 一个人努力工作3“人云亦云”4“羊群性格”5 专心细节1 适当冒险2“团队”努力工作3“敢于说不”4“狼性性格”5 留意大事 在我理财顾问近20年的生涯中,发现事业成功人士的思维,与老百姓思维真的有很多差异,也就是因为这些思维差异,大多数老百姓一直富
ORACLE锁的管理
2003-03 余枫ORACLE里锁有以下几种模式:0:none1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改4:Share 共享锁(S):阻止其他DML操作5:S/Row-X 共享行专用(SRX):阻止其他事务操作6:exclusive 专用(X):独立访问使用数字越大锁级别越高, 影响的操作越多。一般的查询语句如select ... from ... ;是小于2的锁, 有时会在v$locked_object出现。select ... from ... for update; 是2的锁。 [@more@]当对话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查
ORA-04098错误解决方法
[转载:www.chinaitlab.com]错误代码:ERROR 位于第 1 行:ORA-04098: 触发器 'DDL_DENY' 无效且未通过重新验证解决方案:[@more@]数据库版本:8.1.5 平台:SOLARIS 5.7背景:用户建立了一个TRIGGER:create or replace trigger ddl_denybefore create or alter or drop on databasedeclarebegininsert into ddl_logs values(ora_dict_obj_owner,ora_dict_obj_name,sysdate);exceptionwhen no_data_found thennull;end;目的大概就是记录下所有的DDL操作,但TRIGGER建立有错误,发现:11:30:08 alter">system@ORA250>alter trigger
DBLink小结
今天和营帐测试有价卡接口,用到了DBLink,现把当时遇到的一些问题总结如下:环境三台机器:ORACLE服务端1(简称S1),ORACLE服务器端2(简称S2),客户端1(简称C1)。C1通过客户端连上S1,然后建立个连接S2的DBLink,以便执行S2下的几个存储过程[@more@]1、需要在S1机器下建立S2的tns,而不能在机器C1下建S2的tns;2、创建语句S2:create user yzusr identified by yzusr;grant connect,resource to yzusr;grant execute on ynjfk.online_cardactive to yzusr; --C1需要访问的存储过程C1:create database link dblink_mydb connect to
unique index与primary key的区别
pk is a constraint not a index;主键所在的字段不能为空;unique index可以为null[@more@]
什么叫裸设备
[转载:ChinaUnix.net]裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。本文收集裸设备和Oracle问答20例。[@more@] 1.什么叫做裸设备? 裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对它进行读写操作。不经过文件系统的缓冲。 2.如何辨别裸设备? 在Unix的/dev 目录下,有许多文件,其中有两个大类:字符设备文件和块设备文件。 字符设备特殊文件进行I/O操作不经过操作系统的缓冲区,而块
FOR UPDATE的使用
select ... for update [nowait] 行锁,直到该语句的事务被commit语句或rollback语句结束为止;select ... for update nowait语句将要更改的数据试探性地加锁,就可以通过立即返回的错误提示而明白其中的原因。 查询ORACLE锁了哪张卡:SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(LMODE)) MODE_HELD, DECODE(REQUEST, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (
ORACLE回滚段的概念,用法和规划及问题的解决
[转载 www.souzz.net]回滚段管理一直是ORACLE数据库管理的一个难题,本文通过实例介绍ORACLE回滚段的概念,用法和规划及问题的解决。[@more@]回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。 回滚段的作用 事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前
关于rownum的一点认识
rownum是oracle系统顺序分配为从查询返回的行的编号,总是从1开始的伪劣。 要想返回一个表中按某一个字段排序后的2-5列,以下写法是错误的: [@more@]select * from rcpms_fullnote where rownum between 2 and 5 order by serialid; 可以这么写: select * from(select rownum row_id,serialid from (select rownum row_id,serialid,cardnumber from rcpms_fullnote order by serialid)) where row_id between 2 and 5; 注意,上面语句之所以不写成select * from(select rownum row_id,serialid from rcpms_fullnote order by serialid))