转自花纯春的博客:
   
看了很多提及Oracle11g特性的文章,可能大家对于使用已经并不陌生了,但其实关于rowID还是有不少学问的,像通过它可以很快的访问表中的一行,借助其提供的dbms_rowid进行解析从而获取关于行的相关信息等等。下面是看到的一篇有关数据插入时rowID的得到,过程还是比较清晰的,与大家分享。
Oracle11g有诸多的新特性,相信各位已经从很多渠道了解到了,在此,我重点介绍一下如何在Oracle11g中插入数据时得到RowId,并公布一下,才发现的小秘密。在有些应用场景下,我们需要在将数据插入到数据库时,返回rowId。Oracle有一条返回语句。其语法如下:
INSERT INTO <table_name>
(column_list)
VALUES
(values_list)
RETURNING <value_name>
INTO <variable_name>;但在插入数据后,如何得到rowId呢?
在JDBC中,可以使用Callback语句去执行Procedure,因此,我们可以从连接对象产生Callback语句,并执行插入命令的SQL脚本,这样以从对象得到返回值。这个关键是如何写这条插入语句?并且如何去调用语句以及如何得到返回值。以下是我的测试代码。创建测试数据库创建一个表FI_T_USER,这个表包含2字段,第一个是主键USER_ID,另一个是USER_NAME。创建语句如下:create table FI_T_USER(
    USER_ID varchar2(20) primary key, 
    USER_NAME varchar2(100)
);写测试代码以下是我的测试代码:
这里面很重要的代码是指定插入SQL脚本这句:String insertSQL = "begin insert into FI_T_USER(USER_ID, USER_NAME) values(?,?) return rowid into ?;end;";接下来的关键是,注册输出参数,并在执行语句后得到这个参数。这些代码非常有用,不仅能在Oracle11g上使用,还可支持Oracle10和Oracle 9.2。
好了,本文开头所述,我发现的这个Oracle11g的秘密就是:
Oracle11g能在将数据导出备份时压缩数据,并且效率惊人。据Oracle11g白皮书中介绍,压缩率可达到74.67% , 本文主要介绍的是在Oracle11g中的实用技巧—插入数据时取得RowId,至于压缩嘛,就下次有机会再写了。详细内容请看:http://wmdata.com.cn/oracle/11g/index.asp?froms=bbs

解决方案 »

  1.   

    11G有不少的新特性了.特别是active standby database,不过也要算license了.呵呵
      

  2.   

    begin insert into FI_T_USER(USER_ID, USER_NAME) values(?,?) return rowid into ?;end;"; 
    处么又说可以用在10G?
      

  3.   

    从甲骨文此次推出的11g可以看到,在安全方面除了10g已经存在的数据阀门和加密外,11g又增加了四项安全功能,即安全备份、非对称数据的授权安全检索、监控、管理和报警 我是比较喜欢的 呵呵
      

  4.   

    oracle数据文件为什么存在file#和rfile#?归根结底的原因是因为 ROWID 的存储格式造成的,因为 rowid 中文件编号标志只有10bit,最大数据容量1024,由于不存在0编号文件,所以实际上只允许1023个文件编号
      

  5.   

    搞Oracle都会经常碰到rowId,rowId其实就是唯一标志记录物理位置的一个id。在Oracle 8版本以前,rowId由file#+block#+row#组成,占用6个bytes空间,10 bit 的 file# ,22bit 的 block# ,16 bit 的 row#
      

  6.   

    11g增加了对二进制XML数据的支持,现在客户可以选择适合自己特定应用及性能需求的XML存储选项
      

  7.   

     我想提醒大家一点,我自己在建表table时使用了sys用户,因此table存放在了system 表空间中了,这个习惯很不好。所以大家在操作的时候,最好使用其他用户,而且不要把对象轻易的放在system表空间中,以免给system tables中造成过多的碎片。
      

  8.   

     显示出来的是64进制数,oracle在设计rowId时用A~Z表示0-25,用a~z表示26-51,用0~9表示52-61,用+表示62,用/表示63。
      

  9.   

     Cache始终是提升性能的重要技术,在Oracle 11g中增加了一种Server Result Cache,只要执行计划一样或部份一样,并且生命周期一样,则就可以共享了。在以读为主要的系统中,性能可以提升一倍。
      

  10.   

     11g拥有自动诊断知识库,当Oracle探测到重要错误时,会自动创纪一个事件,并且捕捉到和这一事件相关的信息,同时自动进行数据库健康检查并通知DBA。此外,这些信息还可以打包发送给Oracle的支持团队。
      

  11.   

     在Oracle11g中,通过设置一个参数,Oracle可以自动调整所有的内存使用,这被称为自动内存管理;11g在线重定义对物化视图日志进行了支持,同时COPY_TABLE_DEPENDENTS过程也添加了对物化视图日志拷贝的功能。
      

  12.   

    Oracle11g数据库中,印象最深的是数据库可以自我调整检查点。我们通过数据库日志进行前后的对比,就会发现,两者的差异是很大的。
      

  13.   

    Oracle11g数据库:利用了数据库检查点自我调整功能后,数据库的查询性能,特别是查询大量数据的性能,得到了比较显著的改善。
      

  14.   

    Oracle每周会检查SMB的大小是否超过了它的空间预算限制(默认值:SYSAUX表空间的10%),如果超过了限制,会在数据库的警报日志中记录一条警告信息。
      

  15.   

    Oracle11g的SQL计划管理工具,给每个Oracle DBA都有能力捕获并保存最有效的SQL语句执行计划。SQL性能分析器是一个整体调整工具,管理员可以调节整体参数来使数据库尽快的达到最佳性能