﻿<?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-gdufo-随笔分类-Database (oracle, sqlser,MYSQL)</title><link>http://www.blogjava.net/gdufo/category/32575.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 23 May 2014 15:43:27 GMT</lastBuildDate><pubDate>Fri, 23 May 2014 15:43:27 GMT</pubDate><ttl>60</ttl><item><title>RedHat Linux6.0安装Oracle 11g单机</title><link>http://www.blogjava.net/gdufo/archive/2014/03/19/411213.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Wed, 19 Mar 2014 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2014/03/19/411213.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/411213.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2014/03/19/411213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/411213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/411213.html</trackback:ping><description><![CDATA[<p style="margin-bottom:0pt; margin-top:0pt; text-align:center; "><span style=" font-weight:bold; font-size:22.0000pt; font-family:'宋体'; ">RedHat&nbsp;Linux6.0安装Oracle&nbsp;11g单机</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-align:center; ">&nbsp;</p><p style="margin-left:21.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="color:#ff0000; font-weight:bold; font-size:16.0000pt; font-family:'Wingdings'; ">&#216;&nbsp;</span><span style=" color:#ff0000; font-weight:bold; font-size:16.0000pt; font-family:'宋体'; ">第一步配置YUM仓库</span></p><p style="margin-left:36.0000pt; text-indent:-36.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="font-size:14.0000pt; font-family:'Times New Roman'; ">1、&nbsp;</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">挂载光盘</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">mount&nbsp;/dev/cdrom&nbsp;/media</span></p><p style="margin-left:36.0000pt; text-indent:-36.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="font-size:14.0000pt; font-family:'Times New Roman'; ">2、&nbsp;</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">复制光盘里头的rpm包到rpm包源目录</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">cp&nbsp;</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">&#8211;</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">rf&nbsp;&nbsp;/media/Packages&nbsp;&nbsp;/mnt</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">&nbsp;（也可以直接通过桌面COPY）</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:10.5000pt; font-family:'宋体'; ">（这里可以取消挂在了&nbsp;umount&nbsp;/dev/cdrom，顺便删除media目录&nbsp;rm&nbsp;</span><span style=" color:#ff0000; font-weight:bold; font-size:10.5000pt; font-family:'Times New Roman'; ">&#8211;</span><span style=" color:#ff0000; font-weight:bold; font-size:10.5000pt; font-family:'宋体'; ">rf&nbsp;/media）</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-left:36.0000pt; text-indent:-36.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="font-size:14.0000pt; font-family:'Times New Roman'; ">3、&nbsp;</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">进入你自己创建的YUM仓库，并安装createrepo工具</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">cd&nbsp;/mnt/Packages</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">rpm&nbsp;</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">&#8211;</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">ivh&nbsp;createrepo-0.4.11-3.e15.noarch.rpm</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">(可以在桌面手动双击安装)</span></p><p style="margin-left:36.0000pt; text-indent:-36.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="font-size:14.0000pt; font-family:'Times New Roman'; ">4、&nbsp;</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">重建仓库信息配置文件</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">createrepo&nbsp;&nbsp;/mnt&nbsp;</span>&nbsp;<span style=" color:#ff0000; font-weight:bold; font-size:10.5000pt; font-family:'宋体'; ">（这个配置文件在&nbsp;/mnt/repodata/下）</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-left:36.0000pt; text-indent:-36.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="font-size:14.0000pt; font-family:'Times New Roman'; ">5、&nbsp;</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">创建YUM配置文件</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">cd&nbsp;&nbsp;/etc/yum.repos.d/</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">touch&nbsp;yumredhat.repo</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">vim&nbsp;yumredhat.repo</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">添加如下信息：</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">[rhel6]</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">name=Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux6</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">baseurl=file:///mnt</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">enabled=1</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">gpgcheck=0</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">gpgfile=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">6、测试</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">yum&nbsp;list</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">yum&nbsp;clear&nbsp;all</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-left:21.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="color:#ff0000; font-weight:bold; font-size:16.0000pt; font-family:'Wingdings'; ">&#216;&nbsp;</span><span style=" color:#ff0000; font-weight:bold; font-size:16.0000pt; font-family:'宋体'; ">第二步Oracle安装前系统参数的配置以及包的安装</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; text-align:center; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">（安装Oracle必须关闭掉防火墙以及selinux）</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">service&nbsp;iptables&nbsp;stop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">vim&nbsp;/etc/selinux/config</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">SELINUX=disabled</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">========================</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">想办法把下面2个文件传进&nbsp;Linux&nbsp;操作系统里面去</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">linux_11gR2_database_1of2.zip</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">linux_11gR2_database_2of2.zip</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">要借助一个软件&nbsp;FileZilla_3.3.3_win32-setup.exe&nbsp;&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">上传完毕后，&nbsp;使用&nbsp;unzip&nbsp;命令解压刚才上传的2个文件，&nbsp;命令格式如下：</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">unzip&nbsp;文件名</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">======================================</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">检查相关的开发工具和一些包</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">检查命令格式如下：</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">rpm&nbsp;-qa&nbsp;|&nbsp;grep&nbsp;名字</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">binutils-2.17.50.0.6</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">compat-libstdc++-33-3.2.3</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">elfutils-libelf-0.125</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">elfutils-libelf-devel-0.125</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">	</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#000000; font-size:14.0000pt; font-family:'宋体'; ">#</span><span style=" color:#000000; font-size:14.0000pt; font-family:'Times New Roman'; ">elfutils-libelf-devel-static-0.125</span>&nbsp;<span style=" color:#0000ff; font-weight:bold; font-size:12.0000pt; font-family:'宋体'; ">(RedHat&nbsp;Linux6.0中无此包，CentOS中有)</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">gcc-4.1.2</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">gcc-c++-4.1.2</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">	</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">glibc-2.5-24</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">glibc-common-2.5</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">	</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">glibc-devel-2.5</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">glibc-headers-2.5</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">kernel-headers-2.6.18</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">ksh-20060214</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">	</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">libaio-0.3.106&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">libaio-devel-0.3.106</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">libgcc-4.1.2</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">libgomp-4.1.2</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">libstdc++-4.1.2</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">libstdc++-devel-4.1.2</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">	</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">make-3.81</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">	</span>&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">numactl-devel-0.9.8.i386</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">	</span>&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">sysstat-7.0.2</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">unixODBC-2.2.11&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">unixODBC-devel-2.2.11</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">======================================</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">利用配置好的YUM仓库安装包</span></p><p style="margin-bottom:0pt; margin-top:0pt; border-bottom:0.5000pt double #000000; padding:0pt 0pt 0pt 0pt ; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">yum&nbsp;install&nbsp;(包名).rpm</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">创建用户以及修改配置参数</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">groupadd&nbsp;oinstall</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">groupadd&nbsp;dba</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">mkdir&nbsp;-p&nbsp;/u01/oracle</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//路径可修改，看实际的生产环节</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">添加一个oracle用户，&nbsp;根目录是&nbsp;/u01/oracle，&nbsp;主的组是&nbsp;oinstall&nbsp;副的组是dba</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">useradd&nbsp;-g&nbsp;oinstall&nbsp;-G&nbsp;dba&nbsp;-d&nbsp;/u01/oracle&nbsp;oracle</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">cp&nbsp;/etc/skel/.bash_profile&nbsp;/u01/oracle</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">cp&nbsp;/etc/skel/.bashrc&nbsp;/u01/oracle</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">cp&nbsp;/etc/skel/.bash_logout&nbsp;/u01/oracle</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">为oracle用户设置密码&nbsp;123456&nbsp;&nbsp;&nbsp;/111111</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">passwd&nbsp;oracle</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">/]#ls&nbsp;-l</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">/]#chown&nbsp;-R&nbsp;oracle:oinstall&nbsp;u01</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">/]#ls&nbsp;-l</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">检查&nbsp;nobody&nbsp;是否存在&nbsp;，&nbsp;&nbsp;id&nbsp;nobody</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">缺省存在的。如果不存在&nbsp;#&nbsp;/usr/sbin/useradd&nbsp;-g&nbsp;nobody</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">========================================</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">vi&nbsp;/etc/sysctl.conf</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">fs.aio-max-nr&nbsp;=&nbsp;1048576</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">fs.file-max&nbsp;=&nbsp;6815744</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">kernel.shmall&nbsp;=&nbsp;2097152</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">kernel.shmmax&nbsp;=&nbsp;536870912</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">kernel.shmmni&nbsp;=&nbsp;4096</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">kernel.sem&nbsp;=&nbsp;250&nbsp;32000&nbsp;100&nbsp;128</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">net.ipv4.ip_local_port_range&nbsp;=&nbsp;9000&nbsp;65500</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">net.core.rmem_default&nbsp;=&nbsp;262144</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">net.core.rmem_max&nbsp;=&nbsp;4194304</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">net.core.wmem_default&nbsp;=&nbsp;262144</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">net.core.wmem_max&nbsp;=&nbsp;1048586</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">-------------</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">vi&nbsp;/etc/security/limits.conf</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soft&nbsp;&nbsp;&nbsp;&nbsp;nproc&nbsp;&nbsp;&nbsp;2047</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hard&nbsp;&nbsp;&nbsp;&nbsp;nproc&nbsp;&nbsp;&nbsp;16384</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soft&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;1024</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hard&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;65536</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">------------</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">vi&nbsp;/etc/pam.d/login&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">session&nbsp;&nbsp;&nbsp;&nbsp;required&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pam_limits.so</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">=================================================</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">设置oracle&nbsp;用户环境变量</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">su&nbsp;-&nbsp;oracle</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">pwd</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">ls&nbsp;-la</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">---------------</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">vi&nbsp;.bash_profile</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">ORACLE_BASE=/u01</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">ORACLE_HOME=$ORACLE_BASE/oracle</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">ORACLE_SID=</span><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">ORCLTEST</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">export&nbsp;ORACLE_BASE&nbsp;ORACLE_HOME&nbsp;ORACLE_SID&nbsp;PATH</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">===================================</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">mv&nbsp;database&nbsp;/u01/</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">cd&nbsp;/u01</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">ls&nbsp;-l</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">&nbsp;chown&nbsp;-R&nbsp;oracle:oinstall&nbsp;database/</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">===========</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-left:21.0000pt; text-indent:-21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="color:#ff0000; font-weight:bold; font-size:16.0000pt; font-family:'Wingdings'; ">&#216;&nbsp;</span><span style=" color:#ff0000; font-weight:bold; font-size:16.0000pt; font-family:'宋体'; ">第三步正式开始安装.Oracle.11g.r2(图形界面安装)</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">使用oracle账号&nbsp;登陆图形界面&nbsp;进行安装</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">运行终端&nbsp;Terminal</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">cd&nbsp;/u01/database</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">./runInstalle</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">r</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">运行./runInstaller</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">【</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">INS-06101</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">】</span><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">IP&nbsp;address&nbsp;of&nbsp;localhost&nbsp;could&nbsp;not&nbsp;be&nbsp;determined&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">Are&nbsp;you&nbsp;sure&nbsp;you&nbsp;want&nbsp;to&nbsp;continue?</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff0000; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">这里需要指定一个IP与localhost</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">Vi&nbsp;/etc/hosts</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">#127.0.0.1&nbsp;&nbsp;&nbsp;localhost&nbsp;localhost.localdomain&nbsp;localhost4&nbsp;localhost4.localdomain4</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">10.110.12.132&nbsp;ORCLDEV&nbsp;&nbsp;ORCLDEV.ELLINGTON</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#0000ff; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">::1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localhost&nbsp;localhost.localdomain&nbsp;localhost6&nbsp;localhost6.localdomain6</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">运行./runInstaller出现中文汉字为方框</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">在运行runinstaller之前，</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">export&nbsp;LANG=C</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">export&nbsp;LC_ALL=C</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Installation&nbsp;Optiong</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">install&nbsp;database&nbsp;software&nbsp;only</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Grid&nbsp;Options</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Single&nbsp;instance&nbsp;database&nbsp;installation</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Product&nbsp;Languages</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">English</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Database&nbsp;Edition</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Enterprise&nbsp;Edition&nbsp;(3.95)</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Installation&nbsp;Location</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Oracle&nbsp;Base:&nbsp;/u01</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Software&nbsp;Loacation:&nbsp;/u01/oracle</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">提示：&nbsp;yes</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Create&nbsp;Inventory</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">mkdir&nbsp;/oraInventory</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">chown&nbsp;-R&nbsp;oracle:oinstall&nbsp;oraInventory</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Operating&nbsp;System&nbsp;Groups</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Next&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Prerequis&nbsp;ite&nbsp;Checks</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Ignore&nbsp;All</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Summary</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Finish</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Install&nbsp;Product</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">安装完毕，&nbsp;提示执行&nbsp;2个脚本</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">//root用户执行</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">/oraInventory/orainstRoot.sh</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">/u01/oracle/root.sh</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">直接按回车，&nbsp;缺省值就可以</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Finish</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">	</span><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">The&nbsp;installation&nbsp;of&nbsp;Oracle&nbsp;Database&nbsp;was&nbsp;successful</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">====================================</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">上面只是安装了软件，&nbsp;数据库没有创建，&nbsp;还有配置&nbsp;监听器&nbsp;Listener</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">netca</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">一直默认下一步&nbsp;，&nbsp;呵呵，&nbsp;最后&nbsp;Finish</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">ps&nbsp;-ef&nbsp;可以查看Listener是否配置成功</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">-----------</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">dbca</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">一直&nbsp;Next,</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">Global&nbsp;Database&nbsp;Name&nbsp;和&nbsp;SID&nbsp;都是输入&nbsp;wilson</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">选择&nbsp;User&nbsp;the&nbsp;Same.....All&nbsp;Accounts</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">密码:&nbsp;123456</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">选择&nbsp;Sample&nbsp;Schemas</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">Memory&nbsp;内存分配，默认就可以了</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" color:#ff0000; font-size:14.0000pt; font-family:'宋体'; ">Character&nbsp;Sets</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">&nbsp;选择&nbsp;中文GBK&nbsp;&nbsp;</span><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">Use&nbsp;Unicode(AL32UTF8)</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">然后一直&nbsp;Next&nbsp;，&nbsp;到最后&nbsp;Finish</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">弹出一个&nbsp;Confirmation&nbsp;,&nbsp;点击&nbsp;OK&nbsp;就可以了，&nbsp;然后自动进行安装</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">安装到目录&nbsp;/u01/oradata/wilson</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">	</span><span style=" font-size:14.0000pt; font-family:'宋体'; ">&nbsp;&nbsp;&nbsp;/u01/等等。。。&nbsp;会发现多了很多文件。</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">[oracle@localhost&nbsp;~]$&nbsp;sqlplus&nbsp;/nolog</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">//中文字符显示？号解决方法</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">编辑并运行.bash_profile</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">export&nbsp;NLS_LANG=AMERICAN_AMERICA.UTF8</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">（如果是GBK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">export&nbsp;NLS_LANG=american_america.ZHS16GBK）</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'Times New Roman'; ">export&nbsp;NLS_LANG=AMERICAN_AMERICA.ZHS16GBK</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">注销后生效</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">这样再重新进入sqlplus</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" color:#ff6600; font-weight:bold; font-size:14.0000pt; font-family:'宋体'; ">已经不会是乱码。</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL*Plus:&nbsp;Release&nbsp;11.2.0.1.0&nbsp;Production&nbsp;on&nbsp;Fri&nbsp;Jun&nbsp;25&nbsp;15:05:54&nbsp;2010</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Copyright&nbsp;(c)&nbsp;1982,&nbsp;2009,&nbsp;Oracle.&nbsp;&nbsp;All&nbsp;rights&nbsp;reserved.</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;conn&nbsp;/&nbsp;as&nbsp;sysdba</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Connected&nbsp;to&nbsp;an&nbsp;idle&nbsp;instance.</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">出现错误&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;startup</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">查看当前用户的表名</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;select&nbsp;table_name&nbsp;from&nbsp;user_tables;</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;create&nbsp;table&nbsp;testUser(&nbsp;id&nbsp;integer,name&nbsp;char(10));</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Table&nbsp;created.</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;insert&nbsp;into&nbsp;testUser&nbsp;values(0,'Jack');</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">1&nbsp;row&nbsp;created.</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;commit;</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">Commit&nbsp;complete.</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;testUser;</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID&nbsp;NAME</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">----------&nbsp;----------</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Jack</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'宋体'; ">关闭数据库</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;&nbsp;shutdown&nbsp;immediate</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:14.0000pt; font-family:'Times New Roman'; ">SQL&gt;&nbsp;&nbsp;quit</span></p><p style="margin-bottom:0pt; margin-top:0pt; ">&nbsp;</p><img src ="http://www.blogjava.net/gdufo/aggbug/411213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2014-03-19 10:41 <a href="http://www.blogjava.net/gdufo/archive/2014/03/19/411213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL-Server查询失效索引</title><link>http://www.blogjava.net/gdufo/archive/2014/02/27/410359.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Thu, 27 Feb 2014 00:53:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2014/02/27/410359.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/410359.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2014/02/27/410359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/410359.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/410359.html</trackback:ping><description><![CDATA[<div>SELECT&nbsp; TOP 10 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Total Cost]&nbsp; = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , avg_user_impact<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , TableName = statement<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , [EqualityUsage] = equality_columns <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , [InequalityUsage] = inequality_columns<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , [Include Cloumns] = included_columns<br />FROM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.dm_db_missing_index_groups g <br />INNER JOIN&nbsp;&nbsp;&nbsp; sys.dm_db_missing_index_group_stats s <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON s.group_handle = g.index_group_handle <br />INNER JOIN&nbsp;&nbsp;&nbsp; sys.dm_db_missing_index_details d <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON d.index_handle = g.index_handle<br />ORDER BY [Total Cost] DESC;<br />================================<br />CREATE NONCLUSTERED INDEX IX_Kq_RecordQk_QKRMan<br />&nbsp;&nbsp;&nbsp;&nbsp; ON Kq_RecordQk ([QKRMan])<br />&nbsp;&nbsp;&nbsp;&nbsp; include([COMP_CODE], [QKREMPID], [ApStatus])</div><img src ="http://www.blogjava.net/gdufo/aggbug/410359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2014-02-27 08:53 <a href="http://www.blogjava.net/gdufo/archive/2014/02/27/410359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql配置参数性能优化选项:Max_connections特性和配置优化</title><link>http://www.blogjava.net/gdufo/archive/2014/01/27/409383.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Mon, 27 Jan 2014 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2014/01/27/409383.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/409383.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2014/01/27/409383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/409383.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/409383.html</trackback:ping><description><![CDATA[<div>http://www.itokit.com/2012/1018/74794.html</div><br /><div>MySQL的max_connections参数用来设置最大连接（用户）数。每个连接<strong><a href="http://www.itokit.com/h_database/mysql/" title="mysql">MySQL</a></strong>的用户均算作一个连接，max_connections的默认值为100。本文将讲解此参数的详细作用与性能影响。 <div><span style="font-size: 18px; "><strong>max_connections配置参数的相关的特性</strong></span></div> <div>1、MySQL无论如何都会保留一个用于管理员（SUPER）登陆的连接，用于管理员连接数据库进行维护操作，即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1；</div> <div>2、这个参数实际起作用的最大值（实际最大可连接数）为16384，即该参数最大值不能超过16384，即使超过也以16384为准；</div> <div>3、增加max_connections参数的值，不会占用太多系统资源。系统资源（CPU、内存）的占用主要取决于查询的密度、效率等；</div> <div>4、该参数设置过小的最明显特征是出现&#8220;Too many connections&#8221;错误；</div> <div>&nbsp;</div> <div><span style="font-size: 18px; "><strong>如何去调整max_connections参数的值</strong></span>（<span style="color: #0000ff; ">有以下三个方法可调整</span>）</div> <div>调整此参数的方法有几种，既可以在编译的时候设置，也可以在MySQL配置文件 my.cnf 中设置，也可以直接使用命令调整并立即生效。<br /> &nbsp;</div> <div><span style="color: #ff00ff; "><strong>1、在编译的时候设置默认最大连接数</strong></span></div> <div>打开MySQL的源码，进入sql目录，修改mysqld.cc文件：</div> <div> <div>C/C++ Code<span style="cursor:pointer">复制内容到剪贴板</span></div> <div id="code_4661"> <ol start="1"><li><span>{&#8220;max_connections&#8221;,&nbsp;OPT_MAX_CONNECTIONS,&nbsp;&nbsp;</span></li><li>&#8220;The&nbsp;number&nbsp;of&nbsp;simultaneous&nbsp;clients&nbsp;allowed.&#8221;,&nbsp;(gptr*)&nbsp;&amp;max_connections,&nbsp;&nbsp;</li><li>(gptr*)&nbsp;&amp;max_connections,&nbsp;0,&nbsp;GET_ULONG,&nbsp;REQUIRED_ARG,&nbsp;<span style="color: #ff0000; ">100,&nbsp;1,&nbsp;16384,&nbsp;0,&nbsp;1,&nbsp;&nbsp;</span></li><li>0},&nbsp;&nbsp;</li></ol> </div> </div> <div>红色的&#8220;<span style="color: #ff0000; ">100</span>&#8221;即为该参数的默认值，修改为想要的数值，存盘退出。然后执行</div> <div> <div>C/C++ Code<span style="cursor:pointer">复制内容到剪贴板</span></div> <div id="code_9911"> <ol start="1"><li><span>./configure;make;make&nbsp;install&nbsp;&nbsp;</span></li></ol> </div> </div> <div>&nbsp;</div> <div>重新编译安装MySQL；注意，由于编译安装且修改了MySQL源码，此操作最好在安装MySQL之前进行；</div> <div><br /> <span style="color: #ff00ff; "><strong>2、在配置文件my.cnf中设置max_connections的值</strong></span></div> <div>打开MySQL配置文件my.cnf</div> <div>  <div id="code_3200"> <ol start="1"><li><span>[root@www&nbsp;~]#&nbsp;vi&nbsp;/etc/my.cnf&nbsp;&nbsp;</span></li></ol> </div> </div> <div>&nbsp;</div> <div>找到max_connections一行，修改为（如果没有，则自己添加），</div> <div>max_connections = 1000</div> <div>上面的1000即该参数的值。<br /> &nbsp;</div> <div><span style="color: #ff00ff; "><strong>3、实时（临时）修改此参数的值</strong></span></div> <div>首先登陆mysql，执行如下命令：</div> <div> <div>C/C++ Code<span style="cursor:pointer">复制内容到剪贴板</span></div> <div id="code_8327"> <ol start="1"><li><span>[root@www&nbsp;~]#&nbsp;mysql&nbsp;-uroot&nbsp;-p&nbsp;&nbsp;</span></li></ol> </div> </div> <div>&nbsp;</div> <div>然后输入MySQL Root的密码。</div> <div>查看当前的Max_connections参数值：</div> <div>  <div id="code_6737"> <ol start="1"><li><span>mysql&gt;&nbsp;SELECT&nbsp;@@MAX_CONNECTIONS&nbsp;AS&nbsp;'Max&nbsp;Connections';&nbsp;&nbsp;</span></li></ol> </div> </div> <div>&nbsp;</div> <div>设置该参数的值：</div> <div>  <div id="code_4789"> <ol start="1"><li><span>mysql&gt;&nbsp;</span><span style="color: #ff0000;">set&nbsp;GLOBAL&nbsp;max_connections=1000;&nbsp;&nbsp;</span></li></ol> </div> </div> <div>（注意上面命令的大小写）</div> <div>修改完成后实时生效，无需重启MySQL。<br /> <br /> <span style="font-size: 18px; "><strong>mysql的max_connections的总结</strong></span></div> <div>总体来说，该参数在服务器资源够用的情况下应该尽量设置大，以满足多个客户端同时连接的需求。否则将会出现类似&#8220;Too many connections&#8221;的错误。</div></div><img src ="http://www.blogjava.net/gdufo/aggbug/409383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2014-01-27 15:12 <a href="http://www.blogjava.net/gdufo/archive/2014/01/27/409383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPComm的一点小诀窍 spcomm的问题导致数据丢失  </title><link>http://www.blogjava.net/gdufo/archive/2013/11/15/406364.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Fri, 15 Nov 2013 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/11/15/406364.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/406364.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2013/11/15/406364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/406364.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/406364.html</trackback:ping><description><![CDATA[<div><div> 	      <div> 	      	<div> 		      <h3>SPComm的一点小诀窍 spcomm的问题导致数据丢失&nbsp;&nbsp;</h3> 		      <p clearfix="" nbw-act=""  fc06"="" style="line-height:20px;"> 		        <span> 		           		          2010-01-08 09:50:51|&nbsp;&nbsp;分类： 		          <a m2a"="" href="http://zxmpmsj.blog.163.com/blog/#m=0&amp;t=1&amp;c=fks_087069083087089069083081080095085084087070080081082068082" title="串口">串口</a> 		           		        </span> 		        <span fc07=""  ztag"="">|<span fc03"="" id="$_fontswitch">字号</span></span><span pnt=""  fc03"="" id="$_blog_subscribe">&nbsp;<a>订阅</a></span> 		      </p> 		    </div> 	      </div>         </div>          <div>                  </div>                   <p>最近几天完成了BiasDAC的程序编写。调试的过程还算比较顺利，除了几个有点bt的小问题。其中一个困扰了我两三天的时间，今天上午终于将其解决。</p>  <p>由于BiasDAC是用RS232 Serial Port通信的，延用之前的程序，使用了Delphi的SPComm控件。在之前的使用中，SPComm控件一直工作正常，使用的是一般的string进行消息的传递。</p>  <p>而BiasDAC由于通信协议的限制，消息的发送使用的是hex方式，会用到从0x00到0xFF所有的这些字符。在调试中发现，发送0x11和0x13之后，SPComm的工作就会不正常。</p>  <p>首先是0x11发送之后，返回的0x11消息会被忽略；其次0x13发送之后，只能返回很有限的消息，而且似乎Serial Port就此关闭，如果再发送消息，就会造成Serial Port失去响应，只能通过重新启动计算机才能恢复。</p>  <p>后来上网上查询，原来不能正常处理0x11和0x13的问题早就存在，原因是SPComm空间中两个属性的存在。</p>  <p>OutX_XonXOffFlow/InX_XonXoffFlow：这个属性是指进行发送/接收时的软件握手标志，两个握手信号之间的数据被认为是通讯数据，收到握手信号后，通讯就中止了。</p>  <p>FOutx_XonXoffFlow := True;<br />FInx_XonXoffFlow := True; </p>  <p>默认的初始化中，这两个属性是默认开启的。 </p>  <p>XOffChar/XOnChar：这是指握手的字节，默认的初始中，有</p>  <p>FXonChar := chr($11);<br />FXoffChar := chr($13); </p>  <p>至此，真相大白。0x11，0x13被占用为通讯握手信号，自然不会得到正确的处理。 </p>  <p>问题找到了，解决也很容易。只需要在Comm的初始化中，自己定义 </p>  <p><span style="color: red;">Comm.Inx_XonXoffFlow:=False;</span><br /><span style="color: red;">Comm.Outx_XonXoffFlow:=False;</span></p>  <p>关闭软件握手功能即可。在一般通讯中，硬件已经具备了握手功能，所以也不会影响到正常的Comm通讯。</p></div><img src ="http://www.blogjava.net/gdufo/aggbug/406364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-11-15 11:13 <a href="http://www.blogjava.net/gdufo/archive/2013/11/15/406364.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>杀掉SQLServer某些链接进程</title><link>http://www.blogjava.net/gdufo/archive/2013/10/29/405734.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 29 Oct 2013 00:11:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/10/29/405734.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/405734.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2013/10/29/405734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/405734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/405734.html</trackback:ping><description><![CDATA[<br />
<p>select * from sysprocesses <br />where dbid in (select dbid from sysdatabases where name='overtime')<br />and program_name ='PHP 5'</p>
<p><br />USE master<br />DECLARE @spid int<br />DECLARE CUR CURSOR<br />FOR SELECT spid FROM sysprocesses WHERE dbid = 11 and program_name ='PHP 5'<br />OPEN CUR<br />FETCH NEXT FROM CUR INTO @spid<br />WHILE @@FETCH_STATUS = 0<br />BEGIN<br />&nbsp; EXEC ('KILL ' + @spid )<br />FETCH NEXT FROM CUR INTO @spid<br />END<br />CLOSE CUR<br />DEALLOCATE CUR</p><img src ="http://www.blogjava.net/gdufo/aggbug/405734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-10-29 08:11 <a href="http://www.blogjava.net/gdufo/archive/2013/10/29/405734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL中的配置参数interactive_timeout和wait_timeout(可能导致过多sleep进程的两个参数 Too many connections) </title><link>http://www.blogjava.net/gdufo/archive/2013/10/23/405554.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Wed, 23 Oct 2013 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/10/23/405554.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/405554.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2013/10/23/405554.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/405554.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/405554.html</trackback:ping><description><![CDATA[<h2><a id="cb_post_title_url" href="http://www.cnblogs.com/jiunadianshi/articles/2475475.html">MySQL中的配置参数interactive_timeout和wait_timeout(可能导致过多sleep进程的两个参数)</a> </h2>
<div class="postText">
<div id="cnblogs_post_body">
<p>1)interactive_timeout:<br />参数含义：服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。<br />参数默认值：28800秒（8小时）<br /><br />(2)wait_timeout:<br />参数含义：服务器关闭非交互连接之前等待活动的秒数。<br />在线程启动时，根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值，取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。<br />参数默认值：28800秒（8小时）<br /><br />MySQL服务器所支持的最大连接数是有上限的，因为每个连接的建立都会消耗内存，因此我们希望客户端在连接到My<a class="relatedlink" href="http://www.itpub.net/pubtree/?node=95" target="_blank">SQL Server</a>处理完相应的操作后，应该断开连接并释放占用的内存。如果你的MySQL Server有大量的闲置连接，他们不仅会白白消耗内存，而且如果连接一直在累加而不断开，最终肯定会达到MySQL Server的连接上限数，这会报'too many connections'的错误。对于wait_timeout的值设定，应该根据系统的运行情况来判断。在系统运行一段时间后，可以通过show processlist命令查看当前系统的连接状态，如果发现有大量的sleep状态的连接进程，则说明该参数设置的过大，可以进行适当的调整小些。<br /><br />问题：<br />&nbsp; &nbsp;如果在配置文件my.cnf中只设置参数wait_timeout=100,则重启服务器后进入，执行:<br />&nbsp; &nbsp;Mysql&gt; show variables like &#8220;%timeout%&#8221;;<br />会发现参数设置并未生效，仍然为28800（即默认的8个小时）。<br />查询资料后，要同时设置interactive_timeout和wait_timeout才会生效。<br />【mysqld】<br />wait_timeout=100<br />interactive_timeout=100<br />重启MySQL Server进入后，查看设置已经生效。<br /><br /><br /><span style="color: red"><strong><span style="color: blue">问题1</span>：这里为什么要同时设置interactive_timeout,wait_timeout的设置才会生效？</strong><br /><br /><strong><span style="color: blue">问题2</span>：interactive的值如果设置的和wait_timeout不同，为什么Interactive_timeout会覆盖wait_timeout?</strong><br /><br /><strong><span style="color: blue">问题3</span>：在进行MySQL优化时，因为interactive_timeout决定的是交互连接的时间长短，而wait_timeout决定的是非交互连接的时间长短。如果在进行连接配置时mysql_real_connect()最后一个参数client_flag不设置为CLIENT_INTERACTIVE，是不是interactive_timeout的值不会覆盖wait_timeout?</strong><br /><br /><strong><span style="color: blue">问题4：</span>为了减少长连接的数量，在设</strong><strong>置优化时是不是可以将interactive_timeout的值设置的大些，而wait_timeout的值设置的小些？但是问题2的描述好像又不允许这样。。。</strong><br /></span></p></div></div><img src ="http://www.blogjava.net/gdufo/aggbug/405554.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-10-23 15:16 <a href="http://www.blogjava.net/gdufo/archive/2013/10/23/405554.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查询oracle被锁对象并解锁</title><link>http://www.blogjava.net/gdufo/archive/2013/10/09/404807.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Wed, 09 Oct 2013 08:59:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/10/09/404807.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/404807.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2013/10/09/404807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/404807.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/404807.html</trackback:ping><description><![CDATA[<p><strong>1、查询oracle被锁对象及其语句</strong></p>
<div>
<div id="highlighter_460686" class="syntaxhighlighter nogutter  sql ie">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="sql keyword"><strong><font color="#7f0055">SELECT</font></strong></code> <code class="sql plain">a_s.owner, </code></div>
<div class="line number2 index1 alt1"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">a_s.object_name, </code></div>
<div class="line number3 index2 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">a_s.object_type, </code></div>
<div class="line number4 index3 alt1"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VN.SID, </code></div>
<div class="line number5 index4 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VN.SERIAL#, </code></div>
<div class="line number6 index5 alt1"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VS.SPID </code><code class="sql string"><font color="#2a00ff">"OS_PID"</font></code><code class="sql plain">, </code></div>
<div class="line number7 index6 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VN.PROCESS </code><code class="sql string"><font color="#2a00ff">"CLIENT_PID"</font></code><code class="sql plain">, </code></div>
<div class="line number8 index7 alt1"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VN.USERNAME, </code></div>
<div class="line number9 index8 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VN.OSUSER, </code></div>
<div class="line number10 index9 alt1"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VN.MACHINE </code><code class="sql string"><font color="#2a00ff">"HOSTNAME"</font></code> <code class="sql plain">, </code></div>
<div class="line number11 index10 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VN.TERMINAL, </code></div>
<div class="line number12 index11 alt1"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">VN.PROGRAM, </code></div>
<div class="line number13 index12 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">TO_CHAR(VN.LOGON_TIME,</code><code class="sql string"><font color="#2a00ff">'YYYY-MM-DD HH24:MI:SS'</font></code><code class="sql plain">)</code><code class="sql string"><font color="#2a00ff">"LOGIN_TIME"</font></code><code class="sql plain">, </code></div>
<div class="line number14 index13 alt1"><code class="sql spaces">&nbsp;&nbsp;</code><font color="#2a00ff"><code class="sql string">'alter system kill session '</code><code class="sql string">''</code></font><code class="sql plain">||vn.sid||</code><code class="sql string"><font color="#2a00ff">','</font></code><code class="sql plain">||vn.serial#||</code><font color="#2a00ff"><code class="sql string">''</code><code class="sql string">';'</code></font> <code class="sql string"><font color="#2a00ff">"ORACKE_KILL"</font></code><code class="sql plain">, </code></div>
<div class="line number15 index14 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql string"><font color="#2a00ff">'kill -9 '</font></code><code class="sql plain">|| VS.SPID </code><code class="sql string"><font color="#2a00ff">"OS_KILL"</font></code></div>
<div class="line number16 index15 alt1"><code class="sql keyword"><strong><font color="#7f0055">FROM</font></strong></code> <code class="sql plain">ALL_OBJECTS A_S, </code></div>
<div class="line number17 index16 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">V$LOCKED_OBJECT V_T, </code></div>
<div class="line number18 index17 alt1"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">V$SESSION VN, </code></div>
<div class="line number19 index18 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql plain">V$PROCESS VS </code></div>
<div class="line number20 index19 alt1"><code class="sql keyword"><strong><font color="#7f0055">WHERE</font></strong></code> <code class="sql plain">A_S.OBJECT_ID=V_T.OBJECT_ID </code></div>
<div class="line number21 index20 alt2"><code class="sql color1"><font color="#808080">AND</font></code> <code class="sql plain">V_T.SESSION_ID =VN.SID </code></div>
<div class="line number22 index21 alt1"><code class="sql color1"><font color="#808080">AND</font></code> <code class="sql plain">VS.ADDR=VN.PADDR </code></div>
<div class="line number23 index22 alt2"><code class="sql color1"><font color="#808080">AND</font></code> <code class="sql plain">VN.USERNAME </code><code class="sql color1"><font color="#808080">NOT</font></code> <code class="sql color1"><font color="#808080">IN</font></code><code class="sql plain">(</code><code class="sql string"><font color="#2a00ff">'SYSMAN'</font></code><code class="sql plain">,</code><code class="sql string"><font color="#2a00ff">'SYS'</font></code><code class="sql plain">);</code></div></div></td></tr></tbody></table></div></div>
<p><strong>2、查询该sid的sql语句</strong></p>
<div>
<div id="highlighter_404402" class="syntaxhighlighter nogutter  sql ie">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="sql keyword"><strong><font color="#7f0055">select</font></strong></code> <code class="sql plain">* </code><code class="sql keyword"><strong><font color="#7f0055">from</font></strong></code> <code class="sql plain">v$sql vl,v$session vn </code></div>
<div class="line number2 index1 alt1"><code class="sql keyword"><strong><font color="#7f0055">where</font></strong></code> <code class="sql plain">vl.ADDRESS= decode(vn.SQL_ADDRESS,</code><code class="sql color1"><font color="#808080">null</font></code><code class="sql plain">,vn.PREV_SQL_ADDR,VN.SQL_ADDRESS) </code></div>
<div class="line number3 index2 alt2"><code class="sql color1"><font color="#808080">and</font></code> <code class="sql plain">vn.sid=&amp;sid;</code></div></div></td></tr></tbody></table></div></div>
<p><strong>3、解锁</strong></p>
<div>
<div id="highlighter_402995" class="syntaxhighlighter nogutter  sql ie">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="sql keyword"><strong><font color="#7f0055">alter</font></strong></code> <code class="sql plain">system kill session </code><code class="sql string"><font color="#2a00ff">'sid,serial#'</font></code><code class="sql plain">; </code></div>
<div class="line number2 index1 alt1"><code class="sql comments"><font color="#3f5fbf">--note:不能kill自身</font></code></div></div></td></tr></tbody></table></div></div>
<p>4、查询被锁对象增强版</p>
<div>
<div id="highlighter_807966" class="syntaxhighlighter nogutter  sql ie">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="sql keyword"><strong><font color="#7f0055">SELECT</font></strong></code> <code class="sql plain">DDL.OWNER </code><code class="sql keyword"><strong><font color="#7f0055">AS</font></strong></code> <code class="sql plain">用户, </code></div>
<div class="line number2 index1 alt1"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">DDL.</code><code class="sql keyword"><strong><font color="#7f0055">NAME</font></strong></code>&nbsp; <code class="sql keyword"><strong><font color="#7f0055">AS</font></strong></code> <code class="sql plain">对象, </code></div>
<div class="line number3 index2 alt2"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">DDL.type&nbsp; </code><code class="sql keyword"><strong><font color="#7f0055">AS</font></strong></code> <code class="sql plain">类型, </code></div>
<div class="line number4 index3 alt1"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">VS.OSUSER </code><code class="sql keyword"><strong><font color="#7f0055">AS</font></strong></code> <code class="sql plain">OS_USER, </code></div>
<div class="line number5 index4 alt2"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">VS.MACHINE, </code></div>
<div class="line number6 index5 alt1"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">VS.STATUS, </code></div>
<div class="line number7 index6 alt2"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">VS.PROGRAM, </code></div>
<div class="line number8 index7 alt1"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">VS.LOGON_TIME </code><code class="sql keyword"><strong><font color="#7f0055">AS</font></strong></code> <code class="sql string"><font color="#2a00ff">"LOGIN_TIME"</font></code><code class="sql plain">, </code></div>
<div class="line number9 index8 alt2"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">VP.SPID, </code></div>
<div class="line number10 index9 alt1"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql string"><font color="#2a00ff">'kill -9 '</font></code> <code class="sql plain">|| VP.SPID </code><code class="sql keyword"><strong><font color="#7f0055">AS</font></strong></code> <code class="sql plain">OS_KILL, </code></div>
<div class="line number11 index10 alt2"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">vs.sid, </code></div>
<div class="line number12 index11 alt1"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="sql plain">vs.SERIAL#, </code></div>
<div class="line number13 index12 alt2"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><font color="#2a00ff"><code class="sql string">'alter system kill session '</code><code class="sql string">''</code></font> <code class="sql plain">|| vs.sid || </code><code class="sql string"><font color="#2a00ff">','</font></code> <code class="sql plain">|| vs.serial# || </code></div>
<div class="line number14 index13 alt1"><code class="sql spaces">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><font color="#2a00ff"><code class="sql string">''</code><code class="sql string">';'</code></font> <code class="sql string"><font color="#2a00ff">"ORACKE_KILL"</font></code></div>
<div class="line number15 index14 alt2"><code class="sql spaces">&nbsp;&nbsp;</code><code class="sql keyword"><strong><font color="#7f0055">FROM</font></strong></code> <code class="sql plain">DBA_DDL_LOCKS DDL, V$SESSION VS, V$PROCESS VP </code></div>
<div class="line number16 index15 alt1"><code class="sql spaces">&nbsp;</code><code class="sql keyword"><strong><font color="#7f0055">WHERE</font></strong></code> <code class="sql plain">DDL.SESSION_ID = VS.SID </code></div>
<div class="line number17 index16 alt2"><code class="sql spaces">&nbsp;&nbsp;&nbsp;</code><code class="sql color1"><font color="#808080">AND</font></code> <code class="sql plain">VS.PADDR = VP.ADDR;</code></div></div></td></tr></tbody></table></div></div><img src ="http://www.blogjava.net/gdufo/aggbug/404807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-10-09 16:59 <a href="http://www.blogjava.net/gdufo/archive/2013/10/09/404807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL修改种子标识的当前值</title><link>http://www.blogjava.net/gdufo/archive/2013/08/01/402246.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Thu, 01 Aug 2013 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/08/01/402246.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/402246.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2013/08/01/402246.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/402246.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/402246.html</trackback:ping><description><![CDATA[<div><div>pasting</div></div><br />在日常的sql server开发中，经常会用到Identity类型的标识列作为一个表结构的自增长编号。比如文章编号、记录序号等等。自增长的标识列的引用很大程度上方便了数据库程序的开发，但有时这个固执的字段类型也会带来一些麻烦。<br /><br />一、修改标识列字段值：<br /><br />有时，为了实现某种功能，需要修改类型为Identity自增长类型的字段的值，但由于标识列的类型所限，这种操作默认是不允许的。比如目前数据库有5条正常添加的数据，此时删除2条，那么如果再添加数据时，自增长的标识列会自动赋值为6，可这时如果想在插入数据时给赋值3呢，默认是不允许的。如果您特别想改变这个字段的值，完全由自己控制该标识字段值的插入，方法还是有的，哈哈。<br /><br />SET IDENTITY_INSERT [TABLE] [ON|OFF]<br /><br />使用上述语句，可以方便的控制某个表的某个自增长标识列是否自动增长，也就是说是否允许你在insert一条记录时手动指定标识列字段的值。如果指定为on，则可以insert时指定标识列字段的值，该值不自动增长赋值。当然，如果使用完毕，还需使用这个语句将开关关闭到默认状态off，不然下次insert数据时该字段还是不会自动增长赋值的，有始有终嘛。<br /><br />如：<br /><br />&nbsp;SET IDENTITY_INSERT [TABLE_NAME] ON <br /><br />&nbsp;----------- INSERT SEG--------<br /><br />&nbsp; SET IDENTITY_INSERT [TABLE_NAME] OFF &nbsp;<br /><br />二、重置标识列字段值：<br /><br />当数据记录被删除一部分后，后面再添加的新数据记录，标识列数值会有很大的空闲间隔，看上去是不是很不爽呢。即使你删除表中全部记录，identity标识列的值还是会无休止的自动增加变大，而不是从头开始增长。通过下面这条语句可以重置自增长字段的种子值：<br /><br />DBCC CHECKIDENT(TABLE, [RESEED|NORESEED], 200)上述语句将把指定表的种子值强制重设为1。然而，如果你不想将种子重设为1，你可以用你想用的种子值替代第三个参数。如果你想知道当前的种子，而不是想重设标识种子，这时你就要用NORESEED，而不用再去设置第三个参数。<br /><br />如&nbsp; DBCC CHECKIDENT(Product, RESEED, 210)<br /><br /><img src ="http://www.blogjava.net/gdufo/aggbug/402246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-08-01 10:56 <a href="http://www.blogjava.net/gdufo/archive/2013/08/01/402246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sqlserver 的 dbmial经常无故停止工作。</title><link>http://www.blogjava.net/gdufo/archive/2013/04/20/398138.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sat, 20 Apr 2013 12:59:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/04/20/398138.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/398138.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2013/04/20/398138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/398138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/398138.html</trackback:ping><description><![CDATA[重启dbmail<br /><div>EXEC msdb.dbo.sysmail_stop_sp<br /> EXEC msdb.dbo.sysmail_start_sp<br /><br /><div>http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/fabfecfe-f493-4628-a355-79a4322ca7e1/<br /><br /><a href="http://www.gzbmdk.cc/" style="font-family: 宋体;">广州白马档口出租<br /></a><br style="font-family: 宋体;" /><a href="http://www.pydskt.cc/" title="番禺大石空调维修" style="font-family: 宋体;">番禺大石空调维修中心</a></div></div><img src ="http://www.blogjava.net/gdufo/aggbug/398138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-04-20 20:59 <a href="http://www.blogjava.net/gdufo/archive/2013/04/20/398138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA-00119: invalid specification for system parameter LOCAL_LISTENER</title><link>http://www.blogjava.net/gdufo/archive/2013/04/15/397878.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Mon, 15 Apr 2013 11:49:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/04/15/397878.html</guid><description><![CDATA[<div><div></div></div><div>前一段时间修改了主机的hostname，重启oracle是提示错误ORA-00119: invalid specification for system parameter LOCAL_LISTENER。<br /><br />分析原因可能在于hostname进行了修改。<br /><br />解决方法：<br /><br />首先仍然是了解错误信息：oerr ora 00119<br /><br />00119, 00000, "invalid specification for system parameter %s"<br />// *Cause: The syntax for the specified parameter is incorrect.<br />// *Action: Refer to the Oracle Reference Manual for the correct syntax.<br /><br />既然参数出现错误，那么需要调整参数LOCAL_LISTENER<br /><br />1、创建pfile：SQL&gt;create pfile from spfile<br /><br />2、修改pfile，pfile的命名方式为init$ORACLE_SID.ora，存储位置为$ORACLE_HOME/dbs，检查LOCAL_LISTENER这个参数，如果没有，则在最后一行添加：<br /><br />*.local_listener='(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=ip)))'，此处的ip就是oracle数据库所在服务器的ip<br /><br />3、修改完成后，保存退出<br /><br />4、SQL&gt;startup pfile='$ORACLE_HOME/dbs/init$ORACLE_SID.ora';<br /><br />可以看到，数据库启动成功<br /><br />5、重新创建spfile SQL&gt;create spfile from pfile</div><img src ="http://www.blogjava.net/gdufo/aggbug/397878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-04-15 19:49 <a href="http://www.blogjava.net/gdufo/archive/2013/04/15/397878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL2005备份数据库到远程服务器中</title><link>http://www.blogjava.net/gdufo/archive/2013/04/12/397729.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Fri, 12 Apr 2013 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/04/12/397729.html</guid><description><![CDATA[<div>--打开高级设置<br />EXEC sp_configure 'show advanced options', 1<br />RECONFIGURE<br />--打开xp_cmdshell扩展存储过程<br />EXEC sp_configure 'xp_cmdshell', 1<br />RECONFIGURE<br />exec master..xp_cmdshell 'net use I: \\10.110.2.192\e\sqlbackup <span style="color: red;">A</span> /User:<span style="color: red;">B</span>\<span style="color: red;">C'</span><br />A:密码<br />B:域或工作组<br />C:登录名<br /><br />--以上设定一次即可<br /><br />把以下命令放到定时任务器中。<br /><div>BACKUP DATABASE [MyDB] TO&nbsp; DISK = N'I:\MyDB.bak' WITH&nbsp; RETAINDAYS = 2, NOFORMAT, NOINIT,&nbsp; NAME = N'MyDBTest', SKIP, REWIND, NOUNLOAD, COMPRESSION,&nbsp; STATS = 10</div><br />---以下不用的时候删除所建的盘<br /><div>--删除映射<br />exec master..xp_cmdshell 'net use I: /delete'<br /><br />--关闭xp_cmdshell扩展存储过程、高级设置<br />EXEC sp_configure 'xp_cmdshell', 0<br />RECONFIGURE<br />EXEC sp_configure 'show advanced options', 0<br />RECONFIGURE </div><br /><a href="http://www.gzbmdk.cc/" style="color: #56b6e9; text-decoration: none; font-size: 13px; line-height: 19px; font-family: 宋体;">广州白马档口出租<br /></a><br style="color: #4b4b4b; font-size: 13px; line-height: 19px; font-family: 宋体;" /><a href="http://www.pydskt.cc/" title="番禺大石空调维修" style="color: #1a8bc8; text-decoration: none; font-size: 13px; line-height: 19px; font-family: 宋体;">番禺大石空调维修中心</a><br /><br /></div><img src ="http://www.blogjava.net/gdufo/aggbug/397729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-04-12 10:06 <a href="http://www.blogjava.net/gdufo/archive/2013/04/12/397729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle AWR 手动配置 </title><link>http://www.blogjava.net/gdufo/archive/2013/03/15/396511.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Fri, 15 Mar 2013 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2013/03/15/396511.html</guid><description><![CDATA[<a href="http://www.cnblogs.com/sopost/archive/2011/10/22/2221498.html">http://www.cnblogs.com/sopost/archive/2011/10/22/2221498.html</a><br />exec dbms_workload_repository.modify_snapshot_settings(interval=&gt;0) ;//60分中为一小时,0是自动关闭<br /><br />
<p>1.查看当前的AWR保存策略<br />select * from dba_hist_wr_control;</p>
<div id="cnblogs_post_body">
<div>DBID,SNAP_INTERVAL,RETENTION,TOPNSQL<br />860524039,+00 01:00:00.000000,+07 00:00:00.000000,DEFAULT</div>
<div>以上结果表示,每小时产生一个SNAPSHOT，保留7天</div>
<div>2.调整AWR配置<br />AWR配置都是通过dbms_workload_repository包进行配置</div>
<div>2.1调整AWR产生snapshot的频率和保留策略，如：如将收集间隔时间改为30 分钟一次。并且保留5天时间（注：单位都是为分钟）：<br />exec dbms_workload_repository.modify_snapshot_settings(interval=&gt;30, retention=&gt;5*24*60);</div>
<div>2.2关闭AWR,把interval设为0则关闭自动捕捉快照</div>
<div>2.3手工创建一个快照<br />exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();</div>
<div>2.4 查看快照<br />select * from sys.wrh$_active_session_history</div>
<div>2.5手工删除指定范围的快照<br />exec WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id =&gt; 22, high_snap_id =&gt; 32, dbid =&gt; 3310949047);</div>
<div>2.6创建baseline<br />exec dbms_workload_repository.create_baseline (56,59,'apply_interest_1')</div>
<div>2.7删除baseline<br />exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name =&gt; ' apply_interest_1', cascade =&gt; FALSE);</div>
<div><br />3.生产AWR报告<br />$ORACLE_HOME/rdbms/admin/awrrpt.sql</div>
<div>&nbsp;</div>
<div>
<h3>4.1&nbsp;Snapshots( 快照)</h3>
<p>　　前面操作报表生成时，snap这个关键字已经出现过多次了，想必你对它充满了疑惑，这个东西是哪来的咋来的谁让它来的呢？事实上，Snap是Snapshot的简写，这正是AWR在自动性方面的体现，虽然你没有创建，但是AWR自动帮你创建了(当然也可以手动创建snapshot)，并且是定时(每小时)创建，定期清除(保留最近7天)。</p>
<p>　　Snapshots 是一组某个时间点时历史数据的集合，这些数据就可被ADDM(Automatic&nbsp;Database&nbsp;Diagnostic&nbsp;Monitor)用来做性能对比。默认情况下，AWR能够自动以每小时一次的频率生成Snapshots性能数据，并保留7天，，如果需要的话，DBA可以通过DBMS_WORKLOAD_REPOSITORY过程手动创建、删除或修改snapshots。</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<ul>提示：调用DBMS_WORKLOAD_REPOSITORY包需要拥有DBA权限。</ul></div>
<h4>4.1.1&nbsp; 手动创建Snapshots</h4>
<p>　　手动创建Snapshots，通过DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT过程，例如：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>SQL&gt;&nbsp;exec&nbsp;dbms_workload_repository.create_snapshot();</p>
<ul>PL/SQL&nbsp;procedure&nbsp;successfully&nbsp;completed.</ul></div>
<p>　　然后可以通过DBA_HIST_SNAPSHOT&nbsp;视图查看刚刚创建的Snapshots信息。</p>
<h4>4.1.2&nbsp; 手动删除Snapshots</h4>
<p>　　删除Snapshots是使用DBMS_WORKLOAD_REPOSITORY包的另一个过程：DROP_SNAPSHOT_RANGE，该过程在执行时可以通过指定snap_id的范围的方式一次删除多个Snapshots，例如：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>SQL&gt;&nbsp;select&nbsp;count(0)&nbsp;from&nbsp;dba_hist_snapshot&nbsp;where&nbsp;snap_id&nbsp;between&nbsp;7509&nbsp;and&nbsp;7518;</p>
<p>&nbsp;&nbsp;COUNT(0)</p>
<p>----------</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10</p>
<p>SQL&gt;&nbsp;begin</p>
<p>&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;dbms_workload_repository.drop_snapshot_range(</p>
<p>&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;low_snap_id&nbsp;=&gt;&nbsp;7509,</p>
<p>&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;high_snap_id&nbsp;=&gt;&nbsp;7518,</p>
<p>&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbid&nbsp;=&gt;&nbsp;3812548755);</p>
<p>&nbsp;&nbsp;6&nbsp;&nbsp;end;</p>
<p>&nbsp;&nbsp;7&nbsp;&nbsp;/</p>
<p>PL/SQL&nbsp;procedure&nbsp;successfully&nbsp;completed.</p>
<p>SQL&gt;&nbsp;select&nbsp;count(0)&nbsp;from&nbsp;dba_hist_snapshot&nbsp;where&nbsp;snap_id&nbsp;between&nbsp;7509&nbsp;and&nbsp;7518;</p>
<p>&nbsp;&nbsp;COUNT(0)</p>
<p>----------</p>
<ul>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0</ul></div>
<p>　　注意当snapshots被删除的话，与其关联的ASH记录也会级联删除。</p>
<h4>4.1.3&nbsp; 修改Snapshots设置</h4>
<p>　　通过MODIFY_SNAPSHOT_SETTINGS过程，DBA可以调整包括快照收集频率、快照保存时间、以及捕获的<a href="http://www.cnblogs.com/sopost/admin/javascript:;" target="_self"><span style="text-decoration: underline"><strong>SQL</strong></span></a>数量三个方面的设置。分别对应MODIFY_SNAPSHOT_SETTINGS的三个参数：</p>
<ul><li>Retention ：设置快照保存的时间，单位是分钟。可设置的值最小为1天，最大为100年。设置该参数值为0的话，就表示永久保留收集的快照信息。</li><li>Interval ：设置快照收集的频率，以分钟为单位。可设置的值最小为10分钟，最大为1年。如果设置该参数值为0，就表示禁用AWR特性。</li><li>Topnsql ：指定收集的比较占用资源的SQL数量，可设置的值最小为30，最大不超过100000000。</li></ul>
<p>　　查看当前快照收集的相关设置，可以通过DBA_HIST_WR_CONTROL视图查看，例如：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>SQL&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;dba_hist_wr_control;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBID&nbsp;SNAP_INTERVAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETENTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOPNSQL</p>
<p>----------&nbsp;------------------------&nbsp;--------------------&nbsp;----------</p>
<ul>3812548755&nbsp;+00000&nbsp;01:00:00.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+00007&nbsp;00:00:00.0&nbsp;&nbsp;&nbsp;&nbsp;DEFAULT</ul></div>
<p>　　又比如通过MODIFY_SNAPSHOT_SETTTINGS过程修改snap_intrval的设置：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>SQL&gt;&nbsp;exec&nbsp;dbms_workload_repository.modify_snapshot_settings(interval=&gt;120);</p>
<p>PL/SQL&nbsp;procedure&nbsp;successfully&nbsp;completed.</p>
<p>SQL&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;dba_hist_wr_control;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBID&nbsp;SNAP_INTERVAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETENTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOPNSQL</p>
<p>----------&nbsp;------------------------&nbsp;--------------------&nbsp;----------</p>
<ul>3812548755&nbsp;+00000&nbsp;02:00:00.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+00007&nbsp;00:00:00.0&nbsp;&nbsp;&nbsp;&nbsp;DEFAULT</ul></div>
<h3>4.2&nbsp;Baselines( 基线)</h3>
<p>　　Baseline ，直译的话叫做基线，顾名思义的方式理解，就是用于比较的基本线。因为Baseline中包含指定时间点时的性能数据，因此就可以用来与其它时间点时的状态数据做对比，以分析性能问题。</p>
<p>　　创建Baseline时，Snapshots是做为其中的一个组成部分存在，因此一般来说当AWR自动维护快照时，如果定义过baseline，与baseline相关的快照不会被删除，即使是过期的快照，这样就相当于手动保留了一份统计数据的历史信息，DBA可以在适当的时间将其与现有的快照进行对比，以生成相关的统计报表。</p>
<p>　　用户可以通过DBMS_WORKLOAD_REPOSITORY包中的相关过程，手动的创建或删除Baseline。</p>
<h4>4.2.1&nbsp; 创建Baseline</h4>
<p>　　创建Baseline使用CREATE_BASELINE过程，执行该过程时分别指定开始和结果的snap_id，然后为该baseline定义一个名称即可，例如：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>SQL&gt;&nbsp;BEGIN</p>
<p>&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id&nbsp;=&gt;&nbsp;7550,</p>
<p>&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end_snap_id&nbsp;&nbsp;&nbsp;=&gt;&nbsp;7660,</p>
<p>&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;baseline_name&nbsp;=&gt;&nbsp;&#168;am_baseline&#168;);</p>
<p>&nbsp;&nbsp;5&nbsp;&nbsp;END;</p>
<p>&nbsp;&nbsp;6&nbsp;&nbsp;/</p>
<p>PL/SQL&nbsp;procedure&nbsp;successfully&nbsp;completed.</p>
<p>SQL&gt;&nbsp;select&nbsp;dbid,baseline_name,start_snap_id,end_snap_id&nbsp;from&nbsp;dba_hist_baseline;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBID&nbsp;BASELINE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;START_SNAP_ID&nbsp;END_SNAP_ID</p>
<p>----------&nbsp;--------------------&nbsp;-------------&nbsp;-----------</p>
<ul>3812548755&nbsp;am_baseline&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7550&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7660</ul></div>
<h4>4.2.2&nbsp; 删除Baseline</h4>
<p>　　删除Baseline使用DROP_BASELINE过程，删除时可以通过cascade参数选择是否将其关联的Snapshots级别进行删除，例如：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>SQL&gt;&nbsp;BEGIN</p>
<p>&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name&nbsp;=&gt;&nbsp;&#168;am_baseline&#168;,</p>
<p>&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cascade&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;true);</p>
<p>&nbsp;&nbsp;4&nbsp;&nbsp;END;</p>
<p>&nbsp;&nbsp;5&nbsp;&nbsp;/</p>
<p>PL/SQL&nbsp;procedure&nbsp;successfully&nbsp;completed.</p>
<p>SQL&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;dba_hist_baseline;</p>
<p>no&nbsp;rows&nbsp;selected</p>
<p>SQL&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;dba_hist_snapshot&nbsp;where&nbsp;snap_id&nbsp;between&nbsp;7550&nbsp;and&nbsp;7660;</p>
<ul>no&nbsp;rows&nbsp;selected</ul></div>
<p>　　如上例中所示，删除时指定了cascade参数值为true，对应的snap也被级联删除了。</p>
<p>&nbsp;</p>
<p>不管是EM也好，或是前面演示中使用的awr*.sql脚本也好，实质都是访问ORACLE中的部分相关视图来生成统计数据，因此如果DBA对自己的理解能力有足够的自信，也可以直接查询动态性能视图(或相关数据字典)的方式来获取自己想要的那部分性能数据。ORACLE将这部分性能统计数据保存在DBA_HIST开头的数据字典中，要查询当前实例所有能够访问的DBA_HIST字典，可以通过下列语句：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>SQL&gt; select * from dict where table_name like &#168;DBA_HIST%&#168;;</p>
<p>TABLE_NAME COMMENTS</p>
<p>------------------------------ --------------------------------------------------------------------------------</p>
<p>DBA_HIST_DATABASE_INSTANCE Database Instance Information</p>
<p>DBA_HIST_SNAPSHOT Snapshot Information</p>
<p>DBA_HIST_SNAP_ERROR Snapshot Error Information</p>
<p>DBA_HIST_BASELINE Baseline Metadata Information</p>
<p>DBA_HIST_WR_CONTROL Workload Repository Control Information</p>
<p>DBA_HIST_DATAFILE Names of Datafiles</p>
<p>DBA_HIST_FILESTATXS Datafile Historical Statistics Information</p>
<p>DBA_HIST_TEMPFILE Names of Temporary Datafiles</p>
<p>DBA_HIST_TEMPSTATXS Temporary Datafile Historical Statistics Information</p>
<p>DBA_HIST_COMP_IOSTAT I/O stats aggregated on component level</p>
<p>DBA_HIST_SQLSTAT <span style="text-decoration: underline"><strong><span style="color: #075db3">SQL</span></strong></span> Historical Statistics Information</p>
<p>DBA_HIST_SQLTEXT SQL Text</p>
<p>......................</p>
<ul>........................</ul></div>
<p>　　ORACLE <span style="text-decoration: underline"><strong><span style="color: #075db3">数据库</span></strong></span>中以DBA_HIST命名的视图非常多，下面简单介绍几个，比如说：</p>
<ul><li>
<h5>V$ACTIVE_SESSION_HISTORY</h5></li></ul>
<p>　　该视图由ASH自动维护，以每秒一次的频率收集当前系统中活动session的信息。虽然说是记录SESSION的历史记录，不过该视图与V$SESSION还是有差异的。</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>SQL&gt; desc v$active_session_history;</p>
<p>Name Type Nullable Default Comments</p>
<p>------------------------- ------------ -------- ------- --------</p>
<p>SAMPLE_ID NUMBER Y</p>
<p>SAMPLE_TIME TIMESTAMP(3) Y</p>
<p>SESSION_ID NUMBER Y</p>
<p>SESSION_SERIAL# NUMBER Y</p>
<p>USER_ID NUMBER Y</p>
<p>SQL_ID VARCHAR2(13) Y</p>
<p>SQL_CHILD_NUMBER NUMBER Y</p>
<p>SQL_PLAN_HASH_VALUE NUMBER Y</p>
<p>FORCE_MATCHING_SIGNATURE NUMBER Y</p>
<p>SQL_OPCODE NUMBER Y</p>
<p>PLSQL_ENTRY_OBJECT_ID NUMBER Y</p>
<p>PLSQL_ENTRY_SUBPROGRAM_ID NUMBER Y</p>
<p>PLSQL_OBJECT_ID NUMBER Y</p>
<p>PLSQL_SUBPROGRAM_ID NUMBER Y</p>
<p>SERVICE_HASH NUMBER Y</p>
<p>SESSION_TYPE VARCHAR2(10) Y</p>
<p>SESSION_STATE VARCHAR2(7) Y</p>
<p>QC_SESSION_ID NUMBER Y</p>
<p>QC_INSTANCE_ID NUMBER Y</p>
<p>BLOCKING_SESSION NUMBER Y</p>
<p>BLOCKING_SESSION_STATUS VARCHAR2(11) Y</p>
<p>BLOCKING_SESSION_SERIAL# NUMBER Y</p>
<p>EVENT VARCHAR2(64) Y</p>
<p>EVENT_ID NUMBER Y</p>
<p>EVENT# NUMBER Y</p>
<p>SEQ# NUMBER Y</p>
<p>P1TEXT VARCHAR2(64) Y</p>
<p>P1 NUMBER Y</p>
<p>P2TEXT VARCHAR2(64) Y</p>
<p>P2 NUMBER Y</p>
<p>P3TEXT VARCHAR2(64) Y</p>
<p>P3 NUMBER Y</p>
<p>WAIT_CLASS VARCHAR2(64) Y</p>
<p>WAIT_CLASS_ID NUMBER Y</p>
<p>WAIT_TIME NUMBER Y</p>
<p>TIME_WAITED NUMBER Y</p>
<p>XID RAW(8) Y</p>
<p>CURRENT_OBJ# NUMBER Y</p>
<p>CURRENT_FILE# NUMBER Y</p>
<p>CURRENT_BLOCK# NUMBER Y</p>
<p>PROGRAM VARCHAR2(48) Y</p>
<p>MODULE VARCHAR2(48) Y</p>
<p>ACTION VARCHAR2(32) Y</p>
<ul>CLIENT_ID VARCHAR2(64) Y</ul></div>
<p>　　v$session 中与操作相关的列均被收集，除此之外还冗余了部分列，这是为了方便DBA查询V$ACTIVE_SESSION_HISTORY时能够快速获取到自己需要的数据。</p>
<ul><li>
<h5>DBA_HIST_ACTIVE_SESS_HISTORY</h5></li></ul>
<p>　　该视图与V$ACTIVE_SESSION_HISTORY的结构灰常灰常灰常的想像，功能也灰常灰常灰常的类似，都是记录活动session的操作记录，所不同点在于，V$ACTIVE_SESSION_HISTORY是ORACLE自动在内存中维护的，受制于其可用内存区限制，并非所有记录都能保存，而DBA_HIST_ACTIVE_SESS_HISTORY视图则是维护到磁盘中的。简单理解的话，就是说通常情况下，DBA_HIST_ACTIVE_SESS_HISTORY视图的数据量要比V$ACTIVE_SESSION_HISTORY的多。</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<ul>提示：上述结构并不绝对，因为默认情况下DBA_HIST_ACTIVE_SESS_HISTORY字典的数据每10秒收集一次，而V$ACTIVE_SESSION_HISTORY中则是每秒一次，因此也有可能V$ACTIVE_SESSION_HISTORY中记录量更大。不过相对来说，DBA_HIST字典中保存的数据更长久。</ul></div>
<ul><li>
<h5>DBA_HIST_DATABASE_INSTANCE</h5></li></ul>
<p>　　该视图用来显示数据库和实例的信息，比如DBID，实例名，数据库版本等等信息，生成<a href="http://www.cnblogs.com/sopost/admin/javascript:;" target="_self"><span style="text-decoration: underline"><strong><span style="color: #075db3">报表</span></strong></span></a>中第一行表格，就是由该视图生成的。如图：</p>
<p>　　<a href="http://space.itpub.net/batch.download.php?aid=19111" target="_blank"><img border="0" alt="" src="http://space.itpub.net/attachments/2009/11/7607759_200911091023081.gif" /></a></p>
<p>　　如果你去分析awrrpt.sql脚本的话，会发现其中有如下脚本，上述表格中显示的内容信息，正是来自于下列脚本：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>select distinct</p>
<p>(case when cd.dbid = wr.dbid and</p>
<p>cd.name = wr.db_name and</p>
<p>ci.instance_number = wr.instance_number and</p>
<p>ci.instance_name = wr.instance_name</p>
<p>then &#168;* &#168;</p>
<p>else &#168; &#168;</p>
<p>end) || wr.dbid dbbid</p>
<p>, wr.instance_number instt_num</p>
<p>, wr.db_name dbb_name</p>
<p>, wr.instance_name instt_name</p>
<p>, wr.host_name host</p>
<ul>from dba_hist_database_instance wr, v$database cd, v$instance ci;</ul></div>
<ul><li>
<h5>DBA_HIST_SNAPSHOT</h5></li></ul>
<p>　　该视图用来记录当前数据库收集到的快照信息。相信朋友应该还记得之前使用脚本生成报表时，输入完快照区间后显示的一堆列表，没错，那正是DBA_HIST_SNAPSHOT记录的内容，该段功能对应的<span style="color: #000000"><span style="color: #075db3">代码</span></span>如下：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 10px; background-color: #f6f6f6; margin: 3px; padding-left: 10px; padding-right: 10px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 10px">
<p>select to_char(s.startup_time,&#168;dd Mon "at" HH24:mi:ss&#168;) instart_fmt</p>
<p>, di.instance_name inst_name</p>
<p>, di.db_name db_name</p>
<p>, s.snap_id snap_id</p>
<p>, to_char(s.end_interval_time,&#168;dd Mon YYYY HH24:mi&#168;) snapdat</p>
<p>, s.snap_level lvl</p>
<p>from dba_hist_snapshot s</p>
<p>, dba_hist_database_instance di</p>
<p>where s.dbid = :dbid</p>
<p>and di.dbid = :dbid</p>
<p>and s.instance_number = :inst_num</p>
<p>and di.instance_number = :inst_num</p>
<p>and di.dbid = s.dbid</p>
<p>and di.instance_number = s.instance_number</p>
<p>and di.startup_time = s.startup_time</p>
<p>and s.end_interval_time &gt;= decode( &amp;num_days</p>
<p>, 0 , to_date(&#168;31-JAN-9999&#168;,&#168;DD-MON-YYYY&#168;)</p>
<p>, 3.14, s.end_interval_time</p>
<p>, to_date(:max_snap_time,&#168;dd/mm/yyyy&#168;) - (&amp;num_days-1))</p>
<ul>order by db_name, instance_name, snap_id;</ul></div></div></div><img src ="http://www.blogjava.net/gdufo/aggbug/396511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2013-03-15 22:02 <a href="http://www.blogjava.net/gdufo/archive/2013/03/15/396511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rman 增量备份</title><link>http://www.blogjava.net/gdufo/archive/2012/10/28/390371.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sun, 28 Oct 2012 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/10/28/390371.html</guid><description><![CDATA[<div>一、准备工作<br />查看是否处在归档模式<br />SQL&gt; archive log list;<br />Database log mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No Archive Mode<br />Automatic archival&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Disabled<br />Archive destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USE_DB_RECOVERY_FILE_DEST<br />Oldest online log sequence&nbsp;&nbsp;&nbsp;&nbsp; 28<br />Current log sequence&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30<br /><br />如果是"No Archive Mode"<br />修改为归档模式<br />首先要关闭数据库，启动到mount状态。<br />SQL&gt; shutdown immediate;<br /><br />SQL&gt; startup mount;<br />修改为归档模式<br />SQL&gt;alter database archivelog;<br /><br />验证修改结果<br />SQL&gt; select log_mode from v$database;<br />LOG_MODE<br />------------<br />ARCHIVELOG<br /><br />打开数据库<br />SQL&gt; alter database open;<br /><br />二、RMAN　Catalog 配置<br />创建 RMAN Calalog表空间<br />SQL&gt;create tablespace RMAN_TS datafile '/opt/oracle/oradata/orcl/RMAN_TS01.dbf' size 500M; <br /><br />--创建用户rman/rman 默认表空间味RMAN_TS允许自由使用<br />SQL&gt; create user rman identified by rman default tablespace RMAN_TS quota unlimited on RMAN_TS;<br />用户授权<br />SQL&gt;grant connect, resource,recovery_catalog_owner to rman;<br /><br />创建恢复目录<br />在命令终端<br />[oracle@localhost ~]$rman catalog rman/rman<br />RMAN&gt; CREATE CATALOG;<br />连接,注册目标数据库，同步catalog和控制文件 <br />[oracle@localhost ~]$rman target sys/wxbwer catalog rman/rman<br />连接成功出现下面的信息<br />connected to target database: ORCL (DBID=1325399111)<br />connected to recovery catalog database<br /><br />RMAN&gt; REGISTER DATABASE;<br /><br />RMAN&gt; RESYNC CATALOG;<br /><br />下面是否有注册信息即可<br />RMAN&gt;LIST INCARNATION;<br /><br />List of Database Incarnations<br />DB Key&nbsp; Inc Key DB Name&nbsp; DB ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATUS&nbsp; Reset SCN&nbsp; Reset Time<br />------- ------- -------- ---------------- --- ---------- ----------<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORCL&nbsp;&nbsp;&nbsp;&nbsp; 1325399111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARENT&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13-AUG-09<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORCL&nbsp;&nbsp;&nbsp;&nbsp; 1325399111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CURRENT 754488&nbsp;&nbsp;&nbsp;&nbsp; 25-OCT-12<br /><br />三、创建RMAN备份脚本<br />来自：http://blog.csdn.net/robinson_0612/article/details/8029245<br />##=========================================================== &nbsp;<br />##&nbsp;&nbsp; db_bak_rman.sh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />##&nbsp;&nbsp; created by Robinson&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />##&nbsp;&nbsp; 2011/11/07&nbsp;&nbsp; &nbsp;<br />##&nbsp;&nbsp; usage: db_bak_rman.sh &lt;$ORACLE_SID&gt; &lt;$BACKUP_LEVEL&gt; &nbsp;<br />##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BACKUP_LEVEL:&nbsp; &nbsp;<br />##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F: full backup &nbsp;<br />##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0: level 0 &nbsp;<br />##&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1: level 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />##============================================================ &nbsp;<br />#!/bin/bash &nbsp;<br /># User specific environment and startup programs &nbsp;<br />&nbsp; <br />if [ -f ~/.bash_profile ];&nbsp; &nbsp;<br />then &nbsp;<br />. ~/.bash_profile &nbsp;<br />fi &nbsp;<br />&nbsp; <br />ORACLE_SID=${1};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export ORACLE_SID&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />RMAN_LEVEL=${2};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export RMAN_LEVEL &nbsp;<br />TIMESTAMP=`date +%Y%m%d%H%M`;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export TIMESTAMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />DATE=`date +%Y%m%d`;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export DATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />#RMAN_DIR=/u02/database/${ORACLE_SID}/backup/rman;&nbsp;&nbsp; export RMAN_DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />#RMAN_DATA=${RMAN_DIR}/${DATE};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export RMAN_DATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />#RMAN_LOG=/u02/database/${ORACLE_SID}/backup/rman/log&nbsp; export RMAN_LOG <br />RMAN_DIR=/opt/oracle/oradata/backup/rman;&nbsp;&nbsp;&nbsp;&nbsp; export RMAN_DIR&nbsp;&nbsp; &nbsp;<br />RMAN_DATA=${RMAN_DIR}/${DATE};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export RMAN_DATA &nbsp;<br />RMAN_LOG=${RMAN_DIR}/log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export RMAN_LOG &nbsp;<br /># Check rman level&nbsp; &nbsp;<br />#====================================================================== &nbsp;<br />if [ "$RMAN_LEVEL" == "F" ]; &nbsp;<br />then&nbsp; unset INCR_LVL &nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BACKUP_TYPE=full &nbsp;<br />else &nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INCR_LVL="INCREMENTAL LEVEL ${RMAN_LEVEL}" &nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BACKUP_TYPE=lev${RMAN_LEVEL}&nbsp; &nbsp;<br />fi &nbsp;<br />&nbsp; <br />RMAN_FILE=${RMAN_DATA}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export RMAN_FILE &nbsp;<br />SSH_LOG=${RMAN_LOG}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}.log;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export SSH_LOG &nbsp;<br />MAXPIECESIZE=4G;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; export MAXPIECESIZE &nbsp;<br />&nbsp; <br />#Check RMAN Backup Path &nbsp;<br />#========================================================================= &nbsp;<br />&nbsp; <br />if ! test -d ${RMAN_DATA} &nbsp;<br />then &nbsp;<br />mkdir -p ${RMAN_DATA} &nbsp;<br />fi &nbsp;<br />&nbsp; <br />echo "---------------------------------" &gt;&gt;${SSH_LOG} &nbsp;<br />echo "&nbsp;&nbsp; " &gt;&gt;${SSH_LOG} &nbsp;<br />echo "Rman Begin&nbsp; to Working ........." &gt;&gt;${SSH_LOG} &nbsp;<br />echo "Begin time at:" `date` --`date +%Y%m%d%H%M` &gt;&gt;${SSH_LOG} &nbsp;<br />&nbsp; <br />#Startup rman to backup&nbsp; &nbsp;<br />#============================================================================= &nbsp;<br />$ORACLE_HOME/bin/rman log=${RMAN_FILE}.log &lt;&lt;EOF &nbsp;<br />connect target /&nbsp; <br /><div><div>connect catalog rman/rman</div></div>run { &nbsp;<br />CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS; &nbsp;<br />CONFIGURE BACKUP OPTIMIZATION ON; &nbsp;<br />CONFIGURE CONTROLFILE AUTOBACKUP ON; &nbsp;<br />CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${RMAN_FILE}_%F'; &nbsp;<br />ALLOCATE CHANNEL 'ch1' TYPE DISK maxpiecesize=${MAXPIECESIZE}; &nbsp;<br />ALLOCATE CHANNEL 'ch2' TYPE DISK maxpiecesize=${MAXPIECESIZE}; &nbsp;<br />set limit channel ch1 readrate=10240; &nbsp;<br />set limit channel ch1 kbytes=4096000; &nbsp;<br />set limit channel ch2 readrate=10240; &nbsp;<br />set limit channel ch2 kbytes=4096000; &nbsp;<br />CROSSCHECK ARCHIVELOG ALL; &nbsp;<br />DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; &nbsp;<br />BACKUP&nbsp; &nbsp;<br />#AS COMPRESSED BACKUPSET&nbsp; &nbsp;<br />${INCR_LVL} &nbsp;<br />DATABASE FORMAT '${RMAN_FILE}_%U' TAG '${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}'; &nbsp;<br />SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; &nbsp;<br />BACKUP ARCHIVELOG ALL FORMAT '${RMAN_FILE}_arc_%U' TAG '${ORACLE_SID}_arc_${TIMESTAMP}' &nbsp;<br />DELETE&nbsp; INPUT; &nbsp;<br />DELETE NOPROMPT OBSOLETE; &nbsp;<br />RELEASE CHANNEL ch1; &nbsp;<br />RELEASE CHANNEL ch2; &nbsp;<br />} &nbsp;<br />sql "alter database backup controlfile to ''${RMAN_DATA}/cntl_${BACKUP_TYPE}.bak''"; &nbsp;<br />exit; &nbsp;<br />EOF &nbsp;<br />RC=$? &nbsp;<br />&nbsp; <br />cat ${RMAN_FILE}.log &gt;&gt;${SSH_LOG} &nbsp;<br />echo "Rman Stop working @ time:"`date` `date +%Y%m%d%H%M` &gt;&gt;${SSH_LOG} <br />&nbsp; <br />echo &gt;&gt;${SSH_LOG} &nbsp;<br />echo "------------------------" &gt;&gt;${SSH_LOG} &nbsp;<br />echo "------ Disk Space ------" &gt;&gt;${SSH_LOG} &nbsp;<br />df -h &gt;&gt;${SSH_LOG} &nbsp;<br />&nbsp; <br />echo &gt;&gt;${SSH_LOG} &nbsp;<br />&nbsp; <br />if [ $RC -ne "0" ]; then &nbsp;<br />&nbsp;&nbsp;&nbsp; echo "------ error ------" &gt;&gt;${SSH_LOG} &nbsp;<br />else &nbsp;<br />&nbsp;&nbsp;&nbsp; echo "------ no error found during RMAN backup peroid------" &gt;&gt;${SSH_LOG} &nbsp;<br />&nbsp;&nbsp;&nbsp; rm -rf ${RMAN_FILE}.log &nbsp;<br />fi &nbsp;<br />&nbsp; <br />#Remove old backup than 3 days &nbsp;<br />#============================================================================ &nbsp;<br />RMDIR=${RMAN_DIR}/`/bin/date +%Y%m%d -d "3 days ago"`;&nbsp;&nbsp; export RMDIR <br />echo &gt;&gt;${SSH_LOG} &nbsp;<br />echo -e "------Remove old backup than 3 days ------\n" &gt;&gt;${SSH_LOG} &nbsp;<br />&nbsp; <br />if test -d ${RMDIR} &nbsp;<br />&nbsp;&nbsp;&nbsp; then &nbsp;<br />&nbsp;&nbsp;&nbsp; rm -rf ${RMDIR} &nbsp;<br />&nbsp;&nbsp;&nbsp; RC=$? &nbsp;<br />fi &nbsp;<br />&nbsp; <br />echo &gt;&gt;${SSH_LOG} &nbsp;<br />&nbsp; <br />if [ $RC -ne "0" ]; then &nbsp;<br />&nbsp;&nbsp;&nbsp; echo -e "------ Remove old backup exception------ \n" &gt;&gt;${SSH_LOG} &nbsp;<br />else &nbsp;<br />&nbsp;&nbsp;&nbsp; echo -e "------ no error found during remove old backup set peroid------ \n" &gt;&gt;${SSH_LOG} &nbsp;<br />fi &nbsp;<br />&nbsp; <br />exit &nbsp;<br /><br />[oracle@localhost backup]$ pwd<br />/opt/oracle/oradata/backup<br />[oracle@localhost backup]$vi db_bak_rman.sh<br />将上面脚本复制进去,并保存，且设置权限<br />[oracle@localhost backup]$ chmod 755 db_bak_rman.sh<br />测试脚本 <br />orcl 为 SID<br />0: 代表0级备份<br />[oracle@localhost backup]$ ./db_bak_rman.sh orcl 0<br /><br />四、crontab 定时任务 以 oralce用户登录<br />[oracle@localhost backup]$crontab -e<br /><br />45 23 * * 0 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 0<br />45 23 * * 1-3 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 2<br />45 23 * * 4 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 1<br />45 23 * * 5-6 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 2<br />以root用户登录<br />[root@localhost backup]$/etc/init.d/crond restart<br />Stopping crond:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp; OK&nbsp; ]<br />Starting crond:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&nbsp; OK&nbsp; ]<br /><br /><br />脚本的增量备份策略： 周日0级备份，周四1级备份，其他2级备份<br />差异备份有3个级别： <br />0级：相当于全备，不同的是0级可用于增量备份，全备不行。<br />1级：备份自上次0级备份以来的数据<br />2级：备份自上次备份依赖的数据<br /><br /></div><img src ="http://www.blogjava.net/gdufo/aggbug/390371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-10-28 22:37 <a href="http://www.blogjava.net/gdufo/archive/2012/10/28/390371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>logminer的安装配置使用</title><link>http://www.blogjava.net/gdufo/archive/2012/10/25/390237.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Thu, 25 Oct 2012 12:12:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/10/25/390237.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/390237.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2012/10/25/390237.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/390237.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/390237.html</trackback:ping><description><![CDATA[<div>logminer的安装配置使用<br />安装<br />环境：linux AS5，oracle 11gR2<br /><br />2.添加补充日志<br /><br />如果数据库需要使用logminer，就应该添加,只有添加这个日志之后的才能捕获DML<br />ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;<br /><br />3.开启归档(对logminer来说不是必须)<br />alter system set log_Archive_dest_1='/opt/oracle/flash_recovery_area' scope=both;<br />shutdown immediate<br />startup mount<br />alter database archivelog;<br />alter database open;<br /><br /><br />创建DBMS_LOGMNR包<br />SQL&gt;@?/rdbms/admin/dbmslm.sql<br /><br />创建相关数据字典<br />SQL&gt;@?/rdbms/admin/dbmslmd.sql<br /><br />修改初始化参数UTL_FILE_DIR,指定分析数据的存放处<br />SQL&gt;alter system set UTL_FILE_DIR='/opt/oracle/oradata/logminer' scope=spfile;<br /><br />重启数据库<br />SQL&gt;shutdown immediate<br />SQL&gt;startup<br /><br /><br />SQL&gt; show parameter utl;<br /><br />NAME TYPE VALUE<br />------------------------------------ ----------- ------------------------------<br />create_stored_outlines string<br />utl_file_dir string /opt/oracle/oradata/logminer<br /><br />生成字典信息文件：<br /><br />SQL&gt; execute dbms_logmnr_d.build(dictionary_filename=&gt;'/opt/oracle/oradata/logminer/sqltrace.ora',dictionary_location=&gt;'/opt/oracle/oradata/logminer');<br /><br />PL/SQL 过程已成功完成。<br />查当前日志组<br />SQL&gt;select Group#, Status from v$log;<br /><br />&nbsp;&nbsp;&nbsp; GROUP# STATUS<br />---------- ----------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 INACTIVE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 CURRENT<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 INACTIVE<br /><br />SQL&gt;select Group#, MEMBER from v$logfile;<br /><br />&nbsp;&nbsp;&nbsp; GROUP# MEMBER<br />---------- ----------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 /opt/oracle/oradata/orcl/redo03.log<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 /opt/oracle/oradata/orcl/redo02.log<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 /opt/oracle/oradata/orcl/redo01.log<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; <br />添加需要分析的日志文件(在线日志)<br />SQL&gt; execute dbms_logmnr.add_logfile(options=&gt;dbms_logmnr.new,logfilename=&gt;'/opt/oracle/oradata/orcl/redo02.log');<br /><br />#归档日志<br />execute dbms_logmnr.add_logfile(options=&gt;dbms_logmnr.new,logfilename=&gt;'/opt/oracle/oradata/logminer/1_6356_704818301.dbf');<br />PL/SQL 过程已成功完成。<br />SQL&gt; execute dbms_logmnr.add_logfile(options=&gt;dbms_logmnr.addfile,logfilename=&gt;'opt/oracle/oradata/orcl/redo03.log');<br /><br />PL/SQL 过程已成功完成。<br />options选项有三个参数可选：<br />NEW - 表示创建一个新的日志文件列表<br />ADDFILE - 表示向这个列表中添加日志文件<br />REMOVEFILE - 和addfile相反。<br /><br /><br />开始分析<br />SQL&gt; execute dbms_logmnr.start_logmnr(dictfilename=&gt;'/opt/oracle/oradata/logminer/sqltrace.ora');<br /><br />#设置 STARTTIME / ENDTIME <br /><div><div>SQL&gt;execute dbms_logmnr.start_logmnr(dictfilename=&gt;'/u01/app/oracle/logminer/sqltrace.ora',starttime =&gt; to_date('2012/11/01-08:00:00','yyyy/mm/dd-hh24:mi:ss'),endtime =&gt; to_date('2012/11/02-12:30:00','yyyy/mm/dd-hh24:mi:ss'));</div></div><br /><br />#也可以设置不用数据字典，只是看不到解释过来，没有意义了。<br />begin<br />&nbsp; dbms_logmnr.start_logmnr(starttime =&gt; to_date('2012/09/29-08:55:00','yyyy/mm/dd-hh24:mi:ss'),<br />&nbsp; endtime =&gt; to_date('2012/09/29-15:30:00','yyyy/mm/dd-hh24:mi:ss')<br />);<br />PL/SQL 过程已成功完成。<br />dbms_logmnr.start_logmnr()过程还有其它几个用于定义分析日志时间/SCN窗口的参数，它们分别是：<br />STARTSCN / ENDSCN - 定义分析的起始/结束SCN号，<br />STARTTIME / ENDTIME - 定义分析的起始/结束时间。<br /><br />查询分析的日志文件包含的scn范围和日期范围。<br />SQL&gt; select low_time,high_time,low_scn,next_scn from v$logmnr_logs;<br /><br />LOW_TIME HIGH_TIME LOW_SCN NEXT_SCN<br />-------------- -------------- ---------- ----------<br />08-8月 -07 08-8月 -07 626540 637998<br />08-8月 -07 01-1月 -88 637998 2.8147E+14<br /><br />SQL&gt; create table ELLINGTON.log_content NOLOGGING Tablespace Users as select timestamp,sql_redo,sql_undo,USERNAME,OS_USERNAME,MACHINE_NAME from v$logmnr_contents; <br />将内容复制到一张表中查询并指定存储表空间，desc v$logmnr_contents<br /><br />结束分析<br /><br />SQL&gt; execute dbms_logmnr.end_logmnr;<br /><br />结束后视图v$logmnr_contents中的分析结果也不再存在,关闭sqlplus自动结束。<br />注意：1. LogMiner必须使用被分析数据库实例产生的字典文件，而不是安装LogMiner的数据库产生的字典文件，另外必须保证安装LogMiner数据库的字符集和被分析数据库的字符集相同。<br />　　&nbsp; 2. 被分析数据库平台必须和当前LogMiner所在数据库平台一样，也就是说如果我们要分析的文件是由运行在UNIX平台上的Oracle 8i产生的，那么也必须在一个运行在UNIX平台上的Oracle实例上运行LogMiner，而不能在其他如Microsoft NT上运行LogMiner。当然两者的硬件条件不一定要求完全一样。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">3. 生产库的归档日志拿到测试机上来分析，虽然可以分析，但是由于db_id不同，不能使用数据字典，也就看不到翻译过的语句（16进制的东西）</span></div><img src ="http://www.blogjava.net/gdufo/aggbug/390237.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-10-25 20:12 <a href="http://www.blogjava.net/gdufo/archive/2012/10/25/390237.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一次数据导入过程</title><link>http://www.blogjava.net/gdufo/archive/2012/10/24/390169.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Wed, 24 Oct 2012 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/10/24/390169.html</guid><description><![CDATA[一。查出原系统有多少表空间：<br /><br /><div>select a.tablespace_name,total,free,round(free/total*100,2) free_precent,total-free used from<br />( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files<br />group by tablespace_name) a,<br />( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space<br />group by tablespace_name) b<br />where a.tablespace_name=b.tablespace_name<br />order by tablespace_name;</div><div>TABLESPACE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOTAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FREE FREE_PRECENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USED<br />------------------------------ ---------- ---------- ------------ ----------<br />AUDTOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; 5120&nbsp;&nbsp; 959.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18.75&nbsp; 4160.0625<br />DBA01_2001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500&nbsp;&nbsp; 499.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500&nbsp;&nbsp; 499.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500&nbsp;&nbsp; 499.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500&nbsp;&nbsp; 499.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024&nbsp; 1023.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024&nbsp; 1023.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024&nbsp; 1023.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024&nbsp; 1023.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024&nbsp; 1023.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024&nbsp; 1023.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />DBA01_2011&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024&nbsp; 1023.9375&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99.99&nbsp;&nbsp;&nbsp;&nbsp; 0.0625<br />INDX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 98816 19484.3125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19.72 79331.6875<br />SYSAUX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 27080.9375&nbsp; 1126.6875&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.16&nbsp;&nbsp; 25954.25<br />SYSTEM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2788&nbsp; 1626.3125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 58.33&nbsp; 1161.6875<br />UNDOTBS2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3524&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3299&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 93.62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 225<br />USERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 92160&nbsp; 54093.875&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 58.7&nbsp; 38066.125<br /><br />二。查出各表空间数据文件大小 <br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'USERS';<br />&nbsp;<br /><div>TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ------------------------------ ----------<br />USERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/users01.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30720<br />USERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/users02.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30720<br />USERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/users03.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30720<br /><br /><div>&nbsp;<div>SQL&gt;SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2001';<br /><div>TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2001 /u02/oradata/orcl/users_2001.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500<br /><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2002';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2002 /u02/oradata/orcl/users_2002.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500<br /><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2003';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2003 /u02/oradata/orcl/users_2003.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2004';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2004 /u02/oradata/orcl/users_2004.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500<br /><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2005';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2005 /u02/oradata/orcl/users_2005.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2006';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2006 /u02/oradata/orcl/users_2006.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2007';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2007 /u02/oradata/orcl/users_2007.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2008';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2008 /u02/oradata/orcl/users_2008.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2009';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2009 /u02/oradata/orcl/users_2009.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2010';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2010 /u02/oradata/orcl/users_2010.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2011';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />DBA01_2011 /u02/oradata/orcl/users_2011.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'INDX';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />INDX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/indx01.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10240<br />INDX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/indx02.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20480<br />INDX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/indx03.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23808<br />INDX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/indx04.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23808<br />INDX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/indx05.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20480</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'USERS';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />USERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/users01.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30720<br />USERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/users02.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30720<br />USERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/users03.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30720</div><br /><div>SQL&gt; SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'SYSAUX';<br />&nbsp;<br />TABLESPACE FILE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SIZE_M<br />---------- ---------------------------------------- ----------<br />SYSAUX&nbsp;&nbsp;&nbsp;&nbsp; /u02/oradata/orcl/sysaux01.dbf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 27080.9375</div><br />三.根据以上文件分别建立表空间<br />1.先扩大本身的user01.dbf的空间<br /><div>SQL&gt;alter database datafile '/opt/oracle/oradata/orcl/users01.dbf' resize 30G;<br />2.再增加数据文件<br /><div>SQL&gt;alter tablespace users add datafile '/opt/oracle/oradata/orcl/users02.dbf' size 30G;<br /><div>SQL&gt;alter tablespace users add datafile '/opt/oracle/oradata/orcl/users03.dbf' size 30G;<br /><br />3.创建索引表空间<br />SQL&gt;create tablespace INDX datafile '/opt/oracle/oradata/orcl/indx01.dbf' size 30G;<br />SQL&gt;alter tablespace INDX add datafile '/opt/oracle/oradata/orcl/indx02.dbf' size 30G; <br /><div>SQL&gt;alter tablespace INDX add datafile '/opt/oracle/oradata/orcl/indx03.dbf' size 30G;<br />其它表空间<br /><div>create tablespace DBA01_2001 datafile '/opt/oracle/oradata/orcl/users_2001.dbf' size 500M;<br />create tablespace DBA01_2002 datafile '/opt/oracle/oradata/orcl/users_2002.dbf' size 500M;<br />create tablespace DBA01_2003 datafile '/opt/oracle/oradata/orcl/users_2003.dbf' size 500M;<br />create tablespace DBA01_2004 datafile '/opt/oracle/oradata/orcl/users_2004.dbf' size 500M;<br />create tablespace DBA01_2005 datafile '/opt/oracle/oradata/orcl/users_2005.dbf' size 500M;<br />create tablespace DBA01_2006 datafile '/opt/oracle/oradata/orcl/users_2006.dbf' size 500M;<br />create tablespace DBA01_2007 datafile '/opt/oracle/oradata/orcl/users_2007.dbf' size 500M;<br />create tablespace DBA01_2008 datafile '/opt/oracle/oradata/orcl/users_2008.dbf' size 500M;<br />create tablespace DBA01_2009 datafile '/opt/oracle/oradata/orcl/users_2009.dbf' size 500M;<br />create tablespace DBA01_2010 datafile '/opt/oracle/oradata/orcl/users_2010.dbf' size 500M;<br />create tablespace DBA01_2011 datafile '/opt/oracle/oradata/orcl/users_2011.dbf' size 500M;<br /><br /><div>建立目录：以SYS管理登录<br />sql&gt; create directory expdir as '/opt/oracle/oradata/orcl';<br />一。授权用户<br />sql&gt; grant EXP_FULL_DATABASE to orauser <br />sql&gt; grant IMP_FULL_DATABASE&nbsp; to orauser <br /><br /><div>注意：<br />&nbsp; 针对大数据库导入时，遇到了 由于db_recovery_file_dest_size=4G (太小)，导致不能写日志，导入过程停在那里了。<br />通过 <br />SQL&gt; alter system set db_recovery_file_dest_size =50G scope=both来设置。--调大</div><br />在linux命令窗口以 oracle用户登录<br />导入</div><div><div># impdp orauser/password directory=expdir&nbsp;&nbsp; dumpfile=data.dmp logfile=exp.log&nbsp;full=y<br /><div><pre id="best-content-1217440947"  mb-10"="">#单张表。如果表已经存在则要先删除<br />  impdp 用户名/密码 TABLES= DIRECTORY=expdir  DUMPFILE=data.dmp</pre></div><br /><div>导出：<br /># expdp orauser/password directory=expdir compression=ALL&nbsp; dumpfile=data.dmp full=y logfile=exp.log</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><img src ="http://www.blogjava.net/gdufo/aggbug/390169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-10-24 15:58 <a href="http://www.blogjava.net/gdufo/archive/2012/10/24/390169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 11数据导入与导出</title><link>http://www.blogjava.net/gdufo/archive/2012/10/23/390122.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 23 Oct 2012 11:46:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/10/23/390122.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/390122.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2012/10/23/390122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/390122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/390122.html</trackback:ping><description><![CDATA[建立目录：以SYS管理登录<br />sql&gt; create directory expdir as '/opt/oracle/oradata/orcl';<br />一。授权用户<br />sql&gt; grant EXP_FULL_DATABASE to orauser <br />sql&gt; grant IMP_FULL_DATABASE&nbsp; to orauser <br />在linux命令窗口以 oracle用户登录<br />导出：<br /># expdp orauser/password directory=expdir compression=ALL&nbsp; dumpfile=data.dmp full=y logfile=exp.log<br /><br /><div>导入(整个数据库)：</div># impdp orauser/password directory=expdir&nbsp;&nbsp; dumpfile=data.dmp logfile=exp.log&nbsp;<div>full=y<br /><div>导入(指定用户)：</div><div># impdp orauser/password directory=expdir&nbsp;&nbsp; dumpfile=data.dmp logfile=exp.log schemas=xxx<br /><br />注意：<br />&nbsp; 针对大数据库导入时，遇到了 由于db_recovery_file_dest_size=4G (太小)，导致不能写日志，导入过程停在那里了。<br />通过 <br />SQL&gt; alter system set db_recovery_file_dest_size =50G scope=both来设置。</div></div><img src ="http://www.blogjava.net/gdufo/aggbug/390122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-10-23 19:46 <a href="http://www.blogjava.net/gdufo/archive/2012/10/23/390122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 关闭audit 功能</title><link>http://www.blogjava.net/gdufo/archive/2012/10/14/389529.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sun, 14 Oct 2012 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/10/14/389529.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/389529.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2012/10/14/389529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/389529.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/389529.html</trackback:ping><description><![CDATA[<div>http://zxf261.blog.51cto.com/701797/762048</div><br /><div><p>Oracle 11g缺省安装数据库启动了audit功能，导致oracle不断累积sys.aud$表及相关索引数据量增加；<br /> 如果导致表空间满了，在alert日志中将会报ORA-1654: unable to extend index SYS....错误。<br /> 如果不用到审计功能，建议关闭审计。</p> <p>处理过程：&nbsp; <br /> 1、用oracle用户登录到数据库服务器，执行：<br /> sqlplus / as sysdba<br /> 2、取消audit，将初始化参数audit_trail设置为NONE<br /> alter system set audit_trail=none scope=spfile;<br /> 3、然后重启数据库.<br /> shutdown immediate; <br /> sqlplus / as sysdba<br /> startup;<br /> 4、删除签权数据，oracle用户登录到数据库服务器：<br /> sqlplus / as sysdba<br /> truncate table SYS.AUD$;</p></div><img src ="http://www.blogjava.net/gdufo/aggbug/389529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-10-14 10:55 <a href="http://www.blogjava.net/gdufo/archive/2012/10/14/389529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 在Linux X86上使用超过2G的SGA </title><link>http://www.blogjava.net/gdufo/archive/2012/10/13/389515.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sat, 13 Oct 2012 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/10/13/389515.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/389515.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2012/10/13/389515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/389515.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/389515.html</trackback:ping><description><![CDATA[<div>Oracle 在Linux X86上使用超过2G的SGA </div>转自(http://cnhtm.itpub.net/post/39970/496153)<br /><br />有空测试一下！<br />=================================================<br /><div><div>        <p>在Linux X86上，SGA最大使用2G内存，如果设置超过2G的SGA，会报如下错误</p><table bgcolor="#999999"><tbody><tr><td>ORA-27123: unable to attach to shared memory segment</td></tr></tbody></table><p>可以通过使用shared memory file的方式使用超过2G的sga。</p><p>下面演示其过程（RedHat as 4+Oracle 10.2.0.1）</p><br /><p><strong>1、SGA过大的错误演示</strong></p><table bgcolor="#999999"><tbody><tr><td>SQL&gt; alter system set sga_target=3G scope=spfile;<br /><br />System altered.<br /><br />SQL&gt; startup force<br />ORA-27123: unable to attach to shared memory segment<br />SQL&gt; exit<br />Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production<br />With the Partitioning, OLAP and Data Mining options</td></tr></tbody></table><p><strong>2、Mount ramfs 文件系统，并保证可以被oracle用户访问</strong></p><p>以下下过程用root用户操作</p><table bgcolor="#999999"><tbody><tr><td>[root@linux32 ~]# umount /dev/shm<br />[root@linux32 ~]# mount -t ramfs ramfs /dev/shm<br />[root@linux32 ~]# chown oracle:dba /dev/shm</td></tr></tbody></table><p>然后将上面的三个命令加入到/etc/rc.local文件最后，修改后的文件如下所示</p><table bgcolor="#999999"><tbody><tr><td>[root@linux32 ~]# cat /etc/rc.local<br />#!/bin/sh<br />#<br /># This script will be executed *after* all the other init scripts.<br /># You can put your own initialization stuff in here if you don't<br /># want to do the full Sys V style init stuff.<br /><br />touch /var/lock/subsys/local<br /><br />umount /dev/shm<br />mount -t ramfs ramfs /dev/shm<br />chown oracle:dba /dev/shm</td></tr></tbody></table><p><strong>3、设置shared pool可以使用的内存</strong></p><p>编辑/etc/security/limits.conf文件，加入标记为红色的两行<br />最后数字的计算公式为（假设要使用1g的shared pool，计算公式为 1&#215;1024&#215;1024=1048576），</p><table bgcolor="#999999"><tbody><tr><td>[root@linux32 ~]# cat /etc/security/limits.conf<br /># /etc/security/limits.conf<br />#<br />......<br />#@student - maxlogins 4<br /><br /># End of file<br />oracle soft nproc 2047<br />oracle hard nproc 16384<br />oracle soft nofile 1024<br />oracle hard nofile 65536<br /><br />oracle soft memlock 1048576<br />oracle hard memlock 1048576</td></tr></tbody></table><p>可以在另一个终端中重新用oracle用户登录，查看设置是否生效</p><table bgcolor="#999999"><tbody><tr><td>[oracle@linux32 ~]$ ulimit -l<br />1048576</td></tr></tbody></table><p><strong>4、设置SHMMAX参数值</strong></p><p>编辑/etc/sysctl.conf文件，按照如下规则设置如下3行</p><table bgcolor="#999999"><tbody><tr><td>kernel.shmmax = 2147483648 #Linux主机内存的一半，单位为byte，但最大最不能超过4294967295<br />kernel.shmmni = 4096 #一般固定为4094<br />kernel.shmall = 2097152 #应该&gt;或= kernel.shmmax/kernel.shmmni</td></tr></tbody></table><p>使用sysctl -p命令使设置生效</p><table bgcolor="#999999"><tbody><tr><td>[root@linux32 ~]# sysctl -p</td></tr></tbody></table><p><strong>5、修改oracle的pfile文件</strong></p><p>以下操作使用oracle用户操作</p><p>使用spfile生产pfile文件</p><table bgcolor="#999999"><tbody><tr><td>[oracle@linux32 dbs]$ strings spfileorcl.ora &gt; init.ora.bak</td></tr></tbody></table><p>编辑init.ora.bak文件，增加标记为红色的三行</p><table bgcolor="#999999"><tbody><tr><td>*.db_block_size=8192<br />......<br />*.use_indirect_data_buffers=true<br />*.db_block_buffers = 393216<br />*.shared_pool_size = 452984832</td></tr></tbody></table><p>db_block_buffers表示db_block_size的大小，如欲使用3g的db_block_size，则公司为：(3&#215;1024&#215;1024/8=393216)（8代表db_block_size为8k) </p><p>shared_pool_size表示shared pool的大小，单位为byte，不能超过步骤3设置的内存大小，否则启动时会报告如下错误：</p><table bgcolor="#999999"><tbody><tr><td>ORA-27102: out of memory<br />Linux Error: 28: No space left on device</td></tr></tbody></table><p>然后将*.sga_max_size和*.sga_target行删掉</p><p><strong>6、使用修改好的pfile文件启动</strong></p><table bgcolor="#999999"><tbody><tr><td>[oracle@linux32 dbs]$ sqlplus / as sysdba<br /><br />SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jan 20 21:52:40 2010<br /><br />Copyright (c) 1982, 2005, Oracle. All rights reserved.<br /><br />Connected to an idle instance.<br /><br />SQL&gt; startup pfile='?/dbs/init.ora.bak'<br />ORACLE instance started.<br /><br />Total System Global Area 3724541952 bytes<br />Fixed Size 1218076 bytes<br />Variable Size 486541796 bytes<br />Database Buffers 3221225472 bytes<br />Redo Buffers 15556608 bytes<br />Database mounted.<br />Database opened.</td></tr></tbody></table><p>生成spfile</p><table bgcolor="#999999"><tbody><tr><td>SQL&gt; create spfile from pfile='?/dbs/init.ora.bak';<br /><br />File created.</td></tr></tbody></table><p>使用spfile启动</p><table bgcolor="#999999"><tbody><tr><td>SQL&gt; startup force;<br />ORACLE instance started.<br /><br />Total System Global Area 3724541952 bytes<br />Fixed Size 1218076 bytes<br />Variable Size 486541796 bytes<br />Database Buffers 3221225472 bytes<br />Redo Buffers 15556608 bytes<br />Database mounted.<br />Database opened.</td></tr></tbody></table><p>显示sga情况</p><table bgcolor="#999999"><tbody><tr><td>SQL&gt; show sga<br /><br />Total System Global Area 3724541952 bytes<br />Fixed Size 1218076 bytes<br />Variable Size 486541796 bytes<br />Database Buffers 3221225472 bytes<br />Redo Buffers 15556608 bytes<br /><br />SQL&gt; show parameter sga<br /><br />NAME TYPE VALUE<br />------------------------------------ ----------- ------------------------------<br />lock_sga boolean FALSE<br />pre_page_sga boolean FALSE<br />sga_max_size big integer 3552M<br />sga_target big integer 0</td></tr></tbody></table><p>--end-- <br /></p><p><br /></p><p><div><a href="https://ellingtonpcb.com/owa/redir.aspx?C=4354424c96364f40a36087777aa92b4e&amp;URL=http%3a%2f%2fblog.csdn.net%2flifetragedy%2farticle%2fdetails%2f6212887" target="_blank">http://blog.csdn.net/lifetragedy/article/details/6212887</a></div><br /></p>           </div></div><img src ="http://www.blogjava.net/gdufo/aggbug/389515.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-10-13 17:12 <a href="http://www.blogjava.net/gdufo/archive/2012/10/13/389515.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>删除过期归档日志 </title><link>http://www.blogjava.net/gdufo/archive/2012/09/29/388832.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sat, 29 Sep 2012 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/09/29/388832.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/388832.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2012/09/29/388832.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/388832.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/388832.html</trackback:ping><description><![CDATA[<div>删除过期归档日志</div><div>1. 进入rman&nbsp; <br />2. connect target / <br />3. crosscheck archivelog all; </div><div>4.delete expired archivelog all;==&gt;没有rman备份的情况下不适用。<br />5.delete archivelog all completed before 'SYSDATE-30'; 删除一个月前的日志。</div><img src ="http://www.blogjava.net/gdufo/aggbug/388832.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-09-29 13:20 <a href="http://www.blogjava.net/gdufo/archive/2012/09/29/388832.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE分页查询SQL语法 </title><link>http://www.blogjava.net/gdufo/archive/2012/06/16/380930.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sat, 16 Jun 2012 14:17:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/06/16/380930.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/380930.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2012/06/16/380930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/380930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/380930.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt;"> </span><div><span style="font-family: Arial; font-size: 12pt; color: red;"><div>     <h3>         <span><a href="http://blog.csdn.net/xiaohui_liao/article/details/1759981">         ORACLE分页查询SQL语法          </a></span>     </h3></div><br />--1:无ORDER BY排序的写法。(效率最高) </span><br /><span style="font-family: Arial; font-size: 12pt;">--(经过测试，此方法成本最低，只嵌套一层，速度最快！即使查询的数据量再大，也几乎不受影响，速度依然！) </span><br /><span style="font-family: Arial; font-size: 12pt;">SELECT * </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp; FROM (Select ROWNUM AS ROWNO, T.* </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from k_task T </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where Flight_date between to_date('20060501', 'yyyymmdd') and </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to_date('20060731', 'yyyymmdd') </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND ROWNUM &lt;= 20) TABLE_ALIAS </span><br /><span style="font-family: Arial; font-size: 12pt;">WHERE TABLE_ALIAS.ROWNO &gt;= 10; </span><br /><br /><span style="font-family: Arial; font-size: 12pt; color: red;">--2:有ORDER BY排序的写法。(效率最高) </span><br /><span style="font-family: Arial; font-size: 12pt;">--(经过测试，此方法随着查询范围的扩大，速度也会越来越慢哦！) </span><br /><span style="font-family: Arial; font-size: 12pt;">SELECT * </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp; FROM (SELECT TT.*, ROWNUM AS ROWNO </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (Select t.* </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from k_task T </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where flight_date between to_date('20060501', 'yyyymmdd') and </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to_date('20060531', 'yyyymmdd') </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY FACT_UP_TIME, flight_no) TT </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE ROWNUM &lt;= 20) TABLE_ALIAS </span><br /><span style="font-family: Arial; font-size: 12pt;">where TABLE_ALIAS.rowno &gt;= 10; </span><br /><br /><span style="font-family: Arial; font-size: 12pt; color: red;">--3:无ORDER BY排序的写法。(建议使用方法1代替) </span><br /><span style="font-family: Arial; font-size: 12pt;">--(此方法随着查询数据量的扩张，速度会越来越慢哦！) </span><br /><span style="font-family: Arial; font-size: 12pt;">SELECT * </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp; FROM (Select ROWNUM AS ROWNO, T.* </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from k_task T </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where Flight_date between to_date('20060501', 'yyyymmdd') and </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to_date('20060731', 'yyyymmdd')) TABLE_ALIAS </span><br /><span style="font-family: Arial; font-size: 12pt;">WHERE TABLE_ALIAS.ROWNO &lt;= 20 </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp; AND TABLE_ALIAS.ROWNO &gt;= 10; </span><br /><span style="font-family: Arial; font-size: 12pt;">--TABLE_ALIAS.ROWNO&nbsp; between 10 and 100; </span><br /><br /><span style="font-family: Arial; font-size: 12pt; color: red;">--4:有ORDER BY排序的写法.(建议使用方法2代替) </span><br /><span style="font-family: Arial; font-size: 12pt;">--(此方法随着查询范围的扩大，速度会越来越慢哦！) </span><br /><span style="font-family: Arial; font-size: 12pt;">SELECT * </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp; FROM (SELECT TT.*, ROWNUM AS ROWNO </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (Select * </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from k_task T </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where flight_date between to_date('20060501', 'yyyymmdd') and </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to_date('20060531', 'yyyymmdd') </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY FACT_UP_TIME, flight_no) TT) TABLE_ALIAS </span><br /><span style="font-family: Arial; font-size: 12pt;">where TABLE_ALIAS.rowno BETWEEN 10 AND 20; </span><br /><br /><br /><span style="font-family: Arial; font-size: 12pt; color: red;">--5另类语法。(有ORDER BY写法） </span><br /><span style="font-family: Arial; font-size: 12pt;">--(语法风格与传统的SQL语法不同，不方便阅读与理解，为规范与统一标准，不推荐使用。) </span><br /><span style="font-family: Arial; font-size: 12pt;">With partdata as( </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp; SELECT ROWNUM AS ROWNO, TT.*&nbsp; FROM (Select * </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from k_task T </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where flight_date between to_date('20060501', 'yyyymmdd') and </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to_date('20060531', 'yyyymmdd') </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY FACT_UP_TIME, flight_no) TT </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp; WHERE ROWNUM &lt;= 20) </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp; Select * from partdata where rowno &gt;= 10; </span><br /><br /><span style="font-family: Arial; font-size: 12pt;">--6另类语法 。(无ORDER BY写法） </span><br /><span style="font-family: Arial; font-size: 12pt;">With partdata as( </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp; Select ROWNUM AS ROWNO, T.* </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp; From K_task T </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp; where Flight_date between to_date('20060501', 'yyyymmdd') and </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; To_date('20060531', 'yyyymmdd') </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp;&nbsp; AND ROWNUM &lt;= 20) </span><br /><span style="font-family: Arial; font-size: 12pt;">&nbsp;&nbsp;&nbsp; Select * from partdata where Rowno &gt;= 10;&nbsp;&nbsp;&nbsp; </span></div><img src ="http://www.blogjava.net/gdufo/aggbug/380930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-06-16 22:17 <a href="http://www.blogjava.net/gdufo/archive/2012/06/16/380930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL2008的数据更新跟踪测试 (监控数据表变化，可用于同步)</title><link>http://www.blogjava.net/gdufo/archive/2012/05/27/379331.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sun, 27 May 2012 14:31:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/05/27/379331.html</guid><description><![CDATA[<div>http://blog.csdn.net/jinjazz/article/details/5495955</div><div><div id="article_content">     <p>最近一个项目中需要监测SQLServer数据库中某些表的数据更新情况,于是做了一番POC测试和简单性能的评估.这里使用的是 SQLServer2008的更改跟踪.因为需求原因,没有考虑使用进一步的变更数据捕获.</p> <p>&nbsp;</p> <p>POC过程如下:</p> <p> </p><hr />  <p>这里我们建立一个测试环境，模拟数据在 Insert ， Update 和 Delete 情况下的跟踪效果。<br /> <br /> 1 、测试脚本的准备，下面脚本建立一个新的数据库环境，并作相应的跟踪配置后向表中添加删除更改数据。</p> <div id="codee_html"> <div style="background: none repeat scroll 0% 0% #fdfdfd; color: black;"><br /> </div> <div style="background: none repeat scroll 0% 0% #fdfdfd; color: black;"><span style="text-decoration: underline;"> <hr /> <br /> </span> </div> <div> <span style="color: #000000;">Use</span>  <span style="color: #000000;">master</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">go</span> <br />  <br />  <span style="color: #008800; font-style: italic;">/***</span> <br />  <br />  <span style="color: #008800; font-style: italic;">1  、建立测试环境：生成一个带主键的测试表 T_Trace</span> <br />  <br />  <span style="color: #008800; font-style: italic;">*/</span> <br />  <br />  <span style="color: #000000;">if</span>  ( <span style="color: #000000;">DB_ID</span>  ( <span style="color: #0000ff;">'db_Trace_test'</span>  ) <span style="color: #000080; font-weight: bold;">is</span>  <span style="color: #000080; font-weight: bold;">not</span>  <span style="color: #000080; font-weight: bold;">null</span> ) <span style="color: #000080; font-weight: bold;">drop</span>  <span style="color: #000080; font-weight: bold;">database</span>  <span style="color: #000000;">db_Trace_test</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">go</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">Create</span>  <span style="color: #000080; font-weight: bold;">DataBase</span>  <span style="color: #000000;">db_Trace_test</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">go</span> <br />  <br />  <span style="color: #000000;">use</span>  <span style="color: #000000;">db_Trace_test</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">go</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">Create</span>  <span style="color: #000080; font-weight: bold;">Table</span>  <span style="color: #000000;">T_Trace</span>  ( <span style="color: #000000;">id</span>  <span style="color: #000000;">int</span>  <span style="color: #000080; font-weight: bold;">not</span>  <span style="color: #000080; font-weight: bold;">null</span> <span style="color: #000000;">,</span>  <span style="color: #000000;">name</span>  <span style="color: #000000;">varchar</span>  ( <span style="color: #0000ff;">100</span> )<br />  <br />  <span style="color: #000080; font-weight: bold;">CONSTRAINT</span>  <span style="color: #000000;">[</span> <span style="color: #000000;">PK_T_Trace</span> <span style="color: #000000;">]</span>  <span style="color: #000080; font-weight: bold;">PRIMARY</span>  <span style="color: #000080; font-weight: bold;">KEY</span>  <span style="color: #000000;">CLUSTERED</span>  ( <span style="color: #000000;">[</span> <span style="color: #000000;">id</span> <span style="color: #000000;">]</span>  <span style="color: #000080; font-weight: bold;">ASC</span>  )<br />  <br />  )<br />  <br />  <span style="color: #000080; font-weight: bold;">go</span> <br />  <br />  <span style="color: #008800; font-style: italic;">/***</span> <br />  <br />  <span style="color: #008800; font-style: italic;">2  、配置数据库和表的更改跟踪参数</span> <br />  <br />  <span style="color: #008800; font-style: italic;">*/</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">ALTER</span>  <span style="color: #000080; font-weight: bold;">DATABASE</span>  <span style="color: #000000;">db_Trace_test</span>  <span style="color: #000080; font-weight: bold;">SET</span> <br />  <br />  &nbsp;&nbsp;&nbsp; <span style="color: #000000;">CHANGE_TRACKING</span>  <span style="color: #000000;">=</span>  <span style="color: #000080; font-weight: bold;">ON</span>  (<br />  <br />  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000;">AUTO_CLEANUP</span>  <span style="color: #000000;">=</span>  <span style="color: #000080; font-weight: bold;">ON</span>  <span style="color: #000000;">,</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008800; font-style: italic;">-- 打开自动清理选项</span> <br />  <br />  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000;">CHANGE_RETENTION</span>  <span style="color: #000000;">=</span>  <span style="color: #0000ff;">1</span>  <span style="color: #000000;">HOURS</span> &nbsp;&nbsp; <span style="color: #008800; font-style: italic;">-- 数据保存期为时</span> <br />  <br />  &nbsp;&nbsp;&nbsp; );<br />  <br />   <br />  <br />  <span style="color: #000080; font-weight: bold;">ALTER</span>  <span style="color: #000080; font-weight: bold;">TABLE</span>  <span style="color: #000000;">dbo</span>  <span style="color: #000000;">.</span>  <span style="color: #000000;">T_Trace</span>  <span style="color: #000000;">ENABLE</span>  <span style="color: #000000;">CHANGE_TRACKING</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">go</span> <br />  <br />  <span style="color: #008800; font-style: italic;">/***</span> <br />  <br />  <span style="color: #008800; font-style: italic;">3 、向表中增加修改删除数据</span> <br />  <br />  <span style="color: #008800; font-style: italic;">*/</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">insert</span>  <span style="color: #000080; font-weight: bold;">into</span>  <span style="color: #000000;">T_Trace</span>  <span style="color: #000080; font-weight: bold;">values</span>  ( <span style="color: #0000ff;">1</span> <span style="color: #000000;">,</span>  <span style="color: #0000ff;">' 上海 '</span>  <span style="color: #000000;">),(</span>  <span style="color: #0000ff;">2</span> <span style="color: #000000;">,</span>  <span style="color: #0000ff;">' 北京 '</span>  <span style="color: #000000;">),(</span>  <span style="color: #0000ff;">3</span> <span style="color: #000000;">,</span>  <span style="color: #0000ff;">' 广州 '</span>  )<br />  <br />  <span style="color: #000080; font-weight: bold;">delete</span>  <span style="color: #000080; font-weight: bold;">from</span>  <span style="color: #000000;">T_Trace</span>  <span style="color: #000080; font-weight: bold;">where</span>  <span style="color: #000000;">id</span>  <span style="color: #000000;">=</span>  <span style="color: #0000ff;">3</span> <br />  <br />  <br />  <span style="color: #000080; font-weight: bold;">update</span>  <span style="color: #000000;">T_Trace</span>  <span style="color: #000080; font-weight: bold;">set</span>  <span style="color: #000000;">name</span>  <span style="color: #000000;">=</span>  <span style="color: #0000ff;">' 天津 '</span>  <span style="color: #000080; font-weight: bold;">where</span>  <span style="color: #000000;">id</span>  <span style="color: #000000;">=</span>  <span style="color: #0000ff;">1</span> </div> <div> <hr /> </div> <div>2 、跟踪分析，测试脚本和效果如下</div> <div> <hr /> <br /> </div> <div> <div id="codee_html"> <div> <span style="color: #008800; font-style: italic;">/***</span> <br />  <br />  <span style="color: #008800; font-style: italic;">4  、获取更改过的数据</span> <br />  <br />  <span style="color: #008800; font-style: italic;">*/</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">SELECT</span> <br />  <br />  &nbsp;&nbsp;&nbsp; <span style="color: #000000;">CHG</span>  <span style="color: #000000;">.</span>  <span style="color: #000000;">Sys_Change_Version</span>  <span style="color: #000080; font-weight: bold;">as</span>  <span style="color: #a61717; background-color: #e3d2d2;">序 列</span>  <span style="color: #000000;">,</span>  <span style="color: #000000;">id</span>  <span style="color: #000080; font-weight: bold;">as</span>  <span style="color: #a61717; background-color: #e3d2d2;">主键</span>  <span style="color: #000000;">,</span>  <span style="color: #000000;">Sys_change_Operation</span>  <span style="color: #000080; font-weight: bold;">as</span>  <span style="color: #a61717; background-color: #e3d2d2;">操 作</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">FROM</span>  <span style="color: #000000;">CHANGETABLE</span>  ( <span style="color: #000000;">CHANGES</span>  <span style="color: #000000;">dbo</span>  <span style="color: #000000;">.</span>  <span style="color: #000000;">T_Trace</span>  <span style="color: #000000;">,</span>  <span style="color: #0000ff;">0</span> ) <span style="color: #000000;">CHG</span> <br />  <br />  <span style="color: #000080; font-weight: bold;">order</span>  <span style="color: #000080; font-weight: bold;">by</span>  <span style="color: #000000;">CHG</span>  <span style="color: #000000;">.</span>  <span style="color: #000000;">Sys_Change_Version</span> <br />  <br />  <span style="color: #008800; font-style: italic;">/*</span> </div> <div><span style="color: #008800; font-style: italic;"><img src="http://hi.csdn.net/attachment/201004/17/0_1271475049n5kA.gif" alt="" /> <br /> </span> </div> <div>其中，测试脚本中函数 CHANGETABLE 的第二个参数 0 代表查询开始的事物操作序列，这三条数据分别表示两个插入（ I ）和一个删除（ D ）操作并且用主键 ID 标识出来。<br /> <br /> * 这里主键为 1 的数据标志为插入，是因为 Insert 和 Update 是在同一个跟踪事务中查询出来的。</div> <div> <hr /> 3 、调整跟踪范围参数，我们从序列为 2 的操作开始跟踪，这样可以跟踪到测试数据的 Update 语句：<br /> <br /> SELECT<br /> <br /> &nbsp;&nbsp;&nbsp; CHG . Sys_Change_Version as 序列 , id as 主键 , Sys_change_Operation as 操作<br /> <br /> FROM CHANGETABLE ( CHANGES dbo . T_Trace , 2) CHG<br /> <br /> <br /> order by CHG . Sys_Change_Version</div> <div><br /> <br /> <img src="http://hi.csdn.net/attachment/201004/17/0_12714750787ffp.gif" alt="" /> </div> <div>这个结果则表示，主键为 1 的数据数据执行过更新操作 (U)</div> <div> <hr /> <br /> </div> <div><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">1、硬件测试环境：</span> </div> <div> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;"><img src="http://hi.csdn.net/attachment/201004/17/0_12714752914siZ.gif" alt="" /> <br /> </span> </p> <p style="line-height: 150%;">  </p> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">2</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">、软件测试环境：</span>  </p> <p style="text-indent: 21pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Windows 2008Server</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">，</span> <span style="font-size: 12pt; line-height: 150%;">SQLServer2008</span> </p> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">3</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">、样本数据：</span>  </p> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /--**--/</span>   </p> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">4</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">、测试结果：其中判断和提取更新表示查询时间，包含了返回到</span> <span style="font-size: 12pt; line-height: 150%;">SQLServer</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">客户端的传输时间。</span>  </p> <table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="width: 33.75pt; border: 1pt solid black; padding: 0cm 5.4pt;" valign="top" width="45"> <p style="line-height: 150%;"><strong><span style="font-size: 9pt; line-height: 150%; font-family: 宋体;">序列</span> </strong> <strong> </strong> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: 1pt 1pt 1pt medium solid solid solid none black black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><strong><span style="font-size: 9pt; line-height: 150%; font-family: 宋体;">源表数据</span> </strong> <strong> </strong> </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: 1pt 1pt 1pt medium solid solid solid none black black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><strong><span style="font-size: 9pt; line-height: 150%; font-family: 宋体;">操作</span> </strong> <strong> </strong> </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: 1pt 1pt 1pt medium solid solid solid none black black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><strong><span style="font-size: 9pt; line-height: 150%; font-family: 宋体;">判断更新</span> </strong> <strong> </strong> </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: 1pt 1pt 1pt medium solid solid solid none black black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><strong><span style="font-size: 9pt; line-height: 150%; font-family: 宋体;">提取更新</span> </strong> <strong> </strong> </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">1</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">1000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Delete</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句删除</span> <span style="font-size: 12pt; line-height: 150%;">1000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">无</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">2</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Insert</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句插入</span> <span style="font-size: 12pt; line-height: 150%;">100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">3</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Insert</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句插入</span> <span style="font-size: 12pt; line-height: 150%;">1000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">4</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">1100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Insert</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句插入</span> <span style="font-size: 12pt; line-height: 150%;">10000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">5</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">11100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Insert</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句插入</span> <span style="font-size: 12pt; line-height: 150%;">100000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">3</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">4</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">6</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">111100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Insert</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句插入</span> <span style="font-size: 12pt; line-height: 150%;">100000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">6</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">7</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">7</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">211100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Insert</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句插入</span> <span style="font-size: 12pt; line-height: 150%;">100000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">7</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">11</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">8</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">311100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Delete</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句删除</span> <span style="font-size: 12pt; line-height: 150%;">100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">无</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">9</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">311100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Update</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句更新</span> <span style="font-size: 12pt; line-height: 150%;">100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">10</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">311100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Update</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句更新</span> <span style="font-size: 12pt; line-height: 150%;">1000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> <tr> <td style="width: 33.75pt; border-right: 1pt solid black; padding: 0cm 5.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color black black;" valign="top" width="45"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">11</span> </p> </td> <td style="width: 63.8pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="85"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">311100</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 184.3pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="246"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">Update</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">语句更新</span> <span style="font-size: 12pt; line-height: 150%;">10000</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">条</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> <td style="width: 55.1pt; padding: 0cm 5.4pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color black black -moz-use-text-color;" valign="top" width="73"> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">0</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">秒</span>  </p> </td> </tr> </tbody> </table> <p style="line-height: 150%;"><span style="font-size: 12pt; line-height: 150%;">5</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">、测试评估：</span>  </p> <span style="font-size: 12pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span> <span style="font-size: 12pt; font-family: 宋体;">在变更数据量万级的情况下，可以很快地响应跟踪结果并提取出所需要的数据。</span> </div> </div> </div> </div> </div></div><img src ="http://www.blogjava.net/gdufo/aggbug/379331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-05-27 22:31 <a href="http://www.blogjava.net/gdufo/archive/2012/05/27/379331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL 2005配置发邮件</title><link>http://www.blogjava.net/gdufo/archive/2012/05/24/379046.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Thu, 24 May 2012 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/05/24/379046.html</guid><wfw:comment>http://www.blogjava.net/gdufo/comments/379046.html</wfw:comment><comments>http://www.blogjava.net/gdufo/archive/2012/05/24/379046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gdufo/comments/commentRss/379046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdufo/services/trackbacks/379046.html</trackback:ping><description><![CDATA[<br /><div>http://www.sqlstudy.com/sql_article.php?id=2008072403<br /><br /><div id="article-title">                 <h1>SQL Server：在 SQL Server 2005 中配置数据库邮件，发送邮件</h1>             </div>             <div id="article-info">                <p>                    [作/译者]：鹏城万里  &nbsp;&nbsp;                       [日期]：2008-07-24  &nbsp;&nbsp;                       [来源]：本站原创  &nbsp;&nbsp;                       [查看]: 6343               </p>             </div>                              <p>【鹏城万里】 发表于 <strong><a href="http://www.sqlstudy.com/">www.sqlstudy.com</a></strong> </p><h2> SQL Server：在 SQL Server 2005 中配置数据库邮件。 </h2>  <p> 对于真正的 DBA 来说，数据库邮件是必不可少的。 例如，数据库发生了警报（alert）， DBA 希望得到邮件通知，以便即时排除故障。 或者是监控数据库作业（SQL Server Job）的运行状况，当检查到失败的作业时， 就发送数据库邮件报告给 DBA。 </p>  <p> 在 SQL Server 2000 中 配置 &#8220;SQL Mail&#8221;，需要安装 Outlook，配置过程比较麻烦。 在 SQL Server 2005 中配置 &#8220;Database Mail&#8221; 就相对容易多了。 主要是理清思路。 </p>  <p> SQL Server 并没有内置邮件服务器（Mail Server）， 它跟我们发送邮件一样，需要用户名和密码通过 SMTP（Simple Message Transfer Protocol） 去连接邮件服务器。我们想让 SQL Server 来发送邮件，首先要告诉它用户名称，密码， 服务器地址，网络传送协议，邮件服务器的端口。。。等信息。这是通过 SQL Server 系统 存储过程 sysmail_add_account_sp 来实现的。 </p>  <pre>exec sysmail_add_account_sp </pre>  <p> 这样，在 SQL Server 2005 中就添加了一个发送邮件的帐户。 道理上讲，有了这个邮件帐户，SQL Server 就可以发送邮件了。 如：  </p><pre>sp_send_dbmail @account_name = 'mail_account' </pre>  <p> 但是，SQL Server 考虑的更周全。试想：如果这个邮件帐户发生故障 （比如：用户密码过期，或者邮件服务器宕机）那岂不是发送不了邮件了？ 为了应对这种情况，SQL Server 2005 引入了 mail profile 这个东东。 一个 profile 中可以包含多个 account （邮件帐户），这样，SQL Server 发邮件的时候会依次尝试 profile 中的多个邮件帐户，如果发送成功，则退出， 否则，利用下一个邮件帐户发送邮件。其中，添加 profile 和 在 account 和 profile 建立映射是通过下面两个系统存储过程实现的： </p>   <pre>sysmail_add_profile_sp sysmail_add_profileaccount_sp </pre>  <p> 这时候，SQL Server 发送邮件，就采用下面的方法了： </p>  <pre>sp_send_dbmail @profile_name = 'profile_name' </pre>   <h2> 下面是具体的配置邮件步骤 </h2>  <p> 在 sa 系统帐户下运行。 </p>  <p> 1. 启用 SQL Server 2005 邮件功能。 </p>  <pre>use master go  exec sp_configure 'show advanced options',1 go  reconfigure go  exec sp_configure 'Database mail XPs',1 go  reconfigure go </pre>   <p> 2. 在 SQL Server 2005 中添加邮件帐户（account） </p>  <pre>exec msdb..sysmail_add_account_sp         @account_name            = 'p.c.w.l'                 -- 邮件帐户名称（SQL Server 使用）        ,@email_address           = 'webmaster@sqlstudy.com'  -- 发件人邮件地址        ,@display_name            = null                      -- 发件人姓名        ,@replyto_address         = null        ,@description             = null        ,@mailserver_name         = '58.215.64.159'           -- 邮件服务器地址        ,@mailserver_type         = 'SMTP'                    -- 邮件协议（SQL 2005 只支持 SMTP）        ,@port                    = 25                        -- 邮件服务器端口        ,@username                = 'webmaster@sqlstudy.com'  -- 用户名        ,@password                = 'xxxxxxxxx'               -- 密码        ,@use_default_credentials = 0        ,@enable_ssl              = 0        ,@account_id              = null </pre>   <p> 3. 在 SQL Server 2005 中添加 profile </p>  <pre>exec msdb..sysmail_add_profile_sp @profile_name = 'dba_profile'      -- profile 名称                                   ,@description  = 'dba mail profile' -- profile 描述                                   ,@profile_id   = null </pre>   <p> 4. 在 SQL Server 2005 中映射 account 和 profile </p>  <pre>exec msdb..sysmail_add_profileaccount_sp  @profile_name    = 'dba_profile' -- profile 名称                                           ,@account_name    = 'p.c.w.l'     -- account 名称                                           ,@sequence_number = 1             -- account 在 profile 中顺序  </pre>   <p> 5. 利用 SQL Server 2005 Database Mail 功能发送邮件。 </p>  <pre>exec msdb..sp_send_dbmail @profile_name =  'dba_profile'               -- profile 名称                           ,@recipients   =  'sqlstudy@163.com'          -- 收件人邮箱                           ,@subject      =  'SQL Server 2005 Mail Test' -- 邮件标题                           ,@body         =  'Hello Mail!'               -- 邮件内容                           ,@body_format  =  'TEXT'                      -- 邮件格式  </pre>  <p> 6. 查看邮件发送情况： </p>  <pre>use msdb go  select * from sysmail_allitems select * from sysmail_mailitems select * from sysmail_event_log </pre>   <p> 如果不是以 sa 帐户发送邮件，则可能会出现错误： </p>  <pre>Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1 EXECUTE permission denied on object 'sp_send_dbmail', database 'msdb', schema 'dbo'. </pre>  <p> 这是因为，当前 SQL Server 登陆帐户（login），在 msdb 数据库中没有发送数据库邮件的权限， 需要加入 msdb 数据库用户，并通过加入 sp_addrolemember 角色赋予权限。假设该SQL Server 登陆帐户 名字为 &#8220;dba&#8221; </p>  <pre>use msdb go  create user dba for login dba go  exec dbo.sp_addrolemember @rolename   = 'DatabaseMailUserRole',                           @membername = 'dba' go </pre>   <p> 此时，再次发送数据库邮件，仍可能有错误： </p>  <pre>Msg 14607, Level 16, State 1, Procedure sp_send_dbmail, Line 119 profile name is not valid </pre>  <p> 虽然，数据库用户 &#8220;dba&#8221; 已经在 msdb 中拥有发送邮件的权限了， 但这还不够，他还需要有使用 profile：&#8220;dba_profile&#8221; 的权限。 </p>  <pre>use msdb go  exec sysmail_add_principalprofile_sp  @principal_name = 'dba'                                      ,@profile_name   = 'dba_profile'                                      ,@is_default     = 1 </pre>  <p> 从上面的参数 @is_default=1 可以看出，一个数据库用户可以在多个 mail profile 拥有发送权限。 </p>  <p> 现在，可以利用 SQL Server 2005 发送数据库邮件了吧。如仍有问题，请留言。 </p><p>&nbsp;</p></div><img src ="http://www.blogjava.net/gdufo/aggbug/379046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-05-24 16:38 <a href="http://www.blogjava.net/gdufo/archive/2012/05/24/379046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer跨服务器查询，添加Server Link</title><link>http://www.blogjava.net/gdufo/archive/2012/04/05/373351.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Thu, 05 Apr 2012 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/04/05/373351.html</guid><description><![CDATA[<div><div>exec sp_addlinkedserver 'PA_EHR','','SQLOLEDB','10.110.8.41'<br />exec sp_addlinkedsrvlogin 'PA_EHR','false',null,'sa','123456'<br /></div><div>exec sp_dropserver 'PA_EHR' 如果删除不了，去企业管理器中删除。</div><br />select * from PA_EHR.tongxehr.dbo.AdvQueryProject</div><img src ="http://www.blogjava.net/gdufo/aggbug/373351.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-04-05 10:15 <a href="http://www.blogjava.net/gdufo/archive/2012/04/05/373351.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Using Oracle Blocks Efficiently</title><link>http://www.blogjava.net/gdufo/archive/2010/01/12/309133.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 12 Jan 2010 04:33:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2010/01/12/309133.html</guid><description><![CDATA[&nbsp;
<p>1、DB的存储层次（在其他文章中已经介绍过了，这里只是简述）<br />
1）blocks：是data file I/O的最小单位，也是空间分配的最小单位。一个Oracle block是由一个或多个连续的OS blocks组成。<br />
2）extents：是由多个连续的data blocks组成的拥有存储空间分配的逻辑单位。一个或多个extents组成了一个segment。当在一个segment中的所有空间都被用完时，Oracle server会给segment分配新的extent。<br />
3）segments：一个segment是一个extents的集合，存放了tablespace中具体的逻辑存储结构的所有数据。例如，每个 table，Oracle server会分配一个或多个extents用于组成该table的data segments。对于indexes，Oracle server分配一个或多个extents用于组成index segment。</p>
<p>2、extents的分配：为了尽可能降低动态分配extent的弊端，应该如下：<br />
*&nbsp; 使用本地管理表空间的方法。<br />
*&nbsp; 适当的评估segments的大小：确定object的最大size；创建object时，选择恰当的存储参数用于分配足够的空间给相应的data。<br />
*&nbsp; 监控segments的动态extend的情况。<br />
select owner, table_name, blocks, empty_blocks from dba_tables where empty_blocks/(blocks+empty_blocks)&lt;.1;<br />
alter table hr.employees allocate extent;<br />
①创建本地管理extents的tablespace，其实自9i以来，系统默认的表空间都是本地管理的表空间。<br />
create tablespace tsp_name datafile &#8216;/path/datafile.dbf&#8217; size <em><span style="font-family: 宋体">n</em>M<br />
&nbsp;&nbsp;&nbsp; extent management local uniform size <em><span style="font-family: 宋体">m</span></em>M;<br />
</span>本地管理表空间在其datafile内部创建一个位图用于记录每个block的使用状态。当extent被分配或释放重用，bitmap的相应值会被修 改，用于显示其中blocks的新状态。这些修改不会产生rollback information，因为没有修改data dictionary。<br />
②大extents的优点：DBA应该分配适当的size给segments和extents，一般原则是大extents优于小extents，主要表现在：<br />
*&nbsp; large extents在一定程度上降低了segments动态的分配extents的可能性<br />
*&nbsp; large extents可以稍微的提高I/O的性能，因为Oracle server从磁盘读取一个连续的large extent的多个blocks应该比从几个small extents不连续的blocks的速度快。为了避免分离的multiblock的读取，可以考虑将extents设置为 5*DB_FILE_MULTIBLOCK_READ_COUNT。但是对于不经常进行全表扫描的table，这种设置不会有太大的性能改观。<br />
*&nbsp; 对于非常large的tables，OS在文件大小上的限制可能使DBA不得不将object分配到multiple extents。<br />
*&nbsp; 使用index查找的性能不会受到index是否在一个或多个extents中的影响。<br />
*&nbsp; Extent maps存放了某个segment中所有extents的信息。如果MAXEXTENTS设置为UNLIMITED，这些maps可以存放在多个 blocks中，从性能角度讲，应该尽可能在一次I/O中读取该extent map。此外多个extents也会降低dictionary的性能，因为每个extent都会占用dictionary cache的少量空间。<br />
<span style="color: #ff6600">附注：①</span>在ASSM表空间中，每个segment的 segment header都有一个extent map，记录着segment所属的所有extents的第一个块的位置和区的大小，如果segment header中容纳不下所有的extents信息，oracle会另外添加专门的extents map块，保存segment中extents的位置大小信息。全表扫描时oracle会根据extents map中所记录的信息，扫描高水标记之下的所有extents的所有blocks．每个extents map block都有一个指向下一个extents map block的地址，segment header中的extents map信息也有指向第一个extents map block的地址．也就是说所有的extents map block构成了一个链表．全表扫描时就依据这个链表中所记录的block的位置信息进行扫描．extents map的主要作用是用于全表扫描．<br />
<span style="color: #ff6600">②FLM</span>段（Free List Managed Segment)，其段头存放着段中Extent的信息，包括Extent的起始地址，Extent的长度。如果由于segment扩展过 多，segment header不能容下所有EXTENT的信息，则会用新的称之为EXTENT MAP BLOCK的块来专门存放EXTENT的信息。段头与各Extent Map Block之间用链表形式连接起来。它与ASSM中的extent map链表作用不同。<br />
③large extents的缺点：因为需要更多连续的blocks，Oracle server可能很难找到足够的连接的空间用于对其的分配。</p>
<p>3、高水位线（High-Water Mark）<br />
在空间分配中，有两类空闲blocks：曾经被占用过，但相应的数据被删除了，这些blocks将被记录到相应的free list中，当有insert操作时进程reuse，在high-water mark以下；另一类是自分配给相应的segment后，从来没有被使用过的，所以在high-water mark之上。<br />
①high-water mark：被记录在segment header block中；在segment被创建时设置：当插入rows时，每次增加five-block；truncate tables会重置high-water mark，但delete不会。<br />
②在table level，可以将high-water 玛瑞咖之上的空间收回：<br />
alter table t_name deallocate unused &#8230;<br />
全表扫描中，Oracle server会读取high-water mark以下的所有blocks，high-water mark以上的空闲blocks不会影响性能。<br />
③在cluster中，空间是为所有的cluster keys分配的，无论其是否含有data。分配的空间依靠cluster在创建时参数size指定的大小和cluster的类型：<br />
*&nbsp; 在hash cluster中，因为hash keys的数量在cluster被创建是已经被确定了，所以每个hash key所占用的空间都在high-water mark之下。<br />
*&nbsp; 在index cluster中，空间被分配给每个cluster index。</p>
<p>4、table statistics<br />
可以使用analyze语句或是dbms_stats对table的当前状况进行统计并保存在数据字典中，随后通过查看dba_tables获得相关信息。<br />
eg：<br />
analyze table t_name compute statistics;<br />
select num_rows, blocks, empty_blocks as empty, avg_space, chain_cnt, avg_row_len from dba_tables where table_name=&#8217;T_NAME&#8217;;<br />
其中dba_tables中不同的字段具体含义如下：<br />
Num_Rows &#8211; Number of rows in the table<br />
Blocks &#8211; Number of blocks below the high-water mark of the table<br />
Empty_blocks &#8211; Number of blocks above the high-water mark of the table<br />
Avg_space &#8211; Average free space in bytes in the blocks below the highwater mark<br />
Avg_row_len &#8211; Average row length, including row overhead<br />
Chain_cnt &#8211; Number of chained, or migrated, rows in the table<br />
Avg_space_freelist_blocks &#8211; The average freespace of all blocks on a freelist<br />
Num_freelist_blocks &#8211; The number of blocks on the freelist</p>
<p>5、DBMS_SPACE包：可用于获得segments中的space的状态信息，常用的有以下两个procedures：<br />
*&nbsp; UNUSED_SPACE：用于获得分配给object未使用的space。<br />
*&nbsp; FREE_BLOCKS：用于获得object的空闲的space。在运行时，必须提供相应的FREELIST_GROUP_ID，一般使用1，除非你使用的是Oracle Parallel server。<br />
该DBMS_SPACE包是由dbmsutil.sql创建的。</p>
<p>6、恢复表空间：<br />
1）对于在high-water mark以下的空间：<br />
方法一：export the table；drop or truncate the table；import the table<br />
&nbsp; 在选择是drop还是truncate的时候，要考虑：drop将table在data dictionary中的所有information删除，并且space被收回；而truncate没有，并保留了相应已经分配的space等待 reused；如果使用的是data dictionary管理tablespace，则影响空间收回与分配的时间开销的主要因素是extents的数量（而不是size）；如果使用的是 drop方法，则考虑在import时使用compress选项，因为整个空间的分配可能不是在一个连续的大空间上。<br />
方法二：alter table t_name move;此方法执行之后，所有相关的indexes都为unusable状态，必须rebuild。<br />
2）对于在high-water mark之上的unused block可使用：alter table t_name deallocate unused语句进行收回。</p>
<p>7、DB的block size设置<br />
1）减少访问block的数量，这是DB tuning的一个目标。DBA对此调节的方法主要有：增大block size；尽可能紧凑的将rows放在block中，避免row的迁移现象。<br />
2）database block size是在DB创建时由参数DB_BLOCK_SIZE指定的，是I/O读取datafile的最小单元。当前有些OS允许block size达到64KB，可以查看相应的OS，从而调整DB的block size。block size一旦设置就不能改变，除非对DB重建或是duplicate，在9i中已经进行了相应的改进，可以使用多中block sizes，但是对于base data size仍不可变。DB的block size应该是OS的整数倍。如果application中有大量的全表扫描，可以考虑增大block size，但不要超过OS的I/O size。<br />
3）小block size的优劣：<br />
* 优：降低了block 的冲突；有利于small rows；有利于随机访问，因为可以在一定程度上提高buffer cache的利用率，特别是在内存资源不足的情况下。<br />
*&nbsp;劣：small blocks管理所用的空间开销大；每个block存放的row较少，也会加大I/O的开销；可能造成更多的index blocks被读入。<br />
在OLTP环境中，经常存在large object的随机访问时，small blocks相对更好。<br />
4）large block size的优劣：<br />
* 优：所用的管理空间开销小，更多的空间可用于存放具体的data；有利于顺序的读取；有利于large rows；改善了index读取的性能，因为大的block可以降低index的level数量，从而减少I/O的次数。<br />
* 劣：在OLTP环境中不利于index blocks，可能会引起index leaf blocks的争用冲突；如果存在大量随机访问可能会造成buffer cache的浪费。<br />
在DSS环境中，连续读取大量数据操作较多，使用large block更好。</p>
<p>8、PCTREE和PCTUSED（具体内容在其他文章中介绍过了，这里不累述了）<br />
只有两类DML语句可以影响free blocks和used blocks的数量：delete和update。<br />
释放的空间在一个block中很可能不是连续的，Oracle server只在下面情况同时出现时进行free space的合并：insert或update操作试图向一个有足够空间的block中插入数据；free&nbsp;space存在碎片，以至于row piece无法被写入。<br />
具体设置：<br />
①PCTFREE：默认情况下是10；如果不存在update操作，可以使用0；PCTFREE = 100 * UPD / (Average row length)<br />
②PCTUSED：默认是40；PCTUSED = 100 &#8211; PCTFREE &#8211; 100 * Rows * ( average row length) / block size<br />
其中:<br />
UPD = update操作平均增加的bytes数量。<br />
average row length和rows都可以在analyze之后从dba_tables表中获得。<br />
当对一个已经存在的表进行这两个参数的修改，不会有马上的影响，只是在后续的DML操作中才发生作用。</p>
<p>9、migration和chaining（具体原因也在其他的文章中介绍过了）<br />
①migration和chaining对性能的影响：一方面，引起这两种现象的insert和update本身性能比较差；另一方面，在查询此类记录的操作会因为额外的I/O造成性能较差。<br />
migration现象过的，主要是由于PCTFREE参数设置过低引起的，对此可以考虑增大该值。<br />
②对两者的检测，主要是通过analyze相应的表，随后从dba_tables表中观察其chain_cnt字段。此外可以从v$sysstat视图或 是statspack report中的&#8220;instance activity stats for DB&#8221;获得&#8220;table fetch continued row&#8221;的值。<br />
还可以收集每个表中发生了migration和chaining的具体的rows：首先执行utlchain.sql脚本创建chained_rows统计表，随后执行语句：<br />
analyze table t_name list chained rows;<br />
③消除migration rows：<br />
*&nbsp; export/import<br />
*&nbsp; alter table t_name move<br />
*&nbsp; 执行迁移脚本，具体见Oracle 9i Performance Tuning SG的P398<br />
&#8226; Find migrated rows using ANALYZE.<br />
&#8226; Copy migrated rows to new table.<br />
&#8226; Delete migrated rows from original table.<br />
&#8226; Copy rows from new table to original table.<br />
此方法执行时，必须注意与original table相关的外键约束，应将其disable。</p>
<p>10、索引的重组<br />
在经常发生DML的table上，indexes往往是带来性能问题的原因。<br />
在data blocks中，Oracle server会将delete row释放的空间重新分配给insert rows，但是对于index blocks，Oracle server的应用时连续的。即使一个index block中只有一个index，也要维护该block。如果删除了block中的所有index，该block才会被送入free list。因此，必要时需要进行index的rebuild。<br />
①对index space的监控：<br />
*&nbsp; analyze index i_name validate structure;<br />
*&nbsp; select name, (del_lf_rows_len / lf_rows_len) * 100 as wastage from index_stats;<br />
在index_stats视图中，各字段含义如下：<br />
&nbsp;&#8226; Lf_rows &#8211; Number of values currently in the index<br />
&#8226; Lf_rows_len &#8211; Sum of all the length of values, in bytes<br />
&#8226; Del_lf_rows &#8211; Number of values deleted from the index<br />
&#8226; Del_lf_rows_len &#8211; Length of all deleted values<br />
note：index_stats视图只保存最近一次analyze的结果，并且当前session只能看到当前session的分析结果。<br />
*&nbsp; alter index emp_name_ix rebuild;<br />
*&nbsp; alter index emp_name_ix coalesce;<br />
如果如果已删除的index 记录超过20%，则应该选用rebuild。<br />
rebuild会以原有的index作为基础，重建索引，可以重新指定STORAGE, TABLESPACE, INITRANS参数，同时可以用下面的参数加快重建的效率：<br />
*&nbsp; PARALLEL/NOPARALLEL（NOPARALLEL是默认值）<br />
*&nbsp; RECOVERABLE/UNRECOVERABLE ( RECOVERABLE是默认的)：当使用unrecoverable时速度将更快，因为它不产生redo log，只在index创建是起作用，而不是设置参数，不记录到dictionary中。它使用隐含式的logging参数，意味着在index创建结束 后插入index项时，仍然会记录redo log。<br />
*&nbsp; LOGGING/NOLOGGING：如果设置为NOLOGGING，该参数表明在index运行使用期间，将不产生任何redo log。它将记录到dictionary中。可以用alter index 进行修改。<br />
注意：unrecoverable和logging是不兼容的。<br />
alter index rebuild要快于index的drop后re-create，因为它使用了full scan的方法。<br />
②监控index的使用情况<br />
* EXECUTE DBMS_STATS.GATHER_INDEX_STATS(&#8216;SECHMA_NAME&#8217;, &#8216;T_NAME&#8217;);<br />
*&nbsp;create index&nbsp;&#8230; compute statistics;<br />
* alter index .. rebuild compute statistics;<br />
③此外，还可以用下面的方法查看没有使用的index：<br />
从9i开始，对index的使用情况可以被收集到视图v$object_usage中。辅助DBA删除未使用的index，提高性能：<br />
* 打开监控：alter index i_name monitoring usage;<br />
* 停止监控：alter index i_name nomonioring usage;<br />
随后查看v$object_usage：select index_name, used from v$object_usage;<br />
在v$object_usage中各个字段的意义：<br />
&#8226; index_name &#8211; The index name<br />
&#8226; table_name &#8211; The corresponding table<br />
&#8226; monitoring &#8211; Indicates whether monitoring is &#8220;ON or OFF&#8221;<br />
&#8226; used &#8211; Indicates (YES or NO) the index has been used during the monitoring time<br />
&#8226; start_monitoring &#8211; Time at which monitoring began on index<br />
&#8226; stop_monitoring &#8211; Time at which monitoring stopped on index</p>
<img src ="http://www.blogjava.net/gdufo/aggbug/309133.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2010-01-12 12:33 <a href="http://www.blogjava.net/gdufo/archive/2010/01/12/309133.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuning the Oracle Shared Server</title><link>http://www.blogjava.net/gdufo/archive/2010/01/12/309130.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 12 Jan 2010 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2010/01/12/309130.html</guid><description><![CDATA[&nbsp;
<p><span lang="EN-US">1</span>、<span lang="EN-US">Overview</span>：<span lang="EN-US"><br />
Oracle shared server</span>主要用于允许多<span lang="EN-US">user</span>进程能够共享有限数量的<span lang="EN-US">servers</span>。<span lang="EN-US"><br />
</span>在<span lang="EN-US">dedicated server</span>环境中，每个<span lang="EN-US">user </span>进程都会分配到一个<span lang="EN-US">server</span>进程，但如果这些<span lang="EN-US">server</span>进程不能完全被利用，常处于<span lang="EN-US">idle</span>状态，就会造成内存和<span lang="EN-US">cpu</span>的浪费。<span lang="EN-US"><br />
</span>当使用<span lang="EN-US">shared server</span>模式，<span lang="EN-US">user</span>进程是动态的被分配到可以被任何<span lang="EN-US">user</span>进程共享的<span lang="EN-US">server</span>进程上的。当<span lang="EN-US">dispatcher</span>进程获得一个<span lang="EN-US">user </span>进程请求后会将其放入请求队列，以便<span lang="EN-US">server</span>进程可以处理该请求并将结果返回给<span lang="EN-US">dispatcher</span>的<span lang="EN-US">response</span>队列。随后<span lang="EN-US"> dispatcher</span>进程会将<span lang="EN-US">response</span>队列中的结果返回给<span lang="EN-US">user</span>进程。<span lang="EN-US"><br />
Oracle Shared Server</span>主要用于下面的情况：当<span lang="EN-US">dedicated Server</span>的系统对于<span lang="EN-US">system</span>开销相对较大；在访问的资源上存在限制。</p>
<p><span lang="EN-US">2</span>、对<span lang="EN-US">dispatchers</span>的监控：<span lang="EN-US"><br />
1</span>）可以通过<span lang="EN-US">v$MTS</span>视图获得关于连接和<span lang="EN-US">session</span>的会话以及当前使用的使用的数据信息。如果<span lang="EN-US">sessions</span>的设置低于实际的<span lang="EN-US">dispatcher</span>的设置，<span lang="EN-US">MAXIMUM_CONNECTIONS</span>的默认值是参数<span lang="EN-US">SESSIONS</span>的值。<span lang="EN-US"><br />
2</span>）<span lang="EN-US">V$DISPATCHER</span>视图查询<span lang="EN-US">dispatcher</span>的繁忙率：<span lang="EN-US"><br />
select network &#8220;protocol&#8221;, status &#8220;status&#8221;, sum(owned) &#8220;clients&#8221;, sum(busy) * 100/(sum(busy)+sum(idle)) &#8220;busy rate&#8221; from v$dispatche group by network;<br />
&nbsp;note</span>：在选择<span lang="EN-US">dispatcher</span>数量的时候，应该考虑客户端的数量对于<span lang="EN-US">dispatcher</span>的繁忙比率。如果一个<span lang="EN-US">dispatcher</span>的繁忙比率 超过<span lang="EN-US">50%</span>，就需要考虑增加<span lang="EN-US">dispatcher</span>的数量。如果发现部分<span lang="EN-US">dispatcher</span>经常处于<span lang="EN-US">idle</span>的状态，应该考虑减少<span lang="EN-US">dispatcher</span>的 数量。<span lang="EN-US"><br />
</span>可用下面的<span lang="EN-US">SQL</span>查看<span lang="EN-US">users sessions</span>是否在等待<span lang="EN-US">dispatchers</span>：<span lang="EN-US"><br />
select decode(sum(totalq), 0, &#8216;no responses&#8217;, sum(wait)/sum(totalq)) &#8220;average wait time&#8221; from v$queue q, v$dispatcher d where q.type = &#8216;DISPATCHER&#8217; AND q.paddr = d.paddr;<br />
</span>如果观察到大量的等待比率并不断增长，需要考虑增加<span lang="EN-US">dispatcher</span>的数量。<span lang="EN-US"><br />
</span>增加或减少<span lang="EN-US">dispatcher</span>使用：<span lang="EN-US"><br />
alter system set mts_dispatchers = &#8216;protocol, number&#8217;;<br />
</span>执行上述语句后只有新的连接建立才会使用<span lang="EN-US">new</span>增加的<span lang="EN-US">dispatcher</span>。<span lang="EN-US"><br />
2</span>）此外，可以使用视图<span lang="EN-US">V$DISPATCHER_RATE</span>视图来分析冲突。它分组显示了<span lang="EN-US">cur</span>、<span lang="EN-US">avg</span>、<span lang="EN-US">max</span>的统计信息。如果使用<span lang="EN-US">shared Server</span>的性能不理想，则<span lang="EN-US">cur</span>的值将接近<span lang="EN-US">max</span>的值，对此应该考虑增加<span lang="EN-US">dispatcher</span>的数量。如果发现<span lang="EN-US">shared Server</span>性能良好，<span lang="EN-US">cur</span>值远远低于<span lang="EN-US">max</span>的值，可以考虑降低<span lang="EN-US">dispatcher</span>的个数。</p>
<p><span lang="EN-US">3</span>、对<span lang="EN-US">Shared Server</span>的监控：<span lang="EN-US"><br />
</span>当<span lang="EN-US">PMON</span>后台进程发现当前存在的<span lang="EN-US">shared Servers</span>都处在忙碌状态，<span lang="EN-US">Oracle shared Server</span>进程就会被是动态创建的创建。当然此时<span lang="EN-US">MAX_SHARED_SERVERS</span>的值必须大于实际的<span lang="EN-US">servers</span>值。当然，如果<span lang="EN-US">PMON</span>检测到 当前有<span lang="EN-US">shared servers</span>存在<span lang="EN-US">idle</span>状态的，则会减少相应的<span lang="EN-US">shared servers</span>的数量，直到数量达到<span lang="EN-US">SHARED_SERVERS</span>的值。所以不必太多的考虑<span lang="EN-US">shared servers</span>的状态。但是有时需要调整<span lang="EN-US">SHARED_SERVERS</span>和<span lang="EN-US">MAX_SHARED_SERVERS</span>的参数的大小。<span lang="EN-US"><br />
</span>对此，可以使用视图<span lang="EN-US">V$SHARED_SERVER</span>视图获得<span lang="EN-US">shared servers</span>的当前信息。<span lang="EN-US"><br />
select name, requests, busy*100/(busy+idle) &#8220;busy %&#8221;, status from v$shared_server where status !=&nbsp;&#8217;QUIT&#8217;;<br />
</span>此外，可以查看每个请求的平均等待时间：<span lang="EN-US"><br />
select decode(totalq, 0, &#8216;No Requests&#8217;, wait/totalq ||&#8217; hundredths of seconds&#8217;&nbsp;)&#8221;Average Wait Time Per Requests&#8221; from v$queue where type = &#8216;COMMON&#8217;;</span></p>
<p><span lang="EN-US">4</span>、监控进程的作用：查看共享连接。如果觉得<span lang="EN-US">user</span>程序有问题或是某个进程似乎做了很多操作，可能需要查看当前<span lang="EN-US">user</span>的共享连接。对此可以使用<span lang="EN-US"> v$session</span>视图查看应用的状态和使用的连接类型，可以使用<span lang="EN-US">v$circuit</span>获得相应的<span lang="EN-US">server</span>、<span lang="EN-US">session</span>和<span lang="EN-US">dispatcher</span>的<span lang="EN-US"> addresses</span>。</p>
<p><span lang="EN-US">5</span>、<span lang="EN-US">shared server</span>和<span lang="EN-US">memory </span>使用：之前有说过，当使用<span lang="EN-US">shared server</span>模式时，部分称为<span lang="EN-US">UGA</span>（<span lang="EN-US">user global area</span>）的数据将被存放在<span lang="EN-US">shared pool</span>中，同时<span lang="EN-US">session</span>的<span lang="EN-US">data Components</span>被存放在<span lang="EN-US">large pool</span>中。如果没有设置<span lang="EN-US">large pool</span>，将存放在<span lang="EN-US">shared pool</span>中。<span lang="EN-US"><br />
</span>从总体将使用<span lang="EN-US">shared server</span>模式，内存的开支减少了。<span lang="EN-US"><br />
shared servers</span>使用<span lang="EN-US">UGA</span>用于<span lang="EN-US">sorts</span>，此模式下，应该设置<span lang="EN-US">SORT_AREA_RETAINED_SIZE</span>相对小于<span lang="EN-US">SORT_AREA_SIZE</span>，以便可以快速释放内存给其他<span lang="EN-US">user</span>。</p>
<p><span lang="EN-US">6</span>、<span lang="EN-US">troubleshooting</span>：常见问题有：<span lang="EN-US"><br />
1</span>）所有共享连接都失败时，查看<span lang="EN-US">Oracle net listener</span>在<span lang="EN-US">running</span>。<span lang="EN-US"><br />
2</span>）查看是否在建立<span lang="EN-US">shared connection</span>时存在<span lang="EN-US">Oracle net</span>配置的错误<span lang="EN-US">&#8221;TNS_&#8221;<br />
3</span>）不要轻易在<span lang="EN-US">OS</span>层<span lang="EN-US">kill</span>掉<span lang="EN-US">user</span>的<span lang="EN-US">server</span>进程，建议使用<span lang="EN-US">alter system kill session</span>。如果使用<span lang="EN-US">dispatcher</span>连接的，<span lang="EN-US">kill</span>掉<span lang="EN-US">dispatcher</span>进程会更糟，会影响其他<span lang="EN-US">user</span>。<span lang="EN-US"><br />
4</span>）<span lang="EN-US">dispatchers</span>和<span lang="EN-US">servers</span>都是后台进程，所以在设置<span lang="EN-US">PROCESSES</span>时要考虑相应的数量。<span lang="EN-US"><br />
5</span>）如果参数<span lang="EN-US">INSTANCE_NAME, SERVICE_NAMES </span>或<span lang="EN-US"> DB_DOMAIN </span>没有被设置，或是设置不正确，则其不能进行自动<span lang="EN-US">instance</span>注册。</p>
<p><span lang="EN-US">&#8226; V$CIRCUIT: Contains information about user connections to the database<br />
&#8226; V$DISPATCHER: Provides information on the dispatcher processes<br />
&#8226; V$DISPATCHER_RATE: Provides rate statistics for the dispatcher processes<br />
&#8226; V$QUEUE: Contains information on the multithread message queues<br />
&#8226; V$MTS: Contains information for tuning the Oracle shared server<br />
&#8226; V$SESSION: Lists session information for each current session<br />
&#8226; V$SHARED_SERVER: Contains information about the shared server processes<br />
eg</span>：<span lang="EN-US"><br />
SELECT d.network network, d.name disp, s.username oracle_user,<br />
s.sid sid,s.serial# serial#, p.username os_user,<br />
p.terminal terminal, s.program program<br />
FROM v$dispatcher d, v$circuit c, v$session s, v$process p<br />
WHERE d.paddr = c.dispatcher(+)<br />
AND c.saddr = s.saddr(+)<br />
AND s.paddr = p.addr (+)<br />
order by d.network, d.name, s.username</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/gdufo/aggbug/309130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2010-01-12 12:32 <a href="http://www.blogjava.net/gdufo/archive/2010/01/12/309130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Application Tuning</title><link>http://www.blogjava.net/gdufo/archive/2010/01/12/309132.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 12 Jan 2010 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2010/01/12/309132.html</guid><description><![CDATA[&nbsp;
<p>1、选择适当的物理结构：为了达到读写尽可能快的目的，必须考虑下面的问题：<br />
1）如果application对rows的访问是按照groups进行的，则需要考虑使用clusters的方式才存储，但clusters对于大量的DML操作会影响性能，所以要考虑application中DML和select操作的数量。<br />
2）对于较大规模的表，使用单独的表空间。对于一个partitioned表，考虑使用多个表空间，从而平均分配磁盘的使用。<br />
3）对于9i中可以允许在同一个DB中有多block size，因此，row size较大的可以有较大的block size。如果设置较大的block size，有助于全表扫描的应用的性能提高。<br />
4）对于小的small transaction占用undo space的回滚信息少，大transaction占用的undo space多，所以所需的free undo space多。<br />
5）对于较大的查询，可以考虑使用多server 进程进程并发查询。</p>
<p>2、数据的访问方法：为了提高性能，可以使用下面的数据访问方法：clusters；indexes：b-tree（普通和翻转关键字）、位图、Function based；索引组织表；固化视图。<br />
1）Clusters：是将一组一个或多个因为有共享columns所以有相同数据块的表放在一起的方法。这些数据块会经常被同时访问或join。这种方法可以使DBA对数据库非规范化，而对user和programmer是透明的。<br />
它在一定程度上降低了磁盘I/O，使用clustered table可以很好的改善join的效率。每个cluster关键字对于多行且值相同的情况下，只会存储一次，所以占用存储空间较小。<br />
但是对于全表扫描，clustered表比nonclustered 表慢很多。<br />
cluster的类型有：<br />
①index cluster：它使用一个被称作cluster index的索引维持cluster中的数据。在index cluster中，对数据的维护、访问、存储cluster index必须是可用的。cluster index用于指向包含给定关键字值的rows的block位置。与普通index不同的是cluster indexes会存储null 值。对于每个cluster index中的关键字，只有一条记录。所以一个cluster index会比普通index的占用空间小。<br />
②hash clusters：它使用hash算法（也已user定义，也可系统指定）计算row的位置。用于查询和DML操作。对于等值查找clusters key，hash cluster的性能要比index cluster的好。<br />
不应使用clusters的情况：经常执行全表扫描的情况；如果对于所有rows的cluster key的数据超出了一到两个Oracle blocks，这样，为了访问在clustered key table中的一条row，Oracle server需要读取有相同值的所有blocks。<br />
不应使用hash clusters的情况：如果表不断增长，并且重建新的、更大的hash cluster不可能的情况下，不应使用hash cluster；如果application经常使用full scans，并且要考虑为table的增大所必须预留的空间。<br />
2）B-Tree indexes：<br />
①使用B-Tree index的情况：当经常访问表中的记录占全表的不足5%时，应该考虑创建B-Tree index；如果在查询时，indexes可以包含所有要访问的字段，这个百分比可以更高些；或是对可以用于进行表的join时，也应考虑建立B- Tree index。<br />
②indexes的增长方式：index总是平衡的，总是自下而上的增长。当rows被增加时，会添加到叶子节点的block上，如果叶子节点的 block被填满，Oracle server会将该block split成两个叶子blocks，每个保存50%的数据。因为新block的添加，叶子节点的父节点也需要添加相应的blocks索引值。如果父节点的 block被填满，父节点也会被split成两个节点，类似与刚才的子节点的split。这个过程会循环进行，直到b-tree保持平衡。index的层 次越多，其效率越低。此外，对于delete操作，会降低index的效率，特别是当有15%的rows被删除，应该考虑rebuilding index。<br />
③为了提高b-tree index的性能，应该定期对index进行rebuild。自9i，可以online创建、rebuild indexes，并且可以并行化进行。当index被rebuild时，相关的table仍然可以被访问和进程DML操作。<br />
ALTER INDEX i_name REBUILD ONLINE;<br />
&#8211;ONLINE关键字表示在rebuild时，DML仍可进行。但是不允许并发的DML操作。<br />
④压缩索引：<br />
在创建索引时使用下面的方法可以对index进程压缩：<br />
create index i_name on t_name(col1, col2) compress;<br />
重建索引时可以使用：<br />
alter index i_name rebuild compress;<br />
压缩索引不会多次存储重复出现的关键字从而减少了存储空间的需求。<br />
对于非唯一索引的压缩：Oracle存储重复的关键字作为前缀在index block中，唯一的row id作为后缀存储。<br />
对于唯一索引的压缩：也是类似的，将一致的前缀只保存一次，用于区分唯一性的部分会作为后缀存储。但是这只适用于有多个字段组成的唯一索引，如果只有一个column的唯一索引没有用于share的部分。<br />
3）位图（bitmap）索引：主要适用于distinct的values很少的字段，在其上建立索引。例如性别、工种等字段。但是对于有大量DML操作的表，bitmap index的性能不好，此情况应慎用。</p>
<p>① 适用bitmap index的情况：对于基数较低（low-cardinality）的column创建的索引；如果查询语句中使用多个where条件，Oracle server可以使用逻辑的bit-and或bit-or操作来合并不同columns的bitmaps。<br />
②性能的考虑：bitmap index占用空间较小，每个distinct key的存储时以压缩的方式，bitmap被分成不同的bitmap segments；对于low-cardinality字段非常快；很适合与规模大的只读系统，如决策支持系统（DSS）；但是对于DML操作性能比较 慢，不适用于OLTP应用，locking是加载在bitmap-segment上的，不是在记录上的；bitmap index是存储null值的，但b-tree不存储；并发查询、并发DML和并发的CREATE语句在bitmap indexes上是有效的。<br />
③bitmap indexes的创建及管理：<br />
create bitmap index i_name on t_name(col1) storage ( initial 200k next 200k pctincrease 0 maxextents 50) tablespace tsp_name;<br />
对于每个DML操作之后，会对bitmap indexes进行相应的维护，所以对于每个DML操作，每个bitmap segment只会更新一次，既是该bitmap segment中不只一行更新数据。<br />
4）反转关键字索引（reverse key index）：在创建索引时会将索引字段按bytes进行反转（reverse）随后将结果作为索引关键字。<br />
①对于一个不断增长的关键字，如由sequence产生的id，可以通过使用reverse key&nbsp;index避免索引的不断split。但是对于常使用范围查找的应用，只能使用全表扫描。<br />
②创建reverse key index：<br />
create index i_name on t_name(col1) reverse pctfree 30 storage( intial 200k next 200k pctincrease 0 maxextents 50) tablespace i_tspname;<br />
或者<br />
create index i_name on t_name(col1);<br />
alter index i_name rebuild reverse;<br />
5）组织索引表（IOT——index-organized table）：类似与mysql中的innodb的存储结构，具体结构如下图：<br />
适用于频繁通过primary key或primary key的前缀访问数据的情况。但是必须要求有primary key的限制。它加快了通过key查找数据的速度，并且从table和index整体上节省空间。<br />
①在IOT中，没有常规表中的那种物理上的row id的概念，而是引入了逻辑row id的概念，它是以变长的方式存储的，其size要依靠primary key的值。<br />
对于IOT中数据的访问有两种方法：<br />
i）物理猜测guess，访问时间等同于物理rowid的访问时间<br />
ii）当guess失败，则通过primary key访问IOT中的数据<br />
（guess就是基于row所在的文件和block访问，block的地址在表建立时是精确的，但是如果leaf block进行了拆分split是，就发生了改变。如果guess失败，则通过primary key进行访问。）这里没太搞懂啊:(<br />
②创建<br />
CREATE TABLE countries<br />
( country_id CHAR(2) CONSTRAINT country_id_nn NOT NULL,<br />
country_name VARCHAR2(40),<br />
currency_name VARCHAR2(25),<br />
currency_symbol VARCHAR2(3),<br />
map BLOB,<br />
flag BLOB,<br />
CONSTRAINT country_c_id_pk PRIMARY KEY (country_id))<br />
ORGANIZATION INDEX<br />
PCTTHRESHOLD 20<br />
OVERFLOW TABLESPACE USERS;<br />
影响IOT的行溢出的三个主要因素有：<br />
**&nbsp; pctthreshold：此子句指明了在index block中<span style="font-size: 10pt">容纳一行数据可使用块空间的百分比</span>。如果one row数据超过基于此值计算的大小，所有的在including子句之后的字段将被移入overflow segment。如果overflow没有被定义，则这种row溢出转移将被拒绝。PCTTHRESHOLD默认值是50必须在0到50之间。<br />
**&nbsp; including：<span style="font-size: 10pt">后跟一个字段，如果数据行的长度超过了PCTTHRESHOLD指定的可用空间，从这个字段之后将数据行分为两段，后面的部分放入溢出段中；</span><br />
**&nbsp; overflow <span style="font-size: 10pt">TABLESPACE </span>：指明当index-organized表数据超出pctthreshold时，将部分columns放入data segment。<br />
③IOT的字典视图：<br />
④使用mapping table<br />
create table countries<br />
( country_id char(2) constaint country_id_nn not null,<br />
&nbsp; country_name varchar2(40),<br />
&nbsp; currency_name varchar2(25),<br />
&nbsp; currency_symbol varchar2(3),<br />
&nbsp; constraint country_c_id_pk primary key (country_id))<br />
&nbsp;organization index mapping table tablespace users;<br />
当在索引组织表上创建位图索引同heap table上创建bitmap是类似的，只是在组织索引表中的rowid对应的不是基础表，而是相应的映射表（mapping table）。mapping table主要是维护一个逻辑row id（访问组织索引表所需的）到physical row id（访问位图索引所需的）的映射。每个组织索引表会有一个mapping table，用于全表的映射。在heap organized base table中，用key访问数据时，如果找到相应的key，bitmap记录返回的是物理row id，可以用于基础表的访问。在组织索引表中，位图索引也是用key进行搜索，当找到相应的key，bitmap返回的依然是物理row id，通过查询mapping table，获得相应的逻辑row id，再用于进入guess data block address或是用primary key访问组织索引表<br />
组织索引表中的row发生移动，不会使其上的bitmap indexes不可用，只是使mapping table中的相应逻辑row id不可用，但仍可通过primary key对其进行访问。<br />
对于mapping table的维护：<br />
**&nbsp; 通过对IOT表进行analyze获得mapping table的统计信息<br />
**&nbsp; 查询DBA_INDEXES视图得知当前mapping table的精确度<br />
SELECT INDEX_NAME, PCT_DIRECT_ACCESS FROM DBA_INDEXES WHERE PCT_DIRECT_ACCESS IS NOT NULL;<br />
**&nbsp; 如果需要，使用alter table重建mapping table<br />
alter table t_name mapping table update block references;<br />
6）物化视图（Materialized views）<br />
物化视图既存储视图的定义，又存储视图创建语句的查询结果。可以将物化视图定义的结果会产生一个实际的表，可以对其做类似normal table的定义，将其指派的某个表空间，对其添加索引，进行分区等。如果通过固化视图就可以满足的查询，server会将查询转换为对物化视图的查询， 而不是对基础表的查询。这样，部分代价昂贵的如join或统计的查询就不必重复执行。<br />
①创建：<br />
create materialized view depart_sal_sum<br />
&nbsp; tablespace data parallel (degree 4)<br />
&nbsp; build immediate|deferred refresh fast<br />
&nbsp; enable|disable query rewrite<br />
as<br />
&nbsp; select d.departmet_name, sum(e.salary) from departments d, employees e<br />
&nbsp;&nbsp;&nbsp; where d.departmant_id=e.department_id group by d.department_name;<br />
②refresh 物化视图：具体有两类：<br />
i）完全的refresh：主要是通过truncate 当前的data，通过执行物化视图的创建语句重新插入数据。<br />
ii）fast refresh方法：它只会更新自上次refresh之后发生变化的数据。具体又有两种：<br />
**&nbsp; 使用materialized view logs：此方法中，所有关于视图的基础表的变化都会被捕获并记录到一个log中，将这些log data用于materialized view即可。<br />
**&nbsp; 使用row id范围：此方法需要一个直接装在日志。记录了需要被重新load的row id相关信息。materialized view就利用这些row id进行直接路径的load。<br />
一个视图的定义使用force的refresh类型时，会尽可能的使用fast refresh方法，不得已才会使用complete refresh。默认情况是使用force refresh类型。如果使用never选项，则会抑制所有materialized view的refresh。<br />
③自动refresh可以通过下面方法设置：<br />
**&nbsp; 如果为materialized view设置oncommit选项，视图会在base table每次commit操作后进行refresh。因为操作时异步的，所以不会让user察觉到性能的降低。<br />
**&nbsp; 在具体的时间点：可以使用START WITH和NEXT子句定义每次refresh的具体时间。为了实现此方法，必须将参数JOB_QUEUE_PROCESSES设置为大于0的值。<br />
④可以用DBMS_MVIEW包进行手动的refresh。<br />
**&nbsp; 对具体的某个materialized view进行refresh<br />
DBMS_MVIEW.REFRESH(&#8230;)<br />
**&nbsp; 对依赖某个基础表的所有物化视图进行refresh<br />
DBMS_MVIEW.REFRESH_DEPENDENT(&#8230;)<br />
**&nbsp; 对所有的materialized view进行refresh<br />
DBMS_MVIEW.REFRESH_ALL_MVIEWS;<br />
为了执行手动refresh job，必须为其设置适当的JOB_QUEUE_PROCESSES和JOB_QUEUE_INTERVAL参数。<br />
⑤物化视图的查询重写（query rewrite）：这一过程是通过优化器（optimizer）完成的，对于应用而言是透明的。可以加速对基础表的部分访问。user不需要被明确的赋予 materialized view的权限，只要其有base table的权限，则其发出的相关查询就可以被重写为对物化视图的访问。materialized view也可设置为enable和disable。<br />
进行query rewrite，必须使QUERY_REWRITE_ENABLED设置为true。对于使用query rewrite的user必须有GLOBAL QUERY REWRITE或QUERY REWRITE的权限。后者只允许user对自己schema下面的materialized view进行query rewrite，前者除此还可对其他有权限的schema进行query rewrite。<br />
⑥物化视图在带来效率的同时也会增加占用的额外空间，并且需要refresh的开支。对此在DBMS_OLAP包的sumary advisor可以用于对代价与收益的比较从而辅助觉得materialized view的创建。<br />
vii）对query rewrit的控制分为三个层次：<br />
** 在初始化参数级别上：<br />
&nbsp;&nbsp;&nbsp; OPTIMIZER_MODE：查询重写只有在cost-based优化模式下才能进行。可在session级别动态设置；<br />
&nbsp;&nbsp;&nbsp; QUERY_REWRITE_ENABLED：可设置为true或是false，可在session级别动态设置；<br />
&nbsp;&nbsp;&nbsp; QUERY_REWRITE_INTEGRITY：可设置为ENFORCED（默认值，只有server能确保一致性时——物化视图是最新的并且 query rewrite使用了有效的验证约束的情况下才进行query rewrite）、TRUSTED（物化视图是最新的，此外相信RELY的约束,&nbsp;就算这个约束没有Enabled和Validated）、 STALE_TOLERATED（query rewrite允许使用没有及时refresh的物化视图）。此参数也是可以在session级别上动态设置的。<br />
**&nbsp; 在sql中使用hints——REWRITE和NOREWRITE，它可以覆盖在创建或alter物化视图是设置的enable query rewrite子句。<br />
**&nbsp; dimensions（这个也没太懂~~~~(&gt;_&lt;)~~~~ ）<br />
viii）可以使用dbms_mview包中的EXPLAIN_MVIEW和explain_rewrite对materialized view和query rewrite进行解释。</p>
<p>3、OLTP系统：<br />
主要特点是：集中的insert和update操作，数据不断增长，多事务并发进行。要求高可用性、高速、高度并发、降低恢复时间。<br />
1）空间分配：避免动态的空间分配，应该为tables、cluster、indexes明确指明占用的tablespace。此外通过观察数据增长的规律，设计extent每次分配的大小。<br />
2）indexes：在DB中indexes的创建和维护都是占用一定开支的，所以，索引的创建必须严谨，每个索引的存在必须是实际需要的；在外键上建立 索引有助于在子表数据被修改时不会locking父表中的数据；b-tree索引在OLTP中优于位图索引，因为locking对DML的影响（当DML 操作发生时b-tree索引中只是锁某些rows，但bitmap索引，会locking整个有相同key的rows）；可以考虑使用reverse index来解决b-tree中sequence columns的问题；应该定期对indexes进行rebuild。<br />
3）hash clustering：使用hash clusters可以提高等值查询的访问速度。但是对于下面的情况则不适用它：<br />
**&nbsp; 大量insert操作<br />
**&nbsp; 存在大量用更大的columns values对表进行update的操作，因为会引起数据的迁移。<br />
如果表不断增长，可能在hash key上存在大量冲突，从而是部分数据存放在overflow blocks中，为了避免这种情况，正确的评估hashkeys的值。给hash key更大的number，有助于解决冲突。<br />
4）OLTP Application Issues：<br />
*&nbsp; 对于完整性约束，应该使用DB中声明的constraints代替application中code的逻辑限制。这里主要考虑的是参照完整性和约束的check。<br />
*&nbsp; 应该考虑使用Oracle中的共享code对象，如packages、procedures和Functions。<br />
*&nbsp; 应该尽可能使用绑定变量<br />
*&nbsp; 定义恰当的cursor_sharing参数，有助于user共享解析代码。可设置的值有：<br />
&nbsp;&nbsp;&nbsp; EXACT：默认值，只在精确匹配的情况下共享cursors<br />
&nbsp;&nbsp;&nbsp; SIMILAR：如果SQL语句是字面量，则只有当已有的执行计划是最佳时才使用它，如果已有执行计划不是最佳则重新对这个SQL语句进行分析来制定最佳执行计划。<br />
&nbsp;&nbsp;&nbsp; FORCE：如果SQL语句是字面量，则迫使Optimizer始终使用已有的执行计划,无论已有的执行计划是不是最佳的。</p>
<p>4、决策支持系统（DSS/Data Warehouses）<br />
DSS的特点是该application会提取相应的有用数组成容易理解的报表。将OLTP中的数据进行提取、整合、汇总。使用大量的全表扫描。决策者根 据相关的结果做下一步的决策。它需要有快速的响应时间，并且数据应该确保精确。并发查询的特点就是为了data warehouse环境设计的。<br />
1）存储的分配：<br />
*&nbsp; 谨慎的考虑block size和DB_FILE_MULTIBLOCK_READ_COUNT参数的设置。可以考虑适当增大block_size、DB_FILE_MULTIBLOCK_READ_COUNT。<br />
*&nbsp; 确保extent的size是block_size的整数倍。<br />
*&nbsp; 定期执行analyze或是dbms_stats进行表的statistics。<br />
2）indexing：因为大量的查询是通过全表扫描完成的，所以应尽量减少index占用的空间和对其维护带来的开销。<br />
*&nbsp; 可以的话，可以考虑不使用索引，只保留那些需要用于进行筛选查询的index；<br />
*&nbsp; 定期的用不一致的分布数据产生直方图。<br />
*&nbsp; 考虑使用bitmap indexes<br />
*&nbsp; 对于需要快速用关键字查询的data可将相应的表建为IOT。<br />
*&nbsp; 考虑使用index和hash cluster，特别是hash cluster。但不要在定期批量增长的表上建立cluster。<br />
3）application issues：<br />
在data warehouse中，sql的解析时间并不重要，所以可以适当的减小library cache的大小。应该更关注执行计划：尽量使用并发查询。Symmetric multiprocessors (SMP), clustered, or massively parallel processing (MPP)将能很好的提高性能。SQL的调节优化很重要。<br />
有时可以弃用绑定变量，因为：当analyze后产生直方图，可以用于一定的查询优化，但是这种优化只使用在不使用绑定变量的情况。如果使用绑定变量，则optimizer就不会使用直方图了。对此要小心设置cursor_sharing参数的值。</p>
<p>5、混合系统（Hybrid System）<br />
</p>
<img src ="http://www.blogjava.net/gdufo/aggbug/309132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2010-01-12 12:32 <a href="http://www.blogjava.net/gdufo/archive/2010/01/12/309132.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Diagnosing Contention for Latches</title><link>http://www.blogjava.net/gdufo/archive/2010/01/12/309127.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 12 Jan 2010 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2010/01/12/309127.html</guid><description><![CDATA[&nbsp;
<p><span lang="EN-US">1</span>、对于闩（<span lang="EN-US">Latches</span>）的概览<span lang="EN-US"><br />
Latches</span>是为了保护<span lang="EN-US">SGA</span>中的共享数据结构而创建的简单的底层的序列化机制，是轻量级的锁。<span lang="EN-US">server</span>或后台进程为了操作或是查看共享数据结构必 须先申请<span lang="EN-US">Latches</span>，当操作结束，需要释放<span lang="EN-US">Latches</span>。<span lang="EN-US">Latches</span>的争用是不用<span lang="EN-US">tuning</span>的，它是不合理使用<span lang="EN-US">SGA</span>资源的征兆，需要<span lang="EN-US"> tuning</span>内部的争用。仅仅是观察<span lang="EN-US">v$LATCH</span>是不足的，但可以将其看做是诊断工具，查找<span lang="EN-US">SGA</span>资源争用的位置。<span lang="EN-US"><br />
1</span>）<span lang="EN-US">Latches</span>的目的：<span lang="EN-US"><br />
*&nbsp; </span>控制序列化访问：保护<span lang="EN-US">SGA</span>中的数据结构；保护共享内存的分配。<span lang="EN-US"><br />
*&nbsp; </span>序列化执行某些操作：避免同时执行某些关键的临界<span lang="EN-US">code</span>；避免<span lang="EN-US">corruptions</span>。<span lang="EN-US"><br />
2</span>）等待<span lang="EN-US">Latch<br />
</span>尽管<span lang="EN-US">latch</span>的实现根据不同的<span lang="EN-US">OS</span>和平台而不同，但是其都是内存中的一块地址空间，当<span lang="EN-US">latch</span>空闲时是<span lang="EN-US">0</span>，已经被申请了时为非<span lang="EN-US">0</span>值。<span lang="EN-US"><br />
</span>在单<span lang="EN-US">cpu</span>中，当进程<span lang="EN-US">p1</span>申请的<span lang="EN-US">latch</span>被占用，<span lang="EN-US">p1</span>将释放<span lang="EN-US">cpu</span>，<span lang="EN-US">sleep</span>一小段时间，等待<span lang="EN-US">latch</span>被释放。<span lang="EN-US"><br />
</span>在多<span lang="EN-US">cpu</span>中，如果进程<span lang="EN-US">p1</span>申请的<span lang="EN-US">latch</span>被<span lang="EN-US">p2</span>占用，很可能<span lang="EN-US">p2</span>在其他的<span lang="EN-US">cpu</span>上，则<span lang="EN-US">p1</span>不会释放<span lang="EN-US">cpu</span>，而是<span lang="EN-US">spin</span>计数，重试，<span lang="EN-US">spin</span>计数，重试，直到重试次数达到设置数，仍未成功，才会释放<span lang="EN-US">cpu</span>，但这种可能比较小。<span lang="EN-US"><br />
3</span>）<span lang="EN-US">Latch</span>的请求类型：<span lang="EN-US"><br />
latch</span>的请求方式有两类：<span lang="EN-US">willing-to-wait</span>和<span lang="EN-US">immediate</span>。<span lang="EN-US"><br />
willing-to-wait</span>：当进程申请一个<span lang="EN-US">latch</span>时，如果当前<span lang="EN-US">latch</span>已经被占用，该进程会等待片刻再重试，等待<span lang="EN-US">-</span>重试，直到获得<span lang="EN-US">latch</span>，这是一般普遍的<span lang="EN-US">latch</span>申请方式。<span lang="EN-US"><br />
immediate</span>：如果进程申请的<span lang="EN-US">latch</span>不能获得，该进程会继续执行后续的指令。<span lang="EN-US"><br />
4</span>）<span lang="EN-US">latch </span>冲突：<span lang="EN-US">latch</span>的申请释放都是<span lang="EN-US">Oracle</span>自动实现的，所以速度比较快。<span lang="EN-US">latch</span>的资源是有限的。<span lang="EN-US"><br />
</span>在诊断<span lang="EN-US">latch</span>时，可利用视图<span lang="EN-US">v$latch</span>，该视图中主要<span lang="EN-US">columns</span>的意义：<span lang="EN-US"><br />
&#8226; gets: Number of successful willing-to-wait requests for a latch<br />
&#8226; misses: Number of times an initial willing-to-wait request was unsuccessful<br />
&#8226; sleeps: Number of times a process waited after an initial willing-to-wait request<br />
&#8226; wait_time: Number of milliseconds waited after willing-to-wait request<br />
&#8226; cwait_time: A measure of the cumulative wait time including the time spent spinning and sleeping, the overhead of context switches due to OS time slicing and page faults and interrupts<br />
&#8226; spin_gets: Gets that missed first try but succeeded after spinning<br />
&#8226; immediate_gets: Number of successful immediate requests for each latch.<br />
&#8226; immediate_misses: Number of unsuccessful immediate requests for each latch.<br />
</span>在使用<span lang="EN-US">statspack</span>是，可先查看其<span lang="EN-US">report</span>的<span lang="EN-US">top 5 wait events</span>部分，是否有<span lang="EN-US">latch free</span>事件，如果有再进行后续的分析。</p>
<p><span lang="EN-US">2</span>、降低<span lang="EN-US">Latches</span>的冲突<span lang="EN-US"><br />
</span>一般，<span lang="EN-US">DBA</span>不应该调节<span lang="EN-US">latches</span>的数目，自<span lang="EN-US">9i</span>以来，<span lang="EN-US">Oracle</span>已经可以自己进行<span lang="EN-US">latches</span>数量的调节了，这主要是根据<span lang="EN-US">DB</span>在建立时设置的初始参数和<span lang="EN-US">OS</span>的环境。<span lang="EN-US"><br />
latches</span>的冲突是性能问题的表现。最好的解决<span lang="EN-US">latches</span>冲突问题的方法是修改<span lang="EN-US">application</span>行为。此外，如果观察到是<span lang="EN-US">buffer</span>或<span lang="EN-US">shared poolsize</span>的问题，也需要进行适当的修改。</p>
<p><span lang="EN-US">3</span>、对<span lang="EN-US">DBA</span>而言，几个重要的<span lang="EN-US">latches<br />
1</span>）<span lang="EN-US">shared pool latch</span>和<span lang="EN-US">library cache latch</span>：如果冲突出现在这两类<span lang="EN-US">latch</span>上，则表示<span lang="EN-US">sql</span>或是<span lang="EN-US">pl/sql</span>命令没有被有效重用，可能是没有有效的使用绑定变量，或是<span lang="EN-US">cursor cache</span>不足。如果是<span lang="EN-US">Oracle Shared server</span>模式，如果没有设置<span lang="EN-US">large pool</span>，也可能导致<span lang="EN-US">Shared pool Latch</span>的冲突，则需要考虑设置<span lang="EN-US">large pool</span>。<span lang="EN-US"><br />
2</span>）<span lang="EN-US">cache buffer lru chain latch</span>：当<span lang="EN-US">dirty blocks</span>被写入<span lang="EN-US">disk</span>或<span lang="EN-US">server</span>进程查找<span lang="EN-US">blocks</span>用于写入操作时会<span lang="EN-US">request</span>此<span lang="EN-US">latch</span>。如果它存在较大冲突，则表示<span lang="EN-US">buffer cache</span>任务繁重，可能存在较多的<span lang="EN-US">cache-based sorts</span>、低效的<span lang="EN-US">SQL</span>（使用了不正确的迭代索引）或是较多的全表扫描。此外，也可能是由于<span lang="EN-US">DBWn</span>的写速度跟不上<span lang="EN-US">data blocks</span>的变化速度。使得访问进程不得不为了找到<span lang="EN-US">buffer</span>中的<span lang="EN-US">free blocks</span>等待。对这个<span lang="EN-US">latch</span>的冲突，应该从<span lang="EN-US">buffer cache</span>或<span lang="EN-US">DBWn</span>的调节入手。<span lang="EN-US"><br />
3</span>）<span lang="EN-US">cache buffers chains latch</span>：当<span lang="EN-US">user</span>进程试图分配<span lang="EN-US">buffer cache</span>中的<span lang="EN-US">data blocks</span>时，需要申请此<span lang="EN-US">latch</span>。它的冲突反映了某些热块被重复访问的情况。</p>
<p><span lang="EN-US">4</span>、共享池和<span lang="EN-US">library cache latch</span>冲突：如上所述，此类冲突的一个主要原因是不必要的解析。其调节方法已经在之前介绍过了。<span lang="EN-US"><br />
1</span>）辨识因为拼写方式而造成的多次解析：<span lang="EN-US"><br />
select sql_text from v$sqlarea where executions=1 order by upper(sql_text);<br />
2</span>）查看是否有不必要的重复解析。<span lang="EN-US"><br />
select sql_text, parse_calls, executions from v$sqlarea order by parse_calls;</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/gdufo/aggbug/309127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2010-01-12 12:31 <a href="http://www.blogjava.net/gdufo/archive/2010/01/12/309127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tuning Rollback Segments</title><link>http://www.blogjava.net/gdufo/archive/2010/01/12/309128.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 12 Jan 2010 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2010/01/12/309128.html</guid><description><![CDATA[&nbsp;
<p>1、rollback segments的作用：事务的rollback；transaction recovery（当事务尚未提交或rollback时instance fail，startup时会用rollback segment进行回滚恢复）；读一致性也需要rollback segment进行数据的还原。在新的版本中（我记得是从10g中）flashback技术也使用了rollback segment。这里先不介绍了，碰到时在说。<br />
2、rollback segment的activity：<br />
1）transaction以顺序循环的方式使用rollback segment中的extents。一个transaction在rollback segment的当前位置写入记录，并将指针移动写入记录的大小的步长。写入rollback segment的请求需要相应的undo data在database buffer cache中是可用的。这就要求有较大的buffer cache。<br />
2）注意：多个transaction可以对一个rollback segment中的同一个extent进行写操作。每个rollback segment block只会包含一个transaction的数据信息。<br />
3）rollback segment header中包含了不同transaction各自的记录：Oracle server在每个rollback segment header中保存一个transaction tables，从而控制改变rollback segments中data block的操作。<br />
因为需要不断修改，所以rollback segment header block被长期保存在data block buffer cache。而不断的访问rollback segment header block会增加命中率。这种影响对于某些有大量小型事务的OLTP的application影响较大。每个transaction都需要修改 transaction tables，所以必须有足够大的rollback segment从而避免对transaction tables的冲突。低估rollback segment的需求，可能引起性能问题或errors。高估会浪费空间。可以使用自动undo表空间管理的方法管理undo segments。<br />
4）rollback segments的增长：<br />
当当前extent写满后，指针或是rollback segment的头回移动到下一个extent。当最后一个extent作为当前写入的extent，被写满后，如果此时第一个extent是free 的，则指针将指向第一个extent的开始。指针式不能跳过（skip over）extent，移动到后面的extent上的。所以如果第一个extent仍被使用，将会为此rollback segment分配一个新的extent。这被称作extend。<br />
在正常的运行期间，rollback segments不应该被extend。所以在之前应该分配足够的rollback segment空间。应该尽量避免动态空间的管理。</p>
<p>2、调节手动管理的rollback segments<br />
1）调节rollback segment的目标：<br />
* 尽量使transaction不会为访问rollback segment而等待：这需要有足够的rollback segment<br />
* 在运行期间，应避免rollback segment的extend：<br />
&nbsp;&nbsp;&nbsp; 需要每个segment有适当数量的extents<br />
&nbsp;&nbsp;&nbsp; extents的四则应该正确<br />
&nbsp;&nbsp;&nbsp; 适当数量的rollback segment<br />
&nbsp;&nbsp;&nbsp; 尽量减少应用中对rollback的应用<br />
* 应该没有transaction把rollback space占用完：对此应该将较大transaction用多个transaction替代<br />
* 数据查询user应该总是能获得读一致的数据：这需要考虑设置适当数量的segments和适当的segments size。<br />
2）诊断工具：常用的监控视图有：<br />
*&nbsp; V$ROLLNAME：显示了在线rollback segments的名字和数量<br />
*&nbsp; V$ROLLSTAT：显示了每个在线rollback segment的统计信息。等待header transaction tables的数量，transaction写数据的卷标等信息。<br />
*&nbsp; V$WAITSTAT：显示等待header blocks和rollback segments的blocks累计数量。undo header和undo block两条记录。<br />
*&nbsp; V$SYSSTAT：显示<br />
select name, value from v$sysstat where name like &#8216;%undo%&#8217;;<br />
*&nbsp; V$TRANSACTION：显示当前transaction使用的rollback segment和require的空间的卷标。<br />
在查询时需要用视图中的USN作为连接字段。<br />
3）对手动管理的rollback segment header冲突的诊断<br />
查看：v$rollstat中的waits字段；v$waitstat中的undo header行；<br />
select event, total_waits, time_waited from v$system_event where event like &#8216;%undo%&#8217;;<br />
select class, count from v$waitstat where class like &#8216;%undo%&#8217;;<br />
select sum(value) from v$sysstat where name in (&#8216;db block gets&#8217;, &#8216;consistent gets&#8217;);<br />
select sum(waits)*100/sum(gets) &#8220;ratio&#8221;, sum(waits) &#8220;waits&#8221;, sum(gets) &#8220;gets&#8221; from v$rollstat;&nbsp;<br />
当等待的比率大于1%，则考虑创建更多的rollback segment。<br />
4）对于手动管理的rollback segment的数量的考虑<br />
*&nbsp; 对于OLTP application，其特点是有大量的小transaction并发，每个transaction只修改很少的数据量。对此可以设置small rollback segments。一般的设定规律是，并发的transaction中，每4个设置一个rollback segment。<br />
*&nbsp; 如果对于存在较大的批量transaction时，如果rollback segment较小，就可能会发生extend。允许rollback segment可以无限自行extend。<br />
*&nbsp; 如果想要给long transaction分配large&nbsp; rollback segment，可以使用下面的语法：<br />
SET TRANSACTION USE ROLLBACK SEGMENT large_rbs; &#8211;必须是事务的第一句<br />
或<br />
execute dbms_transaction.use_rollback_segment(&#8216;large_rbs&#8217;);<br />
5）Sizing 手动管理的rollback segment的大小<br />
设置适当的rollback segment size一方面可以避免动态的extend，另一方面当undo blocks被请求时增大了它在cache的可能性。<br />
*&nbsp; 对于small transactions设置segments的initial参数为8KB、16KB、32KB或64KB，对于larger transaction设置为128KB、256KB、512KB、1MB、2MB、4MB等。该值应该设置的足够大，以免出现wrapping现象（当 一个rollback entry在当前使用的空间中找不到足够的空间时，被写入下一个extent）。<br />
*&nbsp; 使用与initial相等的数值做next的参数值。因为PCTINCREASE设置为0，所以后续所有的extents都将是next大小。<br />
*&nbsp; 将DB中的所有rollback segment都设置为相同的size。如果暂时不需要large rollback segment，可以先将其offline。<br />
*&nbsp; 将minextents参数设置为20 。这大致可以避免extend的现象。<br />
*&nbsp; 对于表空间的size设置，我以为书中没有介绍太多的方法，需要在实际应用中查看产生的undo entries的数量进行设置。此外，可以为其保留一个专门用于large-than-usual transaction的segment。</p>
<p>3、transaction rollback data的sizing<br />
1）不同的sql操作所产生的rollback data的大小有下面而定：<br />
* delete操作对rollback segment的开销很大，会存储实际row的数据。如果使用truncate，则会对性能有所改变，但是因为没有写rollback entries，所以不能再恢复。<br />
* insert 使用的rollback space很少，只会记录row id。<br />
* update操作占用的空间要依靠修改的字段数量而定。<br />
* indexed 值将会产生较多rollback。因为server在修改index的同时需要修改tables中row，对于对index字段的update操作，需要 记录old data value、old index value和new index value。<br />
note：lob数据类型的回滚数据不使用rollback segment space，而是占用其自己的segment中由参数pctversion定义的大小的空间。<br />
可以通过下面的sql查看当前事务产生的rollback data<br />
select s.username, t.user_ublk, t.start_time from v$transaction t, v$session s where t.addr, s.taddr;<br />
2）另一种衡量方法是，实际执行相应的操作，从而观察rollback segment的变化<br />
*&nbsp; 在执行操作前运行：select usn, writes from&nbsp; v$rollstat;<br />
*&nbsp; 执行测试的事务操作<br />
*&nbsp; 再次查看rollback segment的统计数据：select usn, writes from v$rollstat;</p>
<p>4、使用产生少量rollback data 的语句：<br />
*&nbsp; user应该尽可能有规律的commit，避免其transaction锁住外部的rollback segment extents。<br />
*&nbsp; 开发人员应该在code时不使用long transaction。<br />
*&nbsp; import操作时，指定commit=y，使得每插入一定数据后就进行commit；用buffer_size关键字设置rows集合的大小。<br />
*&nbsp; export操作时：设置参数consistent=n，避免该是我被设置为只读，那将占用更多的rollback segment space。consistent=y时，确保了导出的数据在一个时间点上是一致的。<br />
*&nbsp; sql*loader：在执行时也应用rows关键字设置commit interval。<br />
note：对于小rollback segments可能带来的问题有：<br />
*&nbsp; interested transaction list（ITL）被存放在block的header。每个ITL entry都包含了发起此处变更的transaction id、undo block的位置、标识位、空闲空间credit和SCN。row lock byte包含了ITL实体number，就相当于该transaction拥有该row的锁。<br />
如果transaction很大，可能会由于rollback segment达到其最大的extents，或是表空间中已经没有可用于extend的空间给rollback segment了，而导致transaction的失败。<br />
* 在查询操作遇到ORA-01555: snapshot too old (rollback segment too small)的错误时，说明此操作需要为了保持一致读的镜像数据块被其他transaction覆盖了。对此的修复只有增大rollback segments。&nbsp;&nbsp;</p>
<p>5、自动管理undo表空间模式<br />
从9i开始，也已通过将UNDO_MANAGEMENT设置为auto将DB设置为自动管理undo表空间的模式（AUM），如果设置为manual则仍 使用手工的管理（RBU）。当在一个transaction中，第一个DML操作被执行，transaction将被分配到当前undo tablespace中的一个rollback segment上。可以通过参数UNDO_RETENTION设置存放在AUM中的undo信息的数量。<br />
1）AUM的tablespace：<br />
具体创建undo tablespace的方法：create database是使用undo tablespace子句，此时会创建一个名为SYS_UNDOTBS的undo tablespace，在$ORACLE_HOME/dbs下将会生成DBU1&lt;SID&gt;.dbf的文件，并且autoextend=on； 另外可以使用create undo tablespace创建。<br />
2）对于AUM的表空间，可做下面的操作：<br />
alter tablespace tspname<br />
&#8226; ADD DATAFILE<br />
&#8226; RENAME<br />
&#8226; DATAFILE [ONLINE|OFFLINE]<br />
&#8226; BEGIN BACKUP<br />
&#8226; ENDBACKUP<br />
DBA仍可切换当前使用的undo tablespace，只有一个undo tablespace可以设置为active。<br />
eg：ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;<br />
当该指令发出，所有新的transaction将被指向新的undo tablespace，当前正在运行的transaction将继续沿用旧的undo tablespace，直到结束。<br />
DBA只能通过drop tablespace命令删除当前非active的undo tablespace，并且其不包含任何未提交的transaction的rollback data。<br />
3）对于自动管理undo tablespace的参数设置：<br />
*&nbsp; UNDO_MANAGEMENT：指明是AUTO或MANUAL<br />
*&nbsp; UNDO_TABLESPACE：指明当前active的undo tablespace。如果在创建是没有undo tablespace可用，则会使用system表空间作为rollback segment的分配空间。<br />
*&nbsp; UNDO_SUPPRESS_ERRORS：此参数主要用于使用SET TRANSACTION USE ROLLBACK命令下<br />
*&nbsp; UNDO_RETENTION：设置存放在AUM中的undo信息的数量。其单位是秒，默认值是900<br />
关于undo retention所需的空间的计算：<br />
undo space = （UNDO_RETENTION * (undo blocks per second*db_block_size) ) + DB_BLOCK_SIZE<br />
可以使用下面的sql进行计算，并设置undo tablespace的大小：<br />
SELECT (RD*(UPS*OVERHEAD) + OVERHEAD) AS &#8220;bytes&#8221;<br />
FROM (SELECT value AS RD FROM v$parameter where&nbsp; name = &#8216;undo_retention&#8217;),<br />
(SELECT (SUM(UNDOBLKS)/SUM(((end_time-begin_time)*86400))) as UPS FORM v$undostat),<br />
(SELECT value AS Overhead FROM v$parameter where name=&#8217;db_block_size&#8217;);<br />
4）对自动管理undo tablespace的监控：<br />
通过查看V$UNDOSTAT视图可以完成监控的任务。字段UNDOBLKS显示了undo blocks的分配数量。</p>
<img src ="http://www.blogjava.net/gdufo/aggbug/309128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2010-01-12 12:31 <a href="http://www.blogjava.net/gdufo/archive/2010/01/12/309128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Monitoring and Detecting Lock Contention</title><link>http://www.blogjava.net/gdufo/archive/2010/01/12/309129.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 12 Jan 2010 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2010/01/12/309129.html</guid><description><![CDATA[&nbsp;
<p>1、Locking机制<br />
1）Oracle Server中是自动管理锁的。默认会使用最低的锁级别对数据进行一致性的保护，从而满足最大的并发度。<br />
note：默认的锁机制可以通过ROW_LOCKING改变。默认该值是ALWAYS，它将在DML语句中使用最低级别的锁。另一个可能的值是 INTENT，它将使用更高级别的限制（table level），除了select for update语句，它将使用行级锁。<br />
2）quiesced database：如果Oracle被设置为只有DBA可以访问的状态时，就是quiesced database。<br />
3）锁的种类：<br />
<span style="color: red">**&nbsp; DML locks</span><span style="color: red">：<br />
</span>①表级锁（TM）：当修改table data时，被设置，如：INSERT, UPDATE, DELETE, SELECT &#8230; FOR UPDATE或LOCK TABLE。此时table将被加锁，避免其他DDL的操作引起transaction之间的冲突。<br />
##&nbsp;&nbsp; 在TM中又可分为两种锁，是由server根据当前其他表锁的加载情况而自动为DML选择加上的。这两种锁具体是：row exclusive（RX），运行其他transaction中的insert、update、delete或其他加行级锁的并发操作在当前同一 table上，但不允许其他手动加载的排他读/写锁；row share（RS），运行SELECT &#8230; FOR UPDATE命令时加载的表锁，这只会对避免其他事务手动的对当前table加载锁用于排他的写操作。<br />
##&nbsp;&nbsp; 表锁模式：<br />
（i）手动加载表锁模式使用语句LOCK TABLE table_name IN mode_name MODE; &#8211;一般不使用这种明确加锁的方法，只有application要求，才会不得不加较高级别的锁。<br />
（ii）Share（S）锁模式：此类表锁只允许其他transaction发出select &#8230; from update的请求，不允许任何对table的修改。隐含式的获得share lock的sql语句中，会包含相应的完整性约束。在9i中，不会申请子表中外键字段的索引约束。<br />
<span style="color: #993300">（iii）Share Row Exclusive（SRX）：它是比S模式更高的锁模式。它不允许任何其他的DML语句和手动加载的共享锁模式。相应的SQL语句会隐式的获得相应的完整性约束的SRX锁。<br />
（iv）Exclusive（X）锁：这是最高的锁模式，只允许其他对该表的查询请求，拒绝一切对表的任何DML操作和手动锁。<br />
</span>②行级锁（TX）：当发出命令INSERT, UPDATE, DELETE, SELECT &#8230; FOR UPDATE命令时，会自动为所操作的row对象加TX，从而确保没有其他user同时对同一行进行才操作。<br />
一个DML事务，会同时获得两个锁：共享表级锁和排他行级锁。获得行级锁的每行都返回<br />
<br />
③在blocks中的DML锁：加锁的信息只有在transaction被commit或是rollback后才会被清除。而不是在当前事务的下一个请求语句发起时被释放。在blocks header中，Oracle server为每个当前active的transaction保存了一个标识符。在每条row中，会有一个lock byte存储了包含当前transaction的slot的标识符。<br />
</p>
<p><span style="color: red">**&nbsp; DDL locks</span><span style="color: red">：</span>避免对schema对象的定义时，有其他相关的DDL操作进行。<br />
Oracle是通过入队的方式对锁进行维护的，入队机制会记录下面的信息：user等待的locks被其他user占用；users请求的locks的具体类型；users请求的locks的顺序。<br />
可以通过改变参数DML_LOCKS和ENQUEUE_RESOURCES参数来增加可被request的locks。这在Parallel server中是必须的设置。DDL锁的分类有：<br />
①Exclusive DDL Locks：某些DDL语句，如CREATE, ALTER, DROP，必须获得其操作object的排他锁。如果其他user获得了其他任何级别的lock，当前user都不能得到其DDL的排他锁。<br />
②Shared DDL locks：当发起GRANT和CREATE PACKAGE操作时，需要获得相应object的共享DDL lock。该类locks不会阻止类似的DDL语句或是任何DML语句，但会防止其他user对当前引用的object被修改或删除。<br />
③Breakable Parse Locks：保存在library cache中的statement和PL/SQL对象保存了其引用的每个object的breakable parse Lock，直到该statement过期。它用于检验library cache中的相应内容是否因为object的改变而可用。</p>
<p>2、可能引起Locks冲突的原因：<br />
1）使用了不必要的high-level锁<br />
2）长期运行的transaction的存在<br />
3）user没有及时的commit对database的修改<br />
4）使用Oracle instance的application使用了higher locks</p>
<p>3、监控并诊断当前加锁情况的工具</p>
<p>1）如上图所示，其中视图DBA_WAITERS和DBA_BLOCKERS用于进一步查看当前获得或是等待不同table的locks的信息。对此，需要用$ORACLE_HOME/rdbms/admin中的catblock.sql脚本创建。<br />
2）对于v$lock视图来说，当lock tpye为TX时，id1中显示的回滚段的number和slot number；当lock tpye为TM时，id1中显示的是被修改表的object ID。<br />
SELECT owner, object_id, object_name, object_type, v$lock.type FROM dba_objects, v$lock WHERE object_id=v$lock.id1 and object_name=table_name;<br />
3）V$LOCKED_OBJECT视图<br />
XIDUSN：Rollback segment number<br />
OBJECT_ID：ID of the object being modified<br />
SESSION_ID：ID of the session locking the object<br />
ORACLE_USERNAME<br />
LOCKED_MODE<br />
在此视图中，当XIDUSN为0时，则表示当前session正在等他其他已经获得该lock的session释放。<br />
4）关于脚本utllockt.sql<br />
可以使用$ORACLE_HOME/rdbms/admin/utllockt.sql脚本显示当前等待lock的进程继承关系。但使用之前必须用catblock.sql脚本创建视图dba_locks和dba_blockers。<br />
5）如果想要得知哪一行造成了lock冲突，可以查看v$session中的row_wait_block#, row_wait_row#, row_wait_file#, row_wait_obj#四个字的的值。</p>
<p>4、解决locks的冲突方法有：一方面可以请相应的user做commit/rollback；在万不得已的时候，可以kill掉某些user session，从而回滚相应的transaction并释放locks。具体方法如下：<br />
select sid, serial#, username from v$session where type=&#8217;USER&#8217;；<br />
alter system kill session &#8217;sid,serial#&#8217;;</p>
<p>5、死锁：对于Oracle，当其检测到死锁的存在，会rolling back那个检测到死锁的语句，当不是整个transaction的rollback。必要时，需要DBA完成剩下的rollback工作。明确的指明语 句中使用的锁，从而覆盖默认的锁机制，可能容易引起deadlock。<br />
当发生死锁后，server会将deadlock的情况记录到USER_DUMP_DEST目录下的跟踪文件。在分布式transaction中，本地的 deadlock是通过等待关系图（waits for graph）来判断的，全局死锁是通过time-out来判断的。</p>
<img src ="http://www.blogjava.net/gdufo/aggbug/309129.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2010-01-12 12:31 <a href="http://www.blogjava.net/gdufo/archive/2010/01/12/309129.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Database Configuration and IO Issues</title><link>http://www.blogjava.net/gdufo/archive/2010/01/12/309125.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Tue, 12 Jan 2010 04:30:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2010/01/12/309125.html</guid><description><![CDATA[&nbsp;
<p>Oracle进程与files<br />
</p>
<p><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">&nbsp;<v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype></span><br />
1、performance guidelines<br />
1）对于吞吐量较大的OLTP应用中，当使用dictionary管理表空间的方法时，由于所有的extent分配时都会要访问dictionary，从而造成了冲突。而使用本地管理表空间的方法避免了这类冲突，从而提高了并发性。<br />
2）在本地管理表空间中，使用自动空间管理方法，用位图记录不同blocks的使用情况。也提高了相应的速度。<br />
3）当创建一个user后，就会分配一块所需的磁盘排序所需临时表空间。这些排序区应该从其他database object中分离开，如果没有给user分配临时表空间，则其所需的排序区域将从system表空间分配。<br />
4）tables和indexes应该被分开存储在不同表空间中。因为indexes和tables经常被同时读写。<br />
5）对于含有LONG或LOB数据类型的tables，应该被分配在不同的表空间中。<br />
6）适当创建多个临时表空间。</p>
<p>2、distributing files across devices：<br />
1）应该将redo log和data file存放在不同的磁盘上，从而在一定程度上降低i/o的压力。<br />
2）对于规模较大的表，如果分不同的区域并发访问也可以提高性能partition。<br />
3）尽可能排除非Oracle Server进程对database file的I/O操作。对此可以使用v$filestat动态的观察。<br />
4）了解应用程序主要的I/O操作，合理安排disk布局，从而提高性能。</p>
<p>3、表空间的作用：其中system表空间主要是用于存放sys创建的data dictionary objects。其他users不可使用该表空间。需要明确的是，packages和database triggers对象等都是data dictionary的一部分。rollback segments应该排他使用其rollback segment。undo segments可以只能存在在undo tablespace中。</p>
<p>4、监控I/O状态的工具<br />
1）v$filestat视图。<br />
select phyrds, phywrts, d.name from v$datafile d, v$filestat f where d.file# = f.file# order by d.name;<br />
2）statspack<br />
5、file striping<br />
1）对OS的striping，通过使用硬件或是软件层次上的striping，可以将同一个文件的不同blocks放在不同的devices上，例如raid技术。提供一定的冗余的同时增大I/O性能的。<br />
此外，设置适当的DB_FILE_MULTIBLOCK_READ参数。<br />
2）手工的striping：可以在多个不同的disk创建tablespace。随后将不同的tables、indexes分配到不同的 tablespace中。此外，可以创建对象时使用MINEXTENTS句柄其值大于1，这样每个extents都将略小于striped data files。也可直接给extents进行分配定位（但我认为这会给管理带来麻烦）：alter table tablename allocate&nbsp; extent ( datafile &#8216;filename&#8217; size 10M);<br />
对于这块争用的问题，使用手动的striping还是比较有效的。<br />
6、对全表扫描的tuning：当对某个disk有较高的读写操作时，多是由于没有适当调节sql的原因。<br />
查看全表扫描的次数：<br />
select name, value form v$sysstat where name like &#8216;%table scans%&#8216;;<br />
获得的结果中&#8217;table scans ( long tables)&#8217;的值如果较大，则需要考虑调节sql或是增加适当的indexes。<br />
&nbsp;long tables (长表)指多于<span style="color: red"><strong>4</strong></span>个块的表, short table(短表)指等于或小于<span style="color: red"><strong>4</strong></span>个块的表。<br />
初始化参数DB_FILE_MULTIBLOCK_READ_COUNT决定了在全表扫描时，一次I/O操作中读入的最大的database blocks。它可以改变全表扫描时需要的I/O的次数。该参数的设置应该受到OS限制的I/O的上限的约束。此外此参数还可以在session级别进行 调节。对它的调节可以先查看完成每个表的全表扫描扫描多少blocks。从而从整体上得到较好的设置。要注意的是，对cost-based 优化将会使用该参数评估使用全表扫描的代价，从而判断是否使用全表扫描。<br />
对于全表扫描，Oracle提供了视图v$session_longops来进行监控。<br />
select sid, serial#, opname, to_char(start_time,&#8217;HH24:MI:SS&#8217;) as starttime, (sofar/totalwork)*100 as percent_complete from v$session_longops;<br />
7、checkpoints<br />
<strong>什么是checkpoint?<br />
</strong>　checkpoint是一个数据库事件，它将已修改的数据从高速缓存刷新到磁盘，并更新控制文件和数据文件。<br />
<strong>什么时候发生checkpoint?<br />
</strong>　　我们知道了checkpoint会刷新脏数据，但什么时候会发生checkpoint呢？以下几种情况会触发checkpoint。<br />
　　1.当发生日志组切换的时候<br />
　　2.当符合LOG_CHECKPOINT_TIMEOUT，LOG_CHECKPOINT_INTERVAL，fast_start_io_target,fast_start_mttr_target参数设置的时候<br />
　　3.当运行ALTER SYSTEM SWITCH LOGFILE的时候<br />
　　4.当运行ALTER SYSTEM CHECKPOINT的时候<br />
　　5.当运行alter tablespace XXX begin backup，end backup的时候<br />
　　6.当运行alter tablespace ,datafile offline的时候;<br />
<br />
1）它可以引起DBWn的I/O操作，同时会更新datafile header和control file中的scn等信息。<br />
频繁的进行checkpoint可以缩短instance恢复的时间，但是会降低Oracle运行的性能。<br />
在LGWR写redo log文件时，当一个group 被写满时，需要进行log switch是，会先发起一个checkpoint，这就意味着：DBWn会先将所有的与该redo log有关的dirty data blocks写入datafile，随后CKPT会修改datafile header和控制文件。<br />
checkpoint并不会影响其他工作。如果DBWn进程尚未完成checkpoint一个file，此时LGWR需要在此需要这个file时，LGWR不得不等待。<br />
2）对checkpoint性能的监控与调节：<br />
**&nbsp; checkpoint的监控主要是查看alert.log文件。可以将LOG_CHECKPOINT_TO_ALERT参数设置true，从而记录checkpoint的开始结束时间。<br />
**&nbsp; 通过调节online redo log files的大小来降低因日志切换引起的checkpoint；<br />
**&nbsp; 增多redo log 的groups，从而延长LGWR覆盖写的时间，从而避免引起不必要的LGWR等待。<br />
**&nbsp; 具体可调节的参数有：<br />
&#8211; FAST_START_IO_TARGET<br />
&#8211; LOG_CHECKPOINT_INTERVAL<br />
&#8211; LOG_CHECKPOINT_TIMEOUT<br />
&#8211; DB_BLOCK_MAX_DIRTY_TARGET<br />
&#8211; FAST_START_MTTR_TARGET<br />
如果在OLTP系统中，SGA设置过大，同时checkpoint稀少，可能引起disk冲突。所以也要适当增加checkpoint的频率。<br />
貌似我的理解是除了user发起的alter database checkpoint命令外，主要两类checkpoint，时间间隔型和fast-start类型的。<br />
通过查看v$instance_recovery视图，查看参数设置对DB recovery时间的影响，其中：<br />
RECOVERY_ESTIMATED_IOS：显示了基于fast-start的设置，在recovery时，需要处理的data blocks。<br />
ACTUAL_REDO_BLKS：显示了当前要进行recovery时所需的redo blocks。<br />
TARGET_REDO_BLKS：在recovery时，最大的需要处理的redo blocks。是下面四个指标的最小值。<br />
LOG_FILE_SIZE_REDO_BLKS：在recovery时，为了确保log switch不会等待checkpoint，要处理的redo blocks数量。<br />
LOG_CHKPT_TIMEOUT_REDO_BLKS：在recovery时满足log_checkpoint_timeout，需要处理的redo blocks的数量。<br />
LOG_CHKPT_INTERVAL_REDO_BLKS：在recovery时为了满足log_checkpoint_interval，需要处理的redo blocks的数量。<br />
FAST_START_IO_TARGET_REDO_BLKS：在recovery时为了满足fast_start_io_target，需要处理的redo blocks的数量。<br />
对checkpoint的设置主要围绕的中心就是recovery用时，和它引起的I/O是否会造成性能的问题。<br />
8、redo log的groups和members的设计<br />
一般会把同一组的不同成员放置在不同的disk上，如果在归档模式下，则要考虑将归档日志放到不同的磁盘上。为redo log选择适当的size。同时在一定程度上增加log file的groups，从而避免不必要的等待。<br />
对redo log的监控视图主要有：V$LOGFILE, V$LOG, V$LOG_HISTORY，此外还可结合v$system_event获得的结果。<br />
9、归档日志的设置<br />
当开启归档模式时，可以考虑将不同的groups放在不同的disks上（当然不一定是每个group一个磁盘），同时与归档文件的存放也分离，这样使LGWR进程写的disk和ARCn进程读的disk不在一个上。<br />
可以从视图V$ARCHIVED_LOG上获得动态的归档log文件的信息。V$ARCHIVE_DEST当前归档进程的destinations的状态信息。（由参数log_archive_dest_n设置的destination）<br />
监控诊断ARCn的工具主要是使用视图：V$ARCHIVED_LOG, V$ARCHIVE_PROCESSES, V$ARCHIVE_DEST。<br />
对归档的调节，可以使用LOG_ARCHIVE_MAX_PROCESSES参数指定最大可以创建的归档进程。<br />
如果预计归档工作量较大，可以通过定期运行下面语句来获得其他进程来分担。<br />
alter system archive log all to &#8216;directory_name&#8217;;<br />
注意：9i中，当DBWR_IO_SLAVES参数的设置大于0，Oracle会自动将ARCn的进程数设置为4。（但是我的11g貌似DBWR_IO_SLAVES=0，而ARCn也是4个多啊，大概是设了其他的参数）</p>
<p>设置适当的fast_start_io_target，</p>
<img src ="http://www.blogjava.net/gdufo/aggbug/309125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2010-01-12 12:30 <a href="http://www.blogjava.net/gdufo/archive/2010/01/12/309125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>