<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>隔叶黄莺 Unmi Blog &#187; Database</title>
	<atom:link href="http://unmi.cc/category/database/feed" rel="self" type="application/rss+xml" />
	<link>http://unmi.cc</link>
	<description></description>
	<lastBuildDate>Wed, 22 Feb 2012 14:20:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)</title>
		<link>http://unmi.cc/linux-mysql-lower-case-table-names</link>
		<comments>http://unmi.cc/linux-mysql-lower-case-table-names#comments</comments>
		<pubDate>Sun, 17 Apr 2011 04:35:03 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://unmi.cc/?p=3439</guid>
		<description><![CDATA[把 Windows 下的应用部署到 Linux 下，使用到了 Quartz 集群的特性，所以建了 MySql 的中间表，一启动看到报错： Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn't retrieve trigger: Table 'unmijob.QRTZ_TRIGGERS' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'unmijob.QRTZ_TRIGGERS' doesn't exist] 用 MySQL 客户端连接到那个数据库，看到 qrtz_triggers 表确确实实是存在的，MySQL 也是安装在 Linux 下的。在大小写敏感的操作系统中，估摸着会不会是表名大小的因素呢? 于是把 qrtz_triggers 改为大写的 QRTZ_TRIGGERS，再次启动应用服务器，这时候出现的是： Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn't [...]]]></description>
		<wfw:commentRss>http://unmi.cc/linux-mysql-lower-case-table-names/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安装 MySQL 5 后无法启动(不能 Start service) 的解决办法</title>
		<link>http://unmi.cc/install-mysql-cannot-start-service</link>
		<comments>http://unmi.cc/install-mysql-cannot-start-service#comments</comments>
		<pubDate>Tue, 25 Jan 2011 12:14:03 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://unmi.cc/?p=3087</guid>
		<description><![CDATA[安装的 MySQL 5.1.48 或是 MySQL 5.5.8，配置好最后点击 Execute 按钮了，但是进行不到 Start service 这一步。检查了下 MySQL 系统服务已添加，但是无法启动，手工也不行。这时候用事件查看器可以看到程序事件里有几个来自于 MySQL 的错误： Plugin 'InnoDB' registration as a STORAGE ENGINE failed. Unknown/unsupported table type: INNODB 原来是因为这两版本的 MySQL 默认使用了支持事物的 INNODB 引擎，打开 my.ini 文件，在 MySQL 的安装文件夹, 如 c:\program files\MySQL\ 中，看到： default-storage-engine=INNODB 解决办法是把该设置改为 default-storage-engine=MYISAM 仍然使用 MyISAM 作为默认的数据库引擎，保存 my.ini 文件，然后手工启动 MySQL 服务，成功；再把刚刚的配置窗口关掉就行了。 你完全可以在创建数据库时指定所创建数据库所用的数据库引擎，或创建表时所用的数据库引擎，或者创建后再更改都可以。 你可以再次回忆一下刚刚配置的过程： 安装的最后一个步骤，在点 Finish 按钮时，可以选择 Configure [...]]]></description>
		<wfw:commentRss>http://unmi.cc/install-mysql-cannot-start-service/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>了解NoSQL的必读资料汇总</title>
		<link>http://unmi.cc/nosql-materials</link>
		<comments>http://unmi.cc/nosql-materials#comments</comments>
		<pubDate>Tue, 16 Mar 2010 08:58:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[NoSql]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/%e4%ba%86%e8%a7%a3nosql%e7%9a%84%e5%bf%85%e8%af%bb%e8%b5%84%e6%96%99%e6%b1%87%e6%80%bb</guid>
		<description><![CDATA[前记：看到 Twitter 和 Digg 相继用 NoSQL 替代了原有的关系型数据库 MySql。显然，NoSQL 定然有它的许多优势，且目前已有相当的 NoSQL 产品实现，所以有必要对 NoSQL 表示一定的关注，故找些资料来看。它也是非关系型的数据库，那它与著名的文档型数据库 Domino 又有何种关系呢，Java 程序又该如何实际应用 NoSQL 呢？ NoSQL 的官网是：http://nosql-database.org/，里面有丰富的介绍 Wiki 百科上的条目：http://en.wikipedia.org/wiki/NoSQL。以及如下文字： NoSQL 是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL 数据存储不需要固定的表结构，通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语在 2009 年初得到了广泛认同。 当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求。而 NoSQL 存储就是为了实现这个需求。Google 的BigTable与Amazon的Dynamo是非常成功的商业 NoSQL 实现。一些开源的 NoSQL 体系，如Facebook 的Cassandra， Apache 的HBase，也得到了广泛认同。 如果您刚接触 NoSQL，那有必要学习一些背景知识。下列资料是Kas Thomas，一位国外的技术分析师认为非常有价值的 NoSQL 相关必读资料： Amazon Dynamo 论文。几乎所有懂 NoSQL 的人都阅读过它。 Google 的Bigtable 论文。 也许您已经耳熟能详。 Werner Vogels 的Eventually [...]]]></description>
		<wfw:commentRss>http://unmi.cc/nosql-materials/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对SQL说不！NoSQL的数据库技术革命</title>
		<link>http://unmi.cc/no-sql-nosql</link>
		<comments>http://unmi.cc/no-sql-nosql#comments</comments>
		<pubDate>Tue, 07 Jul 2009 06:24:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[NoSql]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/%e5%af%b9sql%e8%af%b4%e4%b8%8d%ef%bc%81nosql%e7%9a%84%e6%95%b0%e6%8d%ae%e5%ba%93%e6%8a%80%e6%9c%af%e9%9d%a9%e5%91%bd</guid>
		<description><![CDATA[在NoSQL运动的最新一次聚会中，来自世界各地的150人挤满了CBS Interactive的一间会议室。 就像当年波士顿的爱国者为反抗英国重税的行动一样，NoSQL的支持者们从各地涌来，分享他们如何推翻缓慢而昂贵的关系数据库的暴政，怎样使用更有效和更便宜的方法来管理数据。云计算可能会为数据库技术的发展带来新的契机，如果想在云中获得丰富而随需应变的可伸缩性，你需要一个非关系数据库。 “关系型数据库给你强加了太多东西。它们要你强行修改对象数据，以满足RDBMS （relational database management system，关系型数据库管理系统）的需要，”Java工具提供商SpringSource公司的首席工程师Jon Travis说，他是本次集会的10位发言人之一，在他看来，基于NoSQL的替代方案“只是给你所需要的”。 开源的兴起 反SQL运动的主要倡导者都是Web和Java开发者，他们中许多人都在创业的初期历经了资金短缺并因此与Oracle说再见，然后效仿Google和Amazon的道路建设起自己的数据存储解决方案，并随后将自己的成果开源发布。现在，他们的开源数据商店管理着成百TB甚至PB的数据，由于Web 2.0和云计算的兴起，无论从技术上还是从经济上他们都无需再返回从前，甚至连想也不用想。 “Web 2.0的企业应该抓住机会，他们需要可扩展性，”总部设在伦敦的NoSQL会议组织者Johan Oskarsson说，他任职于著名的音乐网站Last.fm，其他的大多数与会者也都是网络开发者。 Oskarsson说，许多人甚至抛弃了MySQL开源数据库这个长期以来Web 2.0的宠儿，而改由NoSQL的方案来替代，因为优势实在是引人注目。51CTO.com之前曾报道过MySQL创始人宣布创建开源数据库联盟的消息，过度的商业化是MySQL失去原来的优势。 例如Facebook建立了自己的Cassandra数据商店并且在其网站上重点推出一项新的搜索功能，没有使用到现有的MySQL数据库。据Facebook的工程师Avinash Lakshma介绍，Cassandra仅用0.12毫秒就可以写入50GB的数据，比MySQL快了超过2500倍。Google也开始公测他们的云数据库Fusion Tables，这是一个和传统数据库完全不同的数据库，主要优势能够简单的解决关系型数据库中管理不同类型数据麻烦，以及排序整合的常见操作的性能问题等。 什么是NoSQL（从技术上说）？ 从这些NoSQL项目的名字上看不出什么相同之处：Hadoop、Voldemort、Dynomite，还有其它很多。 但是，它们通常在某些方面相同： 不要叫它们数据库。Amazon.com的首席技术官Werner Vogels将他们的重要的Dynamo系统称作“高可用性的键值商店”。Google将自己的BigTable称作“管理结构化数据的分布式存储系统”，在51CTO.com之前的外电《云服务颠覆开发传统观念》中曾提到，Google的Big Table不是SQL数据库，原因是SQL数据库支持的一些功能实在难以进行分割，这与我们跨机器存储数据的想法无法结合。它们都是许多NoSQL追随者的效仿模式。 它们可以处理超大量的数据。比如Zvents公司以BigTable模式搭建的开源数据库Hypertable，据Zvents工程师Doug Judd介绍，它可以每天在搜索引擎中写入10亿单元数据。 另外，BigTable与其姊妹技术MapReduce相结合，每天可以处理多达20PB的数据。 “毫无疑问，数据量越来越巨大也让人们寻找其他的数据库替代技术，”SpringSource的Travis说。 它们运行在便宜的PC服务器集群上。PC集群扩充起来非常方便并且成本很低，避免了“sharding”操作的复杂性和成本。 Google曾表示一个BigTable的大集群可以管理数千台服务器上多达6PB的数据。 “Oracle会告诉你需要购买一些硬件然后正确配置Oracle RAC，然而用其他的神奇软件你也可以达到相同的可扩展性。但是两者的开销可是天差地别。”SpringSource首席技术官Javier Soltero说。 它们击碎了性能瓶颈。NoSQL的支持者称，通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间，执行速度变得更快。 “SQL并非适用于所有的程序代码，”数据库分析师Curt Monash说。对于那些繁重的重复操作的数据，SQL值得花钱。但是当数据库结构非常简单时，SQL可能没有太大用处。 Adobe公司资深计算机科学家Raffaele Sena说，当一年半前Adobe准备重新更新ConnectNow网络协作服务时，正是由于上面的理由，他们决定不采用关系型数据库。 Adobe决定使用Terracotta 提供的Java集群软件，管理Java格式的数据，Sena说，这使ConnectNow的性能提高到前一版本的2至3倍。 没有过多的操作。虽然NoSQL的支持者也承认关系数据库提供了无可比拟的功能集合，而且在数据完整性上也发挥绝对稳定，他们同时也表示，企业的具体需求可能没有那么多。 以Adobe的ConnectNow为例，Sena说，当用户在线时它会不通过数据库而制作三份会话数据，在离线后删除。“因此我们并不需要数据库，因为具体所需要的数据是在内存中的，”他说。 Bootstrap支持 因为NoSQL项目都是开源的，因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目一样，不得不从社区中寻求支持。 但是一些人承认，没有正式的官方支持，万一出了差错会是可怕的，至少很多管理人员是这样看。 “我们确实需要做一些说服工作，”Adobe的Sena承认，“但基本在他们看到我们的第一个原型运行良好之后，我们就能够说服他们，这是条正确的道路。” “大多数大型企业已经习惯于使用关系型数据库管理系统。因此他们会想为什么要改变呢？”Monash说。比如MapReduce和类似的项目“对企业有意。但是在具体使用时，它很可能会和一个分析DBMS（数据库管理系统）相集成。” 即使NoSQL的组织者Oskarsson也承认，就算是他自己的公司Last.fm也还没有做好转为NoSQL替代者的准备，现在依然在使用开源数据库。 他认为这场革命目前仍然需要等待。 摘自：http://www.cnbeta.com/articles/88079.htm]]></description>
		<wfw:commentRss>http://unmi.cc/no-sql-nosql/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据</title>
		<link>http://unmi.cc/oracle-fetch-bulk-collect-into</link>
		<comments>http://unmi.cc/oracle-fetch-bulk-collect-into#comments</comments>
		<pubDate>Wed, 06 May 2009 15:00:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/oracle-%e4%b8%ad%e4%bd%bf%e7%94%a8-fetch-bulk-collect-into-%e6%89%b9%e9%87%8f%e6%95%88%e7%8e%87%e7%9a%84%e8%af%bb%e5%8f%96%e6%b8%b8%e6%a0%87%e6%95%b0%e6%8d%ae</guid>
		<description><![CDATA[通常我们获取游标数据是用 fetch some_cursor into var1, var2 的形式，当游标中的记录数不多时不打紧。然而自 Oracle 8i 起，Oracle 为我们提供了 fetch bulk collect 来批量取游标中的数据，存中即是合理的。它能在读取游标中大量数据的时候提升效率，就像 SNMP 协议中，V2 版比 V1 版新加了 GET-BULK PDU 一样，也是用来更高效的批量取设备上的节点值（原来做过网管软件开发，故联想到此）。 fetch bulk collect into 的使用格式是：fetch some_cursor collect into col1, col2 limit xxx。col1、col2 是声明的集合类型变量，xxx 为每次取数据块的大小（记录数），相当于缓冲区的大小，可以不指定 limit xxx 大小。下面以实际的例子来说明它的使用，并与逐条取记录的 fetch into 执行效率上进行比较。测试环境是 Oracle 10g  10.2.1.0，查询的联系人表 sr_contacts 中有记录数 1802983 条，游标中以 rownum 限定返回的记录数。 使用 fetch bulk collect [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-fetch-bulk-collect-into/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>查询Oracle正在执行的SQL语句</title>
		<link>http://unmi.cc/oracle-what-sql-executing</link>
		<comments>http://unmi.cc/oracle-what-sql-executing#comments</comments>
		<pubDate>Tue, 05 May 2009 03:07:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Sql]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/%e6%9f%a5%e8%af%a2oracle%e6%ad%a3%e5%9c%a8%e6%89%a7%e8%a1%8c%e7%9a%84sql%e8%af%ad%e5%8f%a5</guid>
		<description><![CDATA[支持左连接的 Oracle 9i 以上版本 select OSUSER, PROGRAM, USERNAME, SCHEMANAME, B.Cpu_Time, STATUS, B.SQL_TEXT from V$SESSION A LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS AND A.SQL_HASH_VALUE = B.HASH_VALUE order by b.cpu_time desc  Oracle 8i 及以前的版本中 select OSUSER, PROGRAM, USERNAME, SCHEMANAME, STATUS, B.SQL_TEXT from V$SESSION A, V$SQL B where A.SQL_ADDRESS = B.ADDRESS AND A.SQL_HASH_VALUE = B.HASH_VALUE --后面可以加上你要的约束条件 [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-what-sql-executing/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle 过程中执行动态 SQL 或 DDL 语句</title>
		<link>http://unmi.cc/oracle-procedure-execute-dynamic-sql-or-ddl</link>
		<comments>http://unmi.cc/oracle-procedure-execute-dynamic-sql-or-ddl#comments</comments>
		<pubDate>Thu, 05 Feb 2009 12:07:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[ddl]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Sql]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/oracle-%e8%bf%87%e7%a8%8b%e4%b8%ad%e6%89%a7%e8%a1%8c%e5%8a%a8%e6%80%81-sql-%e6%88%96-ddl-%e8%af%ad%e5%8f%a5</guid>
		<description><![CDATA[如果你用的是 Oracle 8i 及以上的版本，那简单，在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句，但这个动态语句中带参数，或 Select 的结果要 into 到变量中时就要稍加留心一下了。而在 8i 以前的版本(谁还用这么古老的玩艺，总有些不得已的地方，老系统考虑升级成本遗留下来的，应用软件所伴随着的等)，都没法用 execute immediate，就得使用 DBMS_SQL 包来实现了 何谓动态 SQL 和 DDL 语句呢？通常在过程中要操作的表名、字段名都必须是明确的，否则编译过程时就要报错，但如果这两者也用变量名来表示就是动态的。DDL 就是数据库对象定义的操作，如 CREATE TABLE/VIEW/INDEX/SYN/CLUSTER....，及这些对象的删除、修改操作等等。 比如在 Oracle 中有执行下面过程块的意图时，就要使用到 execute immediate 或是 DBMS_SQL 包了。当然下面的语句块是通不过的。 declare col_name varchar2(30) := 'name'; --假定表user存在name字段 col_val varchar2(30); begin select col_name into col_val --按照惯常思维，可能就会这么写 from user where age [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-procedure-execute-dynamic-sql-or-ddl/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle 中重新编译无效的存储过程, 或函数、触发器等对象</title>
		<link>http://unmi.cc/oracle-recompile-procedure-etc</link>
		<comments>http://unmi.cc/oracle-recompile-procedure-etc#comments</comments>
		<pubDate>Wed, 07 Jan 2009 05:34:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Procedure]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/oracle-%e4%b8%ad%e9%87%8d%e6%96%b0%e7%bc%96%e8%af%91%e6%97%a0%e6%95%88%e7%9a%84%e5%ad%98%e5%82%a8%e8%bf%87%e7%a8%8b-%e6%88%96%e5%87%bd%e6%95%b0%e3%80%81%e8%a7%a6%e5%8f%91%e5%99%a8%e7%ad%89%e5%af%b9</guid>
		<description><![CDATA[Oracle 中的存储过程在有些情况下会变成失效状态，在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉。比如储过程所引用的对象失效，dblink 出问题啦都可能引起用到它的存储过程失效。再就我的存储过程经常会变成无效，至今原因都未查明。 查询 dba_dependencies 视图可以看到存储过程所引用的对象，再就在 dba_objects 视图中可以看到对象的 created 和 last_ddl_time 时间。 上面的那种无效的存储程，只要不是语法上有问题，重新编译一下又是可用的了。总不能每次发现时人工去编译的，所以要实现自动化，有以下两种方法(网上找到的所有的 在Oracle中重新编译所有无效的存储过程 代码排版都很混乱，所以主要是重新整理了)： 1. Oracle SQL *Plus 中 -- 用 spool 生成脚本文件，然后 @ 调入执行，代码如下： spool ExecCompProc.sql select 'alter procedure '&#124;&#124;object_name&#124;&#124;' compile;' from all_objects where status = 'INVALID' and object_type = 'PROCEDURE' AND owner='UNMI'; spool off @ExecCompProc.sql; 2. 写成一个存储过程 -- 让这个存储过程在某个时机执行，比如  Job [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-recompile-procedure-etc/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>oracle定时任务[转]</title>
		<link>http://unmi.cc/oracle-schedule-job</link>
		<comments>http://unmi.cc/oracle-schedule-job#comments</comments>
		<pubDate>Wed, 12 Nov 2008 03:42:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/oracle%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1%e8%bd%ac</guid>
		<description><![CDATA[DBMS_JOB系统包是Oracle“任务队列”子系统的API编程接口。DBMS_JOB包对于任务队列提供了下面这些功能：提交并且执行一个任务、改变任务的执行参数以及删除或者临时挂起任务等。 DBMS_JOB包是由ORACLE_HOME目录下的rdbms/admin子目录下的DBMSJOB.SQL和PRVTJOB.PLB 这两个脚本文件创建的。这两个文件被CATPROC.SQL脚本文件调用，而CATPROC.SQL这个文件一般是在数据库创建后立即执行的。脚本为DBMS_JOB包创建了一个公共同义词，并给该包授予了公共的可执行权限，所以所有的Oracle用户均可以使用这个包。 下面几个数据字典视图是关于任务队列信息的，主要有DBA_JOBS, USER_JOBS和DBA_JOBS_RUNNING。这些字典视图是由名为CATJOBQ.SQL的脚本文件创建的。该脚本文件和创建DBMS_JOB包的脚本文件一样在ORACLE_HOME目录的rdbms/admin子目录中，同样也是由脚本文件CATPROC.SQL调用。 最后，要使任务队列能正常运行，还必须启动它自己专有的后台过程。启动后台过程是通过在初始化文件init*.ora(实例不同，初始化文件名也略有不同)中设置初始化参数来进行的。下面就是该参数： JOB_QUEUE_PROCESSES = n  其中，n可以是0到36之间的任何一个数。除了该参数以外，还有几个关于任务队列的初始化参数，本文后面将会对其进行详细讨论。 DBMS_JOB包中包含有许多过程，见表1所示。 表1 DBMS_JOB包 名称 类型 描述 DBMS_JOB.ISUBMIT 过程 提交一个新任务，用户指定一个任务号 DBMS_JOB.SUBMIT 过程 提交一个新任务，系统指定一个任务号 DBMS_JOB.REMOVE 过程 从队列中删除一个已经存在的任务 DBMS_JOB.CHANGE 过程 更改用户设定的任务参数 DBMS_JOB.WHAT 过程 更改PL/SQL任务定义 DBMS_JOB.NEXT_DATE 过程 更改任务下一次运行时间 DBMS_JOB.INTERVAL 过程 更改任务运行的时间间隔 DBMS_JOB.BROKEN 过程 将任务挂起，不让其重复运行 DBMS_JOB.RUN 过程 在当前会话中立即执行任务 DBMS_JOB.USER_EXPORT 过程 创建文字字符串，用于重新创建一个任务 三、DBMS_JOB包参数 DBMS_JOB包中所有的过程都有一组相同的公共参数，用于定义任务，任务的运行时间以及任务定时运行的时间间隔。这些公共任务定义参数见表2所示。 表2 DBMS_JOB过程的公共参数 名称 类型 注释 Job BINARY_INTEGER [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-schedule-job/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 登录数据库时的代码页转换错误 SQL0332N</title>
		<link>http://unmi.cc/db2-login-codepage-sql0332n</link>
		<comments>http://unmi.cc/db2-login-codepage-sql0332n#comments</comments>
		<pubDate>Wed, 06 Aug 2008 03:49:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[DB2]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/db2-%e7%99%bb%e5%bd%95%e6%95%b0%e6%8d%ae%e5%ba%93%e6%97%b6%e7%9a%84%e4%bb%a3%e7%a0%81%e9%a1%b5%e8%bd%ac%e6%8d%a2%e9%94%99%e8%af%af-sql0332n</guid>
		<description><![CDATA[客户端连接到另一台机器上的 DB2 数据库，用 DB2 的控制中心连接没问题，但是用 Quest Central for DB2 来连接，输入用户名和密码，确定，出现提示窗口： [IBM][CLI Driver] SQL0332N  没有从源代码页 "86" 至目标代码页 "819" 的转换。原因代码是 "DB2INST1"。  SQLSTATE=01539 无法登录，原因是本机的代码页(codepage) 与数据库的代码页不相符且无符完成又向转换。 解决办法是在命令行下执行 db2set DB2CODEPAGE=819 dos&#62; db2set DB2CODEPAGE=819 然后，再次用 Quest Central for DB2 来连接数据库就 OK 啦 参考：1. SQL0332N Reason Code 1]]></description>
		<wfw:commentRss>http://unmi.cc/db2-login-codepage-sql0332n/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JDBC 连接 Oracle 时，用 rs.absolute(n) 真的不如 n 次 next() 性能好</title>
		<link>http://unmi.cc/jdbc-oracle-rs-absoluten-or-next-n</link>
		<comments>http://unmi.cc/jdbc-oracle-rs-absoluten-or-next-n#comments</comments>
		<pubDate>Thu, 24 Jul 2008 14:16:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Java/JEE]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/jdbc-%e8%bf%9e%e6%8e%a5-oracle-%e6%97%b6%ef%bc%8c%e7%94%a8-rs-absoluten-%e7%9c%9f%e7%9a%84%e4%b8%8d%e5%a6%82-n-%e6%ac%a1-next-%e6%80%a7%e8%83%bd%e5%a5%bd</guid>
		<description><![CDATA[前面写过一篇：Oracle 驱动版本引起的显示字段奇怪编码问题。讲到因 Oracle 8.0.5 不支持子查询排序，为改善原来那种每次翻页时都捋出所有数据成对象到 List 中，然后从中拣取页面实际要显示的记录的性能问题时，采用了 rs.absolute() 直接跳到起始记录游标的方法，但又引入了乱码问题，例如："无效"，变成了 "0xE697A0E69588"。 虽说，换个驱动，如 8.1.7.0.0 以上版本的驱动就能解决乱码的问题，但这一换又怕会影响到其他的应用。有朋友评论说，其实循环 next() 到某处比 absolute() 定位要好，乍一看，有些牵强，不过试试就知道了。下面就来做样一个测试，测试代码如下： public static void main(String[] args) throws Exception { int startCursor = 10000; //要直接移动到的游标位置 boolean stepByStep = true; //true 为 循环 next()，false 为 absolute() 定位 String url = "jdbc:oracle:thin:@10.128.39.23:1521:prod"; oracle.jdbc.driver.OracleDriver.class.newInstance(); Connection conn = DriverManager.getConnection(url, "user", "password"); Statement stmt = [...]]]></description>
		<wfw:commentRss>http://unmi.cc/jdbc-oracle-rs-absoluten-or-next-n/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle 驱动版本引起的显示字段奇怪编码问题</title>
		<link>http://unmi.cc/oracle-low-jdbc-version-unknow-chars</link>
		<comments>http://unmi.cc/oracle-low-jdbc-version-unknow-chars#comments</comments>
		<pubDate>Thu, 17 Jul 2008 12:03:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Java/JEE]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/oracle-%e9%a9%b1%e5%8a%a8%e7%89%88%e6%9c%ac%e5%bc%95%e8%b5%b7%e7%9a%84%e6%98%be%e7%a4%ba%e5%ad%97%e6%ae%b5%e5%a5%87%e6%80%aa%e7%bc%96%e7%a0%81%e9%97%ae%e9%a2%98</guid>
		<description><![CDATA[开门见山把产生问题的原因的解决办法列出来。 我们一般获取 Statement 都是通过 conn.createStatement() 方法，很少传递参数给它的，所以其内置属性都取默认值的，取记录只用 while(rs.next()) 逐个取即可。然而有一个需求(Oracle 8i 之前的版本不支持子查询排序，所以无法用 rownum 取分页记录) 是通过如下代码来得到 Statement： Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 由它获得的结果集可以 rs.absolute(n) 直接跳到第 n 行记录来获得值，但就这个用法出问题了，取出来的中文出现乱码了，如 "无效"，变成了 "0xE697A0E69588" 原因是我用的 Oracle 驱动版本太低了，是 8.1.6 的驱动版本，只要换成 8.1.7 或更高的驱动版本就可以正常取得中文字段值了。 问题及解决就上面那几行描述，当问题解决后再回望一下，确是如此之简单。OK，你可以跳到其他你喜爱的页面了。倘若有兴趣的话，下话是我记述的这一问题产生及解决的整个历程。在如此简单的解决办法面前似乎不值的长提，但毕竟颇费了一番周折，仅此。 公司有一个 Web 项目是用的 Oracle 驱动 classes12.zip 自带的连接池实现 oracle.jdbc.pool.OracleConnectionCacheImpl，因为数据库是 Oracle 8.0.5，还不是 8i，所以不支持子查询排序，当有 order by 时便不能用 rownum 来分页查询。 原来在处理有排序的记录集的分页显示是把所有记录全部 next 成一个一个对象放在 List 中，然后根据页面要求显示的记录段从 list [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-low-jdbc-version-unknow-chars/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Oracle SQL优化［转］</title>
		<link>http://unmi.cc/oracle-sql-tuning</link>
		<comments>http://unmi.cc/oracle-sql-tuning#comments</comments>
		<pubDate>Mon, 30 Jun 2008 13:47:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/oracle-sql%e4%bc%98%e5%8c%96%ef%bc%bb%e8%bd%ac%ef%bc%bd</guid>
		<description><![CDATA[     Oracle SQL的优化规则： 尽量少用IN操作符，基本上所有的IN操作符都可以用EXISTS代替         用IN写出来的SQL的优点是比较容易写及清晰易懂，但是用IN的SQL性能总是比较低的，从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别：        ORACLE 试图将其转换成多个表的连接，如果转换不成功则先执行IN里面的子查询，再查询外层的表记录，如果转换成功则直接采用多个表的连接方式查询。由此可见用 IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功，但对于含有分组统计等方面的SQL就不能转换了。         Oracle在执行IN子查询时，首先执行子查询，将查询结果放入临时表再执行主查询。而EXIST则是首先检查主查询，然后运行子查询直到找到第一个匹配项。NOT EXISTS比NOT IN效率稍高。但具体在选择IN或EXIST操作时，要根据主子表数据量大小来具体考虑。         推荐方案：在业务密集的SQL当中尽量不采用IN操作符。 不用NOT IN操作符，可以用NOT EXISTS或者外连接+替代         此操作是强列推荐不使用的，因为它不能应用表的索引。         推荐方案：用NOT EXISTS 或（外连接+判断为空）方案代替 不用“&#60;&#62;”或者“!=”操作符。对不等于操作符的处理会造成全表扫描，可以用“&#60;” or “&#62;”代替         不等于操作符是永远不会用到索引的，因此对它的处理只会产生全表扫描。         推荐方案：用其它相同功能的操作运算代替，如：         1）a&#60;&#62;0 改为 a&#62;0 or a&#60;0         2）a&#60;&#62;’’ 改为 a&#62;’’ Where子句中出现IS NULL或者IS NOT NULL时，Oracle会停止使用索引而执行全表扫描。可以考虑在设计表时，对索引列设置为NOT NULL。这样就可以用其他操作来取代判断NULL的操作     [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-sql-tuning/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>嵌入式数据库典型技术―SQLite和Berkeley DB的研究</title>
		<link>http://unmi.cc/embed-db-sqlite-berkeley</link>
		<comments>http://unmi.cc/embed-db-sqlite-berkeley#comments</comments>
		<pubDate>Mon, 02 Jul 2007 09:57:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Berkeley]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/%e5%b5%8c%e5%85%a5%e5%bc%8f%e6%95%b0%e6%8d%ae%e5%ba%93%e5%85%b8%e5%9e%8b%e6%8a%80%e6%9c%af%e2%80%95sqlite%e5%92%8cberkeley-db%e7%9a%84%e7%a0%94%e7%a9%b6</guid>
		<description><![CDATA[摘 要: 与常见的数据库相比，嵌入式数据库具有体积小、功能齐备、可移植性、健壮性等特点，本文分析和比较了典型的嵌入式数据库SQLite和Berkeley DB。首先从体系结构、子系统间调用关系、任务执行过程等角度对SQLite和Berkeley DB进行了详细分析，然后重点从数据类型、存储方式、模式、数据库引擎和错误处理及加密功能等方面讨论了SQLite和Berkeley DB的异同点，最后列举了一个基于ARM—Linux的SQLite应用实例。 关键词: SQLite、Berkeley DB、SQL、虚拟数据库引擎（VDBE） 引言 随着计算机技术与其它学科间的不断交融、渗透，数据库应用的范围更加深入和具体。那些仅适用于PC机，体积庞大、延时较长的数据库技术已不能满足针对性较强的嵌入式系统开发的需求。SOLite和Berkeley DB是目前应用较广泛、技术较稳定的两种嵌入式数据库。然而，国内对嵌入式数据库的研究起步较晚，还没能引起更多人的关注。更多人熟悉那些基于C/S或B/S结构的关系型数据库来实现数据的存储、检索等功能。然而，在嵌入式系统中，由于软硬件资源有限，不可能安装庞大的数据库服务器，而用户的需求可能由一个简单的基于磁盘文件的数据库系统就能实现，这仅仅是利用了那些数据库的基本特性。此时，对嵌入式数据库的研究就显得尤为重要了。 1 嵌入式数据库 嵌入式数据库通常是与嵌入式操作系统及具体的应用集成在一起，无需独立运行数据库引擎，由程序直接调用相应的API就可实现对数据的存取操作。嵌入式系统的开发环境决定了其数据库的特点： 1、 体积适当 由于嵌入式系统自身的特点，对数据的存储和程序的运行都有较强的空间限制，所以嵌入式数据库首先应该保障的就是适当的体积。进一步来说就是占用尽量少的ROM、RAM及CPU的资源。 2、 功能齐备 嵌入式系统开发中，用户需求决定了需要一个大小适中、功能齐备的数据库来实现数据管理，这就使得开发人员要采用一个能够提供完备开发文档且易于开发的数据库技术。此外，国家863项目2002AA714023，研究生精品课程资助05531451 在嵌入式设备中，数据库的管理对用户来说是透明的，这就要求此数据库能够自动完成启动初始化、日志管理、数据压缩、备份、数据恢复等功能；而且嵌入式设备经常有不可预料的硬复位，这就需要此数据库有高度的健壮性。 3、 可移植性 嵌入式系统的平台种类繁多，因此嵌入式数据库应有一定的可移植性，以适用于不同的软硬件平台。 4、 代码开源 开源的代码在产品的开发过程中不仅可以减少开发成本，更重要的是为后期的维护完善和稳定运行都提供了最为彻底的解决方法。 2 SQLite SQLite是D.理查德.希普用一个小型的C库开发的一种强有力的嵌入式关系数据库管理体制。虽然功能较Berkeley DB稍显逊色，但它简单易学、速度较快，同时提供了丰富的数据库接口，提供了对SQL92的大多数支持：支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。 SQLite的体系结构大体上可以分成八个主要的子系统，如图1所示。对数据库进行的各种操作都是按照此顺序，逐一执行的。顶层是标记处理器（tokenize）和分析器（parser）。SQLite有自己高度优化的代码生成器，可以快速、高效地生产出代码。底部是经过优化的B树，这样有助于运行在可调整的页面缓冲上时，对磁盘的查找降低到最小。再往下是页面高速缓存，它作用在OS的抽象层之上，这样的体系结构使数据库的可移植性变为可能。 该体系结构的核心是虚拟数据库引擎（VDBE）。VDBE完成与数据操作相关的全部任务，并且是客户和存储之间信息交换的中间单元。从各个角度分析，它都是SQLite的核心。当SQL语句被分析后，VDBE便开始工作。代码生成器将分析树翻译成一个袖珍程序，随后这些袖珍程序又被组合成VDBE的虚拟机器语言表示的一系列指令。如此反复，VDBE执行每条指令，最终完成SQL语句指定的查询要求。 SQLite有以下特性：支持ACID事务、零配置―无需安装和管理配置、存储在单一磁盘文件中的一个完整的数据库、数据库文件可以在不同字节顺序的机器间自由共享、支持数据库大小至2TB、足够小、全部源码大致3万行C代码，250KB、比目前流行的大多数据库运行速度快，提供了对事务功能和并发处理的支持、应用Transaction既保证了数据的完整性，也会提高运行速度，因为多条语句一起提交给数据库的速度会比逐一提交的方式更快、独立、没有额外依赖。 3 Berkeley DB Berkeley DB是由sleepycat software开发的轻量级嵌入式数据库，它不仅适用于嵌入式系统，而且可以直接连接到应用程序内部，和应用程序运行在同一地址空间。传统的数据库一般作为独立服务器工作，而Berkeley DB是软件开发库，开发者将它嵌入到应用程序中，应用程序本身就是一个服务器，而只是利用嵌入式数据库开发来实现定制的数据库逻辑，避免了与应用服务器进程间通信的开销，因此Berkeley DB具有较高的运行效率，适用于资源受限的嵌入式系统。 一般而言，Berkeley DB数据库系统可以大致分为五个子系统，如图2所示。 1、 存取管理子系统（Access Methods） 该子系统为创建和访问数据库文件提供基本的支持。在没有事务管理的情况下，该子系统中的模块可单独使用，为应用程序提供快速高效的数据存取服务。 2、 内存池管理子系统（Memory Pool） 该子系统就是Berkeley DB所使用的通用共享内存缓冲区，该子系统可以被应用程序单独使用。 3、 [...]]]></description>
		<wfw:commentRss>http://unmi.cc/embed-db-sqlite-berkeley/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hibernate从2升级到3不支持Oracle8外连接(+)的解决办法</title>
		<link>http://unmi.cc/hibernate-2-to-3-support-plus</link>
		<comments>http://unmi.cc/hibernate-2-to-3-support-plus#comments</comments>
		<pubDate>Sat, 07 Apr 2007 09:47:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/hibernate%e4%bb%8e2%e5%8d%87%e7%ba%a7%e5%88%b03%e4%b8%8d%e6%94%af%e6%8c%81oracle8%e5%a4%96%e8%bf%9e%e6%8e%a5%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95</guid>
		<description><![CDATA[最近接手了一个要维护的项目，是用Hibernate2+Oralce8写成的，因为看到Hibernate3页出来这么久了，而且也感觉Hibernate3有它的许多新的特性，如批量删除和更新，新的HQL语法解析器AST。 升级过程大致按照孙卫琴的那篇文章 如何把Hibernate2.1升级到Hibernate3.0？来做，该替换的替换完，该设置的设置完，程序一跑，当程序执行到向下面这种查询的时候(Oracle所特有的外连接查询)，报错。 语句为：（描述为类似语句，把项目中的实际表名隐去了） session.createQuery("select t1.c1,t2.c1 from Table1 t1,Table2 t2 where t1.c1=t2.c1(+)").list(); 出错信息为： org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ) near line 1, column 106 [select t1.c1,t2.c1 from Table1 t1,Table2 t2 where t1.c1=t2.c1(+)]  at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)  at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)  at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)  at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258)  at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)  at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)  at org.hibernate.engine.query.HQLQueryPlan.&#60;init&#62;(HQLQueryPlan.java:77)  at org.hibernate.engine.query.HQLQueryPlan.&#60;init&#62;(HQLQueryPlan.java:56)  at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)  at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)  at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)  at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623) 再回头看看孙卫琴的那篇升级注意事项中 [...]]]></description>
		<wfw:commentRss>http://unmi.cc/hibernate-2-to-3-support-plus/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>如何杀掉(kill)Oracle中的会话(Session)</title>
		<link>http://unmi.cc/kil-loracle-session</link>
		<comments>http://unmi.cc/kil-loracle-session#comments</comments>
		<pubDate>Wed, 21 Mar 2007 10:09:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/%e5%a6%82%e4%bd%95%e6%9d%80%e6%8e%89killoracle%e4%b8%ad%e7%9a%84%e4%bc%9a%e8%af%9dsession</guid>
		<description><![CDATA[有时，Oracle中造成一些表被死锁或者会话异常退出，如执行了更新记录操作后，既没有commit也没有rollback,网络就断开了，也会造表或记录被锁住，待到超时后才会被解开，那样都会造成应用操作被阻塞。 可以以Oralce管理员权限用户登录Oracle数据，查询到被锁的对象，然后杀除指定的会话。 用下面的语句查询被锁的对象，可以带上更多约束条件，如schemaname等更精确的匹配。 SELECT  a.object_id, a.session_id, b.object_name, c.*       FROM  v$locked_object a, dba_objects b, v$session c      WHERE  a.object_id = b.object_id        AND  a.SESSION_ID = c.sid(+)    杀Seesion的SQL语句语法如下： alter system kill session 'sid, serial#'    如上面查出来的一条记录的sid是53, serial#为663,就执行以下的语句 alter system kill session '53,663'    如果要一次性杀死多个会话，一个一个填写sid和serial#十分的繁琐，应该在查询被锁对象的同时拼凑出多条的杀会话语句，以分号分隔，一起复制下来，然后就可以批量的执行了。 拼凑kill语句的方式如下，下面加了一个过滤条件和一个排序，杀除真正关心的表，并且着重注意超时时间过长的会话。 SELECT 'alter system kill session ''' &#124;&#124; c.sid &#124;&#124; '' &#124;&#124; ',' &#124;&#124; c.serial# &#124;&#124;''';', a.object_id, a.session_id, b.object_name, c.* FROM v$locked_object a, dba_objects b, v$session c WHERE a.object_id = b.object_id [...]]]></description>
		<wfw:commentRss>http://unmi.cc/kil-loracle-session/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>嵌入式数据库Firebird的使用</title>
		<link>http://unmi.cc/to-use-firebird-db</link>
		<comments>http://unmi.cc/to-use-firebird-db#comments</comments>
		<pubDate>Tue, 06 Feb 2007 16:10:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Firebird]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/%e5%b5%8c%e5%85%a5%e5%bc%8f%e6%95%b0%e6%8d%ae%e5%ba%93firebird%e7%9a%84%e4%bd%bf%e7%94%a8</guid>
		<description><![CDATA[firebird是一个十分小的开源数据库，可作为像Access一样使用的文件型数据库，单用户连接；也能够以服务方式启动，支持多用户访问，Hibernate有对该种数据库的支持，这里不详细对该数据库本身特性作介绍了。 用jdbc连接嵌入式数据库Firebird最简单的使用是只需要两个动态库文件和一个(JDBC驱动)jar包 动态库是： fbembed.dll   ---- firebird数据库提供 jaybird.dll   ---- 下载的jdbc驱动包提供，在FirebirdSQL-1.5.5JDK_1.4中 firebirdsql-full.jar ---- 下载的jdbc驱动包提供，在FirebirdSQL-1.5.5JDK_1.4中 把动态库放在该在的地方，例如应用程序的user.dir目录下，jar包放在classpath下 以上是最简单配置 其他数据库压缩包中还有 ib_util.dll  ----- 不知是什么工具 可以附加两个配置文件 aliases.conf    ---- 数据库别名配置（可选） firebird.conf   ---- 数据库系统配置文件（可选） jdbc的驱动包中还包含有以下文件 firebirdjmx.jar ---- jmx支持，怎么现在软件都希望能通过jmx来管理 firebirdsql.jar ---- 也是jdbc驱动，不知道firebirdsql-full.jar比它多了哪些东西 firebirdsql-pool.jar ---- 为该数据库提供的连接池 libjaybird.so   ---- 配合jdbc使用的linux下用的动态库 libjaybird.so   ---- 配合jdbc使用的linux下用的动态库 GDS32.DLL  ---- 提供其他数据库客户端管理工具使用的动态库，如工具 IBAdmin,可惜 IBAdmin 是要付费的。 简单访问数据库代码如下： String databaseURL = "jdbc:firebirdsql:embedded:test.fdb"; String user = [...]]]></description>
		<wfw:commentRss>http://unmi.cc/to-use-firebird-db/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>管理常用SQL语句 [转]</title>
		<link>http://unmi.cc/management-sql</link>
		<comments>http://unmi.cc/management-sql#comments</comments>
		<pubDate>Mon, 18 Sep 2006 16:39:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Sql]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/%e7%ae%a1%e7%90%86%e5%b8%b8%e7%94%a8sql%e8%af%ad%e5%8f%a5nbsp%e8%bd%ac</guid>
		<description><![CDATA[　　1. 查看数据库的版本        　　 select @@version 　　2. 查看数据库所在机器操作系统参数        　　exec master..xp_msver 　　3. 查看数据库启动的参数         　　sp_configure 　　4. 查看数据库启动时间         　　select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 　　查看数据库服务器名和实例名 　　print 'Server Name...............：' + convert(varchar(30),@@SERVERNAME)         　　print 'Instance..................：' + convert(varchar(30),@@SERVICENAME)           　　5. 查看所有数据库名称及大小     　　sp_helpdb 　　重命名数据库用的SQL 　　sp_renamedb 'old_dbname', 'new_dbname' 　　6. 查看所有数据库用户登录信息     　　sp_helplogins 　　查看所有数据库用户所属的角色信息        　　sp_helpsrvrolemember 　　修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程 　　更改某个数据对象的用户属主 　　 　　sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner' 　　注意：更改对象名的任一部分都可能破坏脚本和存储过程。 　　把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本 [...]]]></description>
		<wfw:commentRss>http://unmi.cc/management-sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORACLE 常用脚本（4）[转]</title>
		<link>http://unmi.cc/oracle-scripts-4</link>
		<comments>http://unmi.cc/oracle-scripts-4#comments</comments>
		<pubDate>Mon, 18 Sep 2006 16:05:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/oraclenbsp%e5%b8%b8%e7%94%a8%e8%84%9a%e6%9c%ac%ef%bc%884%ef%bc%89nbsp%e8%bd%ac</guid>
		<description><![CDATA[rem  这需要 统计某个具体用户的"Table,index,column,constraits" rem================================================================ rem   全部表-列定义 table_cols.txt  set lin 110 pages 3000  column table_name format a30  column data_type  format a12  column data_default  format a8  column column_name format a22  column Cid format  999  column Len format  9999  column Prec format  99  column Scale format  99 select  TABLE_NAME, COLUMN_ID "Cid", COLUMN_NAME, DATA_TYPE, DATA_LENGTH "Len",  nvl(DATA_PRECISION,'-1') "Prec", nvl(DATA_SCALE,'-1') [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-scripts-4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORACLE 常用脚本（3）[转]</title>
		<link>http://unmi.cc/oracle-scripts-3</link>
		<comments>http://unmi.cc/oracle-scripts-3#comments</comments>
		<pubDate>Mon, 18 Sep 2006 16:04:00 +0000</pubDate>
		<dc:creator>Unmi</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://unmi.cc/uncategorized/oraclenbsp%e5%b8%b8%e7%94%a8%e8%84%9a%e6%9c%ac%ef%bc%883%ef%bc%89nbsp%e8%bd%ac</guid>
		<description><![CDATA[用户的管理 一、ORACLE的安全域 1、TABLESPACE QUOTAS：表空间的使用定额 2、DEFAULT TABLESPACE：默认表空间 3、TEMPORARY TABLESPACE：指定临时表空间。 4、ACCOUNT LOCKING：用户锁 5、RESOURCE LIMITE：资源限制 6、DIRECT PRIVILEGES：直接授权 7、ROLE PRIVILEGES：角色授权先将应用中的用户划为不同的角色， 二、创建用户时的清单： 1、选择一个用户名称和检验机制：A，看到用户名，实际操作者是谁，业务中角色。 2、选择合适的表空间： 3、决定定额： 4、口令的选择： 5、临时表空间的选择：先建立一个临时表空间，然后在分配。不分配，使用SYSTEM表空间 6、CREATE USER 7、授权：A，用户的工作职能       B，用户的级别 三、用户的创建： 1、命令： CREATE USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE 默认表空间名 TEMPOARAY TABLESPACE 临时表空间名 QUOTA 15M ON 表空间名 [PASSWORD EXPIRE]：当用户第一次登陆到ORACLE，创建时所指定的口令过期失效，强迫用户自己定义一个新口令。 [ACCOUNT LOCK]：加用户锁 QUOTA UNLIMITED ON TABLESPACE：不限制，有多少有多少。 [PROFILE 名称]：受PROFILE文件的限制。 [...]]]></description>
		<wfw:commentRss>http://unmi.cc/oracle-scripts-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 25/71 queries in 0.032 seconds using disk: basic
Object Caching 5622/5740 objects using disk: basic

Served from: unmi.cc @ 2012-02-23 07:42:27 -->
