﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-隔叶黄莺 The Blog of Unmi-随笔分类-Database</title><link>http://www.blogjava.net/Unmi/category/27634.html</link><description>〖隔叶黄莺三四声，挂壁飞瀑千万尘。若是人间无净土，此处为何妙语真！ 隔叶黄莺四字，本非取自此句，而有寄寓他意，因见妙语，亦与予心合!〗</description><language>zh-cn</language><lastBuildDate>Tue, 16 Mar 2010 21:15:58 GMT</lastBuildDate><pubDate>Tue, 16 Mar 2010 21:15:58 GMT</pubDate><ttl>60</ttl><item><title>了解NoSQL的必读资料汇总</title><link>http://www.blogjava.net/Unmi/archive/2010/03/16/315607.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Tue, 16 Mar 2010 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2010/03/16/315607.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/315607.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2010/03/16/315607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/315607.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/315607.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前记：看到 Twitter 和 Digg 相继用 NoSQL 替代了原有的关系型数据库 MySql。显然，NoSQL 定然有它的许多优势，且目前已有相当的 NoSQL 产品实现，所以有必要对 NoSQL 表示一定的关注，故找些资料来看。它也是非关系型的数据库，那它与著名的文档型数据库 Domino 又有何种关系呢，Java 程序又该如何实际应用 NoSQL 呢？<br><br>NoSQL 的官网是：http://nosql-database.org/，里面有丰富的介绍<br>Wiki 百科上的条目：http://en.wikipedia.org/wiki/NoSQL。以及如下文字：<br><br><br>NoSQL 是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL &nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2010/03/16/315607.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/315607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2010-03-16 16:58 <a href="http://www.blogjava.net/Unmi/archive/2010/03/16/315607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对SQL说不！NoSQL的数据库技术革命</title><link>http://www.blogjava.net/Unmi/archive/2009/07/07/285810.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Tue, 07 Jul 2009 06:24:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/07/07/285810.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/285810.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/07/07/285810.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/285810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/285810.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在NoSQL运动的最新一次聚会中，来自世界各地的150人挤满了CBS Interactive的一间会议室。<br><br>就像当年波士顿的爱国者为反抗英国重税的行动一样，NoSQL的支持者们从各地涌来，分享他们如何推翻缓慢而昂贵的关系数据库的暴政，怎样使用更有效和更便宜的方法来管理数据。云计算可能会为数据库技术的发展带来新的契机，如果想在云中获得丰富而随需应变的可伸缩性，你需要一个非关系数据库。<br><br>“关系型数据库给你强加了太多东西。它们要你强行修改对象数据，以满足RDBMS （relational database management system，关系型数据库管理系统）的需要，”Java工具提供商SpringSource公司的首席工程师Jon Travis说，他是本次集会的10位发言人之一，在他看来，基于NoSQL的替代方案“只是给你所需要的”。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/07/07/285810.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/285810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-07-07 14:24 <a href="http://www.blogjava.net/Unmi/archive/2009/07/07/285810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据</title><link>http://www.blogjava.net/Unmi/archive/2009/05/06/269207.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Wed, 06 May 2009 15:00:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/05/06/269207.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/269207.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/05/06/269207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/269207.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/269207.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 通常我们获取游标数据是用 fetch some_cursor into var1, var2 的形式，当游标中的记录数不多时不打紧。然而自 Oracle 8i 起，Oracle 为我们提供了 fetch bulk collect 来批量取游标中的数据，存中即是合理的。它能在读取游标中大量数据的时候提升效率，就像 SNMP 协议中，V2 版比 V1 版新加了 GET-BULK PDU 一样，也是用来更高效的批量取设备上的节点值（原来做过网管软件开发，故联想到此）。 <br><br>fetch bulk collect into 的使用格式是：fetch some_cursor collect into col1, col2 limit xxx。col1、col2 是声明的集合类型变量，xxx 为每次取数据块的大小（记录数），相当于缓冲区的大小。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/05/06/269207.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/269207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-05-06 23:00 <a href="http://www.blogjava.net/Unmi/archive/2009/05/06/269207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查询Oracle正在执行的SQL语句 </title><link>http://www.blogjava.net/Unmi/archive/2009/05/05/268938.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Tue, 05 May 2009 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/05/05/268938.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/268938.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/05/05/268938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/268938.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/268938.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 支持左连接的 Oracle 9i 以上版本<br><br>select OSUSER, PROGRAM, USERNAME, SCHEMANAME, B.Cpu_Time, STATUS, B.SQL_TEXT<br>  from V$SESSION A<br>  LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS<br>                   AND A.SQL_HASH_VALUE = B.HASH_VALUE<br> order by b.cpu_time desc&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/05/05/268938.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/268938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-05-05 11:07 <a href="http://www.blogjava.net/Unmi/archive/2009/05/05/268938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 存储过程中发送邮件，并支持用户验证、中文标题和内容</title><link>http://www.blogjava.net/Unmi/archive/2009/02/06/253599.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Fri, 06 Feb 2009 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/02/06/253599.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/253599.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/02/06/253599.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/253599.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/253599.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在 Oracle 的存储过程执行中，我们可能希望它本身能完成邮件发送执行的结果，特别是在捕获到了异常时。不能总是依赖于调用存储过程的外部程序－－调用后，根据出口参数，发送执行结果。这一需求更迫切的表现在非人工参与的 Oracle Job 调用存储过程的情况下。<br><br>所幸，Oracle 为我们提供了发送邮件的工具包 UTL_SMTP，它最早出现在 Oracle 8.1.7 版本中。下面是我从网络上搜索相关资料后、综合整理、多处修正、数次调试、排除万难而写出的一个发送邮件的存储过程。可支持需用户验证的邮件服务器，中文标题和中文内容无乱码，只还未支持附件的发送，相信这方面应用较少，需要的话再 Google 一下，且文后参考中有相应的链接。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/02/06/253599.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/253599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-02-06 17:17 <a href="http://www.blogjava.net/Unmi/archive/2009/02/06/253599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 过程中执行动态 SQL 或 DDL 语句</title><link>http://www.blogjava.net/Unmi/archive/2009/02/05/253415.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 05 Feb 2009 12:07:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/02/05/253415.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/253415.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/02/05/253415.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/253415.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/253415.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如果你用的是 Oracle 8i 及以上的版本，那简单，在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句，但这个动态语句中带参数，或 Select 的结果要 into 到变量中时就要稍加留心一下了。而在 8i 以前的版本(谁还用这么古老的玩艺，总有些不得已的地方，老系统考虑升级成本遗留下来的，应用软件所伴随着的等)，都没法用 execute immediate，就得使用 DBMS_SQL 包来实现了<br><br>何谓动态 SQL 和 DDL 语句呢？通常在过程中要操作的表名、字段名都必须是明确的，否则编译过程时就要报错，但如果这两者也用变量名来表示就是动态的。DDL 就是数据库对象定义的操作，如 CREATE TABLE/VIEW/INDEX/SYN/CLUSTER....，及这些对象的删除、修改操作等等。<br><br>比如在 Oracle 中有执行下面过程块的意图时，就要使用到 execute immediate 或是 DBMS_SQL 包了。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/02/05/253415.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/253415.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-02-05 20:07 <a href="http://www.blogjava.net/Unmi/archive/2009/02/05/253415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 中重新编译无效的存储过程, 或函数、触发器等对象</title><link>http://www.blogjava.net/Unmi/archive/2009/01/07/250313.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Wed, 07 Jan 2009 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/01/07/250313.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/250313.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/01/07/250313.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/250313.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/250313.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Oracle 中的存储过程在有些情况下会变成失效状态，在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉。比如储过程所引用的对象失效，dblink 出问题啦都可能引起用到它的存储过程失效。再就我的存储过程经常会变成无效，至今原因都未查明。<br><br>查询 dba_dependencies 视图可以看到存储过程所引用的对象，再就在 dba_objects 视图中可以看到对象的 created 和 last_ddl_time 时间。<br><br>上面的那种无效的存储程，只要不是语法上有问题，重新编译一下又是可用的了。总不能每次发现时人工去编译的，所以要实现自动化，有以下两种方法(网上找到的所有的 在Oracle中重新编译所有无效的存储过程 代码排版都很混乱，所以主要是重新整理了)：&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/01/07/250313.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/250313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-01-07 13:34 <a href="http://www.blogjava.net/Unmi/archive/2009/01/07/250313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法</title><link>http://www.blogjava.net/Unmi/archive/2009/01/05/249956.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Mon, 05 Jan 2009 13:15:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/01/05/249956.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/249956.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/01/05/249956.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/249956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/249956.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在 Oracle 数据库中，我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法：<br><br>1. A 表的记录导出为一条条分号隔开的 insert 语句，然后执行插入到 B 表中<br>2. 建立数据库间的 dblink，然后用 create table B as select * from A@dblink where ...，或 insert into B select * from A@dblink where ...<br>3. exp A 表，再 imp 到 B 表，exp 时可加查询条件<br>4. 程序实现 select from A ..，然后 insert into B ...，也要分批提交<br>5. 再就是本篇要说到的 Sql Loader(sqlldr) 来导入数据，效果比起逐条 insert 来很明显&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/01/05/249956.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/249956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-01-05 21:15 <a href="http://www.blogjava.net/Unmi/archive/2009/01/05/249956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle定时任务[转]</title><link>http://www.blogjava.net/Unmi/archive/2008/11/12/240050.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Wed, 12 Nov 2008 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/11/12/240050.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/240050.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/11/12/240050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/240050.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/240050.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: DBMS_JOB系统包是Oracle“任务队列”子系统的API编程接口。DBMS_JOB包对于任务队列提供了下面这些功能：提交并且执行一个任务、改变任务的执行参数以及删除或者临时挂起任务等。<br><br>DBMS_JOB包是由ORACLE_HOME目录下的rdbms/admin子目录下的DBMSJOB.SQL和PRVTJOB.PLB 这两个脚本文件创建的。这两个文件被CATPROC.SQL脚本文件调用，而CATPROC.SQL这个文件一般是在数据库创建后立即执行的。脚本为DBMS_JOB包创建了一个公共同义词，并给该包授予了公共的可执行权限，所以所有的Oracle用户均可以使用这个包。<br><br>下面几个数据字典视图是关于任务队列信息的，主要有DBA_JOBS, USER_JOBS和DBA_JOBS_RUNNING。这些字典视图是由名为CATJOBQ.SQL的脚本文件创建的。该脚本文件和创建DBMS_JOB包的脚本文件一样在ORACLE_HOME目录的rdbms/admin子目录中，同样也是由脚本文件CATPROC.SQL调用。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/11/12/240050.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/240050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-11-12 11:42 <a href="http://www.blogjava.net/Unmi/archive/2008/11/12/240050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>又是 Oracle JDBC 驱动版本太低引发的错误-rs.getByte() 的差异</title><link>http://www.blogjava.net/Unmi/archive/2008/08/28/225385.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 28 Aug 2008 11:05:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/08/28/225385.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/225385.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/08/28/225385.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/225385.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/225385.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前面写过一个因为 Oracle 驱动版太低引起的一在题：Oracle 驱动版本引起的显示字段奇怪编码问题。今天又遇着一个。<br><br>本地写好的一段连接数据库的程序，一放到正式服务器上又不能正常工作了，原来的代码中没有打印出异常栈，都看不出什么问题来，后来加上异常栈输出，得到如下信息：<br><br>Fail to convert to internal representation<br> java.sql.SQLException: Fail to convert to internal representation<br>        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/08/28/225385.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/225385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-08-28 19:05 <a href="http://www.blogjava.net/Unmi/archive/2008/08/28/225385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2 登录数据库时的代码页转换错误 SQL0332N</title><link>http://www.blogjava.net/Unmi/archive/2008/08/06/220397.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Wed, 06 Aug 2008 03:49:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/08/06/220397.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/220397.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/08/06/220397.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/220397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/220397.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 客户端连接到另一台机器上的 DB2 数据库，用 DB2 的控制中心连接没问题，但是用 Quest Central for DB2 来连接，输入用户名和密码，确定，出现提示窗口：<br><br>[IBM][CLI Driver] SQL0332N  没有从源代码页 "86" 至目标代码页 "819" 的转换。原因代码是 "DB2INST1"。  SQLSTATE=01539<br><br>无法登录，原因是本机的代码页(codepage) 与数据库的代码页不相符且无符完成又向转换。<br><br>解决办法是在命令行下执行 db2set DB2CODEPAGE=819<br><br>dos> db2set DB2CODEPAGE=819<br><br>然后，再次用 Quest Central for DB2 来连接数据库就 OK 啦&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/08/06/220397.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/220397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-08-06 11:49 <a href="http://www.blogjava.net/Unmi/archive/2008/08/06/220397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC 连接 Oracle 时，用 rs.absolute(n) 真的不如 n 次 next() 性能好</title><link>http://www.blogjava.net/Unmi/archive/2008/07/24/217168.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 24 Jul 2008 14:16:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/07/24/217168.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/217168.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/07/24/217168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/217168.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/217168.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前面写过一篇：Oracle 驱动版本引起的显示字段奇怪编码问题。讲到因 Oracle 8.0.5 不支持子查询排序，为改善原来那种每次翻页时都捋出所有数据成对象到 List 中，然后从中拣取页面实际要显示的记录的性能问题时，采用了 rs.absolute() 直接跳到起始记录游标的方法，但又引入了乱码问题，例如："无效"，变成了 "0xE697A0E69588"。<br><br>虽说，换个驱动，如 8.1.7.0.0 以上版本的驱动就能解决乱码的问题，但这一换又怕会影响到其他的应用。有朋友评论说，其实循环 next() 到某处比 absolute() 定位要好，乍一看，有些牵强，不过试试就知道了。下面就来做样一个测试，测试代码如下：<br><br>测试数据(未列出每一次的测试数据，只求了不同条件下的平均值，startCuror 为定位的游标位置，stepByStep 表示是用 n 次 next() 移动游标，还是用 absolute(n) 直接定位，true 为前者)：&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/07/24/217168.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/217168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-07-24 22:16 <a href="http://www.blogjava.net/Unmi/archive/2008/07/24/217168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 驱动版本引起的显示字段奇怪编码问题</title><link>http://www.blogjava.net/Unmi/archive/2008/07/17/215543.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Thu, 17 Jul 2008 12:03:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/07/17/215543.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/215543.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/07/17/215543.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/215543.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/215543.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 开门见山把产生问题的原因的解决办法列出来。<br><br>我们一般获取 Statement 都是通过 conn.createStatement() 方法，很少传递参数给它的，所以其内置属性都取默认值的，取记录只用 while(rs.next()) 逐个取即可。然而有一个需求(Oracle 8i 之前的版本不支持子查询排序，所以无法用 rownum 取分页记录) 是通过如下代码来得到 Statement：<br><br>Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);<br><br>由它获得的结果集可以 rs.absolute(n) 直接跳到第 n 行记录来获得值，但就这个用法出问题了，取出来的中文出现乱码了，如 "无效"，变成了 "0xE697A0E69588"<br><br>原因是我用的 Oracle 驱动版本太低了，是 8.1.6 的驱动版本，只要换成 8.1.7 或更高的驱动版本就可以正常取得中文字段值了。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/07/17/215543.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/215543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-07-17 20:03 <a href="http://www.blogjava.net/Unmi/archive/2008/07/17/215543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle SQL优化［转］</title><link>http://www.blogjava.net/Unmi/archive/2008/06/30/211758.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Mon, 30 Jun 2008 13:47:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/06/30/211758.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/211758.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/06/30/211758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/211758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/211758.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  Oracle SQL的优化规则：<br><br>尽量少用IN操作符，基本上所有的IN操作符都可以用EXISTS代替<br>        用IN写出来的SQL的优点是比较容易写及清晰易懂，但是用IN的SQL性能总是比较低的，从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别：<br>       ORACLE 试图将其转换成多个表的连接，如果转换不成功则先执行IN里面的子查询，再查询外层的表记录，如果转换成功则直接采用多个表的连接方式查询。由此可见用 IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功，但对于含有分组统计等方面的SQL就不能转换了。<br><br>        Oracle在执行IN子查询时，首先执行子查询，将查询结果放入临时表再执行主查询。而EXIST则是首先检查主查询，然后运行子查询直到找到第一个匹配项。NOT EXISTS比NOT IN效率稍高。但具体在选择IN或EXIST操作时，要根据主子表数据量大小来具体考虑。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/06/30/211758.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/211758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-06-30 21:47 <a href="http://www.blogjava.net/Unmi/archive/2008/06/30/211758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>嵌入式数据库典型技术―SQLite和Berkeley DB的研究</title><link>http://www.blogjava.net/Unmi/archive/2007/07/02/128204.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Mon, 02 Jul 2007 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/07/02/128204.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/128204.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/07/02/128204.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/128204.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/128204.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘 要: 与常见的数据库相比，嵌入式数据库具有体积小、功能齐备、可移植性、健壮性等特点，本文分析和比较了典型的嵌入式数据库SQLite和Berkeley DB。首先从体系结构、子系统间调用关系、任务执行过程等角度对SQLite和Berkeley DB进行了详细分析，然后重点从数据类型、存储方式、模式、数据库引擎和错误处理及加密功能等方面讨论了SQLite和Berkeley DB的异同点，最后列举了一个基于ARM—Linux的SQLite应用实例。<br><br>关键词: SQLite、Berkeley DB、SQL、虚拟数据库引擎（VDBE）<br><br>引言<br><br>随着计算机技术与其它学科间的不断交融、渗透，数据库应用的范围更加深入和具体。那些仅适用于PC机，体积庞大、延时较长的数据库技术已不能满足针对性较强的嵌入式系统开发的需求。SOLite和Berkeley DB是目前应用较广泛、技术较稳定的两种嵌入式数据库。然而，国内对嵌入式数据库的研究起步较晚，还没能引起更多人的关注。更多人熟悉那些基于C/S或B/S结构的关系型数据库来实现数据的存储、检索等功能。然而，&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/07/02/128204.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/128204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-07-02 17:57 <a href="http://www.blogjava.net/Unmi/archive/2007/07/02/128204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源嵌入式数据库 SQLite 简介</title><link>http://www.blogjava.net/Unmi/archive/2007/06/23/125962.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 23 Jun 2007 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2007/06/23/125962.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/125962.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2007/06/23/125962.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/125962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/125962.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、SQLite简介 <br>SQLite 是 D. Richard Hipp 用 C 语言编写的开源嵌入式数据库引擎。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有7个年头了.目前版本是 2007.6.18 出来没久的 SQLite 3.4.0<br><br>其创建者保守地估计 SQLite 可以处理每天负担多达 100,00 次点击率的 Web 站点，并且 SQLite 有时候可以处理 10 倍于上述数字的负载。<br><br>下面是访问SQLite官方网站: http://www.sqlite.org/ 时第一眼看到关于SQLite的特性. <br><br>1. ACID事务 - 甚至是系统宕机或者断电后都能保持数据的一致完整性<br>2. 零配置 – 无需安装和管理配置 <br>3. 实现了大部分的 SQL92 标准 (尚未实现的特性)<br>4. 储存在单一磁盘文件中的一个完整的数据库 &nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2007/06/23/125962.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/125962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2007-06-23 14:09 <a href="http://www.blogjava.net/Unmi/archive/2007/06/23/125962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>