摘要:-- 创建 runstats 包。其中包括 3 个简单 API 调用:create or replace package runstats_pkgas procedure rs_start; procedure rs_middle; procedure rs_stop(p_difference_threshold in number default 0);end;/create or replace package body runstats_pkgas-- 这些全局变量用于纪录每次运行的耗用时间: g_start number; g_run1 number; g_run2 ...
阅读全文
摘要:有这样一条sql:select c_lx from t_table where n_id=1;查询结果为:1;2;3;4;5;6;有没有这样一个函数,将该记录以‘;’切分并转换为多行的结果集,如:123456注意:是结果集(6行),而不是一条纵向显示的记录。我知道oracle有wm_concat函数,可以将多条记录合并成一条,并以逗号分割。使用场景:如代码类型,控件保存时是以‘5;6;7;8;9;10;’的格式保存在一个字段里的,一般对应的代码名称都会冗余一列,如‘工人;农民;干部;’,但是很多地方并没有冗余,在展示的时候,翻译代码时便出现了麻烦,所以如果存在一个函数,将该代码值切分并以多条结
阅读全文
摘要:现在有这样一个需求,要求计算两个日期间的工作日天数,要求除去节假日,其中节假日有一张配置表,具体的格式如下:开始日期结束日期节假日类型节假日名称2013-08-10 2013-08-12 法定 端午节2013-01-012013-01-03 法定 元旦要求计算两个日期间的天数时要将周末时间去掉,还要将节假日区间的天数排除:select count(*) from (select to_date('2010-01-01', 'yyyy-mm-dd') + LEVEL - 1 as days from dual CONNECT BY to_date('2..
阅读全文
摘要:SQL> create tablespace maclean datafile size 10M;Tablespace created.SQL> alter tablespace maclean add datafile size 10M;Tablespace altered.SQL> alter tablespace maclean add datafile size 10M;Tablespace altered.SQL> select name,file# from v$DATAFILE;NAME FILE#-----------------------------
阅读全文
摘要:介绍一个在web上通过oracle注入直接取得主机cmdshell的方法。以下的演示都是在web上的sql plus执行的,在web注入时 把select SYS.DBMS_EXPORT_EXTENSION.....改成/xxx.jsp?id=1 and '1''a'||(select SYS.DBMS_EXPORT_EXTENSION.....)的形式即可。(用" 'a'|| "是为了让语句返回true值)语句有点长,可能要用post提交。以下是各个步骤:1.创建包通过注入 SYS.DBMS_EXPORT_EXTENSION
阅读全文
摘要:[1]、只有输入IN参数,没有输出OUT参数[2]、既有输入IN参数,也有输出OUT参数,输出是简单值(非列表)[3]、既有输入IN参数,也有输出OUT参数,输出是列表[4]、输入输出参数是同一个(IN OUT)create table TMP_MICHAEL( USER_ID VARCHAR2(20), USER_NAME VARCHAR2(10), SALARY NUMBER(8,2), OTHER_INFO VARCHAR2(100))insert into TMP_MICHAEL (USER_ID, USER_NAME, SALARY, OTHER_INFO)v...
阅读全文
摘要:在oracle下创建一个test的账户,然后按一下步骤执行:1.创建表:STOCK_PRICESView Code--创建表格CREATETABLE STOCK_PRICES( RIC VARCHAR(6) PRIMARYKEY, PRICE NUMBER(7,2), UPDATED DATE );2.插入测试数据:View Code--插入数据INSERTINTO stock_prices values('1111',1.0,SYSDATE);INSERTINTO stock_prices values('1112',2.0,SYSDATE);INSERTIN
阅读全文
摘要:昨天晚上在看Oracle 10G联机文档中关于bigfile tablespaces的描述(引用1),发现了关于Oracle存储极限的简单描述。bigfile tablespaces的存在,让Oracle具有了海量数据存储和管理的能力。Bigfile最多可以有2的32次方(4G)个block(引用2),假设block size为最大值32KB,那么单个bigfile文件的大小就是4G*32KB=128TB,由于每个数据库最多只能包含64K个数据文件,那么假如Oracle全由bigfile组成,那么oracle最大的存储量为128TB*64k=8EB第一次听说EB,8EB是什么概念呢?BCZ:1
阅读全文
摘要:第一部分 棉花数据库问题和分析1.问题sql数据库的版本是9i,问题sql有两个:Sql1:SELECTc_lotno FROM b_ctn_normalWHERE d_prodatetime BETWEEN to_date('2011-07-01', 'yyyy-mm-dd HH24:MI:SS') AND to_date('2012-07-03', 'yyyy-mm-dd HH24:MI:SS') AND n_madein = 65 AND rownum 15分钟00: 04: 31.62优化后30<0.4秒00: 00
阅读全文
摘要:早上到公司,收到一条cocall消息,是某哥们遇到的疑惑,可能很多新手并不知情:请教个问题我执行1. select * from t_htgl_htpswj t where t.c_wjmc = '山西'; 结果是 存在一条记录2. select * from t_htgl_fj t where t.c_wjmc = '山西'; 结果是不存在记录3. 为什么执行 select count(*) from t_htgl_htpswj htpswj where htpswj.c_wjmc not in (select fj.c_wjmc from t_htgl_fj
阅读全文
摘要:oracle数据仓库中提供了很多非常实用的函数,一直以来接触过,但是却没有实际的用到,因为尽管有示例,当时看懂了,但是后续马上就忘了,今天岑敏强遇到了一个使用over的场景,于是一起探讨了下,第一眼分析,我隐隐的就觉得一些分析函数应该会用到,但是没想到是over。需求:在 t_zxxm_fy 这个表中,有三个字段 n_lxsbh、n_fyje、n_mqzt,其中一个n_lxsbh会对应多个 n_ysje,每个n_mqzt都不一样,现在要统计几个n_lxsbh的 n_fyje之和,但每个n_lxsbh的n_ysje只能取一条记录的值,即n_ysje需要按n_mqzt进行某种排序取第一条记录这个问
阅读全文
摘要:一直以来有一个困惑,一直没解决,昨天一哥们问我这个问题,决心弄清楚,终于得到了答案。先看下面这个函数:create or replace function fn_test(c_xm varchar) return varchar2 as V_P1 varchar(10);begin select name into V_p1 from t1 where 1 = 2;--将name查出赋值给v_p1 return 'test' || c_xm;end;这个函数很简单,是我写的一个测试函数,没什么意义,“select name into V_p1 from t1 where 1 =
阅读全文
摘要:通常有这种情况,某个表或者准确的说是表的某条记录被锁(TX锁),在业务层面排查之余,一般都会想知道是哪条记录被锁,每次被锁的是否是同一条记录?还是每次都不同?通过记录可以找到这条记录可以在哪个模块、哪个业务流程中被操作到,有助于定位问题。但是思前想后,好像不大好找,oracle的锁机制不同于一些数据库,oracle没有一个集中式的锁管理器,oracle的记录锁(行级排他锁存在于数据块上),只有事务到达那一行的时候才能知道这行是否被锁。举个例子,现在科技大厦的物业需要统计C座每层公司的门是不是都上锁了,那么有两种办法:1.物业有一张清单,每次某个公司上锁都要告诉物业一声:我的门锁了!于是物业记录
阅读全文
摘要:不久前在市检的生产环境上有个存储过程执行报错,错误信息如下:ORA-04068: 已丢弃程序包 的当前状态ORA-04061: package "ZHANGXSH.PR_TEST" 的当前状态失效ORA-04065: 未执行, 已更改或删除 package "ZHANGXSH.PR_TEST"ORA-06508: PL/SQL: 无法找到正在调用 : "ZHANGXSH.PR_TEST" 的程序单元ORA-06512: 在 line 2当然这个错误信息是我在我本机试验复现的,不是真实的报错信息,不过都是一样的开始怀疑是存储过程编译失败
阅读全文
摘要:物化视图日志(mview log)使用触发器实现,如果对表建立mview log,那么相比没有建立之前,操作表(dml),到底额外产生多大的性能开销?为此我专门做了一个测试:测试原理:进行db操作时,数据库都会生成一系列性能指标衡量诸种操作的开销,通过对一个测试表进行批量的dml操作,比较建立mview log前后的开销对比性能差距。过程如下:1.首先记录没有任何操作时的性能统计信息2.测试表进行频繁的dml操作。3.记录统计信息s1(集合)4.对表建立mview log,重复步骤25.记录统计信息s2(集合)6.计算s1-s2(集合差值)具体步骤如下首先建立测试表:creare table
阅读全文
摘要:CREATE OR REPLACE PACKAGE ftp AS-- ---------------------------------------------------------------------------- Name : http://www.oracle-base.com/dba/miscellaneous/ftp.pks-- Author : DR Timothy S Hall-- Description : Basic FTP API. For usage notes see:-- http://www.or...
阅读全文