??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲丝袜美腿视频,亚洲综合男人的天堂色婷婷,色偷偷亚洲第一综合网http://m.tkk7.com/tbwshc/category/51843.htmlzh-cnThu, 06 Jun 2013 03:44:12 GMTThu, 06 Jun 2013 03:44:12 GMT60Oraclel对值函?http://m.tkk7.com/tbwshc/archive/2013/06/06/400274.htmlchen11-1chen11-1Thu, 06 Jun 2013 02:16:00 GMThttp://m.tkk7.com/tbwshc/archive/2013/06/06/400274.html1.l对|abs()

   select abs(-2) value from dual;

2.取整函数Q大Q:ceilQ)

   select ceil(-2.001) value from dual;(-2)

3.取整函数Q小Q:floorQ)

   select floor(-2.001) value from dual;(-3)

4.取整函数Q截取)QtruncQ)

   select trunc(-2.001) value from dual; (-2)

5.四舍五入QroundQ)

   select round(1.234564) value from dual;(1.2346)

6.取^方:PowerQm,nQ?/font>

   select power(4,2) value from dual;(16)

7.取^Ҏ(gu):SQRT()

   select sqrt(16) value from dual;(4)

8.取随机数:dbms_random(minvalue,maxvalue)

   select sys.dbms.random.value(0,1) value from dual;

9.取符PSign()

   select sign(-3) value from dual;(-)

10,取集合的最大?greatest(value)

   select greatest(-1,3,5,7,9) value from dual;(9)

11.取集合的最?least(value)

   select least(-1,3,5,7,9) value from dual;(-1)

12.处理Null|nvl(I|代替?

   select  nvl(null,10) value from dual;(10)

13.求字W序?ascii()

    select ascii(a) value from dual;

14.求序号字W?chr()

    select chr(97) value from dual;

15.链接Qconcat()

    select concat("11","22") value from dual;(1122)

16.获取pȝ旉:sysdate()

    select sysdate value from dual;

17.求日?/font>

    select trunc(sysdate) from dual;

18.求时?/font>

    select  to_char(sysdate,"hh24:mm:ss") from dual;

19.首字母大写:InitCAP()

    select INITCAP(abc def ghi) value from dual;tbw(Abc Def Ghi)



chen11-1 2013-06-06 10:16 发表评论
]]>
Oracle 的Blob使用结http://m.tkk7.com/tbwshc/archive/2012/07/17/383314.htmlchen11-1chen11-1Tue, 17 Jul 2012 07:34:00 GMThttp://m.tkk7.com/tbwshc/archive/2012/07/17/383314.htmlhttp://m.tkk7.com/tbwshc/comments/383314.htmlhttp://m.tkk7.com/tbwshc/archive/2012/07/17/383314.html#Feedback0http://m.tkk7.com/tbwshc/comments/commentRss/383314.htmlhttp://m.tkk7.com/tbwshc/services/trackbacks/383314.html
Oracle的Lobs的流处理方式与Long{对象的Stream方式不一P没有Long的诸多限Ӟ只要保持q接Q就能通过blob对象正确d对象?br />有两U方式可以读取BlobQ?br />1.直接使用ps.getBinaryStream()的方法得到流对象
2.使用getBlob得到blobQ然后通过blob的方法提供的getBinaryStream(),getBytes() 讉Kblob的数据?br />q两U方法都可以在rs.close之后正确获取数据?在spring 的JdbcTemplet环境下,该rs理论上被JdbcTemplet自动关闭Q从数据库连接来看,q接也正关闭了)?br />
使用Blob的好处是Q按需获取Blob对象。而且可以多次通过blob.getBinaryStream得到对象。且Blobq回的对象可以用mark/resetҎ(gu)反复讉K。且q接状态正常?br />使用blob得到InputStreamQ可以调用close()接口Q也可以不调用该接口Q?a >tb在连接关闭时自动关闭该q接。最好调用close()释放资源?br />
c3p0的setBlob(pos,InputStream)接口不能正常工作?br />
写入或更新BlobӞ可以使用ps.setBinaryStream();调用此接口后Qin对象到文件尾Q在把stream写入blob后,不能要再调用in.close()关闭文gQ否则报错)?br />也可以用setBlob(pos,Blob)Ҏ(gu)来写入或更新Blob字段Q但是注意的是,无论是以blobq是blob.getBinaryStream的方式,都不能自己更新自己,否则死锁?br />
使用springdblob的示例程序:
            String sql = "select photo from my_photoes where id='test2' and photo is not null and rownum<2 ";
BLOB blob= (BLOB) simpleDao.queryForObject(sql,Blob.class);       
InputStream in = blob.getBinaryStream();
String filename = "./test/dao/pic" + 1+ ".gif";
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(filename));

            /* 需oracle的BLOB支持。效率可能会高些Q但是空间上会有些浪?br />byte[] b = new byte[blob.getBufferSize()];                //blob必须为oracle.sql.BLOB时才可调getBufferSizeҎ(gu)Q?与java.sql.Blob区别?br />System.out.println("bufferSize="+b.length);            //32k左右Q用q种方式d文g会有一点空间的费?br />int len=-1;
while ((len = in.read(b)) != -1) {
out.write(b);
}
            */

            /*   UjdbcҎ(gu)Q?br />                nt b;
     while ((b = in.read()) != -1) {
    out.write(b);
     }
            */

in.close();
out.close();



BLOB处理遇到的问题:
1.用spring的模板类来处理blobӞ遇到大文件时Q流会异常关闭。解军_法,使用oracle的本地连接来获取blob,如下Q?/div>
    public boolean queryForBlobStream(String sql,OutputStream fout)
    {
        boolean flag=true;
        try {
            Connection conn = DataSourceUtils.getConnection(getJdbcTemplate().getDataSource());
            conn.setAutoCommit(false);                        //此部分ms能提高性能
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            if (rs.next()) {
                java.sql.Blob blob = rs.getBlob(1);
                InputStream ins = blob.getBinaryStream();
                //输出到文?/div>
                //下面BLOB数据写入文g
                byte[] b = new byte[1024];
                int len = 0;
                while ((len = ins.read(b)) != -1) {
                    fout.write(b, 0, len);
                }
                //依次关闭
                fout.close();
                ins.close();
            }
            conn.commit();
            rs.close();             //maybe not nessesary
            st.close();             //maybe not nessesary
            conn.close();
        } catch (IOException ex) {
            flag=false;
        } catch (SQLException ex) {
            flag=false;
        }
        return flag;
    }
2.如果把blob对象攑ֈ记录的字D中Q在web开发中Q通过blob.getBinaryStream()只能获得一ơblob,W二ơ调用同一对象的blob会得到null?/div>
且在q种方式下,不能使用in.close()关闭?/div>

chen11-1 2012-07-17 15:34 发表评论
]]>  oracle 字段cdhttp://m.tkk7.com/tbwshc/archive/2012/07/17/383311.htmlchen11-1chen11-1Tue, 17 Jul 2012 07:20:00 GMThttp://m.tkk7.com/tbwshc/archive/2012/07/17/383311.htmlhttp://m.tkk7.com/tbwshc/comments/383311.htmlhttp://m.tkk7.com/tbwshc/archive/2012/07/17/383311.html#Feedback0http://m.tkk7.com/tbwshc/comments/commentRss/383311.htmlhttp://m.tkk7.com/tbwshc/services/trackbacks/383311.htmloracle 字段cd   CHAR    固定长度字符?nbsp;   最大长?000    bytes           

   VARCHAR2    可变长度的字W串    最大长?000    bytes      可做索引的最大长?49     

   NCHAR    Ҏ(gu)字符集而定的固定长度字W串    最大长?000    bytes           

   NVARCHAR2    Ҏ(gu)字符集而定的可变长度字W串    最大长?000    bytes           

   DATE    日期Q日-?q_    DD-MM-YYQHH-MI-SSQ?nbsp;   l过严格试Q无千虫问题     

   LONG    长字符?nbsp;   最大长?GQ?31-1Q?nbsp;   _存储大部头著?nbsp;    

   RAW    固定长度的二q制数据    最大长?000    bytes      可存攑֤媒体图象声音{?nbsp;    

   LONG    RAW    可变长度的二q制数据    最大长?G    同上     

   BLOB    二进制数?nbsp;   最大长?G         

   CLOB    字符数据    最大长?G         

   NCLOB    Ҏ(gu)字符集而定的字W数?nbsp;   最大长?G         

   BFILE    存放在数据库外的二进制数?nbsp;   最大长?G         

   ROWID    数据表中记录的唯一行号    10    bytes    ********.****.****格式Q???     

   NROWID    二进制数据表中记录的唯一行号    最大长?000    bytes     

   NUMBER(P,S)    数字cd    P为整CQS为小C     

   DECIMAL(P,S)    数字cd    P为整CQS为小C     

   INTEGER    整数cd    的整数     

   FLOAT    点数类?nbsp;   NUMBER(38)Q双_ֺ     

   REAL    实数cd    NUMBER(63)Q精度更?nbsp;    

数据cd 参数 描述

char(n) n=1 to 2000字节 定长字符Ԍn字节长,如果不指定长度,~省?个字节长Q一个汉字ؓ2字节Q?

varchar2(n) n=1 to 4000字节 可变长的字符Ԍ具体定义时指明最大长度nQ?/p>

q种数据cd可以放数字、字母以及ASCII码字W集(或者EBCDIC{数据库pȝ接受的字W集标准)中的所有符受?/p>

如果数据长度没有辑ֈ最大值nQOracle 8i会根据数据大自动调节字D长度,

如果你的数据前后有空|Oracle 8i会自动将其删厅RVARCHAR2是最常用的数据类型?/p>

可做索引的最大长?209?

number(m,n) m=1 to 38

n=-84 to 127 可变长的数值列Q允?、正值及负|m是所有有效数字的位数Qn是小数点以后的位数?/p>

如:number(5,2)Q则q个字段的最大值是99,999Q如果数DZ位数限制׃被截取多余的位数?/p>

如:number(5,2)Q但在一行数据中的这个字D输?75.316Q则真正保存到字D中的数值是575.32?/p>

如:number(3,0)Q输?75.316Q真正保存的数据?75?nbsp; 

date ?从公元前4712q??日到公元4712q?2?1日的所有合法日期,

Oracle 8i其实在内部是?个字节来保存日期数据Q在定义中还包括时、分、秒?/p>

~省格式为DD-MON-YYQ如07-11?00 表示2000q?1?日?nbsp; 

long ?可变长字W列Q最大长度限制是2GBQ用于不需要作字符串搜索的长串数据Q如果要q行字符搜烦p用varchar2cd?/p>

long是一U较老的数据cdQ将来会逐渐被BLOB、CLOB、NCLOB{大的对象数据类型所取代?nbsp; 

raw(n) n=1 to 2000 可变长二q制数据Q在具体定义字段的时候必L明最大长度nQOracle 8i用这U格式来保存较小的图形文件或带格式的文本文gQ如Miceosoft Word文档?/p>

raw是一U较老的数据cdQ将来会逐渐被BLOB、CLOB、NCLOB{大的对象数据类型所取代?nbsp; 

long raw ?可变长二q制数据Q最大长度是2GB。Oracle 8i用这U格式来保存较大的图形文件或带格式的文本文gQ如Miceosoft Word文档Q以及音频、视频等非文本文件?/p>

在同一张表中不能同时有longcd和long rawcdQlong raw也是一U较老的数据cdQ将来会逐渐被BLOB、CLOB、NCLOB{大的对象数据类型所取代?nbsp; 

blob

clob

nclob ?三种大型对象(LOB)Q用来保存较大的囑Ş文g或带格式的文本文Ӟ如Miceosoft Word文档Q以及音频、视频等非文本文Ӟ最大长度是4GB?/p>

LOB有几U类型,取决于你使用的字节的cdQOracle 8i实实在在地将q些数据存储在数据库内部保存?/p>

可以执行d、存储、写入等Ҏ(gu)操作?nbsp; 

bfile ?在数据库外部保存的大型二q制对象文gQ最大长度是4GB?/p>

q种外部的LOBcdQ通过数据库记录变化情况,但是数据的具体保存是在数据库外部q行的?/p>

Oracle 8i可以d、查询BFILEQ但是不能写入?/p>

大小由操作系l决定?nbsp; 

数据cd是列或存储过E中的一个属性?

    Oracle支持的数据类型可以分Z个基本种c:字符数据cd、数字数据类型以及表C其它数据的数据cd?/p>

    字符数据cd

      CHAR             char数据cd存储固定长度的字W倹{一个CHAR数据cd可以包括1?000个字W。如果对CHAR没有明确地说明长度,它的默认长度则设|ؓ1。如果对某个CHARcd变量赋|光度小于规定的长度Q那么Oracle自动用空格填充?/p>

      VARCHAR2 存储可变长度的字W串。虽然也必须指定一个VARCHAR2数据变量的长度,但是q个长度是指对该变量赋值的最大长度而非实际赋值长度。不需用空格填充。最多可讄?000个字W。因为VARCHAR2数据cd只存储ؓ该列所赋的字符Q不加空|Q所以VARCHAR2需要的存储I间比CHAR数据cd要小?/p>

    Oracle推荐使用VARCHAR2

      NCHAR和NVARCHAR2 NCHAR和NVARCHAR2数据cd分别存储固定长度与可变长度的字符Ԍ但是它们使用的是和数据库其他cd不同的字W集。在创徏数据库时Q需要指定所使用的字W集Q以便对数据中数据进行编码。还可以指定一个辅助的字符集[x地语a集]。NCHAR和NVARCHAR2cd的列使用辅助字符集。NCHAR和NVARCHAR2cd的列使用辅助字符集?/p>

      在Oracle 9i中,可以以字W而不是字节ؓ单位表示NCHAR和NVARCHAR2列的长度?/p>

      LONG long数据cd可以存放2GB的字W数据,它是从早期版本中l承下来的。现在如果存储大定w的数据,Oracle推荐使用CLOB和NCLOB数据cd。在表和SQL语句中用LONGcd有许多限制?/p>

      CLOB和NCLOB    CLOB和NCLOB数据cd可以存储多达4GB的字W数据。NCLOB数据cd可存储NLS数据?/p>

      数字数据cd

      Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高?8位?/p>

      NUMBER数据cd可以有两个限定符Q如Qcolumn NUMBER(precision,scale)。precision表示数字中的有效位。如果没有指定precision的话QOracle?8作ؓ_ֺ。scale表示数点右边的位数Qscale默认讄?。如果把scale设成负数QOracle把该数字取舍到数点左边的指定位数?/p>

      日期数据cd

       Oracle标准日期格式为:DD-MON-YY HH:MI:SS

       通过修改实例的参数NLS_DATE_FORMATQ可以改变实例中插入日期的格式。在一个会话期_可以通过Alter session SQL命o来修Ҏ(gu)期,或者通过使用SQL语句的TO_DATE表达式中的参数来更新一个特定倹{?/p>

       其它的数据类?/p>

       RAW和LONG RAW    RAW和LONG RAW数据cd主要用于Ҏ(gu)据库q行解释?a >tb指定q两U类型时QOracle以位的Ş式来存储数据。RAW数据cd一般用于存储有特定格式的对象,如位图。RAW数据cd可占?KB的空_而LONG RAW数据cd则可以占?GB大小?/p>

       ROWID ROWID是一U特D的列类型,UCZ列(pseudocolumnQ。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问。Oracle数据库中每行都有一个伪列。ROWID表示行的地址QROWID伪列用ROWID数据cd定义?/p>

       ROWID与磁盘驱动的特定位置有关Q因此,ROWID是获得行的最快方法。但是,行的ROWID会随着卸蝲和重载数据库而发生变化,因此不要在事务中使用ROWID伪列的倹{例如,一旦当前应用已l用完记录Q就没有理由保存行的ROWID。不能通过MSQL语句来设|标准的ROWID伪列的倹{?/p>

      列或变量可以定义成ROWID数据cdQ但是Oracle不能保证该列或变量的值是一个有效的ROWID?/p>

    LOBQ大型对象)数据cdQ可以保?GB的信息。LOB有以?中类型:

      <CLOB>Q只能存储字W数?/p>

    <NCLOB>Q保存本地语a字符集数?/p>

    <BLOB>    Q以二进制信息保存数?/p>

      可以指定一个LOB数据保存在Oracle数据库内Q还是指向一个包含次数据的外部文件?/p>

      LOB可以参与事务。管理LOB中的数据必须通过DBMS_LOB PL/SQL内置软g包或者OGI接口?/p>

      Z便于LONG数据cd转换成LOBQOracle 9i包含许多同时支持LOB和LONG的函敎ͼ喊包括一个ALTER TABLE语句的新选择Q它允许LONG数据cd自动转换成LOB?/p>

    BFILE

      BFILE数据cd用做指向存储在Oracle数据库以外的文g的指针?/p>

      XML Type

      作ؓ对XML支持的一部分QOracle 9i包含了一个新的数据类型XML Type。定义ؓXMLType的列存储一个字WLOB列中的XML文档。有许多内置的功能可以你从文档中抽取单个节点,q可以在XML Type文档中对M节点创徏索引?/p>

      用户自定义数?/p>

      从Oracle 8以后Q用户可以定义自q复杂数据cdQ它们由O(jin)racle基本数据cdl合而成?/p>

      AnyType、AnyData和AnyDataSet

       Oracle包括3个新的数据类型,用于定义在现有数据类型之外的数据l构。其中每U数据类型必ȝE序单元来定义,以便让Oracle9i知道如何处理q些cd的特定实现?/p>

    cd转换

    Oracle会自动将某些数据cd转换成其他的数据cdQ{换取决于包括该值的SQL语句?/p>

    数据转换q可以通过Oracle的类型{换函数显C地q行?/p>

    q接与比?/p>

    在大多数q_上Oracle SQL中的q接操作W用两条竖线Q||Q表C。连接是两个字WD接。Oracle的自动类型{换功能得两个数字g可以q行q接?/p>

    NULL

    NULL值是关系数据库的重要特征之一。实际上QNULL不代表Q何|它表C没有倹{如果要创徏表的一个列Q而这个列必须有|那么应将它指定ؓNOT NULLQ这表示该列不能包含NULL倹{?/p>

    M数据cd都可以赋予NULL倹{NULL值引入了SQLq算的三态逻辑。如果比较的一Ҏ(gu)NULL|那么会出?U状态:TURE、FALSE以及两者都不是?/p>

    因ؓNULLg{于0或其他Q何|所以测试某个数据是否ؓNULL值只能通过关系q算WIS NULL来进行?/p>

    NULL值特别适合以下情况Q当一个列q未赋值时。如果选择不用NULL|那么必须对行的所有列都要赋倹{这实际上也取消了某列不需要值的可能性,同时对它赋的g很容易生误解。这U情况则可能误导l端用户Qƈ且导致篏计操作的错误l果?/p>

number(p,s)

p:1~38

s:-84~127

p>0Q对s?U情况:1. s>0

_到小数点双s位,q四舍五入。然后检验有效数位是?lt;=pQ如果s>pQ小数点双臛_有s-p?填充?

2. s<0

_到小数点左边s位,q四舍五入。然后检验有效数位是?lt;=p+|s|

123.2564 NUMBER 123.2564

1234.9876 NUMBER(6,2) 1234.99

12345.12345 NUMBER(6,2) Error

1234.9876 NUMBER(6) 1235

12345.345 NUMBER(5,-2) 12300

1234567 NUMBER(5,-2) 1234600

12345678 NUMBER(5,-2) Error

123456789 NUMBER(5,-4) 123460000

1234567890 NUMBER(5,-4) Error

12345.58 NUMBER(*, 1) 12345.6

0.1 NUMBER(4,5) Error

0.01234567 NUMBER(4,5) 0.01235

0.09999 NUMBER(4,5) 0.09999



chen11-1 2012-07-17 15:20 发表评论
]]>
详解Oracle数据库优化方案与实践http://m.tkk7.com/tbwshc/archive/2012/07/10/382694.htmlchen11-1chen11-1Tue, 10 Jul 2012 03:10:00 GMThttp://m.tkk7.com/tbwshc/archive/2012/07/10/382694.htmlhttp://m.tkk7.com/tbwshc/comments/382694.htmlhttp://m.tkk7.com/tbwshc/archive/2012/07/10/382694.html#Feedback0http://m.tkk7.com/tbwshc/comments/commentRss/382694.htmlhttp://m.tkk7.com/tbwshc/services/trackbacks/382694.html在这里我们将介绍Oracle数据库优化方案与实践Q不同的环境会有不同的调试,但是也会有差别,希望大家能合理的吸收?/p>

一、前a

二、ORACLE数据库优化概q?

1、内存等参数配置的优?

2、减物理读写的优化

3、批量重复操作的SQL语句及大表操作的优化

二、ORACLE数据库优化方?

1、内存等Oraclepȝ参数配置

2、用烦?

3、表分区

4、Procedure优化

5、其他改?/p>

6、维护作业计?

三、ORACLE数据库优化前后比?

1、批量重复的SQL语句执行性能

2、一些单ơ、不常用的操作的语句执行性能

四、参?

1、常用的优化工具

2、参考文?/p>

一、前a

随着实际目的启动,实际目中用的 Oracle数据库经q一D|间的q行Q在U保存的数据量和业务处理的数据量在逐渐增大Q最初的Oracle讄Q与现在实际需要的q行性能有一定差距,需要进行一些优化调整?/p>

本文结合本人实际维护经验,相应地提出实际项目数据处理的一些优化方法,以供参考?/p>

适用于Oracle 9i?/p>

二、Oracle数据库优化概q?

Oracle数据库的优化Q针对不同的应用Q会有侧重点不同的优化方法,Ҏ(gu)我们实际目的应用特点,我们主要兛_的是每次事务执行完成的时间长短?/p>

从Oracle数据库本w的特点Q我们可以把优化工作划分为初始优化设|,微优化?/p>

在初始优化设|时Q我们只能根据硬件情况,估计业务q行的情况,l合l验Q给ZU经验设|,大体上来_q种l验讄L优化需求的目标不是很远。在完成了初始优化设|后Q经q一D|间的业务q行Q已可开始收集实际运行环境的性能数据Q此Ӟ可以对各种Oracle性能指标、各U关心的事务操作q行性能评估Q然后进行微优化了?/p>

Oracle优化Q不是一个一y而就的工作,也不是一个一x逸的工作Q需要定期维护,tb定期观察Q在发现性能瓉时及时进行调整。OracleL存在性能瓉的,不用、不操作的数据库L最快的Q在解决当前瓉后,L会有另一个瓶颈出玎ͼ所以在优化前,我们需要确定一个优化目标,我们的目标是满我们的应用性能要求可以了?/p>

Oracle优化Q涉及的范围太广泛,包含的有L性能Q内存用性能Q网l传输性能QSQL语句执行性能{等Q从我们面向|管来说Q满事务执行速度性能主要表现在:

1Q批量重复的SQL语句执行性能Q主要是通过Procedure计算完成数据合ƈ和数据汇ȝ性能和批量数据采集入库的性能Q;

2Q一些单ơ、不常用的操作的语句执行性能Q主要是GUI的非规律操作Q?/p>

Ҏ(gu)q两个特点,我们可把优化Ҏ(gu)归纳?个重要方向:

1Q内存等参数配置的优化。内存优化,是性能受益最快的地方?/p>

2Q减物理读写的优化。内存逻辑I/O操作的时_q远于物理I/O的操作时间?/p>

3Q批量重复操作的SQL语句及大表操作的优化。减SQL执行ơ数Q减大表操作次数?/p>

下面主要针对得益最大的q三个方向的优化q行阐述?

1、内存等参数配置的优?/p>

对于大多数应用来_最直接、最快速得C化收益的Q肯定属于内存的优化。给每个Oracle内存块分配合理的大小Q可以有效的使用数据库。通过观察各种数据库活动在内存里的命中率,执行情况Q我们能很快的掌握数据库的主要瓶颈。我们从下面的一条SQL语句的执行步骤就可知道?/p>

一个SQL语句Q从发布到执行,会按序l历如下几个步骤Q?/p>

1QOracle把该SQL的字W{换成它们的ASCII{效数字码?/p>

2Q该ASCII数字码被传送给一个散列算法,生成一个散列倹{?/p>

3Q用户server process查看该散列值是否在shared pool内存块中存在?/p>

若存在:

4Q用shared pool中缓存的版本来执行?/p>

若不存在Q?/p>

4Q检查该语句的语义正性?/p>

5Q执行对象解析(q期间对照数据字典,查被引用的对象的名称和结构的正确性)?/p>

6Q检查数据字典,攉该操作所引用的所有对象的相关l计数据?/p>

7Q准备执行计划,从可用的执行计划中选择一个执行计划。(包括对stored outline和materialized view的相关用的军_Q?/p>

8Q检查数据字典,定所引用对象的安全性?/p>

9Q生成一个编译代码(P-CODEQ?/p>

10Q执行?/p>

q里Q通过内存的合理分配,参数的合理设|,我们主要解决Q?/p>

1Q减执行到W五步的可能Q节USQL语句解析的时间。第五步以后的执行过E,是一个很消耗资源的操作q程?/p>

2Q通过内存配置Q尽可能让SQL语句所做的操作和操作的数据都在内存里完成。大安知道Q从内存d数据的速度Q要q远快于从物理硬盘上L据,一ơ内存排序要比硬盘排序快很多倍?/p>

3Q根据数据库内存?gu)zdQ减每个内存块zd的响应时_充分利用每个内存块,减少内存latch争用发生的次数?/p>

2、减物理读写的优化

无论如何配置Oracle数据库,我们的网系l,每小时周期性的都会有新数据被处理,׃发生物理dQ这是避免不了的?/p>

减少物理d的优化,一般所用的Ҏ(gu)有:

1Q?增加内存data buffer的大,可能让数据库操作的数据都能在内存里扑ֈQ不需要进行物理读写操作?/p>

2Q?通过使用索引Q避免不必要的全表扫描?/p>

3Q?大表物理分区QOracleh很好的分别功能,减少数据扫描范围?/p>

上述3个方法,是从整体上改善数据库物理I/O性能最明显?个方法。能非常快速的减少数据库在物理I/OQ最直接的反应是数据库事务执行时间能能以数量Uؓ单位减少。其他的一些减物理读写的优化Ҏ(gu)Q比如用materialized viewQCluster{方法;q有一些分散I/O的方法,比如 Oracle日志文g不与数据文g攑֜一个物理硬盘,数据热点文g物理I/O分开{等Ҏ(gu)Q就目前我们的网系l而言Q能得到的效果不是很明显Q在|管pȝ中,Z不增加数据库l护的复杂性,不推荐用?/p>

3、批量重复操作的SQL语句及大表操作的优化

扚w重复执行的SQL语句Q一般出现在每个周期旉内的数据扚w入库的insert语句Q和数据合ƈ、汇ȝ周期性select、delete、insert操作?/p>

我们需要注意以下几点:

1Q?减少不必要的SQL语句执行和SQL语句的执行次数?/p>

每条SQL语句执行Q都会消费系l资源,都有执行旉。减不必要的SQL语句执行和减SQL语句的执行次敎ͼ自然能减业务执行时间。需要根据业务流E,重新设计数据处理的代码。此Ҏ(gu)主要适用于procedure执行的数据合q、汇怅R?/p>

2Q?q些SQL语句Q由于每个SQL语句都要执行很多ơ,应该量让该SQL的散列值在shared pool内存块中存在。也是使用动态SQLQ避免SQL解析?/p>

可通过Oracle参数的设|,和动态SQL语句的应用,通过l定变量的方式,减少SQL语句的解析次数?/p>

3Q减大表的操作Q确保在一ơ事务中Q同cL作只对大表执行一ơ。主要在数据合ƈ和数据汇ȝpprocedure和数据采集时出现

三、Oracle数据库优化方?/p>

1、内存等Oraclepȝ参数配置

Oracle 的parameter参数Q分动态参数和静态参敎ͼ静态参数需要重新启动数据库才能生效Q动态参C需要重新启动数据库卛_生效?/p>

Oracle 9i可以使用spfile的特性,使用alter system set 参数?参数?scope=both[spfile];的方法进行修攏V也可以直接修改pfile?/p>

以下l出了网Oracle 数据库重点关注的parameter的初始优化设|?/p>

最大可使用的内存SGAd

静态参数sga_max_size=物理内存的大减1.5G

Shared pool

动态参数shared_pool_size= 600 ~ 800 M

静态参数shared_pool_reserved_size= 300 M

动态参数open_cursors= 400 ~ 600

静态参数cursor_space_for_time= TRUE

静态参数session_cached_cursors= 60 ~ 100

动态参数cursor_sharing= SIMILAR

Data buffer

动态参数db_cache_advice= READY

动态参数db_cache_size

动态参数Db_keep_cache_size

动态参数db_recycle_cache_size

Qsga_max_size大小Q除了分配给所有非data buffer的sizeQ都分配ldata bufferQ?/p>

Sga other memory

动态参数l(f)arge_pool_size= 50 M

静态参数java_pool_size= 100 M

动态参数l(f)og_buffer= 3 M

Other memory

动态参数sort_area_size= 3 M

静态参数sort_area_retained_size= 0.5 M

静态参数pga_aggregate_target= 800 M

动态参数workarea_size_policy= AUTO

盘I(y)/O配置

静态参数sql_trace= FALSE

动态参数timed_statistics= true

动态参数db_file_multiblock_read_count= 16

静态参数dbwr_io_slaves= 0

静态参数db_writer_processes= 3

静态参数undo_management= AUTO

动态参数undo_retention= 7200

2、用烦?/p>

我们初步定义Q表数据过1000行的表,我们都要求用烦引。(不区分事务操作的数据在表数据中所占的比例Q?/p>

索引所包含的字D不过4个?/p>

查SQL语句是否使用了烦引,我们使用execute plan来看Q获得explain的方法,我们通过SQL*PLUS工具Q用如下命令进行查看:

setautotraceonsetautotracetraceonlyexplain settimingon或通过SQL*PLUS traceQ然后查看user_dump_dest下的跟踪文gQ用tkprof工具格式化后阅览?/p>

altersessionsetevents'10046tracenamecontextforever,level12'; altersessionsetevents'10046tracenamecontextoff'; SELECTp.spid,s.usernameFROMv$sessions,v$processpWHEREs.audsid=USERENV('sessionid')ANDs.paddr=p.addr;3、表分区

在网数据库里,比较H出的大表有区表和告警表?/p>

性能表,使用范围分区?/p>

以时间点start_time围分区字Dc?/p>

告警表,使用range-hash的؜合分区和范围分区?/p>

范围分区以时间点starttime为分区字D,混合分区增加ALARMNUMBER为字D늚hash子分区?/p>

同时Q创建本地分区烦引?/p>

4、Procedure优化

1Q取消地市一U的ProcedureQ只保留其上层调用ProcedureQƈ保持参数输入Ҏ(gu)Q调用方法不变?/p>

2Q确保大表数据查询操作只?ơ,保大表数据删除只有一ơ?/p>

3Q确保单条SQL语句执行已优化?/p>

4Q减SQL执行ơ数?/p>

5、其他改?/p>

修改表存储参敎ͼ提前预先分配extents?/p>

修改表空间存储参敎ͼ采集表空间所用块讄为大块,比如32k一个块Q修改ptcfree,pctused,pctincrease{)?/p>

避免使用唯一索引和非I约束?/p>

创徏合理的烦引?/p>

各模块SQL语句优化Q比如用提C固定烦引等?/p>

认每一条历史数据删除语句已优化和删除方法?/p>

临时表的使用?/p>

6、维护作业计?/p>

表分析(包含定具体的表的分析方法,分区表分析方法,索引分析Ҏ(gu)Q?/p>

I间回收l护Q包括确定HWMQ回收多余分配给表的块,合ƈ数据块碎片等Q?/p>

索引l护Q包括定期重建烦引,索引使用情况监视{)?/p>

历史数据删除查(查保存的数据是否W合要求Q检查历史数据删除方法是否正?比如扚w删除提交的方法等Q?/p>

全库性能分析和问题报告及优化Q比如用statspackq行性能势分析Q检查有问题的SQL或事务,定当前pȝ{待的top 5事g{等Q?/p>

表数据keep,default及reclyeQ比如把一些常用的配置表固定在内存里等Q?/p>

数据库参数核查(防止数据库参数被修改Q定期对pȝ配置参数q行比较Q?/p>

日志文g分析Q定期检查Oracle生成的日志文Ӟ定期备䆾、删除)?/p>

盘I间l护Q定期对Oracle 对象使用的空间情况进行监视)?/p>

四,Oracle数据库优化前后比?/p>

1、批量重复的SQL语句执行性能

Ҏ(gu)|元数量Q各地的执行的完成时间有所区别?/p>

用于数据合ƈ和汇ȝProcedure的计性能

通过statspack的周期性采集数据,我们可以使用以下语句Q计我们想l计的Procedure的执行情况:

SELECTTO_CHAR(sn.snap_time,'yyyy-mm-ddhh24:mi:ss')ASsnap_time,s.disk_reads, s.buffer_gets,s.elapsed_time/1000000ASelapsedtime FROM(SELECThash_value,sql_text,address,last_snap_id FROMSTATS$SQLTEXTWHEREpiece=0ANDsql_textLIKE'%&sqltext_key%')t, (SELECTaddress,hash_value,snap_id,sql_text,disk_reads,executions, buffer_gets,rows_processed,elapsed_time FROMSTATS$SQL_SUMMARY)s,STATS$SNAPSHOTsn WHEREs.hash_value=t.hash_value ANDs.address=t.address ANDs.snap_id=t.last_snap_id ANDsn.snap_id=s.snap_id;比如Q我们以perfstat用户执行该SQLQ输?#8220;to_comp”Q可以观察到数据库里保存的有的to_comp存储q程的执行时_我们发现Q其执行旉Q从优化前的几千U,最后稳定在优化后的几十U?/p>

注:to_comp是整体调用执行一ơ所有网元的数据合ƈ和汇ȝprocedure?/p>

用于区分析数据的Procedure的计性能

使用上面的方法,我们一样可以知道,区分析的procedure执行Q从优化前的U几千秒Q最后稳定在优化后的几十U?/p>

扚w数据采集入库性能

使用bcpQ能从以前约15分钟Q减到U?分钟?/p>

2、一些单ơ、不常用的操作的语句执行性能

GUI上的性能数据查询Q告警数据查询,响应旉都极快,几乎不再出现长时间等待响应的情况?/p>

五,参?/p>

常用的优化工?/p>

statspack

sql*plus

TOAD

 



chen11-1 2012-07-10 11:10 发表评论
]]>
Oracle容灾Ҏ(gu)的选择 http://m.tkk7.com/tbwshc/archive/2012/07/10/382693.htmlchen11-1chen11-1Tue, 10 Jul 2012 03:08:00 GMThttp://m.tkk7.com/tbwshc/archive/2012/07/10/382693.htmlhttp://m.tkk7.com/tbwshc/comments/382693.htmlhttp://m.tkk7.com/tbwshc/archive/2012/07/10/382693.html#Feedback0http://m.tkk7.com/tbwshc/comments/commentRss/382693.htmlhttp://m.tkk7.com/tbwshc/services/trackbacks/382693.html---- 容灾首先是一个概念,要认识到Z么做容灾Q才能做好容灾。世界上没有卖后(zhn)药的,当灾N临了Q如果没有行之有效的数据保护、数据恢复的容灾措施Q带来不可预估的损失是无法避免的。类似电(sh)信行业、金融行业,证券行业也是如此Q动辄涉及数以百亿计的资金、涉及庞大的客户量,在系l数据的准确、业务的q箋、关键业务的不中断等斚w更是不容出现M的差错?
 
----目前Q业界具有容灑֊能的常用解决Ҏ(gu)主要包括以下几类Q磁盘阵列复制技术,主要׃些磁盘阵列厂商提供,如EMC SRDF、IBM PPRC 、HP BusinessCopy、HDS TrueCopy?a >tb{;存储卷复制技术,׃些卷理软g厂商提供Q如VERITAS VVRQ数据库复制技术,由数据库厂商以及一些第三方厂商提供Q如DSG RealSyncQQuest SharePlex{;应用层复制技术,由各pȝ的应用厂商自己提供?
 
----盘阵列复制技术主要适用于数据中心的v量数据复Ӟ此技术用户必需采用支持该功能的盘阵列型号Q而这些阵列大都ؓ高端阵列Q投资非常昂cƈ且,׃政府行业用户的带宽有限,而磁盘阵列复制技术对带宽的要求又相对很高Q动辄需要上GB的带宽。此外,采用盘阵列复制技术,其目标端无法提供实时数据查询Q由于目标端数据库在复制q程中不能被打开Q难于实C易与查询的分,同时也造成大量投资费。因此,盘阵列复制技术无法满x些行业集中交易系l的容灾需求,使得q些用户难以选择此种解决Ҏ(gu)?
 
----存储卷复制技术主要适用于工作组U的数据复制Q它对CPU资源占用高。同L(fng)于目标端数据无法提供实时数据查询和对带宽的要求高Q得证券等行业用户也难以选择?
 
----而应用层复制技术只适合那些在应用中提供了该技术的应用Q由于它的非标准化、开发和l护工作量大Q得其应用不成熟也不普遍。关键行业对数据的可靠性要求又非常之高Q得关键行业用户也不敢冒然选择此种复制技术?
 
----DSG RealSync属于数据库复制技术,它适用于从工作l、企业到数据中心的复刉求,无论pȝ采用什么样的服务器q_、什么样的存储^収ͼ只要是ORACLEpȝ之间的复制即可适用。采用DSG RealSync复制技术,其目标端数据库在复制q程中处于可用状态,帮助关键行业用户实现生pȝ与查询统计报表系l的分离Q其源端pȝ和目标端pȝ可以采用异构的操作系l^台、存储^収ͼ支持选择性复Ӟx持只复制指定的user、指定的Table、指定的行和列,从而节省存储空_提高应用灉|性;支持1对多Q多?的复制结构,卻I能够多个数据库中的数据复制C个数据库中,tb能够一个数据库中的不同数据分发C同的数据库中Q也节约带宽和网l资源,其所需带宽一般在几Mbps,几十Mbps?
 
----随着用户容灾意识的逐渐增强Q关键行业也提出了徏设一套高效、可靠、投资回收比高的N备䆾pȝ的需求,以确保系l的数据安全和灾隑֏生时数据的快速恢复?nbsp; 
 

chen11-1 2012-07-10 11:08 发表评论
]]>
Oracle Buys Finnish Open-Source Developer http://m.tkk7.com/tbwshc/archive/2012/07/10/382692.htmlchen11-1chen11-1Tue, 10 Jul 2012 03:05:00 GMThttp://m.tkk7.com/tbwshc/archive/2012/07/10/382692.htmlhttp://m.tkk7.com/tbwshc/comments/382692.htmlhttp://m.tkk7.com/tbwshc/archive/2012/07/10/382692.html#Feedback0http://m.tkk7.com/tbwshc/comments/commentRss/382692.htmlhttp://m.tkk7.com/tbwshc/services/trackbacks/382692.htmlOracle scooped up another small technology company on Friday, announcing its acquisition of Finnish open-source database technology developer Innobase. Financial terms of the deal were not disclosed.

Innobase, based in Helsinki, is the creator of InnoDB, an add-on storage engine for MySQL. InnoDB is distributed under the GNU GPL (General Public License) open-source license. The software is bundled with MySQL through a contractual agreementb that comes up for renewal next year; Oracle said it expects to negotiate an extension of that contract.


"Oracle intends to continue developing the InnoDB technology and expand our commitment to open source software," Charles Rozwat, Oracle's executive vice president in charge of database and middleware technology, said in a prepared statement. "Oracle has already developed and contributed an open source clustered file system to Linux. We expect to make additional contributions in the future," he added.


Oracle, headquartered in Redwood Shores, California, has arranged around a dozen acquisitions in the past year, most of them significantly smaller than its blockbuster, multibillion-dollar PeopleSoft and Siebel Systems buys. Other recent purchases include supply-chain logistics software maker Global Logistics Technologies, retail optimization software developer ProfitLogic, database performance enhancement technology company TimesTen, and a majority stake in Indian banking software vendor i-flex Solutions.

 



chen11-1 2012-07-10 11:05 发表评论
]]>
Oracle查询优化4大方面的主要途径http://m.tkk7.com/tbwshc/archive/2012/06/30/381887.htmlchen11-1chen11-1Sat, 30 Jun 2012 15:02:00 GMThttp://m.tkk7.com/tbwshc/archive/2012/06/30/381887.htmlhttp://m.tkk7.com/tbwshc/comments/381887.htmlhttp://m.tkk7.com/tbwshc/archive/2012/06/30/381887.html#Feedback0http://m.tkk7.com/tbwshc/comments/commentRss/381887.htmlhttp://m.tkk7.com/tbwshc/services/trackbacks/381887.html数据库最基本的Q务是存储、管理数据,而终端用户唯一能看到的数据库特性就是其性能Q数据库以何速度处理某一指定查询的结果,q且结果返回到用户所用的工具和应用程序。从大多数系l的应用实例来看Q查询操作在各种数据库操作中所占据的比重最大、查阅新闅R?查看文g?查询l计信息{。因此,数据库查询操作的效率是媄响一个应用系l响应时间的关键因素。随着一个应用系l中数据的动态增长,数据量变大,数据库查询效率就会有所降低Q应用系l的响应速度也随之减慢,其对于量数据的管理和查询问题更加突出,Oracle查询优化显得尤为重要?nbsp;  

目前通用的数据库产品有很多种Q其中Oracle数据库以其支持大数据库、多用户的高性能事务处理, 对业界各工业标准的支持,完整的安全和完整性控Ӟ支持分布式数据库利分布处?h可移植性、可兼容性和可连接性等H出优点倍受用户喜爱Q应用较为广泛,在互联网数据库^C处于领先C、其Spatial技术能更加有效地管理地理信息,实现量I间信息的存储和理。本文结合Oracle数据库应用经验,从命中率提高、多表查询优化、大表查询优化和SQL优化{四个方面阐qOracle查询优化的经验和Ҏ(gu)?/p>

Oracle查询优化W一斚wQOracle数据查询tb命中率的提高   

“命中率(HITRATIOQ?是指直接从内存中取得数据而不从磁盘中取得数据的比率,也就是查询请求的数据块已l在内存中次数的癑ֈ?#8221;。媄响命中率的因素有四种Q字典表zd、(f)时段zd、回滚段zd、表扫描Q?应用DBA可以对这四种因素q行分析Q找出数据库命中率低的症l所在?/p>

1)字典表活?nbsp; 

当一个SQL语句W一ơ到达Oracle内核时数据库对SQL语句q行分析Q包含在查询中的数据字典对象被分解,产生SQL执行路径。如果SQL语句指向一个不在SGA中的对象??表或视图QOracle执行SQL语句到数据典中查询有兛_象的信息。数据块从数据字典表被读取到SGA的数据缓存中。由于每个数据字兔R很小Q因此,我们可缓存这些表以提高对q些表的命中率。但是由于数据字典表的数据块在SGA中占据空_当增加全部的命中率时Q它们会降低表数据块的可用空_ 所以若查询所需的时间字怿息已l在SGA~存中,那么没有必要递归调用?/p>

2)临时D늚zd   

当用h行一个需要排序的查询ӞOracle设法对内存中排序区内的所有行q行排序Q排序区的大由数据库的init.ora文g的数定。如果排序区域不够大Q数据库׃在排序操作期间开辟(f)时段。(f)时段会h为地降低OLTP(online transaction processingQ应用命中率,也会降低查询q行排序的性能。如果能在内存中完成全部排序操作Q就可以消除向(f)时段写数据的开销。所以应SORT_AREA_SIZE讄得够大Q以避免对(f)时段的需要。这个参数的具体调整Ҏ(gu)?查询相关数据Q以定q个参数的调整?nbsp; 
select * from v$sysstat where name='sorts(disk)'or name='sorts(memory);

大部分排序是在内存中q行的,但还有小部分发生在(f)时段Q?需要调?|查看init.ora文g?SORT_AREA_SIZE|参数为:SORT_AREA_SIZEQ?5536;其调整到SORT_AREA_SIZEQ?31072、这个D整后Q重启ORACLE数据库即可生效?/p>

3)回滚D늚zd   

回滚D|动分为回滚活动和回滚D头zd。对回滚D头块的讉K会降低应用的命中率, 对OLTPpȝ命中率的影响最大。ؓ认是否因ؓ回滚D媄响了命中率,可以查看监控输出报表中的“数据块相Ҏ(gu)读一重写记录应用” 的统计|q些l计值是用来定用户从回滚段中访问数据的发生ơ数?/p>

4)表扫?nbsp;  

通过大扫描读得的块在数据块缓存中不会保持很长旉Q?因此表扫描会降低命中率。ؓ了避免不必要的全表扫描,首先是根据需要徏立烦引,合理的烦引设计要建立人对各种查询的分析和预测上,W者会在SQL优化中详l谈及;其次是将l常用到的表攑֜内存中,以降低磁盘读写次数。例?Alter table your_table_name cathe?



chen11-1 2012-06-30 23:02 发表评论
]]>
Oracle数据库烦引的优点与缺点简?/title><link>http://m.tkk7.com/tbwshc/archive/2012/06/30/381885.html</link><dc:creator>chen11-1</dc:creator><author>chen11-1</author><pubDate>Sat, 30 Jun 2012 14:51:00 GMT</pubDate><guid>http://m.tkk7.com/tbwshc/archive/2012/06/30/381885.html</guid><wfw:comment>http://m.tkk7.com/tbwshc/comments/381885.html</wfw:comment><comments>http://m.tkk7.com/tbwshc/archive/2012/06/30/381885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/tbwshc/comments/commentRss/381885.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/tbwshc/services/trackbacks/381885.html</trackback:ping><description><![CDATA[<p>以下的文章主要介l的是Oracle数据库烦引的优点与缺点,我们大家都知道Oracle数据库的索引可以分ؓQ聚集烦引,非聚集烦引,以及唯一索引。其优点主要是方便查询,其在相关的数据量大时排序更易查询?/p> <p>~点Q查询时需要进行重新排序,减少了效率。物理Oracle数据库烦引缺?建立索引效率低,只能Z个?/p> <p>Z么要创徏Oracle数据库烦引呢Q这是因为,创徏索引可以大大提高pȝ的性能。第一Q通过创徏唯一性烦引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度Q这也是创徏索引的最主要的原因?/p> <p>W三Q可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在用分l和排序子句q行数据索时Q同样可以显着减少查询中分l和排序的时间。第五,通过使用索引Q可以在查询的过E中Q用优化隐藏器Q提高系l的性能?/p> <p>也许会有问:增加索引有如此多的优点,Z么不对表中的每一个列创徏一个烦引呢Q这U想法固然有其合理性,然而也有其片面性。虽Ӟ<a ><span style="color: #000000">tb</span></a>索引有许多优点,但是Qؓ表中的每一个列都增加烦引,是非怸明智的。这是因为,增加索引也有许多不利的一个方面?/p> <p>W一Q创建烦引和l护索引要耗费旉Q这U时间随着数据量的增加而增加。第二,索引需要占物理I间Q除了数据表占数据空间之外,每一个烦引还要占一定的物理I间Q如果要建立聚簇索引Q那么需要的I间׃更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的l护Q这样就降低了数据的l护速度?/p> <p>索引是徏立在数据库表中的某些列的上面。因此,在创建Oracle数据库烦引的时候,应该仔细考虑在哪些列上可以创建烦引,在哪些列上不能创建烦引?/p> <p>一般来_应该在这些列上创建烦引,例如Q在l常需要搜索的列上Q可以加快搜索的速度Q在作ؓ主键的列上,强制该列的唯一性和l织表中数据的排列结构;在经常用在连接的列上Q这些列主要是一些外键,可以加快q接的速度Q?/p> <p>在经帔R要根据范围进行搜索的列上创徏索引Q因为烦引已l排序,其指定的范围是连l的Q在l常需要排序的列上创徏索引Q因为烦引已l排序,q样查询可以利用索引的排序,加快排序查询旉Q在l常使用在WHERE子句中的列上面创建烦引,加快条g的判断速度?/p> <p>同样Q对于有些列不应该创建Oracle数据库烦引。一般来_不应该创建烦引的的这些列h下列特点Q第一Q对于那些在查询中很用或者参考的列不应该创徏索引。这是因为,既然q些列很用到Q因此有索引或者无索引Qƈ不能提高查询速度?/p> <p>相反Q由于增加了索引Q反而降低了pȝ的维护速度和增大了I间需求。第二,对于那些只有很少数据值的列也不应该增加烦引。这是因为,׃q些列的取值很,例如Z表的性别列,在查询的l果中,l果集的数据行占了表中数据行的很大比例,即需要在表中搜烦的数据行的比例很大?/p> <p>增加索引Qƈ不能明显加快索速度。第三,对于那些定义为text, image和bit数据cd的列不应该增加烦引。这是因为,q些列的数据量要么相当大Q要么取值很。第四,当修Ҏ(gu)能q远大于索性能Ӟ不应该创建烦引?/p> <p>q是因ؓQ修Ҏ(gu)能和检索性能是互相矛盄。当增加索引Ӟ会提高检索性能Q但是会降低修改性能。当减少索引Ӟ会提高修Ҏ(gu)能Q降低检索性能。因此,当修Ҏ(gu)能q远大于索性能Ӟ不应该创建Oracle数据库烦引?/p><img src ="http://m.tkk7.com/tbwshc/aggbug/381885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/tbwshc/" target="_blank">chen11-1</a> 2012-06-30 22:51 <a href="http://m.tkk7.com/tbwshc/archive/2012/06/30/381885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主键冲突---一个表可以有两个主键的作用Q?--表中已有主键新增一个主键语?/title><link>http://m.tkk7.com/tbwshc/archive/2012/06/12/380595.html</link><dc:creator>chen11-1</dc:creator><author>chen11-1</author><pubDate>Tue, 12 Jun 2012 05:22:00 GMT</pubDate><guid>http://m.tkk7.com/tbwshc/archive/2012/06/12/380595.html</guid><wfw:comment>http://m.tkk7.com/tbwshc/comments/380595.html</wfw:comment><comments>http://m.tkk7.com/tbwshc/archive/2012/06/12/380595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/tbwshc/comments/commentRss/380595.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/tbwshc/services/trackbacks/380595.html</trackback:ping><description><![CDATA[<p><font face="Verdana">一个表可以有两个主键的作用Q?br /><br />primary key for table xs ' is not unique Q主键冲H?/font></p> <p><font face="Verdana">首先,那两个字D都变成了主?q话是不切?严格的说因ؓ?nbsp;  你选择的那两个字段共同构成了主?也就?"學生R號+課程R號 "的组合是一个主?q个l合不能够重?不能够同时ؓI?   而不?"學生R號 "     "課程R號 "   各ؓ一个主?不信你可以查?a ><span style="color: #000000">tb</span></a>pȝ?<br /><br /><br />表中已有主键新增一个主键:语句<br />例如Q?br />alter table AC04_blbc DROP PRIMARY KEY;<br />alter table AC04_blbc modify sbxz VARCHAR(8) NOT NULL,add constraint PK_AC04_blbc primary key (AAE002, AAC001, AAE041,sbxz);</font></p><img src ="http://m.tkk7.com/tbwshc/aggbug/380595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/tbwshc/" target="_blank">chen11-1</a> 2012-06-12 13:22 <a href="http://m.tkk7.com/tbwshc/archive/2012/06/12/380595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://bqjonline.com" target="_blank">Ƶ߹ۿ </a>| <a href="http://jmzc888.com" target="_blank">ӰԺѹۿ</a>| <a href="http://www-15706.com" target="_blank">޹av߲</a>| <a href="http://www-xg5777.com" target="_blank">ŮƵ</a>| <a href="http://w6626.com" target="_blank">Ƶ97Ӱ</a>| <a href="http://https357171.com" target="_blank">˵</a>| <a href="http://www-9970.com" target="_blank">޸ۺ԰Ƶ</a>| <a href="http://dasheng178.com" target="_blank">91ƷѲ</a>| <a href="http://alankell.com" target="_blank">޾Ʒ˾þվ</a>| <a href="http://gzbaida.com" target="_blank">һ</a>| <a href="http://zhuguangbaoyu.com" target="_blank">һһƬһëƬ</a>| <a href="http://sds54.com" target="_blank">99þѿƷ</a>| <a href="http://317777aa.com" target="_blank">ɪɪվվ</a>| <a href="http://adcacs.com" target="_blank">޻ɫĻ</a>| <a href="http://xabcjzx.com" target="_blank">޾ƷA߹ۿ</a>| <a href="http://www8x5188x.com" target="_blank">ƵƷѹۿ99</a>| <a href="http://cao8080.com" target="_blank">wwwһwww</a>| <a href="http://gs168sz.com" target="_blank">ۺϹ˶¼ </a>| <a href="http://jiujiujingpin.com" target="_blank">߹ۿ</a>| <a href="http://hezuoedu.com" target="_blank">þþþAVվ</a>| <a href="http://2030188.com" target="_blank">þþþþƵ</a>| <a href="http://langse3.com" target="_blank">avһ</a>| <a href="http://ycjs999.com" target="_blank">þav޾Ʒɫҹ</a>| <a href="http://ttvv55.com" target="_blank">޾Ʒ˾þ</a>| <a href="http://0515zs.com" target="_blank">Ҹ鶹</a>| <a href="http://ningxialanh.com" target="_blank">˹mvƵ</a>| <a href="http://wwwfafa98.com" target="_blank">Ʒ˳Ƶapp</a>| <a href="http://eaivan.com" target="_blank">㽶Ƶѿ</a>| <a href="http://njchxf.com" target="_blank">һëƬѿ</a>| <a href="http://gepuw.com" target="_blank">ĻþþƷVA</a>| <a href="http://yw756.com" target="_blank">AVպAV̾ </a>| <a href="http://szqsnt.com" target="_blank">99þֻƷ</a>| <a href="http://www-ttyx.com" target="_blank">aëƬѹۿ</a>| <a href="http://777vip8.com" target="_blank">ɫwwwƷƵѿ</a>| <a href="http://www-84243.com" target="_blank">ĻŮ</a>| <a href="http://baicaijia666.com" target="_blank">޻ɫƵ</a>| <a href="http://www-64000.com" target="_blank">ģ߹ۿ</a>| <a href="http://628669.com" target="_blank">ޱ龫Ʒһ </a>| <a href="http://www-64000.com" target="_blank">þ99ۺϾƷҳ </a>| <a href="http://sijep.com" target="_blank">ˬֻڵƵ</a>| <a href="http://zhxydq.com" target="_blank">ƷþþþóѶ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>