<?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>Chanel [K]</title>
	<atom:link href="http://www.dbform.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.dbform.com</link>
	<description>面朝大海，春暖花开</description>
	<lastBuildDate>Tue, 31 Aug 2010 05:32:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Oracle Resource Manager Concepts</title>
		<link>http://www.dbform.com/html/2010/1283.html</link>
		<comments>http://www.dbform.com/html/2010/1283.html#comments</comments>
		<pubDate>Tue, 31 Aug 2010 05:25:27 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Oracle Database]]></category>
		<category><![CDATA[Oracle11g]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1283</guid>
		<description><![CDATA[<p>这两天仔细阅读了Oracle Administrator Guide中关于Resource Manager的部分，基本上理清了之前我认为繁杂的概念和多个概念互相之间的关系。</p> <p>在阅读的过程中，将自己认为重要的部分做了一份PPT，希望可以在下个月的ACOUG活动中跟大家分享。</p> Oracle Resource Manager View more presentations from kamusis. <p>在Database Consolidation时，Resource Manager可以解决我们心中的疑问，如果我将多个应用都放在同一个硬件服务器的同一个数据库中，那么如何防范互相之间的影响？另外一个更加实用且有需求的场景是在Oracle EBS中如果有大量的Report，如果设置Resource Manager来防止单个报表占用启用并行进程，占用过多CPU？</p> <p>虽然在国内目前真正应用Resource Manager的客户几乎没有见到，但是我期望能够为今后我们的客户部署该项功能，资源管理在整个世界趋向虚拟化的过程中很有意义并且十分必要。</p> ]]></description>
			<content:encoded><![CDATA[<p>这两天仔细阅读了Oracle Administrator Guide中关于Resource Manager的部分，基本上理清了之前我认为繁杂的概念和多个概念互相之间的关系。</p>
<p>在阅读的过程中，将自己认为重要的部分做了一份PPT，希望可以在下个月的ACOUG活动中跟大家分享。</p>
<div style="width:425px" id="__ss_5093846"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kamusis/oracle-resource-manager" title="Oracle Resource Manager">Oracle Resource Manager</a></strong><object id="__sse5093846" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=oraclersrc-100831001518-phpapp02&#038;stripped_title=oracle-resource-manager" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5093846" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=oraclersrc-100831001518-phpapp02&#038;stripped_title=oracle-resource-manager" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/kamusis">kamusis</a>.</div>
</div>
<p>在Database Consolidation时，Resource Manager可以解决我们心中的疑问，如果我将多个应用都放在同一个硬件服务器的同一个数据库中，那么如何防范互相之间的影响？另外一个更加实用且有需求的场景是在Oracle EBS中如果有大量的Report，如果设置Resource Manager来防止单个报表占用启用并行进程，占用过多CPU？</p>
<p>虽然在国内目前真正应用Resource Manager的客户几乎没有见到，但是我期望能够为今后我们的客户部署该项功能，资源管理在整个世界趋向虚拟化的过程中很有意义并且十分必要。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1283.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to create ASM filesystem in Oracle 11gR2</title>
		<link>http://www.dbform.com/html/2010/1255.html</link>
		<comments>http://www.dbform.com/html/2010/1255.html#comments</comments>
		<pubDate>Thu, 12 Aug 2010 11:38:17 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Oracle Database]]></category>
		<category><![CDATA[ASM]]></category>
		<category><![CDATA[Oracle11gR2]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1255</guid>
		<description><![CDATA[<p>本文描述如何创建ACFS文件系统，前提要求： 1. Oracle 11gR2数据库 2. 已经安装Grid Infrastructure，单机即可（但是ACFS在Oracle Restart环境中会有些限制，详见【备注1】） 3. 已经创建了ASM实例以及ASM磁盘组，实例中ASM实例名儿+ASM，磁盘组为ORADG</p> SQL&#62; alter diskgroup oradg add volume acfsvol size 1G; alter diskgroup oradg add volume acfsvol size 1G * ERROR at line 1: ORA-15032: not all alterations performed ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higher <p>如上的错误表示如果要在ASM磁盘组上创建ACFS Volume，必须要求ASM磁盘组的属性COMPATIBLE.ASM在11.2以上。 如果ASM磁盘组是使用asmca图形化工具创建的，那么compatible.asm默认设置就已经为11.2，但如果是使用CREATE DISKGROUP这个SQL命令创建的，那么默认设置则为10.1，需要手动修改。</p> SQL&#62; alter diskgroup oradg <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.dbform.com/html/2010/1255.html">How to create ASM filesystem in Oracle 11gR2</a></span>]]></description>
			<content:encoded><![CDATA[<p>本文描述如何创建ACFS文件系统，前提要求：<br />
1. Oracle 11gR2数据库<br />
2. 已经安装Grid Infrastructure，单机即可（但是ACFS在Oracle Restart环境中会有些限制，详见【备注1】）<br />
3. 已经创建了ASM实例以及ASM磁盘组，实例中ASM实例名儿+ASM，磁盘组为ORADG</p>
<pre class="brush: sql;">SQL&gt; alter diskgroup oradg add volume acfsvol size 1G;
alter diskgroup oradg add volume acfsvol size 1G
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higher</pre>
<p>如上的错误表示如果要在ASM磁盘组上创建ACFS Volume，必须要求ASM磁盘组的属性COMPATIBLE.ASM在11.2以上。<br />
如果ASM磁盘组是使用asmca图形化工具创建的，那么compatible.asm默认设置就已经为11.2，但如果是使用CREATE DISKGROUP这个SQL命令创建的，那么默认设置则为10.1，需要手动修改。</p>
<pre class="brush: sql; toolbar: false;">SQL&gt; alter diskgroup oradg set attribute 'COMPATIBLE.ASM'='11.2';</pre>
<p>如果要创建ACFS Volume，还必须要求ASM磁盘组的COMPATIBLE.ADVM属性也在11.2以上，此属性默认为空。</p>
<pre class="brush: sql;">SQL&gt; alter diskgroup oradg set attribute 'compatible.advm'='11.2';
alter diskgroup oradg set attribute 'compatible.advm'='11.2'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15242: could not set attribute compatible.advm
ORA-15238: 11.2 is not a valid value for attribute compatible.advm
ORA-15477: cannot communicate with the volume driver

SQL&gt; host oerr ora 15477
15477, 00000, &quot;cannot communicate with the volume driver&quot;
// *Cause:  An attempt was made to communicate with the volume driver.
// *Action: Check that the ASM volume driver is loaded. If so, check the alert
//          log to identify the reason for failure and take necessary action
//          to prevent such failures in the future.
//</pre>
<p>如上的错误表示ASM volume driver没有加载。需要使用root用户手工加载。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># /app/grid/bin/acfsload start -s</pre></div></div>

<p>然后再次修改ASM磁盘组的COMPATIBLE.ADVM属性，并创建ACFS Volume。</p>
<pre class="brush: sql;">SQL&gt; alter diskgroup oradg set attribute 'compatible.advm'='11.2';

Diskgroup altered.

SQL&gt; alter diskgroup oradg add volume acfsvol size 1G;

Diskgroup altered.

SQL&gt; select VOLUME_DEVICE from V$ASM_VOLUME where VOLUME_NAME='ACFSVOL';

VOLUME_DEVICE
--------------------------------------------------------------------------------
/dev/asm/acfsvol-351</pre>
<p>创建并注册文件系统，然后使用mount.acfs命令挂载文件系统，以下命令需要用root用户执行。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># mkdir -p /app/oracle/acfsmounts/oradg_acfsvol 
# /sbin/mkfs -t acfs -n ACFSVOL1 /dev/asm/acfsvol-351
mkfs.acfs: version                   = 11.2.0.1.0.0
mkfs.acfs: on-disk version           = 39.0
mkfs.acfs: volume                    = /dev/asm/acfsvol-351
mkfs.acfs: volume size               = 1073741824
mkfs.acfs: Format complete.
# /sbin/acfsutil registry -a -f /dev/asm/acfsvol-351 /app/oracle/acfsmounts/oradg_acfsvol
acfsutil registry: mount point /app/oracle/acfsmounts/oradg_acfsvol successfully added to Oracle Registry
# mount.acfs -o all
#df -k | grep acfs
/dev/asm/acfsvol-351   1048576     39192   1009384   4% /app/oracle/acfsmounts/oradg_acfsvol
# chown oracle:dba /app/oracle/acfsmounts/oradg_acfsvol</pre></div></div>

<p>创建成功以后，可以用oracle用户在该文件系统下创建测试文件。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ dd if=/dev/zero of=/app/oracle/acfsmounts/oradg_acfsvol/testfile bs=8192 count=100
100+0 records in
100+0 records out
819200 bytes (819 kB) copied, 0.0270009 seconds, 30.3 MB/s
$ ls -l /app/oracle/acfsmounts/oradg_acfsvol/testfile
-rw-r--r-- 1 oracle dba 819200 Aug 12 19:18 /app/oracle/acfsmounts/oradg_acfsvol/testfile</pre></div></div>

<p>查看ACFS文件系统信息。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># /sbin/acfsutil info fs 
/app/oracle/acfsmounts/oradg_acfsvol
    ACFS Version: 11.2.0.1.0.0
    flags:        MountPoint,Available
    mount time:   Thu Aug 12 19:06:33 2010
    volumes:      1
    total size:   1073741824
    total free:   968667136
    primary volume: /dev/asm/acfsvol-351
        label:                 ACFSVOL1
        flags:                 Primary,Available,ADVM
        on-disk version:       39.0
        allocation unit:       4096
        major, minor:          252, 179713
        size:                  1073741824
        free:                  968667136
        ADVM diskgroup         ORADG
        ADVM resize increment: 268435456
        ADVM redundancy:       unprotected
        ADVM stripe columns:   4
        ADVM stripe width:     131072
    number of snapshots:  0
    snapshot space usage: 0</pre></div></div>

<p>在ASM卷被打开的时候，无法直接shutdown ASM实例，会报ORA-15487错误。</p>
<pre class="brush: sql; toolbar: false;">SQL&gt; shutdown immediate
ORA-15487: cannot shutdown the ASM instance with an open ASM volume</pre>
<p>可以使用umount命令卸载ACFS文件系统。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># /bin/umount -t acfs -a</pre></div></div>

<p>如果挂载文件系统时报错，那么可能是因为ACFS Volume没有激活，Volume的状态可以从V$ASM_VOLUME.STATE字段获得，显示为“ENABLED”才表示已激活。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># mount.acfs /dev/asm/acfsvol-351 /app/oracle/acfsmounts/oradg_acfsvol
mount.acfs: CLSU-00100: Operating System function: open64 (/dev/asm/acfsvol-351) failed with error data: 2
mount.acfs: CLSU-00101: Operating System error message: No such file or directory
mount.acfs: CLSU-00103: error location: OOF_1
mount.acfs: ACFS-02017: Failed to open volume /dev/asm/acfsvol-351. Verify the volume exists.</pre></div></div>

<p>如果Volume状态显示为DISABLE，可以使用如下命令，激活Volume。</p>
<pre class="brush: sql; toolbar: false;">SQL&gt;alter diskgroup ORADG enable volume 'ACFSVOL';</pre>
<p>本文创建使用的是SQL命令行方式创建ACFS卷，用asmcmd也可以完成，可以参看<a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e10500/asmfs_util.htm">官方文档</a> | <a href="http://surachartopun.com/2009/09/asm-dvm-acfs-by-command-lines.html">Surachart的文章</a>。</p>
<p>而如果选用图像化界面的话，可以用asmca或者OEM来完成，下图是asmca界面，在其中查看命令行写法也很方便。</p>
<p><a href="http://www.dbform.com/wp-content/uploads/2010/08/mwsnap580.jpg"><img src="http://www.dbform.com/wp-content/uploads/2010/08/mwsnap580.jpg" alt="" title="asmca" width="666" height="566" class="alignnone size-full wp-image-1256" /></a></p>
<p>【备注1】<br />
在当前版本的Oracle Restart环境（也就是Standalone Grid Infrastructure）中，以下操作不会自动运行。<br />
1. 加载Oracle ACFS drivers<br />
2. 加载存在于ACFS mount registry中的Oracle ACFS文件系统</p>
<p>应对于第一个问题，我们可以通过以下方法让操作系统在启动的时候自动加载Oracle ACFS drivers。</p>
<p>创建/etc/init.d/acfsload文件，让其在操作系统启动时自动运行。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># cat /etc/init.d/acfsload
#!/bin/sh
# chkconfig: 2345 30 21
# description: Load Oracle ACFS drivers at system boot
/app/grid/bin/acfsload start -s
&nbsp;
# chmod u+x /etc/init.d/acfsload
# chkconfig --add  acfsload
# chkconfig --list  acfsload   
acfsload        0:off   1:off   2:on    3:on    4:on    5:on    6:off</pre></div></div>

<p>对于第二个问题，由于ACFS文件系统能够正确加载，必须要求ASM实例启动成功，并且相应的ASM磁盘组正确加载，这份依赖性在集群环境中是通过创建Oracle ACFS registry resource (ora.registry.acfs)来实现的，但是在Standalone环境中，我们无法保证这份依赖性，因此只能通过创建以下脚本用root用户手动挂载ACFS文件系统（如果你们有更好的方法请告诉我）。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># cat /usr/local/sbin/mountacfs 
su - grid -c &quot;asmcmd volenable -G oradg -a&quot;
mount.acfs -o all</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1255.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Baby I Love You!</title>
		<link>http://www.dbform.com/html/2010/1231.html</link>
		<comments>http://www.dbform.com/html/2010/1231.html#comments</comments>
		<pubDate>Tue, 27 Jul 2010 13:14:55 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Feeling]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1231</guid>
		<description><![CDATA[<p>2010年7月27日下午1点53分，我的儿子张小事儿诞生了，八斤半啊，医生说，“好久没抱过这么沉的新生儿了”。</p> <p></p> <p>祝愿我的儿子会健康壮实，成为名副其实的属老虎的狮子座男子汉。</p> <p>诸位一直以来关心我们的朋友，我的儿子用小老虎一样的哈欠向各位问好且表示感谢。:)</p> <p>谢谢我的弟弟，你的房子和你今天来回地跑几趟，亲弟弟我才敢这么支使你。 谢谢600的媳妇儿寿影帮忙在医院跑前跑后，没有你就没有这样顺利的过程，你是当之无愧的干妈。 谢谢eygle帮我cover这段时间本应我去做的工作，辛苦了。 谢谢coolyl让我住在离医院更近的他的房子里，减少了我来回奔波的距离。 谢谢老丈人，丈母娘，姐姐，老姑，你们的精心照顾让我完全没有后顾之忧。 谢谢爸妈和小阿姨在老家的惦记和嘱咐，虽然你们没有在身边，但是我知道你们比我们更焦急更关心。 谢谢医生，护士，六院是很好的医院。</p> <p>当然，最需要感谢的是我漂亮勇敢的老婆，你是我的骄傲，我爱你。</p> ]]></description>
			<content:encoded><![CDATA[<p>2010年7月27日下午1点53分，我的儿子张小事儿诞生了，八斤半啊，医生说，“好久没抱过这么沉的新生儿了”。</p>
<p><embed src='http://player.youku.com/player.php/sid/XMTkzMDc4Mjcy/v.swf' quality='high' width='480' height='400' align='middle' allowScriptAccess='sameDomain' type='application/x-shockwave-flash'></embed></p>
<p>祝愿我的儿子会健康壮实，成为名副其实的属老虎的狮子座男子汉。</p>
<p>诸位一直以来关心我们的朋友，我的儿子用小老虎一样的哈欠向各位问好且表示感谢。:)</p>
<p>谢谢我的弟弟，你的房子和你今天来回地跑几趟，亲弟弟我才敢这么支使你。<br />
谢谢600的媳妇儿寿影帮忙在医院跑前跑后，没有你就没有这样顺利的过程，你是当之无愧的干妈。<br />
谢谢eygle帮我cover这段时间本应我去做的工作，辛苦了。<br />
谢谢coolyl让我住在离医院更近的他的房子里，减少了我来回奔波的距离。<br />
谢谢老丈人，丈母娘，姐姐，老姑，你们的精心照顾让我完全没有后顾之忧。<br />
谢谢爸妈和小阿姨在老家的惦记和嘱咐，虽然你们没有在身边，但是我知道你们比我们更焦急更关心。<br />
谢谢医生，护士，六院是很好的医院。</p>
<p>当然，最需要感谢的是我漂亮勇敢的老婆，你是我的骄傲，我爱你。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1231.html/feed</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>User Experience Suggesion for Dameng Database</title>
		<link>http://www.dbform.com/html/2010/1224.html</link>
		<comments>http://www.dbform.com/html/2010/1224.html#comments</comments>
		<pubDate>Sat, 24 Jul 2010 04:19:33 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1224</guid>
		<description><![CDATA[<p>试用了达梦数据库6.02 for Linux版本。测试的操作系统为CentOS 5虚拟机，数据库软件从此处下载。</p> <p>本文并未像老杨那样做产品功能性的测试，实际上老杨已经测试的够详细了。</p> <p>只是作为Oracle的重度用户，在用户体验上将DM和Oracle做些许比较，大部分集中在DM的isql和Oracle的sql*plus上，当然这些比较还很肤浅，权当一看。</p> <p>1. 最重要的，最诚恳的建议，达梦应该在网上提供完全没有任何技术限制的软件下载，包括达梦企业版和安全版。达梦不需要怕别人免费用自己的数据库，而应该怕别人没有兴趣用自己的数据库。如果免费使用的人数有1万，那么希望进行技术讨论的人数就可能会有1千，而1千个踊跃讨论的用户将会带来更多的免费使用人群，这些人群中只要有1%愿意付费，就是达梦的成功。只有虚怀若谷才能海纳百川。</p> <p>2. 字符界面的静默安装速度很快，但是安装过程中的英文提示有“Whether to ”字样，我明白是想表达“是否要”的意思，但是出现在安装提示中比较奇怪，建议全部去掉。比如：</p> Whether to Initialize the Database (Y/y,N/n) [Y/y]:y Whether to Modify DataBase Initiation Parameter (Y/y,N/n) [N/n]:y Whether to Modify SYSDBA Password (Y/y,N/n) [N/n]: <p>3. 安装文档中并没有提及在Linux环境需要创建另外的用于安装DMDBMS的用户组和用户，因此这可能会让大家都使用root用户来安装DM数据库，实际上在我的测试环境中也是使用root用户的。建议对于安装程序和文档都做相应修改，明确建议DM数据库应该安装在自己的用户下。比如用户组是dba，用户是dmusr。</p> <p>4. 即使在安装过程中选择了安装示例数据库，但是在安装结束以后并没有发现有BOOKSHOP数据库。</p> <p>5. 安装完毕以后需要重新login，因为 export LD_LIBRARY_PATH=/u01/dmdbms/bin这样的设置仅仅更新在.bash_profile中了，但是当前环境没有生效，此时运行isql会报错：</p> ./isql: error while loading shared libraries: libdmapi.so: cannot open shared obj <p>建议不要依靠LD_LIBRARY_PATH这样的设置，或者在安装后立刻在当前环境中使 <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.dbform.com/html/2010/1224.html">User Experience Suggesion for Dameng Database</a></span>]]></description>
			<content:encoded><![CDATA[<p>试用了达梦数据库6.02 for Linux版本。测试的操作系统为<a href="http://vmplanet.net/node/93">CentOS 5虚拟机</a>，数据库软件从此处<a href="http://softdown.itpub.net/dameng/CT602.10.01.022RHEL5.iso">下载</a>。</p>
<p>本文并未像<a href="http://yangtingkun.itpub.net">老杨</a>那样做<a href="http://tech.it168.com/focus/201003/gcsjk/index.html">产品功能性的测试</a>，实际上老杨已经测试的够详细了。</p>
<p>只是作为Oracle的重度用户，在用户体验上将DM和Oracle做些许比较，大部分集中在DM的isql和Oracle的sql*plus上，当然这些比较还很肤浅，权当一看。</p>
<p>1. 最重要的，最诚恳的建议，<strong>达梦应该在网上提供完全没有任何技术限制的软件下载，包括达梦企业版和安全版</strong>。达梦不需要怕别人免费用自己的数据库，而应该怕别人没有兴趣用自己的数据库。如果免费使用的人数有1万，那么希望进行技术讨论的人数就可能会有1千，而1千个踊跃讨论的用户将会带来更多的免费使用人群，这些人群中只要有1%愿意付费，就是达梦的成功。只有虚怀若谷才能海纳百川。</p>
<p>2. 字符界面的静默安装速度很快，但是安装过程中的英文提示有“Whether to ”字样，我明白是想表达“是否要”的意思，但是出现在安装提示中比较奇怪，建议全部去掉。比如：</p>
<pre sql='SHELL'>Whether to Initialize the Database (Y/y,N/n) [Y/y]:y
Whether to Modify DataBase Initiation Parameter (Y/y,N/n) [N/n]:y
Whether to Modify SYSDBA Password (Y/y,N/n) [N/n]:</pre>
<p>3. 安装文档中并没有提及在Linux环境需要创建另外的用于安装DMDBMS的用户组和用户，因此这可能会让大家都使用root用户来安装DM数据库，实际上在我的测试环境中也是使用root用户的。建议对于安装程序和文档都做相应修改，明确建议DM数据库应该安装在自己的用户下。比如用户组是dba，用户是dmusr。</p>
<p>4. 即使在安装过程中选择了安装示例数据库，但是在安装结束以后并没有发现有BOOKSHOP数据库。</p>
<p>5. 安装完毕以后需要重新login，因为 export LD_LIBRARY_PATH=/u01/dmdbms/bin这样的设置仅仅更新在.bash_profile中了，但是当前环境没有生效，此时运行isql会报错：</p>
<pre sql='SHELL'>./isql: error while loading shared libraries: libdmapi.so: cannot open shared obj</pre>
<p>建议不要依靠LD_LIBRARY_PATH这样的设置，或者在安装后立刻在当前环境中使 LD_LIBRARY_PATH设置生效。</p>
<p>6. 即使已经设置大小写不敏感，但是isql登陆时默认密码必须使用大写。这容易让初次使用者困惑。</p>
<pre sql='SHELL'>[root@centos-vm ~]# isql sysdba/sysdba
isql V6.0.2.51-Build(2009.12.23)
login fail
SQL>exit
[root@centos-vm ~]#
[root@centos-vm ~]# isql sysdba/SYSDBA
isql V6.0.2.51-Build(2009.12.23)
login success</pre>
<p>7. iSQL中的describe没有desc缩写，这会让习惯于Oracle的用户很不习惯。iSQL中的输出结果完全没有排列整齐，急需修改。</p>
<pre class="brush: sql;">SQL&gt;describe v$version;
describe v$version;

COLNAME         TYPE            LENGTH          NULLABLE

1       BANNER  VARCHAR2        80              Y
1 rows got
time used: 0.685(ms).</pre>
<p>8. 在iSQL提示符下，即使是空行回车也显示行数符号，必须用;来结束，这对于习惯于在上一个SQL语句结束以后，多按几次回车空出几行使显示更清楚的操作人员来说很困扰。</p>
<pre class="brush: sql;">SQL&gt;
2
3
4   ;
line 4: syntax error: ';'</pre>
<p>建议修改为oracle的sqlplus样式</p>
<pre class="brush: sql;">D:\Temp&gt;sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 23 18:15:01 2010

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL&gt;
SQL&gt;
SQL&gt;
SQL&gt;</pre>
<p>9. 对于英文环境必须要求设置java font的路径，否则只能显示乱码（如下图）。强烈建议在Linux下的那些java gui，比如manager，console等具备英文界面。<br />
<a href="http://www.dbform.com/wp-content/uploads/2010/07/mwsnap579.jpg"><img src="http://www.dbform.com/wp-content/uploads/2010/07/mwsnap579-300x190.jpg" alt="" title="DM Manager" width="300" height="190" class="alignnone size-medium wp-image-1225" /></a></p>
<p>10. 小细节，Uninstall DMDBMS的图标用的是Windows的回收站图标。这对于安装到Linux操作系统中的数据库软件来说有些奇怪，而且这个图标跟其它的图标看上去有些不配套。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1224.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Oracle Histogram Investigation</title>
		<link>http://www.dbform.com/html/2010/1200.html</link>
		<comments>http://www.dbform.com/html/2010/1200.html#comments</comments>
		<pubDate>Tue, 13 Jul 2010 17:31:18 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Oracle Database]]></category>
		<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[Oracle10g]]></category>
		<category><![CDATA[Oracle11g]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1200</guid>
		<description><![CDATA[<p>这段时间有客户的10gR2数据库经常遭遇执行计划不稳定的现象，应该是直方图信息（Histogram）+绑定变量窥视（Bind Variable Peeking）造成的问题，藉此分享一下直方图的使用经验，但是我非常希望能听到针对本文的不同声音。测试环境Oracle 11.2.0.1 for Windows X64。</p> <p>创建一个测试表。</p> DROP TABLE t; CREATE TABLE t AS SELECT rownum n1, ROUND(rownum/100) n2, 'xxxx' n3 FROM dba_objects WHERE rownum&#60;=10000; <p>这样我们生成了一张表T，其中有一万行记录。 N1字段可以认为是主键，有10000个distinct值（1-10000），这是一个数据分布均匀的字段； N2字段有101个distinct值，除了第一个值0和最后一个值101之外，其它的值都有100行记录，我们可以认为这是一个数据分布均匀的字段； N3字段有10000个值都是xxxx，实际上这也仍然是一个分布均匀的字段。</p> <p>对于这三种类型的字段，我们都不应该去收集直方图信息，因为没有意义。那么直方图信息之所以需要存在的根本意义在哪里？</p> <p>一. 我们何时该做 直方图究其根本实际上就是一个数据分布的图示，这个图示是为了在生成SQL执行计划的时候给Oracle的CBO更多的信息，换句话说，就是当在where条件中的某些列可能由于列值的不同而希望CBO制定出不同的执行计划时，我们需要直方图。</p> <p>反过来说，什么情况下我们不需要直方图呢？或者说直方图的存在是没有意义的呢？ 1. 当此列不用于查询时，也就是这个字段永远不会出现在where条件中（注意：即使是用于表连接那也算是出现在where条件中）。 2. 当此列无论给予什么比较值，我们都希望永远是一种执行计划时。上面例子中的3个字段都属于这种情况。 对于N1或者N2出现在where条件中，我们希望永远是用该列上的索引扫描（当然需要在该列上先创建索引），对于N3出现在where条件中，我们希望永远是全表扫描。这样的执行计划的制定，只要有表级别的统计信息就足够了，直方图信息的出现不但不会对制定正确的执行计划有帮助，甚至会出现奇怪的现象导致执行计划不稳定。</p> <p>二. 我们可以怎样做 那么我们继续看一下收集直方图信息的方法，众所周知，是需要使用DBMS_STATS.GATHER_TABLE_STATS存储过程的，并且是由这个存储过程中的method_opt参数决定的。可以由以下几种选择。</p> <p>method_opt=>&#8217;for columns size skewonly [column_name]&#8216; 什么是SKEWONLY？先看一下Oracle官方文档中的定义。</p> <p>Oracle determines the columns to <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.dbform.com/html/2010/1200.html">Oracle Histogram Investigation</a></span>]]></description>
			<content:encoded><![CDATA[<p>这段时间有客户的10gR2数据库经常遭遇执行计划不稳定的现象，应该是直方图信息（Histogram）+绑定变量窥视（Bind Variable Peeking）造成的问题，藉此分享一下直方图的使用经验，但是我非常希望能听到针对本文的不同声音。测试环境Oracle 11.2.0.1 for Windows X64。</p>
<p>创建一个测试表。</p>
<pre class="brush: sql;">DROP TABLE t;
CREATE TABLE t AS
SELECT rownum n1,
  ROUND(rownum/100) n2,
  'xxxx' n3
FROM dba_objects
WHERE rownum&lt;=10000;</pre>
<p>这样我们生成了一张表T，其中有一万行记录。<br />
N1字段可以认为是主键，有10000个distinct值（1-10000），这是一个数据分布均匀的字段；<br />
N2字段有101个distinct值，除了第一个值0和最后一个值101之外，其它的值都有100行记录，我们可以认为这是一个数据分布均匀的字段；<br />
N3字段有10000个值都是xxxx，实际上这也仍然是一个分布均匀的字段。</p>
<p>对于这三种类型的字段，我们都不应该去收集直方图信息，因为没有意义。那么直方图信息之所以需要存在的根本意义在哪里？</p>
<p><strong>一. 我们何时该做</strong><br />
直方图究其根本实际上就是一个数据分布的图示，这个图示是为了在生成SQL执行计划的时候给Oracle的CBO更多的信息，换句话说，就是当在where条件中的某些列可能由于列值的不同而希望CBO<strong>制定出不同的执行计划</strong>时，我们需要直方图。</p>
<p>反过来说，什么情况下我们不需要直方图呢？或者说直方图的存在是没有意义的呢？<br />
1. 当<strong>此列不用于查询</strong>时，也就是这个字段永远不会出现在where条件中（注意：即使是用于表连接那也算是出现在where条件中）。<br />
2. 当此列无论给予什么比较值，我们都<strong>希望永远是一种执行计划</strong>时。上面例子中的3个字段都属于这种情况。<br />
对于N1或者N2出现在where条件中，我们希望永远是用该列上的索引扫描（当然需要在该列上先创建索引），对于N3出现在where条件中，我们希望永远是全表扫描。这样的执行计划的制定，只要有表级别的统计信息就足够了，直方图信息的出现不但不会对制定正确的执行计划有帮助，甚至会出现奇怪的现象导致执行计划不稳定。</p>
<p><strong>二. 我们可以怎样做</strong><br />
那么我们继续看一下收集直方图信息的方法，众所周知，是需要使用DBMS_STATS.GATHER_TABLE_STATS存储过程的，并且是由这个存储过程中的method_opt参数决定的。可以由以下几种选择。</p>
<p><strong>method_opt=>&#8217;for columns size skewonly [column_name]&#8216;</strong><br />
什么是SKEWONLY？先看一下Oracle官方文档中的定义。</p>
<blockquote><p>Oracle determines the columns to collect histograms based on the data distribution of the columns. </p></blockquote>
<p>也就是要看列上的数据分布，那么按照我们前面提到的，T表中的三列数据分布都是均匀的，并不应该收集任何列上的直方图信息，实际呢？</p>
<pre class="brush: sql;">EXEC dbms_stats.gather_table_stats(ownname=&gt;'KAMUS',tabname=&gt;'T',estimate_percent=&gt;NULL,method_opt=&gt;'for all columns size skewonly',CASCADE=&gt;true);

SQL&gt; select column_name,density,num_buckets,histogram from dba_tab_col_statistics where table_name='T';

COLUMN_NAME                       DENSITY NUM_BUCKETS HISTOGRAM
------------------------------ ---------- ----------- ---------------
N3                                 .00005           1 FREQUENCY
N2                                 .00005         101 FREQUENCY
N1                                  .0001           1 NONE
</pre>
<p>可以看到在N2上收集了直方图信息，收集了101个bucket，而N3上则收集了1个bucket的直方图信息（实际上也只能收集一个，因为只有一个distinct值xxxx）。收集直方图信息是耗费资源的，因此SKEWONLY不推荐使用。实际上经历了这么多版本，SKEWONLY的算法一直很奇怪，我没有找到一份文档描述Oracle到底是如何定义SKEWONLY的收集凭据的。</p>
<p><strong>method_opt=>&#8217;for columns size auto [column_name]&#8216;</strong><br />
什么是AUTO？再看一下Oracle官方文档中的定义。</p>
<blockquote><p>Oracle determines the columns to collect histograms based on data distribution and the workload of the columns.</p></blockquote>
<p>也就是在SKEWONLY的基础上额外增加了workload限制，何谓workload？实际上就是我们前面提到的是否在where条件中出现。如果一个列从来没有出现在where条件中，Oracle就认为是没有workload的，那么即使此列上的数据被认为是SKEW的，也不会收集直方图信息，只有出现过至少一次，Oracle才会收集。<a href="http://www.dbform.com/html/2010/1200.html/comment-page-1#comment-57259">[via Comment by Dbsnake]</a> 该workload信息可以从数据字典COL_USAGE$中获得，在数据字典中存在的列才是有workload的。</p>
<pre class="brush: sql;">
--T表是新创建的，创建完毕以后还没有进行过任何select，因此AUTO选项不会收集任何直方图信息。
EXEC dbms_stats.gather_table_stats(ownname=&gt;'KAMUS',tabname=&gt;'T',estimate_percent=&gt;NULL,method_opt=&gt;'for all columns size auto',CASCADE=&gt;true);

SQL&gt; select column_name,density,num_buckets,histogram from dba_tab_col_statistics where table_name='T';

COLUMN_NAME                       DENSITY NUM_BUCKETS HISTOGRAM
------------------------------ ---------- ----------- ---------------
N3                                      1           1 NONE
N2                              .00990099           1 NONE
N1                                  .0001           1 NONE

--执行一次select，再次收集，可以看到N2字段上的直方图信息了。
SQL&gt; SELECT COUNT(*) FROM t WHERE n2=10;

  COUNT(*)
----------
       100

SQL&gt; EXEC dbms_stats.gather_table_stats(ownname=&gt;'KAMUS',tabname=&gt;'T',estimate_percent=&gt;NULL,method_opt=&gt;'for all columns size auto',CASCADE=&gt;true);

PL/SQL procedure successfully completed.

SQL&gt; select column_name,density,num_buckets,histogram from dba_tab_col_statistics where table_name='T';

COLUMN_NAME                       DENSITY NUM_BUCKETS HISTOGRAM
------------------------------ ---------- ----------- ---------------
N3                                      1           1 NONE
N2                                 .00005         101 FREQUENCY
N1                                  .0001           1 NONE
</pre>
<p>因此AUTO也是有问题的，N2字段上的直方图信息仍然会收集，这是我们不需要的。注意，在Oracle10g之后的自动统计信息收集任务中，默认的是FOR ALL COLUMNS SIZE AUTO，这是很有问题的，因此即使是不禁用自动统计信息收集，也应该通过DBMS_STATS.SET_PARAM存储过程（在11gR2版本中被SET_GLOBAL_PREFS存储过程替代）来修改该默认值。通常我们经历的执行计划莫名其妙改变，很多场合都是因为Oracle10g之后的这个统计信息自动收集任务导致的。关于自动统计信息收集，可以参看：<a href="http://www.dbform.com/html/2008/538.html">Automatic Statistics Gathering</a></p>
<p><strong>method_opt=>&#8217;for columns size repeat [column_name]&#8216;</strong><br />
只有在已有直方图信息的列上再次收集直方图信息。这是我们推荐设置为默认值的方式。具体的执行方法见后文。</p>
<p><strong>method_opt=>&#8217;for columns size 1 [column_name]&#8216;</strong><br />
size 1将删除列上的直方图信息，同样也意味着不收集。</p>
<pre class="brush: sql;">SQL&gt; EXEC dbms_stats.gather_table_stats(ownname=&gt;'KAMUS',tabname=&gt;'T',estimate_percent=&gt;NULL,method_opt=&gt;'for all columns size 1',CASCADE=&gt;true);

PL/SQL procedure successfully completed.

SQL&gt; select column_name,density,num_buckets,histogram from dba_tab_col_statistics where table_name='T';

COLUMN_NAME                       DENSITY NUM_BUCKETS HISTOGRAM
------------------------------ ---------- ----------- ---------------
N3                                      1           1 NONE
N2                              .00990099           1 NONE
N1                                  .0001           1 NONE</pre>
<p><strong>method_opt=>&#8217;for all columns size 30&#8242;</strong><br />
size自定义大于1的数值，最大为254，如例表示要求收集30个bucket的直方图信息。</p>
<pre class="brush: sql;">SQL&gt; EXEC dbms_stats.gather_table_stats(ownname=&gt;'KAMUS',tabname=&gt;'T',estimate_percent=&gt;NULL,method_opt=&gt;'for all columns size 30',CASCADE=&gt;true);

PL/SQL procedure successfully completed.

SQL&gt; select column_name,density,num_buckets,histogram from dba_tab_col_statistics where table_name='T';

COLUMN_NAME                       DENSITY NUM_BUCKETS HISTOGRAM
------------------------------ ---------- ----------- ---------------
N3                                 .00005           1 FREQUENCY
N2                              .00995002          30 HEIGHT BALANCED
N1                                  .0001          30 HEIGHT BALANCED</pre>
<p>那么现在到了最重要的部分，对于一个数据库系统，我们到底应该如何收集直方图信息呢？</p>
<p><strong>三. 我们应该怎样做</strong><br />
首先我们要明确<strong>直方图信息是有存在的必要的，但是只应该存在在那些应该要存在的列上</strong>，Oracle知道哪些列上应该存在吗？Oracle一直在致力于想知道，可惜的是现在做的仍然不够好，全部交给Oracle去做的话（SIZE SKEWONLY或者SIZE AUTO），可能得到的结果就是该收集的没收集，不该收集的收集了一堆。只有我们的DBA才最知道哪些列上应该收集直方图，这实际上已经远远不仅仅是技术问题了，而是一个业务问题，因此DBA应该去熟悉业务，DBA应该知道自己的应用的数据分布特点，应该知道哪些列会常被用在where条件中。</p>
<p>直方图信息收集是一个漫长而持续的过程，没有一蹴而就的方法，也不可能一劳永逸。</p>
<p>我们推荐的方法是：<br />
1. 第一次收集统计信息时，设置method_opt=>FOR ALL COLUMNS SIZE 1，这意味删除所有列上的直方图。<br />
2. 在测试阶段或者在真实生产环境中，在调优SQL的过程中，DBA将会逐渐得知每个需要直方图信息的字段，在这些字段上人工收集统计信息，method_opt=>FOR COLUMNS SIZE AUTO [COLUMN_NAME]，如果你能够明确知道应该收集多少个bucket而手工指定SIZE值那更好。保留收集所有这些字段的脚本，以备数据库系统升级或者迁移时候使用。<br />
3. 在每次数据分布有所变化的时候，更新统计信息，使用method_opt=>FOR ALL COLUMNS SIZE REPEAT，这样只会收集已经存在了直方图信息的字段。</p>
<p>重复2，3步骤，直到系统稳定。这是一个可控的步骤，只有可控，才可能避免不可预知的错误。</p>
<p><strong>[备注1]</strong> dba_tab_col_statistics.histogram字段值的含义。<br />
该字段可能包含三个值：NONE，FREQUENCY或者HEIGHT BALANCED。</p>
<p>NONE：就是没有直方图</p>
<p>FREQUENCY：当该列的distinct值数量<=bucket数量时，为此类型。对于此类型而言，在dba_tab_histograms视图中的会存在相当于distinct值数量的记录，该视图的ENDPOINT_VALUE字段记录了这些distinct值，而ENDPOINT_NUMBER字段则记录了到此distinct值为止总共有多少条记录，注意这是一个累加值，实际上我们可以用一条记录的ENDPOINT_NUMBER减去上一条记录的ENDPOINT_NUMBER来获知对应于本记录的ENDPOINT_VALUE值有多少条记录。我知道这听上去很拗口，可能也有些难于理解，但是请尽量去理解吧。</p>
<p>HEIGHT BALANCED：当该列的distinct值数量>bucket数量时，为此类型。比如我们上面的例子收集了SIZE 30的直方图信息，对于N1，N2字段来说都超过了30个distinct值，因此为HEIGHT BALANCED类型。此时dba_tab_histograms视图中的ENDPOINT_NUMBER字段就不再是表示有多少条记录了，而仅仅表示bucket编号，SIZE 30的话，就是简单的0-30（需要31个bucket才可以表示SIZE 30）。主要是在于ENDPOINT_VALUE字段，实际上是这样分的，分了30个bucket，现在T表总共是10000条记录，那么每个bucket里面大概会是333条记录。</p>
<p>第一个ENDPOINT_VALUE的值相当于如下SQL的返回值。</p>
<pre class="brush: sql; light: true;">select max(n2) from (select n2 from t order by n2) where rownum&lt;=333</pre>
<p>第二个ENDPOINT_VALUE的值相当于如下SQL的返回值。</p>
<pre class="brush: sql; light: true;">select max(n2) from (select n2 from t order by n2) where rownum&lt;=333*2</pre>
<p>第三个ENDPOINT_VALUE的值相当于如下SQL的返回值。</p>
<pre class="brush: sql; light: true;">select max(n2) from (select n2 from t order by n2) where rownum&lt;=333*3</pre>
<p>依次类推。正是这样的信息告诉了Oracle数据的分布情况，试想一下，如果连续3个bucket的ENDPOINT_VALUE值都10，那么也就是说至少有2个bucket中的记录N2字段都是10，也就是说N2=10的记录至少有666条，越多的bucket有越多相同的ENDPOINT_VALUE值，就表明数据分布越不均匀。<br />
有一点需要额外注意的是：<strong>如果某几个bucket的ENDPOINT_VALUE值相同，那么在视图中只会记录最后一个bucket的信息。</strong></p>
<p><strong>[备注2]</strong>  dba_tab_col_statistics.density字段值的含义。<br />
官方文档中的解释“Density of the column”就跟没说一样。Density的含义是“密度”。</p>
<p>还是看上面的例子，当HISTOGRAM=NONE的时候，N1字段的密度是.0001，一万分之一，1万条记录在某字段上有1万个distinct值，那么该字段的密度就是一万分之一；N3字段的密度是1，1万条记录在某字段上都是相同的，只有1个distinct值，那么该字段的密度就是1。到这里应该可以比较形象的理解Density了。那么对于N2字段来说呢，密度是.00990099，很简单了，1万条记录里面有101个distinct值，10000/101/10000=.00990099。</p>
<p>DENSITY值是会影响CBO判断执行计划的，而回到前文的例子，我们比较一下有直方图和没有直方图时候的同一列的DENSITY值，就会发现很要命的事情，直方图很大地影响到了密度值，目前还没有更科学的方法去研究直方图是如何影响密度的，从而又会对CBO的判断产生多大影响（至少我还没有研究到），但是至少我们可以知道<strong>直方图只应该存在在必须存在的列上</strong>，因为除了不必要的收集会消耗不必要的资源，它有更多不可预知的影响会导致性能问题。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1200.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Brief History of Oracle Database</title>
		<link>http://www.dbform.com/html/2010/1194.html</link>
		<comments>http://www.dbform.com/html/2010/1194.html#comments</comments>
		<pubDate>Tue, 06 Jul 2010 09:17:30 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Oracle Database]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1194</guid>
		<description><![CDATA[<p>当前最新的Oracle数据库版本得益于30余年饱含技术创新的开发。在Oracle数据库的演变过程中有以下值得纪念的成绩。</p> <p>甲骨文的创建 1977年， Larry Ellison, Bob Miner和Ed Oates创立了软件研发实验室，后来成为Relational Software, Inc. (RSI)。在1983年，RSI改名为甲骨文系统公司，再后来就成为了甲骨文公司。</p> <p>第一个商用关系型数据库问世 1979年，RSI发布了Oracle V2（第二版本），这是第一个商用的SQL-Based关系型数据库，是关系型数据库发展历史上的里程碑。</p> <p>Oracle数据库跨平台版本发布 在1983年发布的Oracle Version 3是第一个可以运行在主机、小型机、PC上的关系型数据库。用C语言编写，这就使跨平台成为可能。</p> <p>在并发性控制，数据分布和扩展性方面得以增强 Oracle Version 4中推出了多版本读一致性。在1985年发布的Version 5支持客户端/服务器架构以及分布式数据库系统。而Version 6更是带来了再磁盘IO，行级锁，扩展性以及备份恢复上的多项增强。同时，Version 6中也推出了PL/SQL语言的第一版，这是对于SQL语言的过程性扩展。</p> <p>PL/SQL存储程序单元 1992年发布的Oracle7，推出了PL/SQL存储过程以及触发器。</p> <p>对象和分区 1997年发布的Oracle8拥有了面向对象的关系型数据库特征，支持了大量新的数据类型。同时，Oracle8开始支持大表的分区。</p> <p>互联网计算 1999年发布的Oracle8i数据库，提供了对于互联网协议的本地支持，还有服务器端对于Java的支持。Oracle8i是为了互联网计算而设计的，使数据库被部署在多层环境中成为可能。</p> <p>Oracle真正应用集群（RAC） 2001年发布的oracle9i数据库中推出了Oracle RAC，允许多个数据库实例同时读写一份数据库。另外，Oracle XML数据库 (Oracle XML DB) 的出现提供了存储和查询XML的功能。</p> <p>网格计算 2003年发布的Oracle10g推出了网格计算。这个版本实现了让客户在廉价服务器上创建网格架构来部署虚拟计算资源。主要目的就是使数据库能够自行管理和自行调优。Oracle自动存储管理（Oracle ASM）的推出也对虚拟化和简单化数据库存储管理提供了很大帮助。</p> <p>管理性、可诊断性和可用性 2007年发布的Oracle11g，推出了大量新特性，让系统管理员和开发人员可以迅速适应业务需求变化。关键点就是在所有可能的场合都尽可能通过自动化和信息结合来精简信息框架。</p> <p>以上均翻译自Oracle联机文档《Oracle® Database Concepts》。 更详细的文章可以参看：Oracle Celebrates 30 Years of <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.dbform.com/html/2010/1194.html">Brief History of Oracle Database</a></span>]]></description>
			<content:encoded><![CDATA[<p>当前最新的Oracle数据库版本得益于30余年饱含技术创新的开发。在Oracle数据库的演变过程中有以下值得纪念的成绩。</p>
<p><strong>甲骨文的创建</strong><br />
1977年， Larry Ellison, Bob Miner和Ed Oates创立了软件研发实验室，后来成为Relational Software, Inc. (RSI)。在1983年，RSI改名为甲骨文系统公司，再后来就成为了甲骨文公司。</p>
<p><strong>第一个商用关系型数据库问世</strong><br />
1979年，RSI发布了Oracle V2（第二版本），这是第一个商用的SQL-Based关系型数据库，是关系型数据库发展历史上的里程碑。</p>
<p><strong>Oracle数据库跨平台版本发布</strong><br />
在1983年发布的Oracle Version 3是第一个可以运行在主机、小型机、PC上的关系型数据库。用C语言编写，这就使跨平台成为可能。</p>
<p><strong>在并发性控制，数据分布和扩展性方面得以增强</strong><br />
Oracle Version 4中推出了多版本读一致性。在1985年发布的Version 5支持客户端/服务器架构以及分布式数据库系统。而Version 6更是带来了再磁盘IO，行级锁，扩展性以及备份恢复上的多项增强。同时，Version 6中也推出了PL/SQL语言的第一版，这是对于SQL语言的过程性扩展。</p>
<p><strong>PL/SQL存储程序单元</strong><br />
1992年发布的Oracle7，推出了PL/SQL存储过程以及触发器。</p>
<p><strong>对象和分区</strong><br />
1997年发布的Oracle8拥有了面向对象的关系型数据库特征，支持了大量新的数据类型。同时，Oracle8开始支持大表的分区。</p>
<p><strong>互联网计算</strong><br />
1999年发布的Oracle8i数据库，提供了对于互联网协议的本地支持，还有服务器端对于Java的支持。Oracle8i是为了互联网计算而设计的，使数据库被部署在多层环境中成为可能。</p>
<p><strong>Oracle真正应用集群（RAC）</strong><br />
2001年发布的oracle9i数据库中推出了Oracle RAC，允许多个数据库实例同时读写一份数据库。另外，Oracle XML数据库 (Oracle XML DB) 的出现提供了存储和查询XML的功能。</p>
<p><strong>网格计算</strong><br />
2003年发布的Oracle10g推出了网格计算。这个版本实现了让客户在廉价服务器上创建网格架构来部署虚拟计算资源。主要目的就是使数据库能够自行管理和自行调优。Oracle自动存储管理（Oracle ASM）的推出也对虚拟化和简单化数据库存储管理提供了很大帮助。</p>
<p><strong>管理性、可诊断性和可用性</strong><br />
2007年发布的Oracle11g，推出了大量新特性，让系统管理员和开发人员可以迅速适应业务需求变化。关键点就是在所有可能的场合都尽可能通过自动化和信息结合来精简信息框架。</p>
<p>以上均翻译自Oracle联机文档《<a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/intro.htm#sthref22">Oracle® Database Concepts</a>》。<br />
更详细的文章可以参看：<a href="http://www.oracle.com/technology/oramag/oracle/07-jul/o4730.html">Oracle Celebrates 30 Years of Innovation</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1194.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Enmou or Oracle</title>
		<link>http://www.dbform.com/html/2010/1187.html</link>
		<comments>http://www.dbform.com/html/2010/1187.html#comments</comments>
		<pubDate>Tue, 06 Jul 2010 07:00:07 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Feeling]]></category>
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1187</guid>
		<description><![CDATA[<p>在前段时间，Oracle Xtreme team（X-Team）在APAC区域进行招聘，这个Team隶属于Oracle研发部门下的Database Server Tech下的HA和MAA分支，专门支持Oracle Database Machine和Exadata Storage Server，面对的是Oracle大力研发且正在重金推广的硬件技术以及数据库高可用技术，对任何一个Oracle技术爱好者来说都是一个非常有挑战性而且充满了学习乐趣的部门。</p> <p>更诱人的地方是这个职位是Home Office的，当然与之而来的就是30%-50%的出差时间，出差的地点应该会cover整个APAC地区，包括东南亚国家以及韩国、日本、澳大利亚。这次招聘的成员level为“Principal Member of Technical Staff”，在国内来说应该已经是较高级别的技术人员职位了，国内有为数不多的几个“Consulting Member of Technical Staff”，而再往上就是Oracle技术职位的最高级别Architect了（比如鼎鼎大名的Tom Kyte）。</p> <p>这个Team的成员有著名的Dan Noris，可惜的是从2009年他加入X-Team以后就没有再更新他个人的技术网站了。能够跟Dan共事应该说是很令人高兴的事情。</p> <p>Oracle的HR给我电话希望我能够加入X-Team。恩墨还是甲骨文，权衡再三，最终我仍然选择了恩墨科技，我想这不仅仅是对eygle作为朋友来说的一份友情的交代，更重要的是我看好恩墨科技的发展前景，我相信只要我们努力，就有美好的未来在前面等着我们，我热爱技术，我不虚伪，我认为跟eygle共事我们能一起赚到更多的钱。 </p> <p>为什么要购买数据库服务？构架建设、性能调优、故障诊断当然是重要的一部分，但是在最差的情况下，当一个完全意料不到的误操作导致数据可能再也找不回来，当你觉得几近崩溃的时候，恩墨科技可以给你最后的技术支持。在现在看来我们已经拥有了超群的技术实力，任何一个崩溃的数据库，只要有一点点希望，我们就可以让这个希望成为现实，最近的几次数据库灾难恢复，我相信在国内能够完成的为数不多。也许有人会说，做好备份不就可以了？但是在这个现实的世界里，并不是所有的数据库都有额外的备份空间，并不是所有的数据库都有额外的备份资源，甚至可能如同我们最近碰到的案例，在客户实施备份的过程中误操作将原数据库删除了。任何事情都有意外，而你需要一份最后的保障。</p> <p>我们的客户以每月新增一个的速度在发展，我看好恩墨科技，我希望我的信心能够带给所有已经成为客户和即将成为客户的你们以信心，你们是我们的朋友，你们的发展就是我们的发展，我们会努力，并与之甘苦与共。</p> ]]></description>
			<content:encoded><![CDATA[<p>在前段时间，Oracle  Xtreme team（X-Team）在APAC区域进行招聘，这个Team隶属于Oracle研发部门下的Database Server Tech下的HA和MAA分支，专门支持Oracle Database Machine和Exadata Storage Server，面对的是Oracle大力研发且正在重金推广的硬件技术以及数据库高可用技术，对任何一个Oracle技术爱好者来说都是一个非常有挑战性而且充满了学习乐趣的部门。</p>
<p>更诱人的地方是这个职位是<strong>Home Office</strong>的，当然与之而来的就是<strong>30%-50%的出差时间</strong>，出差的地点应该会cover整个APAC地区，包括东南亚国家以及韩国、日本、澳大利亚。这次招聘的成员level为“Principal Member of Technical Staff”，在国内来说应该已经是较高级别的技术人员职位了，国内有为数不多的几个“Consulting Member of Technical Staff”，而再往上就是Oracle技术职位的最高级别Architect了（比如鼎鼎大名的<a href="http://asktom.oracle.com">Tom Kyte</a>）。</p>
<p>这个Team的成员有著名的<a href="http://www.dannorris.com/">Dan Noris</a>，可惜的是从2009年他加入X-Team以后就没有再更新他个人的技术网站了。能够跟Dan共事应该说是很令人高兴的事情。</p>
<p>Oracle的HR给我电话希望我能够加入X-Team。恩墨还是甲骨文，权衡再三，最终<strong>我仍然选择了恩墨科技</strong>，我想这不仅仅是对eygle作为朋友来说的一份友情的交代，更重要的是我看好恩墨科技的发展前景，我相信只要我们努力，就有美好的未来在前面等着我们，我热爱技术，我不虚伪，我认为跟eygle共事<strong>我们能一起赚到更多的钱</strong>。 <img src='http://www.dbform.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>为什么要购买数据库服务？构架建设、性能调优、故障诊断当然是重要的一部分，但是在最差的情况下，当一个完全意料不到的误操作导致数据可能再也找不回来，当你觉得几近崩溃的时候，恩墨科技可以给你最后的技术支持。在现在看来我们已经拥有了超群的技术实力，任何一个崩溃的数据库，只要有一点点希望，我们就可以让这个希望成为现实，最近的几次<a href="http://www.eygle.com/archives/2010/06/asm_format_dictionary.html">数据库灾难恢复</a>，我相信在国内能够完成的为数不多。也许有人会说，做好备份不就可以了？但是在这个现实的世界里，并不是所有的数据库都有额外的备份空间，并不是所有的数据库都有额外的备份资源，甚至可能如同我们最近碰到的案例，在客户实施备份的过程中误操作将原数据库删除了。<strong>任何事情都有意外，而你需要一份最后的保障</strong>。</p>
<p>我们的客户以每月新增一个的速度在发展，我看好恩墨科技，我希望我的信心能够带给所有已经成为客户和即将成为客户的你们以信心，你们是我们的朋友，你们的发展就是我们的发展，我们会努力，并与之甘苦与共。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1187.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Using Safari5 Reader for Reading Technical Posts</title>
		<link>http://www.dbform.com/html/2010/1175.html</link>
		<comments>http://www.dbform.com/html/2010/1175.html#comments</comments>
		<pubDate>Sat, 19 Jun 2010 04:09:09 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1175</guid>
		<description><![CDATA[<p>最新Release的Mac下的浏览器Safari5除了全面支持HTML5之外，还有一个着重提到的功能就是Reader。</p> <p>关于Reader的赞美之辞可以参看《改变阅读习惯的Safari 5阅读器》。</p> <p>那么实际上Reader对于我个人的用处是在浏览DBAsupport.com站点的文章，此站点文章质量较高而且还时常出现不少新奇有趣的文章。但是这个站点恼人的地方在于：1.在Google Reader中无法看到全文 2.在站点上直接浏览文章的话要承受大量的广告。</p> <p>比如原站点中的文章大概看上去是这样五颜六色的。 </p> <p>使用了Safari5 Reader以后，变成了一篇白底黑字的清爽文章。 </p> <p>但是目前这个版本的Reader仍然有需要改进的地方，特别是对于可能会有大量代码的技术文章，那些代码在原文中有rss格式化，但是Reader转换以后格式就不正确了，这样会导致较长的代码有一部分无法看到。</p> <p>仍然是上面这片技术文章。原文中的格式如下图，虽然也不尽美观，但是注意那些小字体的部分，至少可以看到全部文字。 </p> <p>而在Reader中最后超出页面的那些文字都无法看到了，而且似乎是苹果太在意用户阅读体验了，甚至连横向的滚动栏也没有。是的，我知道Reader中的字体可以缩小，但是即使缩到最小也仍然有一部分在页面之外。 </p> <p>Hope will be fixed <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.dbform.com/html/2010/1175.html">Using Safari5 Reader for Reading Technical Posts</a></span>]]></description>
			<content:encoded><![CDATA[<p>最新Release的Mac下的浏览器Safari5除了全面支持HTML5之外，还有一个着重提到的功能就是Reader。</p>
<p>关于Reader的赞美之辞可以参看<a href="http://imtx.cn/archives/1502.html">《改变阅读习惯的Safari 5阅读器》</a>。</p>
<p>那么实际上Reader对于我个人的用处是在浏览<a href="http://www.dbasupport.com">DBAsupport.com</a>站点的文章，此站点文章质量较高而且还时常出现不少新奇有趣的文章。但是这个站点恼人的地方在于：1.在Google Reader中无法看到全文 2.在站点上直接浏览文章的话要承受大量的广告。</p>
<p>比如原站点中的文章大概看上去是这样五颜六色的。<br />
<a href="http://www.dbform.com/wp-content/uploads/2010/06/Screen-shot-2010-06-19-at-11.45.48-.png"><img src="http://www.dbform.com/wp-content/uploads/2010/06/Screen-shot-2010-06-19-at-11.45.48--300x237.png" alt="" title="Original DBAsupport.com" width="300" height="237" class="alignnone size-medium wp-image-1176" /></a></p>
<p>使用了Safari5 Reader以后，变成了一篇白底黑字的清爽文章。<br />
<a href="http://www.dbform.com/wp-content/uploads/2010/06/Screen-shot-2010-06-19-at-11.46.35-.png"><img src="http://www.dbform.com/wp-content/uploads/2010/06/Screen-shot-2010-06-19-at-11.46.35--300x204.png" alt="" title="DBAsupport.com in Safari5 Reader" width="300" height="204" class="alignnone size-medium wp-image-1177" /></a></p>
<p>但是目前这个版本的Reader仍然有需要改进的地方，特别是对于可能会有大量代码的技术文章，那些代码在原文中有rss格式化，但是Reader转换以后格式就不正确了，这样会导致较长的代码有一部分无法看到。</p>
<p>仍然是上面这片技术文章。原文中的格式如下图，虽然也不尽美观，但是注意那些小字体的部分，至少可以看到全部文字。<br />
<a href="http://www.dbform.com/wp-content/uploads/2010/06/Screen-shot-2010-06-19-at-12.02.24-.png"><img src="http://www.dbform.com/wp-content/uploads/2010/06/Screen-shot-2010-06-19-at-12.02.24--300x237.png" alt="" title="Post in DBAsupport.com" width="300" height="237" class="alignnone size-medium wp-image-1178" /></a></p>
<p>而在Reader中最后超出页面的那些文字都无法看到了，而且似乎是苹果太在意用户阅读体验了，甚至连横向的滚动栏也没有。是的，我知道Reader中的字体可以缩小，但是即使缩到最小也仍然有一部分在页面之外。<br />
<a href="http://www.dbform.com/wp-content/uploads/2010/06/Screen-shot-2010-06-19-at-12.07.21-.png"><img src="http://www.dbform.com/wp-content/uploads/2010/06/Screen-shot-2010-06-19-at-12.07.21--300x204.png" alt="" title="Posts in Safari5 Reader" width="300" height="204" class="alignnone size-medium wp-image-1179" /></a></p>
<p>Hope will be fixed soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1175.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ACOUG Rocks! (See you guys in 2010 OOW Beijing)</title>
		<link>http://www.dbform.com/html/2010/1170.html</link>
		<comments>http://www.dbform.com/html/2010/1170.html#comments</comments>
		<pubDate>Fri, 18 Jun 2010 10:46:08 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Feeling]]></category>
		<category><![CDATA[Oracle Database]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1170</guid>
		<description><![CDATA[<p>我和eygle倡导创建的ACOUG从成立到现在，已经有了三个多月的时间，我们坚持每个月都能够举办一次线下的技术交流，我们努力让更多的Oracle技术爱好者能够获得分享知识和收获快乐的机会。</p> <p>令我们欣慰的是，我们的努力获得了Oracle官方的认可。在和Oracle IOUC (International Oracle User Group Community)以及 APOUC (Asia Pacific Oracle User Group Community)负责人的交流之后，我们获得了Oracle官方的全面支持。</p> <p>在今后，ACOUG举办的所有地面活动的场地都可以向Oracle官方申请获得，在不冲突的情况下，可以预约Oracle公司的Meeting Room。</p> <p>而更令人兴奋的是，ACOUG将在2010 Oracle Open World (OOW) Beijing的大会上亮相，会场中将有一个大约能够容纳50-100人的房间用于ACOUG的组织介绍以及技术交流，这足以说明Oracle公司对于中国Oracle用户组织的重视。我们也希望通过ACOUG的努力能够让喜爱Oracle技术的朋友们更接近自己的理想。</p> <p>好吧，Let&#8217;s do better.</p> <p>BTW: 6月份的ACOUG活动仍然会在本月的最后一个周六下午举行，详细的活动内容可以参看ACOUG June Event。</p> ]]></description>
			<content:encoded><![CDATA[<p>我和<a href="http://www.eygle.com">eygle</a>倡导创建的<a href="http://www.acoug.org">ACOUG</a>从成立到现在，已经有了三个多月的时间，我们坚持每个月都能够举办一次线下的技术交流，我们努力让更多的Oracle技术爱好者能够获得分享知识和收获快乐的机会。</p>
<p>令我们欣慰的是，我们的努力获得了Oracle官方的认可。在和Oracle IOUC (International Oracle User Group Community)以及 APOUC (Asia Pacific Oracle User Group Community)负责人的交流之后，我们获得了Oracle官方的全面支持。</p>
<p>在今后，ACOUG举办的所有地面活动的场地都可以向Oracle官方申请获得，在不冲突的情况下，可以预约Oracle公司的Meeting Room。</p>
<p>而更令人兴奋的是，<strong>ACOUG将在2010 Oracle Open World (OOW) Beijing的大会上亮相</strong>，会场中将有一个大约能够容纳50-100人的房间用于ACOUG的组织介绍以及技术交流，这足以说明Oracle公司对于中国Oracle用户组织的重视。我们也希望通过ACOUG的努力能够让喜爱Oracle技术的朋友们更接近自己的理想。</p>
<p>好吧，Let&#8217;s do better.</p>
<p>BTW: 6月份的ACOUG活动仍然会在本月的最后一个周六下午举行，详细的活动内容可以参看<a href="http://www.acoug.org/events/105.html">ACOUG June Event</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1170.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Oracle11gR2 on Solaris10</title>
		<link>http://www.dbform.com/html/2010/1165.html</link>
		<comments>http://www.dbform.com/html/2010/1165.html#comments</comments>
		<pubDate>Mon, 07 Jun 2010 08:53:41 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Oracle Database]]></category>
		<category><![CDATA[Oracle11gR2]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1165</guid>
		<description><![CDATA[<p>实际上Oracle11gR2真的在安装上花了不少心思，虽然目前在除了Linux平台的其它操作系统上都还有这样那样的小问题，但是确实已经很方便了。</p> <p>如果要在Solaris10中安装Oracle11gR2的单机数据库，只需要以下简单的步骤。</p> <p>1. 保证/tmp文件系统大于1G 在Soalris10中默认/tmp使用的是swap空间，因此在安装操作系统的时候给swap足够大的空间，比如4G或者8G</p> <p>2. 添加组和用户（只需要最简单的dba组）</p> # groupadd dba # useradd -g dba -d /export/home/oracle -m oracle <p>3. 修改操作系统内核参数（只需要修改shmmax，这里修改为4G）</p> # projadd -U oracle -K \ &#34;project.max-shm-memory=(priv,4096MB,deny)&#34; user.oracle <p>4. 使用磁盘c1t1d0和c1t2d0创建zfs文件系统（ZFS非常方便，自动mount，不再需要修改vfstab文件）</p> # zpool create orapool c1t1d0 c1t2d0 # zfs set mountpoint=/oracle orapool <p>5. runInstaller</p> <p>6. 安装完毕以后再去设置oracle用户的.profile环境变量</p> ]]></description>
			<content:encoded><![CDATA[<p>实际上Oracle11gR2真的在安装上花了不少心思，虽然目前在除了Linux平台的其它操作系统上都还有这样那样的小问题，但是确实已经很方便了。</p>
<p>如果要在Solaris10中安装Oracle11gR2的单机数据库，只需要以下简单的步骤。</p>
<p>1. 保证/tmp文件系统大于1G<br />
在Soalris10中默认/tmp使用的是swap空间，因此在安装操作系统的时候给swap足够大的空间，比如4G或者8G</p>
<p>2. 添加组和用户（只需要最简单的dba组）</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># groupadd dba
# useradd -g dba -d /export/home/oracle -m oracle</pre></div></div>

<p>3. 修改操作系统内核参数（只需要修改shmmax，这里修改为4G）</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># projadd -U oracle -K \
  &quot;project.max-shm-memory=(priv,4096MB,deny)&quot; user.oracle</pre></div></div>

<p>4. 使用磁盘c1t1d0和c1t2d0创建zfs文件系统（ZFS非常方便，自动mount，不再需要修改vfstab文件）</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># zpool create orapool c1t1d0 c1t2d0
# zfs set mountpoint=/oracle orapool</pre></div></div>

<p>5. runInstaller</p>
<p>6. 安装完毕以后再去设置oracle用户的.profile环境变量</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1165.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
