精华内容
下载资源
问答
  • Oracle数据库算法

    2014-10-27 15:48:43
    Oracle数据库算法
  • Oracle时间算法

    2011-12-07 17:15:15
    最近收集了一些关于oracle时间算法的资料,觉得挺不错的,跟大家分享一下。
  • oracle分页算法

    2011-07-17 14:19:39
    oracle操作报表,能够对数据进行分裂分页算法
  • Oracle分页算法

    千次阅读 2013-07-21 18:49:54
    为了回复你,专门做了javaeye的测试,楼主的第二种分页算法让我震惊了一下,呵呵。不知道楼主的这个星星是怎么得到的。 帮楼主解疑一下,itpub 的 yangtingkun 对oracle的分页做过深入的研究。 Oracle分页查询格式...


     

    为了回复你,专门做了javaeye的测试,楼主的第二种分页算法让我震惊了一下,呵呵。不知道楼主的这个星星是怎么得到的。【转载自下面的连接的主人】

    帮楼主解疑一下,itpub 的 yangtingkun 对oracle的分页做过深入的研究。

    Oracle分页查询格式(一):http://yangtingkun.itpub.net/post/468/100278

    Oracle分页查询格式(二):http://yangtingkun.itpub.net/post/468/101703

    Oracle分页查询格式(三):http://yangtingkun.itpub.net/post/468/104595

    Oracle分页查询格式(四):http://yangtingkun.itpub.net/post/468/104867

    Oracle分页查询格式(五):http://yangtingkun.itpub.net/post/468/107934

    Oracle分页查询格式(六):http://yangtingkun.itpub.net/post/468/108677

    Oracle分页查询格式(七):http://yangtingkun.itpub.net/post/468/109834

    Oracle分页查询格式(八):http://yangtingkun.itpub.net/post/468/224557

    Oracle分页查询格式(九):http://yangtingkun.itpub.net/post/468/224409

    Oracle分页查询格式(十):http://yangtingkun.itpub.net/post/468/224823

    Oracle分页查询格式(十一):http://yangtingkun.itpub.net/post/468/485481

    Oracle分页查询格式(十二):http://yangtingkun.itpub.net/post/468/485496

    展开全文
  • Oracle 分页算法汇总

    2010-04-09 18:47:06
    这是我找到的一些关于Oracle分页的算法,大家那里还有没有其他好的算法没?我们大家一起分享一下! [code="sql"] -- Oracle 分页算法一 select * from ( select t.*,rownum rn from (select * from...
    这是我找到的一些关于Oracle分页的算法,大家那里还有没有其他好的算法没?我们大家一起分享一下!
    


    -- Oracle 分页算法一
    select * from (
    select t.*,rownum rn from (select * from help) t
    -- 20 = (currentPage-1) * pageSize + pageSize
    where rownum <= 20
    )
    -- 10 = (currentPage-1) * pageSize
    where rn > 10;

    -- Oralce 分页算法二
    -- 20 = (currentPage-1) * pageSize + pageSize
    select * from help where rownum<=20
    minus
    -- 10 = (currentPage-1) * pageSize
    select * from help where rownum<=10;

    -- 12c最新的分页方式
    -- 返回前3行
    select * from help where 1 = 1 order by info fetch next 3 rows only;
    -- 返回并列排名的行
    select * from help where 1 = 1 order by info fetch next 3 rows with ties;

    -- 分页
    select * from help where 1 = 1 order by info offset 10 rows fetch next 1 rows only;

    -- 返回10%行
    select * from help where 1 = 1 order by info fetch first 10 percent rows only;
    展开全文
  • Oracle索引扫描算法.pdf

    2021-09-14 13:13:49
    Oracle索引扫描算法.pdf
  • Oracle之加密算法

    千次阅读 2014-10-22 08:47:27
    Oracle中的加密算法加密算法概述在介绍oracle中的加密算法之前,大家首先要对加密算法有一个大致的了解,懂得为什么加密,如何加密,加密算法的分类。一, 为什么加密我们的系统中会存在一些极其敏感的数据,这些...

    Oracle中的加密算法

    加密算法概述

    在介绍oracle中的加密算法之前,大家首先要对加密算法有一个大致的了解,懂得为什么加密,如何加密,加密算法的分类。

    为什么加密

    我们的系统中会存在一些极其敏感的数据,这些数据涉及到公司的机密。自然这些是不想让其他公司或竞争对手看到的,所以就需要一种方法来对数据进行“包装”。包装后的数据就象是增加了一层坚固的外壳,其他人很难看到壳内的敏感数据。这种“包装”就是加密。可见加密对于敏感数据的重要意义。

    如何加密

    所谓加密,就是对原内容为明文的文件或数据按某种算法进行处理,使其成为不可读的代码,经过这样处理的数据通常称为密文,密文只能在经过相对应的反向算法处理后才能恢复原来的内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的,而将该编码信息转化为其原来数据的过程,就是解密

    最简单的加密就是通过改变明文中的字符位置来实现。举个简单的例子,比如说welcome这个字符串,我通过交换相邻位置的字符位置来实现最简单的加密。加密后的字符串变成ewclmoe。这是简单的加密方式,可以说没有任何的安全性,但是可以说明加密的原理,就是通过一定的处理让明文转变成很难读懂的密文。

    现在流行的加密算法是利用一复杂的密钥通过某种加密的算法将明文转化为密文。既然是进行加密,那么和加密相关的密钥和加密算法自然也是需要保护的。算法的保密性可以分为基于保持算法的秘密和基于保持密钥的秘密。

    如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。

      更糟的是,受限制的密码算法不可能进行质量控制或标准化。每个用户组织必须有他们自己的唯一算法。这样的组织不可能采用流行的硬件或软件产品。但窃听者却可以买到这些流行产品并学习算法,于是用户不得不自己编写算法并予以实现,如果这个组织中没有好的密码学家,那么他们就无法知道他们是否拥有安全的算法。

    而基于保持密钥的算法则具有更大的灵活性和实用习性。这些算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息

      演示如下,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加/解密函数现在变成:

      EK(M)=C

      DK(C)=M.

      这些函数具有下面的特性:

      DKEKM))=M.

      有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下:

      EK1(M)=C

      DK2(C)=M

      DK2 (EK1(M))=M

    加密算法的分类

    1, 基于“消息摘要”算法

    消息摘要Message Digest)是一种能产生特殊输出格式的算法,这种加密算法的特点是无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要,被摘要的数据内容与原数据有密切联系,只要原数据稍有改变,输出的摘要便完全不同,因此基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证,而不能作为原数据内容的加密方案使用,否则谁也无法还原。尽管如此,消息摘要算法还是为密码学提供了健全的防御体系,因为连专家也无法根据拦截到的密文还原出原来的密码内容。因为这个特性,消息摘要算法产生的密文被称为摘要

    如今常用的消息摘要算法经历了多年验证发展而保留下来的强者,分别是MD2MD4MD5SHASHA-1/256/383/512等,其中最广泛应用的是基于MD4发展而来的MD5算法。

    注:在oracle的加密包dbms_obfuscation_toolkit提供了MD5算法的调用过程。就象上面说明的那样,MD5这种基于消息摘要的加密算法只是单向的,是不可逆的,只能作为一种数据完整性的严整方法。另外一点,一般来说这类算法都是不需要密钥的。

    2,“对称/非对称密钥”加密算法

    由于“消息摘要”算法产生的数据只能作为一种身份验证的凭证来使用,如果我们要对整个文档数据进行加密,就不能采用这种不可逆的算法了,因此密钥算法(Key Encoding)的概念被提出,与开头提到的智力题类似,此类算法通过一个被称为密钥的凭据进行数据加密处理,接收方通过加密时使用的密钥字符串进行解密,即双方持有的密码相同(对称)。如果接收方不能提供正确的密钥,解密出来的就不是原来的数据了。

    以上是对称密钥的概念,那么非对称密钥又该怎么理解呢?有人用邮箱作为比喻,任何人都可以从邮箱的信封人口塞进信件,但是取信的权力却仅仅在于持有邮箱钥匙的人的手上。这个众人皆知的信封入口就是公钥Public Key),而你持有的邮箱钥匙就是私钥Private Key),这种算法规定,对方给你发送数据前,可以用公钥加密后再发给你,但是这个公钥也无法解开它自己加密的数据,即加密过程是单向的,这样即使数据被途中拦截,入侵者也无法对其进行破解,能还原数据内容的只有私钥的持有者,这就是非对称密钥加密算法,也称为公共密钥算法,这两者均建立在PKI验证体系结构上。

    基于对称密钥的加密算法有DESTripleDESRC2RC4RC5Blowfish等;基于非对称密钥的加密算法有RSADiffie-Hellman等。

    注:在oracle的加密包dbms_obfuscation_toolkit提供了DESTripleDES3-DES)的算法。

    Oracle中的加密算法

    Oracle的加密包dbms_obfuscation_toolkit提供三种加密的算法,其中包括基于“消息摘要”的算法MD5,还有对称的加密算法DESDES3

    1MD5

    前面已经介绍过了MD5不能作为常规的加密使用,他只能作为一种校验数据完整性的方法。

    1.加密包dbms_obfuscation_toolkit中提供了四个关于MD5算法的过程或者函数,两个是操作RAW型数据的,另外两个是操作VARCHAR2。下面主要介绍下对VARCHAR2进行加密的MD5过程PROCEDURE MD5

    PROCEDURE MD5

    Argument Name Type In/Out Default?

    ------------------------------ ----------------------- ------ --------

    INPUT_STRING VARCHAR2 IN

    CHECKSUM_STRING VARCHAR2(16) OUT

    其中参数INPUT_STRING为预加密的输入字符串,CHECKSUM_STRING为加密后的输出字符串。

    参考代码如下:

    例子1

    SQL> variable n_in varchar2(100)

    SQL> variable n_out varchar2(100)

    SQL> exec :n_in := 'this is a jok!'

    SQL> exec dbms_obfuscation_toolkit.MD5(INPUT_STRING => :n_in,CHECKSUM_STRING => :n_out);

    PL/SQL procedure successfully completed.

    SQL> print n_out

    N_OUT

    ----------------

    šžå,(3ÐÜY

    SQL> select length(:n_out) from dual;

    LENGTH(:N_OUT)

    --------------

    16

    例子2

    SQL> exec :n_in := 'a';

    SQL> exec dbms_obfuscation_toolkit.MD5(INPUT_STRING => :n_in,CHECKSUM_STRING => :n_out);

    PL/SQL procedure successfully completed.

    SQL> print n_out

    N_OUT

    -------------------------------------------------

    Áu¹Àñ¶¨1Ùâiw&a

    SQL> select length(:n_out) from dual;

    LENGTH(:N_OUT)

    --------------

    16

    例子3

    SQL> exec :n_in := 'a';

    SQL> exec dbms_obfuscation_toolkit.MD5(INPUT_STRING => :n_in,CHECKSUM_STRING => :n_out);

    PL/SQL procedure successfully completed.

    SQL> print n_out

    N_OUT

    -------------------------------------------------

    Áu¹Àñ¶¨1Ùâiw&a

    SQL> select length(:n_out) from dual;

    LENGTH(:N_OUT)

    --------------

    16

    说明:

    (1) 对于例子1我加密的字符串长度大概是15,而例子2中我加密的字符串长度为1,可见MD5对加密字符串的长度是没有限制,当然了VARCHAR2自身会有4000的限制。

    (2) 3个例子的结果可以看出来,无论加密前的字符串长度为多少,加密后的字符串长度均为16。这个是由MD5的算法决定的,这也是为什么MD5仅仅是“摘要”的体现,他是不可逆的。

    (3) 例子2和例子3看起来完全一样,这个是很好理解的,同样的输入当然得到同样的结果了。这也是MD5可以作为一种数据检验方法的基础,同样的输入同样的输出。反过来呢,同样的输出是否代表同样的输入呢?总有一些例外的,不过几率是极小的,比连续3期都中双色球头奖还要难。

    (4) MD5可以作为一种数据校验的方法,如果数据量比较大的话,那么执行的效率就是个需要考虑的问题了。

    (5) DBMS_OBFUSCATION_TOOLKIT.MD5MD5编码的数据包函数,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual时,却有错误提示,看来该函数只能直接在程序包中调用,不能直接应用于SELECT语句。

    2.Utl_Raw.Cast_To_Raw 

    DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW类型,要正确显示,需要经过Utl_Raw.Cast_To_Raw转换

    1、直接调用

    declare

    v2 varchar2(32);

    begin

    v2 := Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => '111'));

    dbms_output.put_line(v2);

    end;

    注意:可以在存储过程中直接调用,如果要嵌套调用md5时,记得每次调用后都用Utl_Raw.Cast_To_Raw进行转换,否则最后出来的结果是错误的。

     

    2、构造函数后,再调用

    CREATE OR REPLACE FUNCTION MD5(

    passwd IN VARCHAR2)

    RETURN VARCHAR2

    IS

    retval varchar2(32);

    BEGIN

    retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;

    RETURN retval;

    END;

     

    调用md5函数示例:

    select md5(1) from dual

    2DES

    DES是一种较为强壮的数据加密算法,他的算法是公开的,全部的保密性都在于密钥的保密性上。所以对于DES(包括DES)来说一个复杂的密钥是必须的,简单的密钥对于那些黑客来说形同虚设。现在的机器性能相比原来有了极大的提高,这也给暴力破解提供的物质上的准备。只要有足够的时间,一切密文都会被破解的。我们能做得就是采用极其复杂的密钥,将这个破解的时间往后推100年,推1000年,甚至10000年,让破解密文后得到的回报远远小于破解所需的花费。想一想,如果破解一个软件的注册码需要花费100万元,而购买注册证书的花费只有100元,大部分人都不会舍易取难了吧。当然了,也不排除那些极其执着的技术狂人,但毕竟是极小数。对于DES现在唯一的破解办法就是穷举法,如果一台计算机的速度是每一秒种检测一百万个密钥,那么它搜索完全部密钥就需要将近2285年的时间。那么那些技术狂人可以活这么久么?

    Oracle的加密包dbms_obfuscation_toolkit中提供了实用与RAW类型的DES加密,也提供了VARCHAR2类型的DES加密。下面只介绍VARCHAR2类型的加密,RAW的与此类似。

    PROCEDURE DESGETKEY

    Argument Name Type In/Out Default?

    ------------------------------ ----------------------- ------ --------

    SEED_STRING VARCHAR2 IN

    KEY VARCHAR2 OUT

    通过调用过程DESGETKEY可以产生一个相对复杂的密钥。其中参数SEED_STRING是产生密钥需要的种子,KEY为系统产生的密钥字符串。

    例子1

    SQL> variable n_seed varchar2(100)

    SQL> variable n_key varchar2(100)

    SQL> exec :n_seed := 'sun'

    SQL> exec dbms_obfuscation_toolkit.DESGETKEY(SEED_STRING => :n_seed,key => :n_key);

    BEGIN dbms_obfuscation_toolkit.DESGETKEY(SEED_STRING => :n_seed,key => :n_key); END;

    *

    ERROR at line 1:

    ORA-28237: seed length too short

    ORA-06512: at "SYS.DBMS_OBFUSCATION_TOOLKIT_FFI", line 3

    ORA-06512: at "SYS.DBMS_OBFUSCATION_TOOLKIT", line 25

    ORA-06512: at line 1

    例子2

    SQL> exec :n_seed := 'sunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwg'

    SQL> exec dbms_obfuscation_toolkit.DESGETKEY(SEED_STRING => :n_seed,key => :n_key);

    BEGIN dbms_obfuscation_toolkit.DESGETKEY(SEED_STRING => :n_seed,key => :n_key); END;

    *

    ERROR at line 1:

    ORA-28237: seed length too short

    ORA-06512: at "SYS.DBMS_OBFUSCATION_TOOLKIT_FFI", line 3

    ORA-06512: at "SYS.DBMS_OBFUSCATION_TOOLKIT", line 25

    ORA-06512: at line 1

    例子3

    SQL> exec :n_seed := 'sunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwg'

    SQL> exec dbms_obfuscation_toolkit.DESGETKEY(SEED_STRING => :n_seed,key => :n_key);

    PL/SQL procedure successfully completed.

    SQL> print n_key

    N_KEY

    -------------------------------------------------

    Æs˜[È*n

    SQL> select length(:n_key) from dual;

    LENGTH(:N_KEY)

    --------------

    8

    例子4

    SQL> exec :n_seed := 'sunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwg'

    SQL> exec dbms_obfuscation_toolkit.DESGETKEY(SEED_STRING => :n_seed,key => :n_key);

    PL/SQL procedure successfully completed.

    SQL> print n_key

    N_KEY

    -------------------------------------------------

    ©ÿëíŒJw

    例子5

    SQL> exec :n_seed := 'sunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwgsunwg'

    SQL> exec dbms_obfuscation_toolkit.DESGETKEY(SEED_STRING => :n_seed,key => :n_key);

    PL/SQL procedure successfully completed.

    SQL> print n_key

    N_KEY

    -------------------------------------------------

    XEÉš©”

    展开全文
  • Hibernate中的Oracle分页算法

    千次阅读 2012-08-25 09:43:58
    private static String getLimitString(String sql, boolean hasOffset) { sql = sql.trim(); boolean isForUpdate = false; if (sql.toLowerCase().endsWith(" for update")) { sql = sql.substring(0
    private static String getLimitString(String sql, boolean hasOffset) {
       sql = sql.trim();
       boolean isForUpdate = false;
       if (sql.toLowerCase().endsWith(" for update")) {
        sql = sql.substring(0, sql.length() - 11);
        isForUpdate = true;
       }
     
      StringBuffer pagingSelect = new StringBuffer(sql.length() + 100);
       if (hasOffset) {
        pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
       } else {
        pagingSelect.append("select * from ( ");
       }
       pagingSelect.append(sql);
       if (hasOffset) {
        pagingSelect.append(" ) row_ where rownum <= ?) where rownum_ > ?");
       } else {
        pagingSelect.append(" ) where rownum <= ?");
       }
     
      if (isForUpdate)
        pagingSelect.append(" for update");
     
      return pagingSelect.toString();
      }
    

    展开全文
  • oracle身份证校验算法

    2015-11-16 16:17:27
    大神们,用oracle写了一个身份证验证的算法,这样写运算不出来。求教该怎么改?哪边错了? --身份证号码验证------- declare type TIArray is table of integer; ---type TCArray is table of varchar2(1); ...
  • Oracle9i用户加密算法

    2013-05-27 14:04:12
    Oracle9i用户加密算法des加密解密方法
  • ORACLE 的年龄算法

    千次阅读 2019-04-07 18:52:30
    ORACLE 的年龄算法 下面要给大家讲的是如何用oracle求出年龄 ,为什么要讲呢?是因为在做习题的时候,遇到求年龄的问题,因为不会做,导致浪费了很多时间,所以在这给大家说一下,顺便巩固知识。 第一步:先看题,...
  • oracle hash join算法原理

    2011-10-11 16:19:03
    oracle hash join算法原理 http://space.itpub.net/8183550/viewspace-662623
  • Oracle PL/SQL 语言开发的运筹学(最优化)算法.目前包括线性方程组求解,线性规划最优化求解等功能,经过了大量数据测试验证,附带详细使用说明,新功能正在继续开发调试之中,敬请各位使用并不吝赐教. A.运筹学算法...
  • Oracle预估的基数算法.pdf
  • oracle RAC Cache fusion算法 http://www.manotes.net/?p=213
  • oracle SQL 星期 算法

    千次阅读 2008-12-03 17:15:00
    美国人把周日当成一周的开始周六当成周结束,而我们常常需要将周一当成一周的开始,周日当成一周结束。在SQL操作中可能会遇到这类计算,例如,统计上周一到上周日的订单数量。 计算方法如下:方法: 充分利用trunc...
  • Oracle Data Mining函数和算法

    千次阅读 2007-11-12 11:58:00
    Oracle Data Mining函数和算法Oracle Data Mining API支持预测和描述挖掘函数。预测函数,使用训练数据来预测一个目标值。描述函数,识别数据内在的关系。每个挖掘函数都指明一类要解决的问题,每种都可以用一个或多...
  • oracle算法 数据为空时,默认为0

    千次阅读 2015-02-11 17:21:00
    SELECT NVL('',0) FROM DUAL 获取当前日期: SELECT SYSDATE FROM DUAL 当前日期-某个日期差的... SELECT TO_NUMBER(SYSDATE - TO_DATE('2015-02-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')) FROM DUAL ......
  • Oracle自带加密算法

    2013-03-21 09:07:00
    --Oracle自带加密算法 CREATE OR REPLACE FUNCTION Md5(Input_String VARCHAR2) RETURN VARCHAR2 IS Raw_Input RAW(128) := Utl_Raw.Cast_To_Raw(Input_String); Decrypted_Raw RAW(2048); Error_In_Input_Buffer...
  • 使用eclipse实现的apriori算法,数据库采用oracle
  • oracle中的递归算法

    2015-03-03 13:42:59
    oracle中 connect by prior 递归算法  select departcode from t_department start with departid = #departid # connect by prior departid=parentdepartid  start with 开始递归的位置 connect by ...
  • Max(Min(cpu_count*2MB,5%*SHARED_POOL_SIZE,30MB),1MB)
  • RAC资源管理算法\Cache-Fusion实现浅析\Oracle
  • Oracle中MD5算法使用

    千次阅读 2018-02-11 10:18:03
    因为我们初始的数据有问题,需要批量的导入,我们创建了oracle的MD5算法,对用户名和密码进行了加密;简单的两步操作:1、写函数:create or replace function "MD52"(passwd in varchar2) return varchar...
  • 如何设计Oracle表结构呢?前段时间UncleToo正好开发统计系统时遇到了类似的问题,逛了很多IT论坛,找了很多相关的帖子,请教了许多大神,没有得到满意的答案,最后自己写个方法实现了解析公式的功能,执行效率还不错...
  • Oracle有三种表连接技术,分别是嵌套连接、合并连接和哈希连接。以下就是对这三种表连接算法进行了详细的分析介绍,需要的朋友可以参考下
  • 不同版本的Oracle数据库的用户密码加密算法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 112,379
精华内容 44,951
关键字:

oracle月算法