<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>martri</title>
    <description>Think in</description>
    <link>http://martri.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Solaris常见问题小结（更新中）</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/218547" style="color:red;">http://martri.javaeye.com/blog/218547</a>&nbsp;
          发表时间: 2008年07月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Solaris常见问题小结（更新中）<br /><br />1.UltraEdit ftp客户端无法显示文件和目录的列表<br />	字符集问题，由于之前将LANG=C改为LANG=zh.GBK导致，改回来即可
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/218547#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Jul 2008 13:47:16 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/218547</link>
        <guid>http://martri.javaeye.com/blog/218547</guid>
      </item>
      <item>
        <title>网络管理系统OpenNMS的安装配置</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/203477" style="color:red;">http://martri.javaeye.com/blog/203477</a>&nbsp;
          发表时间: 2008年06月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近公司本人为做了一个内部项目，是有关网络监控方面，想借鉴Open Source的资源，上网搜索了一下，基本可以分两类：<br />1） 主要对流量及主机在线状态监控软件,如最初的MRTG,PRGT,CACTI,Hobbit,<br />2） 能对服务器的关键服务及进程进行监控的软件,如Big Brother,Nagios,OpenNMS<br />    综合考虑后，决定选用OpenNMS，从公司的角度方面考虑主要它是用java开发，可以和公司的有关软件进行集成，从监控的应用方面，OpenNMS的界面虽然不是很美观，但其在监控服务方面有出色的表现，功能也在众多相关软件里是表现非常出色的。选定以后，首先当然就是安装配置，然后进行重新的分析和设计，参考网络的一些经验，现在就其安装和配置做相关总结：<br />	<br />一、安装 Sun J2SE Java SDK <br />之前已经安装好，故就不安装，就设置相关的环境变量：<br />JAVA_HOME=/usr/jdk/jdk1.5.0_01<br />export PATH=$PATH:$JAVA_HOME/bin <br /><br />二、安装postgresql<br />下载postgressql然后运行一下命令：<br />./configure --prefix=/usr/local/pgsql<br />make <br />make install<br />安装成功后，开始配置postgresql：<br />PostgreSQL 不能以 root 用户运行，必须建立对应的用户和组。<br /><br /># useradd postgre （自动建立 postgre 组）<br /><br /># vi ~postgre/.bash_profile<br />添加：<br />PGLIB=/usr/local/pgsql/lib<br />PGDATA=$HOME/data<br />PATH=$PATH:/usr/local/pgsql/bin<br />MANPATH=$MANPATH:/usr/local/pgsql/man<br />export PGLIB PGDATA PATH MANPATH<br /><br />修改设定参数postgresql.conf及pg_hba.conf <br />vi /export/home/postgres/data/postgresql.conf <br />修改下列参数 <br />tcpip_socket = true <br />max_connections = 256 <br />shared_buffers = 1024 <br />vi /var/lib/pgsql/data/pg_hba.conf <br />加入下面二行 <br />local all all trust <br />host all all 127.0.0.1 255.255.255.255 trust <br />原文提到如果您的系统支持IPv6则可加入(不支持建议不要增加) <br />host all all ::1 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff trust <br /><br />以 postgres 用户登录，<br /># su - postgre<br />建立数据库目录：<br />$ mkdir data<br /><br />启动数据库引擎：<br />$ initdb    <br />最后会显示如下:<br />/usr/local/pgsql/bin/postgres -D /export/home/postgres/data<br /><br />/usr/local/pgsql/bin/pg_ctl -D /export/home/postgres/data start<br />建立数据库<br />$createdb mydb <br />$psql mydb<br />建立表<br />CREATE TABLE mytable (<br />id varchar(20),<br />name varchar(30));<br />插入数据<br />INSERT INTO mytable values('Author', 'MartriWang');<br /><br />三、安装 Tomcat4 <br />现阶段，OpenNMS只支持tomcat4（安全认证问题），不能支持tomcat5，故只能采用tomcat4<br />到 http://archive.apache.org/dist/jakarta/tomcat-4/archive/v4.1.24/rpms/ 处下载 <br />tomcat4-4.1.24-full.2jpp.noarch.rpm <br />tomcat4-webapps-4.1.24-full.2jpp.noarch.rpm <br />vim /etc/tomcat4/tomcat4.conf <br />修改下面二行 <br />JAVA_HOME="/usr/java/j2sdk1.4.2_08/" <br />TOMCAT_USER="root" <br /><br />四、安装 rrdtool <br />下载源代码，然后运行一下命令：<br />./configure --prefix=/usr/local/rrdtool<br />make <br />make install<br /><br />五、安装 OpenNMS <br />1.利用svn下载OpenNMS:<br />svn co https://opennms.svn.sourceforge.net/svnroot/opennms/opennms/branches/OPENNMS_1_2_BRANCH opennms<br /><br />2.配置OpenNMS环境变量<br />export OPENNMS_HOME=/opt/Opennms <br /><br />3.编译OpenNMS：<br />sh build.sh compile<br />sh build.sh install<br /><br />4.配置OpenNMS<br />$OPENNMS_HOME/bin/runjava -s <br />/usr/local/opennms/bin/install -disU <br />$OPENNMS_HOME/bin/install -y -w $CATALINA_HOME/webapps -W $CATALINA_HOME/server/lib <br /> <br />修改$OPENNMS_HOME/etc/discovery-configuration.xml <br />&lt;discovery-configuration threads="1" packets-per-second="1" <br />initial-sleep-time="300000" restart-sleep-time="86400000" <br />retries="3" timeout="800"> <br /> <br />&lt;include-range retries="2" timeout="3000"> <br />&lt;begin>192.168.31.1&lt;/begin> <br />&lt;end>192.168.31.254&lt;/end> <br />&lt;/include-range> <br /> <br />&lt;include-url>file:/opt/OpenNMS/etc/include&lt;/include-url> <br /> <br />&lt;/discovery-configuration> <br /> <br />您可以侦测多个网段只要加入以下的参数在设定档中即可。 <br />&lt;include-range retries="2" timeout="3000"> <br />&lt;begin>192.168.X.1&lt;/begin> <br />&lt;end>192.168.X.254&lt;/end> <br />&lt;/include-range> <br /> <br />启动执行： /usr/local/opennms/bin/opennms start<br />开启浏览器，地址<br />http://192.168.0.6:8080/opennms <br />预设使用者为：admin密码：admin<br /><br />    至此OpenNMS安装成功，最后可以利用elipse进行开发，通过FTP进行同步。以后想配置一个ANT文件进行自动编译管理。至于改造设计，以后将近一步开发探索。
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/203477#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 15 Jun 2008 15:22:56 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/203477</link>
        <guid>http://martri.javaeye.com/blog/203477</guid>
      </item>
      <item>
        <title>也说QQ的QZone</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/199910" style="color:red;">http://martri.javaeye.com/blog/199910</a>&nbsp;
          发表时间: 2008年06月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          QQ的东西,一直以来不是很喜欢,感觉就是一个圈套圈,让人不断在这个圈钻进另一个圈,总之就是圈钱,但它经过这么多年的积累,已经聚集了太多的人气,让人很难割舍,还有说到最大的一个圈就是圈人;就好象QQ游戏,凭着强大的人气,很快就打败了联众和中国游戏中心.真是让人敢怒不敢言.说到QQ的技术,那就是跟风,从来没有走在技术时代的潮流,见网络游戏比较火热,就开通了QQ游戏和QQ幻想,结果是联众和中国游戏中心成了其踏脚石,现在见Blog很火暴,全球喊着进入web2.0时代,也想着称热捞一把,边开通了QZone,估计在不久的将来博客中国等没有门户支撑和充足的庞大资金支持的即将成为下一个联众和中国游戏中心,呵呵,这些都不关我的事情,我就是见那里有人气,我就跟到那里,鹿死谁手,我是乐见其成. <br />   Google一直以来是我的至爱，它的简单和个性让人耳目一新,支持个性主页,可以开辟Google <br />Groups,并可以Email通知成员,别具一格;技术是引领时代潮流,当然人们总有枪打出头鸟的习惯,故最近它是官司不断,是非缠身,先有李开复事件,后有私隐官司.现在中国又搞不过中国特色的Baidu,但它依然是王者之风. <br />   Baidu去年一度成就一代神话,尽管现在股票价格大降,那也是成就了一代中国搜索的领跑者,喜欢Baidu是因为的中文搜索确实比Google确实好,正所谓浪里淘沙，始得金。 <br />总之，胜者为王，不管是QQ的霸气，Google的王者之风，还是Baidu的少年得志，谁是强者，谁就是胜者。
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/199910#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jun 2008 22:49:15 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/199910</link>
        <guid>http://martri.javaeye.com/blog/199910</guid>
      </item>
      <item>
        <title>让心灵去旅行</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/199905" style="color:red;">http://martri.javaeye.com/blog/199905</a>&nbsp;
          发表时间: 2008年06月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          旅行，迁徙，流动，这是社会进步和文明发展的必然趋势；股票起伏，潮水汹涌，见证了经济和历史的变迁；青山遮不住，毕竟东流去； <br />  1.历史的变迁； <br />  回想自己的历程，原来也是充满了迁徙，从清远农村迁徙到韶关，见证了改革开发的变迁；从高中毕业到大学学习，见证了中国教育的改革；从大学毕业到硕士学习，见证了研究生教育的回归；从学习到工作，见证了中国股票一路高歌而有调整起伏的发展；原来这些都是社会的进步和人生的起伏； <br />  2.城市的变迁； <br />  清远的朴实和纯朴，令人清新一亮；韶关的沉重和孕育，让人稳重和踏实；长沙的厚重和底蕴；让人开阔和进取；广州的开放和现实，让人成熟和成长； <br />  3.心灵的变迁； <br />  从笛卡尔的“我思故我在”，到“莫斯科不相信眼泪”，从少年的轻狂到现在的沉重和现实；让人陶醉又让人迷惘，没有人能够改变，更没有人能够摆脱，对应这开幅的”青山依旧在，几度夕阳红“
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/199905#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jun 2008 22:34:00 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/199905</link>
        <guid>http://martri.javaeye.com/blog/199905</guid>
      </item>
      <item>
        <title>论文终于录用拉～～～～</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/199902" style="color:red;">http://martri.javaeye.com/blog/199902</a>&nbsp;
          发表时间: 2008年06月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          经过一段时间的忙碌，蚂蚁搬家似的写作，历尽一年多的酝酿，终于在十一之前写完了在学校期间的第一篇论文《基于动态负载均衡的网络监控系统》，在这期间，写的论文改了又改，修了又修，但总觉得欠些什么，在时间紧迫的情况下，只好把一些想法束之高阁，让论文在前后的承接上更为自然，毕竟有些工作还没有到位，无法继续下去^_^，只好在理论上写出的新意出来，在负载均衡的机制上，由于在公司时候经常用到ORACLE，它在判断空闲块使用机制有一定出色的表现，故借鉴了其中一些判断机制，可以算的上是一种借鉴吧，也算是本论文的一大特色^_^<br />     历经两个多月的审稿，终于被《计算机工程》录用了，现正在退修状态上，继续努力，最近在SDB项目做开发，突然想到了一个以前想写的题目，但一直不知道如何下手，现有了一定的酝酿，暂命名为《大型企业呼叫中心技术研究》，结合上篇论文展开铺垫，希望进展顺利，毕业前将其完成^_^
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/199902#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jun 2008 22:19:37 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/199902</link>
        <guid>http://martri.javaeye.com/blog/199902</guid>
      </item>
      <item>
        <title>编译Squid问题总结</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/189467" style="color:red;">http://martri.javaeye.com/blog/189467</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近学习Squid，想从中学习一些关键技术，如内存池，hash，epool等，但再编译原代码时发生一些问题，现总结如下：<br /><br />1.gcc问题，卸除原版本，安装新版本<br />-bash-3.00# pkginfo |grep gcc<br />application FSFgcc                           gcc<br />system      SUNWgcc                          gcc - The GNU C compiler<br />system      SUNWgccruntime                   GCC Runtime libraries<br />-bash-3.00# pkgrm SUNWgcc<br />-bash-3.00# pkgrm FSFgcc<br />-bash-3.00# pkgrm SUNWgccruntime<br />2.提示host问题，按提示用./configure --host=x86-sun-solaris编译通过<br />3.Nothing to be done for `install-exec-am'和Nothing to be done for `all-am'一开始以为是错误，其实可以忽忽略置之不理<br />4.Solaris的cp命令没有-a选项，应用cp -RPp 代替cp -a<br />5.磁盘充足却提示不足，发现移动硬盘的分区格式是 FAT32 的，大于4G则会有问题，必须将其改成 NTFS 用 convert H: /fs:NTFS 命令转换分区文件系统格式后，开始拷贝，一切正常
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/189467#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 May 2008 18:01:04 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/189467</link>
        <guid>http://martri.javaeye.com/blog/189467</guid>
      </item>
      <item>
        <title>Cacti在Solaris10下的安装</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/189450" style="color:red;">http://martri.javaeye.com/blog/189450</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          从学习Squid源代码，到安装Cacti监视Squid，感觉是理所当然，cacti真是一个很好的开源监控系统，利用php技术，结各mysql以及rrdtool技术，将监控系统分模块划分，使系统很容易拓展，它的社区也有很高的活跃度，是一个监控系统很好的学习模范。从安装到自定义模版，其实还是要花不少功夫的：<br />Solaris下MySQL的安装：<br />1.Solaris下的MySQL目录：<br />/usr/sfw/sbin:守护进程mysqld,mysqld_safe<br />/usr/sfw/bin:管理工具mysqladmin,mysqlcheck等<br />/usr/sfw/share/mysql/:配置文件 my-medium.cnf等<br />/var/mysql：MySQL数据目录<br />/usr/sfw/include/mysql：MySql的头文件<br />2.配置MySQL配置文件<br />-bash-3.00#cp /usr/sfw/share/mysql/my-medium.cnf /etc/my.cnf<br />-bash-3.00#vi /etc/my.cnf<br /># The following options will be passed to all MySQL clients<br />[client]<br />#password       = your_password<br />port            = 3306<br />##Modified content MartriWang@gmail.com<br />#socket         = /var/lib/mysql/mysql.sock<br />socket          = /home/mysql/5.0/mysql/mysql.sock<br /><br /># Here follows entries for some specific programs<br /># The MySQL server<br />[mysqld]<br />port            = 3306<br />#socket         = /var/lib/mysql/mysql.sock<br />##Modified content MartriWang@gmail.com<br />socket          = /home/mysql/5.0/mysql/mysql.sock<br />skip-locking<br />key_buffer = 16M<br />max_allowed_packet = 1M<br />table_cache = 64<br />sort_buffer_size = 512K<br />net_buffer_length = 8K<br />read_buffer_size = 256K<br />read_rnd_buffer_size = 512K<br />myisam_sort_buffer_size = 8M<br />3.创建mysql用户<br />-bash-3.00#useradd -u 1002 mysql <br />-bash-3.00#groupadd -g 1002 mysql mysql<br />-bash-3.00#mkdir /export/home/mysql<br />4.启动mysql<br />-bash-3.00#./mysqld &<br />发生如下错误：<br />080424 15:45:53 InnoDB: Started<br />080424 15:45:53 Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist<br />080424 15:45:53 Aborting<br />解决方法：<br />rm -rf /pathtodatadir<br />then<br />cd /usr/local/mysql1/bin<br />./mysql_install_db --user=mysql --ldata=/var/mysql<br />./mysqld_safe --datadir=/var/mysql --user=mysql &<br />5.安装成功<br />备份:[root@MT src]#mysqldump -u root -p --opt mysql > mysql_back<br />恢复:[root@MT src]#mysql -u root -p mysql &lt; mysql_back<br />=====================================================================================================================<br />Solaris下apache的安装<br />1.Solaris下的Apache目录：<br />/usr/apache2：主目录，如/usr/apache2/bin下有apachectl，httpd<br />/etc/apache2/:配置文件，如httpd.conf-example<br />/var/apache2/logs：日志文件<br />/var/run/apache2/httpd.pid：运行目录<br />2.配置文件<br />-bash-3.00#cp /etc/apache2/httpd.conf-example  /etc/apache2/httpd.conf<br />-bash-3.00#vi /etc/apache2/httpd.conf<br />    Set ServerName if necessary (default is 127.0.0.1)<br />    Set ServerAdmin to a valid email address<br />如没有目录/var/run/apache2/则需要创建此目录<br />3.运行./usr/apache2/bin/apachectl start &<br />或者，启用apache服务：<br />-bash-3.00# svcadm enable apache2<br />=====================================================================================================================<br />Solaris下PHP的安装<br />1.编译安装<br />./configure --prefix=/usr/local/php --with-apxs2=/usr/apache2/bin/apxs --with-mysql=/usr/sfw/include/mysql <br />--with-config-file-path=/usr/local/php/etc <br />错误一：<br />checking for int8... (cached) no<br />checking base type of last arg to accept... (cached) socklen_t<br />checking return type of qsort... (cached) void<br />configure: error: Cannot find MySQL header files under /usr/<br />将--with-mysql=/usr/sfw/include/mysql改为--with-mysql=/usr/sfw/便可解决<br />错误二：<br />Configuring extensions<br />checking whether to enable LIBXML support... yes<br />checking libxml2 install dir... no<br />checking for xml2-config path... /usr/bin/xml2-config<br />configure: error: libxml2 version 2.6.11 or greater required.<br />解决方法有二：<br />一是采用低版本的php-4.4.8.tar.gz<br />二是升级libxml2和重新安装一个libxml2（不推荐，容导致系统版本不一直而崩溃）或重新安装一个新的libxml2（推荐）<br />tar zxvf libxml2-2.6.26.tar.gz<br />./configure –prefix=/usr/local/libxml<br />make;make install<br />重启机子，更新模块<br />2.配置PHP<br />检查htppd.conf文件中是否插入“LoadModule php5_module modules/libphp5.so“<br />手动插入行“AddType application/x-httpd-php .php .phtml”<br />注意不要象一些文档说的加入两句：<br />#AddHandler php4-script .php<br />AddType application/x-httpd-php .php<br />这是错误<br />测试页面：&lt;?phpinfo()?><br />=====================================================================================================================<br />Solaris下net-snmp和rrdtool的安装<br />1.net-snmp的安装<br />./configure<br />make;make install<br />如CACTI出现如下错误：<br />.Encryption support not enabled.<br />snmpbulkwalk: USM encryption error<br />Encryption support not enabled.<br />解决方法：<br />You probably need to install the openssl-dev package and rebuild net-snmp.<br />2.修改snmp的配置文件：<br />#vi /usr/local/share/snmp/snmpd.conf<br />修改下面几部分内容：<br />1)com2sec notConfigUser default public<br />改为：com2sec notConfigUser localhost public<br />2)access notConfigGroup "" any noauth exact systemview none none<br />改为：access notConfigGroup "" any noauth exact all none none<br />3)#view all included .1 80<br />4)createUser frederic MD5 mypassphrase DES<br />group groupv3   usm        frederic<br />access groupv3   ""      any       auth      exact  all    all    all<br /><br />修改计划任务，使CACTI每5分钟获得一次数据：<br />#crontab -e 用户名<br />0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/php/bin/php /var/apache2/htdocs/cacti/poller.php > /dev/null 2>&1<br /><br />3.测试SNMP<br />snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.100.6.0<br />snmpget -v 3 -l AuthNoPriv -u frederic -A mypassphrase 192.168.0.6 sysName.0<br /><br />2)Test configuration <br />snmpwalk -v 1 -c public localhost .1.3.6.1.2.1.1.1.0<br />--query which Net-SNMP version is running on a host <br />snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.100.2.0 <br />snmpwalk -v 1 -c foo localhost .1.3.6.1.2.1.1.1.0<br />--An incorrect passphrase will result in this error message <br />snmpget -v 3 -l AuthNoPriv -u frederic -A badpassphrase 192.168.0.6 sysName.0<br />--This query will show you what filesystems are mounted <br />snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.9.1.2<br />--display your network interfaces <br />snmpwalk -v 1 -c public localhost .1.3.6.1.2.1.2.2.1.2<br /><br /><br />snmpwalk -v 2c -c public 192.168.0.6 if<br />/usr/local/php/bin/php /var/apache2/htdocs/cacti/cli/poller_reindex_hosts.php -id=All<br /><br /><br />Timeout: No Response from 192.168.0.6:161.<br />04/28/2008 12:14:55 PM - SYSTEM STATS: Time:4.4020 Method:cmd.php Processes:1 Threads:N/A Hosts:2 <br />HostsPerProcess:2 DataSources:14 RRDsProcessed:0<br />=====================================================================================================================<br />1.rrdtool的安装<br /><br />perl /scripts/unix_users.pl cacti<br /><br />/usr/local/cactid/bin/cactid --conf=/usr/local/cactid/etc/cactid.conf <br /><br />1)rrdtool dump two_gw_call_monitor_connectednew_2954.rrd > /tmp/2954.xml<br /><br />2)sed -i -e 's/NaN/2.4300000000e+02/' 2954.xml<br /><br />3)rrdtool restore -f 2954.xml two_gw_call_monitor_connectednew_2954.rrd <br /><br />/usr/local/php/bin/php /var/apache2/htdocs/cacti/poller.php<br />/var/spool/cron/crontabs/cacti<br /><br />/usr/local/rrdtool-1.2.19/bin/rrdtool  fetch localhost_mem_buffers_14.rrd  AVERAGE <br />/usr/local/rrdtool-1.2.19/bin/rrdtool  info localhost_mem_buffers_14.rrd<br /><br />php rebuild_poller_cache.php -d<br />=====================================================================================================================<br />Solaris下CACTI的安装<br />1.修改配置<br />grant all privileges on *.* to 'cacti'@'localhost' identified by 'cacti'<br />/usr/sfw/bin/mysql -ucacti -pcacti cacti &lt; cacti.sql  <br /><br />#vi include/config.php<br />修改如下段落：<br />$database_type = "mysql";<br />$database_default = "cacti";<br />$database_hostname = "localhost";<br />$database_username = "cactiuser";<br />$database_password = "cactiuser";<br />$database_port = "3306";<br />改为：<br />$database_type = "mysql";<br />$database_default = "cacti";<br />$database_hostname = "localhost";<br />$database_username = "用户名";<br />$database_password = "你的密码";<br />$database_port = "3306"; <br /><br />2.修改CACTI的配置文件<br />#chown -R rra/ log/<br />这样cacti就基本配置完成了<br />在浏览器里输入IP/cacti,错误提示：<br />Please make sure you have specified a valid MySQL database name in 'include/config.php' <br />解决方法为修改/etc/my.cnf文件：<br />socket = /tmp/mysql.sock <br />##MartriWang@gmail.com 20080425<br />#socket = /var/lib/mysql/mysql.sock<br />##http://192.168.0.6/cacti<br />用户名和密码是admin和admin<br />3.crontab自启动<br />注意Solaris下，命令行可以有结果，而crontab没有，则是因为使用的环境变量不同所致，<br />应该加上/export/home/cacti/.bash_profile，如下：<br />0,5,10,15,20,25,30,35,40,45,50,55 * * * * <br />. /export/home/cacti/.bash_profile; /opt/php/bin/php /opt/cacti/cacti-0.8.6b/poller.php<br /><br />=====================================================================================================================<br />CACTI使用技巧：<br />1、cacti的流程是从Data Input Methods开始，创建一个信息采集的方法先，里面定义了采集的方法和采集需要的脚本（注意：<br />如果使用CACTID最好使用可执行文件的全路径），可以定义一个输入和输出。输入可以为你执行这个脚本带入参数，比如连接<br />数据库的参数，这样只要设置这个参数就可以连上不同的数据库了。输出是信息采集的输入结果，以列名＋冒号＋采集结果的<br />形式返回。<br />2、然后是数据模版，里面需要选择Data Input Methods，如果数据输入方法中有参数的，这里可以设置参数，也可以选择忽略<br />这个设置，然后到最后配置图形的时候再输入特定的参数。<br />3、创建图形模版，里面需要定义图形的ITEM，可以使用AREA方式先画一个框，然后把其他值以STACK的方式往前面的AREA上面<br />累加。也可以使用GPRINT方式在最下面的备注那里输出些信息（一般是输入最后采集时候的值）。这里可以定义CDEF function，<br />这个函数可以把你显示的ITEM进行转换，比如把8k转换成8192字节等，这个函数可以自定义的（可以参考Graph Management中的<br />CDEFs中的定义来进行自定义）。<br />4、创建DATASOURCE，然后创建GRAPH。<br />最后可以把他们放到一个TREE上
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/189450#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 May 2008 17:27:56 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/189450</link>
        <guid>http://martri.javaeye.com/blog/189450</guid>
      </item>
      <item>
        <title>oracle访问参数文件的顺序</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/162135" style="color:red;">http://martri.javaeye.com/blog/162135</a>&nbsp;
          发表时间: 2008年02月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          oracle访问参数文件的顺序：<br />spfile&lt;SID>.ora   --oracle数据库创建时自动建立的spfile文件<br />spflie.ora        --oracle缺省的spfile文件<br />init&lt;SID>.ora     --oracle数据库创建时自动建立的pfile文件<br />init.ora          --oracle缺省的pfile文件
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/162135#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 13 Feb 2008 22:15:10 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/162135</link>
        <guid>http://martri.javaeye.com/blog/162135</guid>
      </item>
      <item>
        <title>Oracle listener侦听问题</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/122024" style="color:red;">http://martri.javaeye.com/blog/122024</a>&nbsp;
          发表时间: 2007年09月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近，在VM下装了一个ORACLE，在公司运行时，listener正常运行，因为导师要求我演示一些程序，用到ORACLE，故我决定将VM移植到我的PC机上，oracle运行一切正常，但在监听的时候，启动不了，报一下错误：<br />
LSNRCTL&gt; start<br />
Starting /home/oracle/product/10.1/bin/tnslsnr: please wait...<br />
TNSLSNR for Linux: Version 10.1.0.3.0 - Production<br />
System parameter file is /home/oracle/product/10.1/config/listener.ora<br />
Log messages written to /home/oracle/product/10.1/network/log/listener.log<br />
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=MT)(PORT=1521)))</font></p>
<p><font face="Arial">Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))<br />
TNS-12547: TNS:lost contact<br />
&nbsp;TNS-12560: TNS:protocol adapter error<br />
&nbsp; TNS-00517: Lost contact<br />
&nbsp;&nbsp; Linux Error: 104: Connection reset by peer<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这非常奇怪，在公司的时候一切正常，同样为什么在PC机就有问题呢，上网baidu,google了许多资料，基本都是说listener.log文件大小大于2G，但我删除这个listener.log文件，还是不行，尝试了许多办法后，想是不是listnert.ora文件没有问题，而是系统的配置问题，例如hosts,protocals等文件等,于是尝试修改hosts,<br />
127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MT localhost.localdomain<br />
#127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MT localhost<br />
为，即增加localhost的alias<br />
#127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MT localhost.localdomain<br />
127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MT localhost<br />
&nbsp;&nbsp;然后尝试lsnrctl start启动listener，果然成功拉！</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/122024#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 08 Sep 2007 20:25:31 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/122024</link>
        <guid>http://martri.javaeye.com/blog/122024</guid>
      </item>
      <item>
        <title>DML方式使用Bind-Variables</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/108087" style="color:red;">http://martri.javaeye.com/blog/108087</a>&nbsp;
          发表时间: 2007年08月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">BEGIN<br />
FOR x IN<br />
(SELECT<br />
&nbsp;&nbsp;&nbsp;&nbsp; ROWNUM R,<br />
&nbsp;&nbsp;&nbsp;&nbsp; HSE_UNIT_KEY ,<br />
&nbsp;&nbsp;&nbsp;&nbsp; HSE_BLK_KEY,<br />
&nbsp;&nbsp;&nbsp;&nbsp; HSE_UNIT_CODE_ADDR,<br />
&nbsp;&nbsp;&nbsp;&nbsp; CUST_MBR_ENG_NAME,<br />
&nbsp;&nbsp;&nbsp;&nbsp; CUST_MBR_RLTN_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp; ICTYPE || MIDCHARACTER || ICNUMBER RPT_ID_TYPE_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp; RPT_RPTNG_DATE<br />
FROM<br />
(SELECT <br />
&nbsp;&nbsp;&nbsp;&nbsp; UNIT.HSE_UNIT_KEY,<br />
&nbsp;&nbsp;&nbsp;&nbsp; UNIT.HSE_BLK_KEY,<br />
&nbsp;&nbsp;&nbsp;&nbsp; MBR.CUST_MBR_ID_NUM HSE_RSDN_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp; HSE_UNIT_CODE_ADDR,<br />
&nbsp;&nbsp;&nbsp;&nbsp; MBR.CUST_MBR_RLTN_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp; MBR.CUST_MBR_ID_TYPE_CODE ICTYPE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CASE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN (ASCII(SUBSTR(MBR.CUST_MBR_ID_NUM, 2, 1)) &gt;= ASCII('0') AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ASCII(SUBSTR(MBR.CUST_MBR_ID_NUM, 2, 1)) &lt;= ASCII('9')) THEN<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SUBSTR(MBR.CUST_MBR_ID_NUM, 1, 1))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SUBSTR(MBR.CUST_MBR_ID_NUM, 1, 2))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END) MIDCHARACTER,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (DECODE(MBR.CUST_MBR_ID_TYPE_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'IC',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CASE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN (ASCII(SUBSTR(MBR.CUST_MBR_ID_NUM, 2, 1)) &gt;= ASCII('0') AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ASCII(SUBSTR(MBR.CUST_MBR_ID_NUM, 2, 1)) &lt;= ASCII('9')) THEN<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SUBSTR(SUBSTR(MBR.CUST_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(MBR.CUST_MBR_ID_NUM)),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(SUBSTR(MBR.CUST_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(MBR.CUST_MBR_ID_NUM))) - 1) || '(' ||<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBSTR(SUBSTR(MBR.CUST_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(MBR.CUST_MBR_ID_NUM)),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(SUBSTR(MBR.CUST_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(MBR.CUST_MBR_ID_NUM))),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1) || ')')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SUBSTR(SUBSTR(MBR.CUST_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(MBR.CUST_MBR_ID_NUM)),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(SUBSTR(MBR.CUST_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(MBR.CUST_MBR_ID_NUM))) - 1) || '(' ||<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBSTR(SUBSTR(MBR.CUST_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(MBR.CUST_MBR_ID_NUM)),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(SUBSTR(MBR.CUST_MBR_ID_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LENGTH(MBR.CUST_MBR_ID_NUM))),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1) || ')')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CASE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN (ASCII(SUBSTR(MBR.CUST_MBR_ID_NUM, 2, 1)) &gt;= ASCII('0') AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ASCII(SUBSTR(MBR.CUST_MBR_ID_NUM, 2, 1)) &lt;= ASCII('9')) THEN<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SUBSTR(MBR.CUST_MBR_ID_NUM, 2, LENGTH(MBR.CUST_MBR_ID_NUM)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SUBSTR(MBR.CUST_MBR_ID_NUM, 3, LENGTH(MBR.CUST_MBR_ID_NUM)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END))) ICNUMBER,<br />
&nbsp;&nbsp;&nbsp;&nbsp; MBR.CUST_MBR_ENG_NAME,<br />
&nbsp;&nbsp;&nbsp;&nbsp; MBR.CUST_MBR_ID_NUM&nbsp; RPT_ID_TYE_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp; SYSDATE RPT_RPTNG_DATE,<br />
&nbsp;&nbsp;&nbsp;&nbsp; CUST.CUST_FMLY_SIZE_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp; COUNT(*) OVER (PARTITION BY UNIT.HSE_UNIT_KEY) NO_OF_MEMBER<br />
FROM <br />
&nbsp;&nbsp;&nbsp;&nbsp; HSM_HSE_UNIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNIT,<br />
&nbsp;&nbsp;&nbsp;&nbsp; TAM_TNCY_AGRMT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AGRMT, <br />
&nbsp;&nbsp;&nbsp;&nbsp; CPM_CUST_APLY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CUST,<br />
&nbsp;&nbsp;&nbsp;&nbsp; CPM_CUST_APLY_MBR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MBR,<br />
&nbsp;&nbsp;&nbsp;&nbsp; SRP_IH_HSHLD_APLY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEMP<br />
WHERE AGRMT.HSE_UNIT_KEY = UNIT.HSE_UNIT_KEY<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CUST.CUST_KEY=AGRMT.CUST_KEY <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CUST.HSE_SRVC_APLY_KEY=AGRMT.HSE_SRVC_APLY_KEY<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MBR.CUST_KEY=AGRMT.CUST_KEY<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MBR.HSE_SRVC_APLY_KEY=AGRMT.HSE_SRVC_APLY_KEY<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEMP.HSE_BNFT_MBR_ID_TYPE_CODE=MBR.CUST_MBR_ID_TYPE_CODE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEMP.HSE_BNFT_MBR_ID_NUM=MBR.CUST_MBR_ID_NUM<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MBR.LAST_REC_TXN_TYPE_CODE&lt;&gt;'D'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CUST.LAST_REC_TXN_TYPE_CODE&lt;&gt;'D'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AGRMT.LAST_REC_TXN_TYPE_CODE&lt;&gt;'D'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNIT.LAST_REC_TXN_TYPE_CODE&lt;&gt;'D'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEMP.RPT_RECORD_TYPE='1A'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AGRMT.TNCY_AGRMT_TM_STS_CODE = 'A'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEMP.HSE_BNFT_TYPE_CODE='T') TEMP_MBR<br />
WHERE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEMP_MBR.CUST_FMLY_SIZE_NUM&gt;TEMP_MBR.NO_OF_MEMBER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />
LOOP<br />
&nbsp;&nbsp;EXECUTE IMMEDIATE<br />
&nbsp;&nbsp;'INSERT INTO SRP_IH_WTHT_GWL_APP(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HSE_UNIT_KEY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HSE_BLK_KEY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HSE_UNIT_CODE_ADDR,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CUST_MBR_RLTN_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RPT_ID_TYPE_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RPT_RPTNG_DATE)<br />
&nbsp;&nbsp;VALUES(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :HSE_UNIT_KEY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :HSE_BLK_KEY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :HSE_UNIT_CODE_ADDR,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :CUST_MBR_RLTN_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :RPT_ID_TYPE_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :RPT_RPTNG_DATE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )' <br />
&nbsp;&nbsp;&nbsp; using <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x.HSE_UNIT_KEY,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x.HSE_BLK_KEY,<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;x.HSE_UNIT_CODE_ADDR,<br />
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x.CUST_MBR_RLTN_CODE,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x.RPT_ID_TYPE_NUM,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x.RPT_RPTNG_DATE;<br />
&nbsp;&nbsp;&nbsp; IF ((x.R mod 100)=0) THEN<br />
&nbsp;&nbsp;&nbsp;COMMIT;<br />
&nbsp;&nbsp;END IF;<br />
END LOOP;<br />
END;</font></p>
<p><font face="Arial"></font>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/108087#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 02 Aug 2007 09:17:04 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/108087</link>
        <guid>http://martri.javaeye.com/blog/108087</guid>
      </item>
      <item>
        <title>Oracle书籍推荐</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/106759" style="color:red;">http://martri.javaeye.com/blog/106759</a>&nbsp;
          发表时间: 2007年07月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: medium;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接近一年半的学习和工作经历，让我深深地感觉到自我学习是不断进步的动力，而学习的基础在与有牛人的指导，还有就是自己在论坛上寻找有用的材料，另外一个很重要的方面就是有一些全面介绍、和经典的书籍学习，经过一段时间的数据库学习，不敢说自己精通，但起码可以说是入门啦，现久自己的学习过程用到的书籍作推荐：</span>
</p>
<p>书籍推荐</p>
<p><span style="font-size: medium;">1.&nbsp;&nbsp; </span>
<span style="font-size: medium;">Thoms kyte 著，苏金国，王小振 等译《Oracle 9i&amp;10g 编程艺术 深入数据库体系结构》北京：人民邮电出版社，2006.10&nbsp;</span>
</p>
<p>&nbsp;<span style="color: #008000;">Thoms kyte的书可以说是ORACLE的经典之作，他写的书都值得推荐～～～～～</span>
</p>
<p><br />
<span style="font-size: medium;">2.&nbsp;&nbsp; Donald K.Burleson 著，袁勤勇 等译《Oracle 8i STATSPACK 高性能调整》北京：机械工业出版社，2003.1</span>
</p>
<p><span style="color: #008000;">这本书可以说是写调优的思想和思路的杰作，值得推荐～～～～～</span>
</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;">3.&nbsp; 盖国强，冯春培，叶梁，冯大辉 编著 《Oracle数据库性能优化》北京：人民邮电出版社，2005.6&nbsp;</span>
</p>
<p><span style="color: #008000;">这本书是国内一些高手的项目经验的总结，虽然有一些知识已经OUT啦，但其思想和思路还是值得学习～～～～～～～</span>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/106759#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 29 Jul 2007 21:35:38 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/106759</link>
        <guid>http://martri.javaeye.com/blog/106759</guid>
      </item>
      <item>
        <title>SQL分段处理删除大量数据</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/106754" style="color:red;">http://martri.javaeye.com/blog/106754</a>&nbsp;
          发表时间: 2007年07月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近在QQ群里面，有人问起如何使用分段处理，竟然忘记如何操作，当时只是COPY一本书里的内容，只记得大致的步骤，先重新温习，以便记忆： </p>
<p>实现功能：</p>
<p>1.分段处理</p>
<p>2.拆分操作</p>
<p>3.批量绑定</p>
<p>－－摘自《Oracle 数据库性能优化》</p>
<p>CREATE OR REPLACE PROCEDURE del_hubel_SSF_forall<br />
as<br />
&nbsp;type ridArray is table of rowid index by binary_integer;<br />
&nbsp;type dtArray is table of varchar2(50) index by binary_integer;<br />
&nbsp;<br />
&nbsp;v_rowid ridArray;<br />
&nbsp;v_mid_to_delete dtArray;<br />
BEGIN<br />
&nbsp;SELECT mid, rowid bulk_collect into v_mid_to_delete, v_rowid from temp_mid_hubei_bak WHERE ROWNUM&lt;10001;<br />
&nbsp;FORALL i in 1.. v_mid_to_delete.COUNT<br />
&nbsp;&nbsp;DELETE FROM &nbsp;SSF WHERE mid=v_mid_to_delete(i);<br />
&nbsp;&nbsp;--DBMS_OUTPUT_LINE(TO_CHAR(v_mid_to_delete.COUNT) || ' records deleted from hubei_SSF !!!');<br />
&nbsp;&nbsp;&nbsp;FORALL i in i .. v_rowid.COUNT<br />
&nbsp;&nbsp;&nbsp;&nbsp;DELETE FROM temp_mid_hubei_bak WHERE ROWID=v_rowid(i);<br />
&nbsp;&nbsp;--DBMS_OUTPUT_LINE(TO_CHAR(v_mid_to_delete.COUNT) || ' records deleted from hubei_SSF !!!');<br />
END;</p>
<p><br />
CREATE OR REPLACE PROCEDURE exec_forall<br />
(<br />
&nbsp;p_RowCount in number,&nbsp;&nbsp; --Total need to delete rows count<br />
&nbsp;p_ExeCount in number<br />
)<br />
AS<br />
&nbsp;n_RowCount number:=0;<br />
&nbsp;n_ExeTimes number:=0;<br />
&nbsp;n_Delete number:=0;<br />
BEGIN<br />
&nbsp;n_RowCount :=p_RowCount;<br />
&nbsp;<br />
&nbsp;WHILE n_RowCount&gt;0 <br />
&nbsp;LOOP<br />
&nbsp;&nbsp;EXECUTE IMMEDIATE 'begin del_hubei_SSF_forall; end;';<br />
&nbsp;&nbsp;COMMIT;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;IF n_RowCount&gt;p_ExeCount THEN<br />
&nbsp;&nbsp;&nbsp;n_RowCount:=n_RowCount-p_ExeCount;<br />
&nbsp;&nbsp;&nbsp;n_ExeTime:=n_ExeTimes+1;<br />
&nbsp;&nbsp;ELSE<br />
&nbsp;&nbsp;&nbsp;n_ExeTimes :=n_ExeTimes+1;<br />
&nbsp;&nbsp;&nbsp;n_Delete:=RowCount;<br />
&nbsp;&nbsp;&nbsp;n_RowCount:=n_RowCount-p_ExeCount;<br />
&nbsp;&nbsp;END IF;<br />
&nbsp;&nbsp;--DBMS_OUTPUT_LINE('----------------' || TO_CHAR(n_ExeTimes) || '--------------');<br />
&nbsp;&nbsp;n_delete :=n_delete+p_ExeCount*(n_ExeTimes-1);<br />
&nbsp;&nbsp;END LOOP;<br />
&nbsp;&nbsp;--DBMS_OUTPUT_LINE('Full Finished!!!');<br />
&nbsp;&nbsp;--DBMS_OUTPUT_LINE('Totally' || TO_CHAR(n_delete) || 'records deleted. !!!');<br />
END;</p>
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/106754#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 29 Jul 2007 21:24:26 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/106754</link>
        <guid>http://martri.javaeye.com/blog/106754</guid>
      </item>
      <item>
        <title>Redhat9.2(VM)中安装JBOSS4.2 </title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/95233" style="color:red;">http://martri.javaeye.com/blog/95233</a>&nbsp;
          发表时间: 2007年06月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最近在Redhat9.2中配置安装JBOSS-4.2.0.GA，原以为那时比较简单的事情，没有想到，启动开通访问<br />
<a href="http://192.168.0.5:8080/">http://192.168.0.5:8080/</a>总是访问不到<br />
使用netstat -an 查看JBOSS的服务启动为：<br />
127.0.0.1:8080，表面看起来没有错误<br />
[root@MT root]# ifconfig<br />
eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Link encap:Ethernet&nbsp; HWaddr 00:0C:29:6B:4B:84<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inet addr:192.168.0.5&nbsp; Bcast:192.168.0.255&nbsp; Mask:255.255.255.0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UP BROADCAST RUNNING MULTICAST&nbsp; MTU:1500&nbsp; Metric:1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RX packets:512 errors:0 dropped:0 overruns:0 frame:0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TX packets:620 errors:0 dropped:0 overruns:0 carrier:0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; collisions:0 txqueuelen:100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RX bytes:40830 (39.8 Kb)&nbsp; TX bytes:417015 (407.2 Kb)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Interrupt:10 Base address:0x1080</p>
<p>lo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Link encap:Local Loopback<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inet addr:127.0.0.1&nbsp; Mask:255.0.0.0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UP LOOPBACK RUNNING&nbsp; MTU:16436&nbsp; Metric:1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RX packets:6035 errors:0 dropped:0 overruns:0 frame:0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TX packets:6035 errors:0 dropped:0 overruns:0 carrier:0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; collisions:0 txqueuelen:0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RX bytes:175858 (171.7 Kb)&nbsp; TX bytes:175858 (171.7 Kb)<br />
这个问题困了我好几天，一直没有时间解决它，后来我在查看配置文件 jboss_init_redhat.sh，突然看到：<br />
#if JBOSS_HOST specified, use -b to bind jboss services to that address<br />
JBOSS_BIND_ADDR=${JBOSS_HOST:+&quot;-b $JBOSS_HOST&quot;}<br />
那是不是可以把JBOSS_HOST的地址HARD CORDE为：192.168.0.5<br />
果然，想法正确，并增加自动启动功能，具体步骤如下：<br />
1.&nbsp; 增加jboss用户：<br />
groupadd -g 200 jboss<br />
useradd -u 200 -g jboss jboss<br />
2.安装JDK和JBOSS<br />
[root@MT bin]# env |grep -i java<br />
PATH=/usr/java/jdk1.5.0_10/bin:/usr/java/jdk1.5.0_10/jre/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin<br />
/usr/local/jboss-4.2.0.GA/bin:/root/bin<br />
JAVA_HOME=/usr/java/jdk1.5.0_10<br />
CLASSPATH=:/usr/java/jdk1.5.0_10/lib:/usr/java/jdk1.5.0_10/jre/lib<br />
=========================================================================================================================<br />
[root@MT bin]# env |grep -i jboss<br />
JBOSS_HOME=/usr/local/jboss-4.2.0.GA<br />
PATH=/usr/java/jdk1.5.0_10/bin:/usr/java/jdk1.5.0_10/jre/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin<br />
/usr/local/jboss-4.2.0.GA/bin:/root/bin<br />
PWD=/usr/local/jboss-4.2.0.GA/bin<br />
JBOSS_HOST=192.168.0.5<br />
OLDPWD=/usr/local/jboss-4.2.0.GA<br />
PWD=/usr/local/jboss-4.2.0.GA/bin</p>
<p>3.复制JBoss4自带的启动文件到/etc/init.d下<br />
[root@MT bin]#cp $JBOSS_HOME/bin/jboss_init_redhat.sh&nbsp; /etc/init.d/<br />
4.设置启动脚步<br />
[root@MT bin]# ln &ndash;s /etc/init.d/jboss_init_redhat.sh /etc/rc3.d/K20jboss_init_redhat<br />
[root@MT bin]# ln &ndash;s /etc/init.d/jboss_init_redhat.sh /etc/rc3.d/S80jboss_init_redhat<br />
[root@MT bin]# ln &ndash;s /etc/init.d/jboss_init_redhat.sh /etc/rc5.d/K20jboss_init_redhat<br />
[root@MT bin]# ln &ndash;s /etc/init.d/jboss_init_redhat.sh /etc/rc5.d/S80jboss_init_redhat<br />
[root@MT bin]# chmod &ndash;f 777 /etc/init.d/jboss_init_redhat.sh<br />
[root@MT bin]# chmod &ndash;f 777 /etc/rc3.d/S80jboss_init_redhat.sh<br />
[root@MT bin]# chmod &ndash;Rf 777 $JBOSS_HOME<br />
5.编辑/etc/init.d/jboss_init_redhat.sh文件（注意修改和增加内容）<br />
#!/bin/sh<br />
#<br />
# $Id: jboss_init_redhat.sh 60992 2007-02-28 11:33:27Z <a href="mailto:dimitris@jboss.org">dimitris@jboss.org</a> $<br />
#<br />
# JBoss Control Script<br />
#<br />
# To use this script run it as root - it will switch to the specified user<br />
#<br />
# Here is a little (and extremely primitive) startup/shutdown script<br />
# for RedHat systems. It assumes that JBoss lives in /usr/local/jboss,<br />
# it's run by user 'jboss' and JDK binaries are in /usr/local/jdk/bin.<br />
# All this can be changed in the script itself.<br />
#<br />
# Either modify this script for your requirements or just ensure that<br />
# the following variables are set correctly before calling the script.<br />
增加：<br />
#define where jboss is - this is the directory containing directories log, bin, conf etc<br />
JBOSS_HOST=${JBOSS_HOST:-&quot;192.168.0.5&quot;}<br />
修改：<br />
#define where jboss is - this is the directory containing directories log, bin, conf etc<br />
JBOSS_HOME=${JBOSS_HOME:-&quot;/usr/local/jboss-4.2.0.GA&quot;}</p>
<p>#define the user under which jboss will run, or use 'RUNASIS' to run as the current user<br />
JBOSS_USER=${JBOSS_USER:-&quot;jboss&quot;}<br />
修改：<br />
#make sure java is in your path<br />
JAVAPTH=${JAVAPTH:-&quot;/usr/java/jdk1.5.0_10/bin&quot;}</p>
<p>#configuration to use, usually one of 'minimal', 'default', 'all'<br />
JBOSS_CONF=${JBOSS_CONF:-&quot;default&quot;}</p>
<p>#if JBOSS_HOST specified, use -b to bind jboss services to that address<br />
JBOSS_BIND_ADDR=${JBOSS_HOST:+&quot;-b $JBOSS_HOST&quot;}</p>
<p>#define the classpath for the shutdown class<br />
JBOSSCP=${JBOSSCP:-&quot;$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jnet.jar&quot;}</p>
<p>#define the script to use to start jboss<br />
JBOSSSH=${JBOSSSH:-&quot;$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF $JBOSS_BIND_ADDR&quot;}</p>
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/95233#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Jun 2007 00:48:33 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/95233</link>
        <guid>http://martri.javaeye.com/blog/95233</guid>
      </item>
      <item>
        <title>Redhat9.2 安装MySQL5.0 </title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/95232" style="color:red;">http://martri.javaeye.com/blog/95232</a>&nbsp;
          发表时间: 2007年06月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一开始学习数据库就是用的MySQL,之后就是Informix，现在是使用ORACLE,现在由于学习研究开发一个基于负载平衡的网络监控系统需要想使用MySQL，<br />
感觉有点生疏，现就MySQL5.0在linux下安装的经验总结一下：<br />
在<a href="http://www.mysql.com/downloads/">http://www.mysql.com/downloads/</a>选择要安装的版本，<br />
1.安装MySQL需要下面两个文件：<br />
　　MySQL-server-4.0.16-0.i386.rpm　　　 <br />
　　MySQL-client-4.0.16-0.i386.rpm
<p>[root@MT src]# rpm -ivh MySQL-server-community-5.0.41-0.rhel4.i386.rpm<br />
warning: MySQL-server-community-5.0.41-0.rhel4.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5<br />
Preparing...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########################################### [100%]<br />
&nbsp;&nbsp; 1:MySQL-server-community ########################################### [100%]<br />
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !<br />
To do so, start the server, then issue the following commands:<br />
/usr/bin/mysqladmin -u root password 'new-password'<br />
/usr/bin/mysqladmin -u root -h MT password 'new-password'<br />
See the manual for more instructions.<br />
Please report any problems with the /usr/bin/mysqlbug script!</p>
<p>The latest information about MySQL is available on the web at<br />
<a href="http://www.mysql.com/">http://www.mysql.com</a><br />
Support MySQL by buying support/licenses at <a href="http://shop.mysql.com/">http://shop.mysql.com</a><br />
Starting MySQL.......... SUCCESS!<br />
如碰到安装失败（如perl(DBI)），只要安装相应的软件即可！<br />
同理，安装 MySQL-client-4.0.16-0.i386.rpm<br />
[root@MT src]# rpm -ivh MySQL-client-4.0.16-0.i386.rpm</p>
<p>2.修改MySQL密码<br />
[root@MT src]# mysqladmin -u root password mysql</p>
<p>3.MySQL数据库管理<br />
(1)关闭与启动<br />
[root@MT src]# mysqladmin -u root -p shutdown<br />
[root@MT src]# /et/init.d/mysql start<br />
(2)更换MySQL目录<br />
[root@MT src]# mysqladmin -u root -p shutdown<br />
[root@MT src]# cp /var/lib/mysql /home/mysql/5.0/<br />
[root@MT src]# cp /usr/share/mysql/my-medium.cnf　/etc/my.cnf<br />
[root@MT src]# cp /usr/share/mysql/my-medium.cnf　/etc/my.cnf<br />
[root@MT src]# vi　/etc/my.cnf<br />
# The following options will be passed to all MySQL clients<br />
[client]<br />
#password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = your_password<br />
port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 3306<br />
##Modified content <a href="mailto:MartriWang@gmail.com">MartriWang@gmail.com</a><br />
#socket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = /var/lib/mysql/mysql.sock<br />
socket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = /home/mysql/5.0/mysql/mysql.sock</p>
<p># Here follows entries for some specific programs</p>
<p># The MySQL server<br />
[mysqld]<br />
port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 3306<br />
#socket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = /var/lib/mysql/mysql.sock<br />
##Modified content <a href="mailto:MartriWang@gmail.com">MartriWang@gmail.com</a><br />
socket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = /home/mysql/5.0/mysql/mysql.sock<br />
skip-locking<br />
key_buffer = 16M<br />
max_allowed_packet = 1M<br />
table_cache = 64<br />
sort_buffer_size = 512K<br />
net_buffer_length = 8K<br />
read_buffer_size = 256K<br />
read_rnd_buffer_size = 512K<br />
myisam_sort_buffer_size = 8M</p>
<p>[root@MT src]# vi　/etc/init.d/mysql<br />
# The following variables are only set for letting mysql.server find things.</p>
<p># Set some defaults<br />
pid_file=<br />
server_pid_file=<br />
use_mysqld_safe=1<br />
user=mysql<br />
if test -z &quot;$basedir&quot;<br />
then<br />
&nbsp; basedir=/<br />
&nbsp; bindir=/usr/bin<br />
&nbsp; if test -z &quot;$datadir&quot;<br />
&nbsp; then<br />
##Modified content <a href="mailto:MartriWang@gmail.com">MartriWang@gmail.com</a><br />
#&nbsp;&nbsp;&nbsp; datadir=/var/lib/mysql<br />
&nbsp;&nbsp;&nbsp;&nbsp; datadir=/home/mysql/5.0/mysql</p>
<p>[root@MT src]#/etc/init.d/mysql start</p>
<p>(3)MySQL目录<br />
数据库目录：/var/lib/mysql/（可更改，前面已经介绍）<br />
配置文件：/usr/share/mysql（mysql.server命令及配置文件）<br />
相关命令：/usr/bin(mysqladmin mysqldump等命令)<br />
启动脚本：/etc/rc.d/init.d/（ln -s /etc/init.d/）（启动脚本文件mysql的目录）</p>
<p>(4)备份与恢复<br />
备份:[root@MT src]#mysqldump -u root -p --opt mysql &gt; mysql_back<br />
恢复:[root@MT src]#mysql -u root -p mysql &lt; mysql_back</p>
          <br/>
          <span style="color:red;">
            <a href="http://martri.javaeye.com/blog/95232#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Jun 2007 00:46:53 +0800</pubDate>
        <link>http://martri.javaeye.com/blog/95232</link>
        <guid>http://martri.javaeye.com/blog/95232</guid>
      </item>
      <item>
        <title>Oracle总结</title>
        <author>martri</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://martri.javaeye.com">martri</a>&nbsp;
          链接：<a href="http://martri.javaeye.com/blog/95230" style="color:red;">http://martri.javaeye.com/blog/95230</a>&nbsp;
          发表时间: 2007年06月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>/*============================================================================<br />
&nbsp;*Author: <a href="mailto:MartriWang@gmail.com">MartriWang@gmail.com</a><br />
&nbsp;*Date:&nbsp; 09/05/2007<br />
&nbsp;*Description:ORACLE Summary<br />
&nbsp;*==========================================================================*/</p>
<p>汇总：<br />
set autotrace on<br />
set autotrace traceonly explain<br />
set timing on</p>
<p>或通过SQL*PLUS trace，然后查看user_dump_dest下的跟踪文件，使用tkprof工具格式化后阅览。<br />
alter session set events '10046 trace name context forever,level 12';<br />
alter session set events '10046 trace name context off';<br />
SELECT p.spid,s.username FROM v$session s,v$process p WHERE s.audsid=USERENV('sessionid') AND s.paddr = p.addr;</p>
<p>使用方法示例：<br />
DBserver% sqlplus perf/perf<br />
SQL*Plus: Release 9.2.0.6.0 - Production on Mon Oct 17 14:32:29 2005<br />
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.<br />
Connected to:<br />
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production<br />
With the Partitioning, OLAP and Oracle Data Mining options<br />
JServer Release 9.2.0.6.0 - Production<br />
SQL&gt; set timing on<br />
SQL&gt; set autotrace on<br />
SQL&gt; select count(*) from perf_sdcch_nn where start_time = (select max(start_time) from perf_sdcch_nn);<br />
COUNT(*)<br />
----------<br />
638<br />
Elapsed: 00:00:00.80<br />
Execution Plan<br />
----------------------------------------------------------<br />
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=8)<br />
1 0 SORT (AGGREGATE)<br />
2 1 INDEX (RANGE SCAN) OF 'IDX02_PERF_SDCCH_NN' (NON-UNIQUE)<br />
(Cost=2 Card=1495 Bytes=11960)</p>
<p>3 2 SORT (AGGREGATE)<br />
4 3 INDEX (FULL SCAN (MIN/MAX)) OF 'IDX02_PERF_SDCCH_NN'<br />
(NON-UNIQUE) (Cost=1 Card=3852090 Bytes=30816720)<br />
Statistics<br />
----------------------------------------------------------<br />
0 recursive calls<br />
0 db block gets<br />
15 consistent gets<br />
0 physical reads<br />
0 redo size<br />
492 bytes sent via SQL*Net to client<br />
656 bytes received via SQL*Net from client<br />
2 SQL*Net roundtrips to/from client<br />
0 sorts (memory)<br />
0 sorts (disk)<br />
1 rows processed<br />
SQL&gt;<br />
从上面的示例我们可以看到，该SQL语句执行花了0.8秒，select语句和inline view，都使用了名为'IDX02_PERF_SDCCH_NN'的索引<br />
物理读为0，redo log size为0，没有生成REDO日志。</p>
<p><br />
一、ORACLE的启动和关闭<br />
1、在单机环境下<br />
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户，如下<br />
su - oracle</p>
<p>a、启动ORACLE系统<br />
oracle&gt;svrmgrl<br />
SVRMGR&gt;connect internal<br />
SVRMGR&gt;startup<br />
SVRMGR&gt;quit</p>
<p>b、关闭ORACLE系统<br />
oracle&gt;svrmgrl<br />
SVRMGR&gt;connect internal<br />
SVRMGR&gt;shutdown<br />
SVRMGR&gt;quit</p>
<p>启动oracle9i数据库命令：<br />
$ sqlplus /nolog</p>
<p>SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003</p>
<p>Copyright (c) 1982, 2002, Oracle Corporation.&nbsp; All rights reserved.</p>
<p>SQL&gt; connect / as sysdba&nbsp; <br />
Connected to an idle instance.<br />
SQL&gt; startup^C</p>
<p>SQL&gt; startup<br />
ORACLE instance started.</p>
<p><a href="mailto:--MartriWang@gmail.com">--MartriWang@gmail.com</a>&nbsp; 10/05/2007--<br />
create pfile='/u01/oracle/dbs/init.ora'<br />
&nbsp;from spfile='u01/oracle/dbs/Spfile.ora';<br />
create Spfile='Spfile_name'<br />
&nbsp;&nbsp;FROM PFILE='pfile_name';<br />
&nbsp;<br />
orapwd file=<filename></filename> password=
<password></password>
entries=<max_users></max_users></p>
<p>2、在双机环境下<br />
要想启动或关闭ORACLE系统必须首先切换到root用户，如下<br />
su － root</p>
<p>a、启动ORACLE系统<br />
hareg －y oracle</p>
<p>b、关闭ORACLE系统<br />
hareg －n oracle</p>
<p><a href="mailto:--MartriWang@gmail.com">--MartriWang@gmail.com</a> 22/05/2007--</p>
<p>--查找、删除重复记录:<br />
　　法一: 用Group by语句 此查找很快的<br />
　　<br />
　　select count(num), max(name) from student --查找表中num列重复的，列出重复的记录数，并列出他的name属性<br />
　　group by num<br />
　　having count(num) &gt;;1 --按num分组后找出表中num列重复，即出现次数大于一次<br />
　　delete from student(上面Select的)<br />
　　这样的话就把所有重复的都删除了。-----慎重<br />
　　<br />
　　法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:<br />
　　<br />
　　---- 执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录<br />
　　<br />
　　SELECT * FROM EM5_PIPE_PREFAB<br />
　　WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second<br />
　　WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND<br />
　　EM5_PIPE_PREFAB.DSNO=D.DSNO);<br />
　　---- 执行下面SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录<br />
　　<br />
　　DELETE FROM EM5_PIPE_PREFAB<br />
　　WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D<br />
　　WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND<br />
　　EM5_PIPE_PREFAB.DSNO=D.DSNO);</p>
<p>Oracle数据库有哪几种启动方式</p>
<p><br />
说明：</p>
<p>有以下几种启动方式：<br />
1、startup nomount<br />
非安装启动，这种方式启动下可执行：<br />
重建控制文件、重建数据库<br />
读取init.ora文件，启动instance，即启动SGA和后台进程，这种启动只需要init.ora文件。</p>
<p>2、startup mount dbname<br />
安装启动，这种方式启动下可执行：<br />
数据库日志归档、<br />
数据库介质恢复、<br />
使数据文件联机或脱机，<br />
重新定位数据文件、重做日志文件。</p>
<p>执行&ldquo;nomount&rdquo;，然后打开控制文件，确认数据文件和联机日志文件的位置，<br />
但此时不对数据文件和日志文件进行校验检查。</p>
<p><br />
3、startup open dbname<br />
先执行&ldquo;nomount&rdquo;，然后执行&ldquo;mount&rdquo;，再打开包括Redo log文件在内的所有数据库文件，<br />
这种方式下可访问数据库中的数据。</p>
<p><br />
4、startup，等于以下三个命令<br />
startup nomount<br />
alter database mount<br />
alter database open</p>
<p>5、startup restrict<br />
约束方式启动<br />
这种方式能够启动数据库，但只允许具有一定特权的用户访问<br />
非特权用户访问时，会出现以下提示：<br />
ERROR：<br />
ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用</p>
<p>6、startup force<br />
强制启动方式<br />
当不能关闭数据库时，可以用startup force来完成数据库的关闭<br />
先关闭数据库，再执行正常启动数据库命令</p>
<p>7、startup pfile=参数文件名<br />
带初始化参数文件的启动方式<br />
先读取参数文件，再按参数文件中的设置启动数据库<br />
例：startup pfile=E:Oracleadminoradbpfileinit.ora</p>
<p>8、startup EXCLUSIVE</p>
<p>--<br />
二、用户如何有效地利用数据字典<br />
&nbsp; 　ORACLE的数据字典是数据库的重要组成部分之一，它随着数据库的产生而产生, 随着数据库的变化而变化,<br />
体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。</p>
<p>&nbsp;&nbsp;&nbsp; 数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。<br />
我们不能手工修改数据字典里的信息。</p>
<p>　　很多时候，一般的ORACLE用户不知道如何有效地利用它。</p>
<p>　　dictionary　　　全部数据字典表的名称和解释，它有一个同义词dict<br />
&nbsp;&nbsp;&nbsp; dict_column　　 全部数据字典表里字段名称和解释</p>
<p>&nbsp;&nbsp;&nbsp; 如果我们想查询跟索引有关的数据字典时，可以用下面这条SQL语句:</p>
<p>&nbsp;&nbsp;&nbsp; SQL&gt;select * from dictionary where instr(comments,'index')&gt;0;</p>
<p>&nbsp;&nbsp;&nbsp; 如果我们想知道user_indexes表各字段名称的详细含义，可以用下面这条SQL语句:</p>
<p>&nbsp;&nbsp;&nbsp; SQL&gt;select column_name,comments from dict_columns where table_name='USER_INDEXES';</p>
<p>&nbsp;&nbsp;&nbsp; 依此类推，就可以轻松知道数据字典的详细名称和解释，不用查看ORACLE的其它文档资料了。</p>
<p>&nbsp;&nbsp;&nbsp; 下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。</p>
<p>&nbsp;&nbsp;&nbsp; 1、用户</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看当前用户的缺省表空间<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select username,default_tablespace from user_users;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看当前用户的角色<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_role_privs;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看当前用户的系统权限和表级权限<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_sys_privs;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_tab_privs;</p>
<p>&nbsp;&nbsp;&nbsp; 2、表</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看用户下所有的表<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_tables;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看名称包含log字符的表<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select object_name,object_id from user_objects<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where instr(object_name,'LOG')&gt;0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看某表的创建时间<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select object_name,created from user_objects where object_name=upper('&amp;table_name');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看某表的大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select sum(bytes)/(1024*1024) as &quot;size(M)&quot; from user_segments<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where segment_name=upper('&amp;table_name');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看放在ORACLE的内存区里的表<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select table_name,cache from user_tables where instr(cache,'Y')&gt;0;</p>
<p>&nbsp;&nbsp;&nbsp; 3、索引</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看索引个数和类别<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select index_name,index_type,table_name from user_indexes order by table_name;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看索引被索引的字段<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_ind_columns where index_name=upper('&amp;index_name');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看索引的大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select sum(bytes)/(1024*1024) as &quot;size(M)&quot; from user_segments<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where segment_name=upper('&amp;index_name');</p>
<p>&nbsp;&nbsp;&nbsp; 4、序列号</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看序列号，last_number是当前值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_sequences;</p>
<p>&nbsp;&nbsp;&nbsp; 5、视图</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看视图的名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select view_name from user_views;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看创建视图的select语句<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;set view_name,text_length from user_views;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;set long 2000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：可以根据视图的text_length值设定set long 的大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select text from user_views where view_name=upper('&amp;view_name');</p>
<p>&nbsp;&nbsp;&nbsp; 6、同义词</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看同义词的名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_synonyms;</p>
<p>&nbsp;&nbsp;&nbsp; 7、约束条件</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看某表的约束条件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select constraint_name, constraint_type,search_condition, r_constraint_name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from user_constraints where table_name = upper('&amp;table_name');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select c.constraint_name,c.constraint_type,cc.column_name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from user_constraints c,user_cons_columns cc<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where c.owner = upper('&amp;table_owner') and c.table_name = upper('&amp;table_name')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and c.owner = cc.owner and c.constraint_name = cc.constraint_name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order by cc.position;</p>
<p>&nbsp;&nbsp;&nbsp; 8、存储函数和过程</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看函数和过程的状态<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select object_name,status from user_objects where object_type='FUNCTION';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select object_name,status from user_objects where object_type='PROCEDURE';</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看函数和过程的源代码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select text from all_source where owner=user and name=upper('&amp;plsql_name');</p>
<p><br />
三、查看数据库的SQL<br />
1、查看表空间的名称及大小</p>
<p>&nbsp;&nbsp;&nbsp; select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size<br />
&nbsp;&nbsp;&nbsp; from dba_tablespaces t, dba_data_files d<br />
&nbsp;&nbsp;&nbsp; where t.tablespace_name = d.tablespace_name<br />
&nbsp;&nbsp;&nbsp; group by t.tablespace_name;</p>
<p>2、查看表空间物理文件的名称及大小</p>
<p>&nbsp;&nbsp;&nbsp; select tablespace_name, file_id, file_name,<br />
&nbsp;&nbsp;&nbsp; round(bytes/(1024*1024),0) total_space<br />
&nbsp;&nbsp;&nbsp; from dba_data_files<br />
&nbsp;&nbsp;&nbsp; order by tablespace_name;</p>
<p>3、查看回滚段名称及大小</p>
<p>&nbsp;&nbsp;&nbsp; select segment_name, tablespace_name, r.status,<br />
&nbsp;&nbsp;&nbsp; (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,<br />
&nbsp;&nbsp;&nbsp; max_extents, v.curext CurExtent<br />
&nbsp;&nbsp;&nbsp; From dba_rollback_segs r, v$rollstat v<br />
&nbsp;&nbsp;&nbsp; Where r.segment_id = v.usn(+)<br />
&nbsp;&nbsp;&nbsp; order by segment_name ;</p>
<p>4、查看控制文件</p>
<p>&nbsp;&nbsp;&nbsp; select name from v$controlfile;</p>
<p>5、查看日志文件</p>
<p>&nbsp;&nbsp;&nbsp; select member from v$logfile;</p>
<p>6、查看表空间的使用情况</p>
<p>&nbsp;&nbsp;&nbsp; select sum(bytes)/(1024*1024) as free_space,tablespace_name<br />
&nbsp;&nbsp;&nbsp; from dba_free_space<br />
&nbsp;&nbsp;&nbsp; group by tablespace_name;</p>
<p>&nbsp;&nbsp;&nbsp; SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,<br />
&nbsp;&nbsp;&nbsp; (B.BYTES*100)/A.BYTES &quot;% USED&quot;,(C.BYTES*100)/A.BYTES &quot;% FREE&quot;<br />
&nbsp;&nbsp;&nbsp; FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C<br />
&nbsp;&nbsp;&nbsp; WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;</p>
<p>7、查看数据库库对象</p>
<p>&nbsp;&nbsp;&nbsp; select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;</p>
<p>8、查看数据库的版本</p>
<p>&nbsp;&nbsp;&nbsp; Select version FROM Product_component_version<br />
&nbsp;&nbsp;&nbsp; Where SUBSTR(PRODUCT,1,6)='Oracle';</p>
<p>9、查看数据库的创建日期和归档方式</p>
<p>&nbsp;&nbsp;&nbsp; Select Created, Log_Mode, Log_Mode From V$Database;<br />
四、ORACLE用户连接的管理</p>
<p>用系统管理员，查看当前数据库有几个用户连接：</p>
<p>SQL&gt; select username,sid,serial# from v$session;</p>
<p>如果要停某个连接用</p>
<p>SQL&gt; alter system kill session 'sid,serial#';</p>
<p>如果这命令不行,找它UNIX的进程数</p>
<p>SQL&gt; select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr;</p>
<p>说明：21是某个连接的sid数</p>
<p>然后用 kill 命令杀此进程号。</p>
<p><br />
五、SQL*PLUS使用<br />
a、近入SQL*Plus<br />
$sqlplus 用户名/密码</p>
<p>&nbsp;&nbsp; 退出SQL*Plus<br />
SQL&gt;exit</p>
<p>b、在sqlplus下得到帮助信息<br />
列出全部SQL命令和SQL*Plus命令<br />
SQL&gt;help<br />
列出某个特定的命令的信息<br />
SQL&gt;help 命令名</p>
<p>c、显示表结构命令DESCRIBE<br />
SQL&gt;DESC 表名</p>
<p>d、SQL*Plus中的编辑命令<br />
显示SQL缓冲区命令<br />
SQL&gt;L</p>
<p>修改SQL命令<br />
首先要将待改正行变为当前行<br />
SQL&gt;n<br />
用CHANGE命令修改内容<br />
SQL&gt;c/旧/新<br />
重新确认是否已正确<br />
SQL&gt;L</p>
<p>使用INPUT命令可以在SQL缓冲区中增加一行或多行<br />
SQL&gt;i<br />
SQL&gt;输入内容</p>
<p>e、调用外部系统编辑器<br />
SQL&gt;edit 文件名<br />
可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型，在login.sql文件中定义如下一行<br />
DEFINE_EDITOR=vi</p>
<p>f、运行命令文件<br />
SQL&gt;START test<br />
SQL&gt;@test</p>
<p>常用SQL*Plus语句<br />
a、表的创建、修改、删除<br />
创建表的命令格式如下：<br />
create table 表名 （列说明列表）；</p>
<p>为基表增加新列命令如下：<br />
ALTER TABLE 表名 ADD （列说明列表）<br />
例：为test表增加一列Age，用来存放年龄<br />
&nbsp;&nbsp;&nbsp; sql&gt;alter table test<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add （Age number(3)）；</p>
<p>修改基表列定义命令如下：<br />
ALTER TABLE 表名<br />
MODIFY （列名 数据类型）<br />
例：将test表中的Count列宽度加长为10个字符<br />
&nbsp;&nbsp;&nbsp; sql&gt;alter atble test<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modify （County char(10)）；</p>
<p>b、将一张表删除语句的格式如下：<br />
DORP TABLE 表名；<br />
例：表删除将同时删除表的数据和表的定义<br />
sql&gt;drop table test</p>
<p>c、表空间的创建、删除</p>
<p><a href="mailto:--MartriWang@gmail.com">--MartriWang@gmail.com</a> 15/06/2007--<br />
d. 删除表列<br />
ALTER TABLE table_name DROP COLUMN 字段名 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --del 表中字段<br />
1:&nbsp; create table t2 as select <specific columns=""></specific>from t1;　　--以第一个表中的某列建立第二个新表<br />
2:&nbsp; drop table t1;　　　　　　　　　　　　　　　　　　　　　 --删除表1<br />
3:&nbsp; rename t2 to t1;　　　　　　　　　　　　　　　　　　　　 --把表2改名为表1</p>
<p>Oracle 8i及以上版本中，可以使用以下语句</p>
<p>&nbsp;alter table 表1 drop column 列1;</p>
<p>六、ORACLE逻辑备份的SH文件</p>
<p>完全备份的SH文件：exp_comp.sh</p>
<p>rq=` date +&quot;%m%d&quot; `</p>
<p>su - oracle -c &quot;exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp&quot;</p>
<p>累计备份的SH文件：exp_cumu.sh</p>
<p>rq=` date +&quot;%m%d&quot; `</p>
<p>su - oracle -c &quot;exp system/manager full=y inctype=cumulative file=/oracle/export/db_cumu$rq.dmp&quot;</p>
<p>增量备份的SH文件: exp_incr.sh</p>
<p>rq=` date +&quot;%m%d&quot; `</p>
<p>su - oracle -c &quot;exp system/manager full=y inctype=incremental file=/oracle/export/db_incr$rq.dmp&quot;</p>
<p>root用户crontab文件<br />
/var/spool/cron/crontabs/root增加以下内容</p>
<p>0 2 1 * * /oracle/exp_comp.sh</p>
<p>30 2 * * 0-5 /oracle/exp_incr.sh</p>
<p>45 2 * * 6 /oracle/exp_cumu.sh</p>
<p>当然这个时间表可以根据不同的需求来改变的，这只是一个例子。</p>
<p><br />
七、ORACLE 常用的SQL语法和数据对象</p>
<p>一.数据控制语句 (DML) 部分</p>
<p>1.INSERT&nbsp; (往数据表里插入记录的语句)</p>
<p>INSERT INTO 表名(字段名1, 字段名2, &hellip;&hellip;) VALUES ( 值1, 值2, &hellip;&hellip;);<br />
INSERT INTO 表名(字段名1, 字段名2, &hellip;&hellip;)&nbsp; SELECT (字段名1, 字段名2, &hellip;&hellip;) FROM 另外的表名;</p>
<p>字符串类型的字段值必须用单引号括起来, 例如: &rsquo;GOOD DAY&rsquo;<br />
如果字段值里包含单引号&rsquo; 需要进行字符串转换, 我们把它替换成两个单引号''.<br />
字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.</p>
<p>日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒<br />
或者用字符串转换成日期型函数TO_DATE(&lsquo;2001-08-01&rsquo;,&rsquo;YYYY-MM-DD&rsquo;)<br />
TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.<br />
年-月-日 小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS</p>
<p>INSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,<br />
方法借用ORACLE里自带的DBMS_LOB程序包.</p>
<p>INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号<br />
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1&nbsp; START&nbsp; WITH&nbsp; 1<br />
MAXVALUE&nbsp; 99999&nbsp; CYCLE&nbsp; NOCACHE;<br />
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999<br />
INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL</p>
<p>2.DELETE&nbsp; (删除数据表里记录的语句)</p>
<p>DELETE FROM表名 WHERE 条件;</p>
<p>注意：删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.</p>
<p>如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间<br />
TRUNCATE TABLE 表名;<br />
此操作不可回退.</p>
<p>3.UPDATE&nbsp; (修改数据表里记录的语句)</p>
<p>UPDATE表名 SET 字段名1=值1, 字段名2=值2, &hellip;&hellip; WHERE 条件;</p>
<p>如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;<br />
值N超过定义的长度会出错, 最好在插入前进行长度校验..</p>
<p>注意事项:<br />
A.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上SQL语句对表都加上了行级锁,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 确认完成后, 必须加上事物处理结束的命令 COMMIT 才能正式生效,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 否则改变不一定写入数据库里.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果想撤回这些操作, 可以用命令 ROLLBACK 复原.</p>
<p>B.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在运行INSERT, DELETE 和 UPDATE 语句前最好估算一下可能操作的记录范围,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应该把它限定在较小 (一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其间加上COMMIT 确认事物处理.<br />
二.数据定义 (DDL) 部分</p>
<p>1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)</p>
<p>ORACLE常用的字段类型有<br />
CHAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 固定长度的字符串<br />
VARCHAR2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可变长度的字符串<br />
NUMBER(M,N)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数字型M是位数总长度, N是小数的长度<br />
DATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日期类型</p>
<p>创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面</p>
<p>创建表时可以用中文的字段名, 但最好还是用英文的字段名</p>
<p>创建表时可以给字段加上默认值, 例如 DEFAULT SYSDATE<br />
这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间</p>
<p>创建表时可以给字段加上约束条件<br />
例如 不允许重复 UNIQUE, 关键字 PRIMARY KEY</p>
<p>2.ALTER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (改变表, 索引, 视图等)</p>
<p>改变表的名称<br />
ALTER TABLE 表名1&nbsp; TO 表名2;</p>
<p>在表的后面增加一个字段<br />
ALTER TABLE表名 ADD 字段名 字段名描述;</p>
<p>修改表里字段的定义描述<br />
ALTER TABLE表名 MODIFY字段名 字段名描述;</p>
<p>给表里的字段加上约束条件<br />
ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);<br />
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);</p>
<p>把表放在或取出数据库的内存区<br />
ALTER TABLE 表名 CACHE;<br />
ALTER TABLE 表名 NOCACHE;</p>
<p>3.DROP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)</p>
<p>删除表和它所有的约束条件<br />
DROP TABLE 表名 CASCADE CONSTRAINTS;</p>
<p>4.TRUNCATE (清空表里的所有记录, 保留表的结构)</p>
<p>TRUNCATE 表名;</p>
<p>三.查询语句 (SELECT) 部分</p>
<p>SELECT字段名1, 字段名2, &hellip;&hellip; FROM 表名1, [表名2, &hellip;&hellip;] WHERE 条件;</p>
<p>字段名可以带入函数<br />
&nbsp; 例如:&nbsp; COUNT(*), MIN(字段名),&nbsp; MAX(字段名),&nbsp; AVG(字段名), DISTINCT(字段名),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')</p>
<p>NVL(EXPR1, EXPR2)函数<br />
解释:<br />
IF EXPR1=NULL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN EXPR2<br />
ELSE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN EXPR1</p>
<p>DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数<br />
解释:<br />
IF AA=V1 THEN RETURN R1<br />
IF AA=V2 THEN RETURN R2<br />
..&hellip;<br />
ELSE<br />
RETURN NULL</p>
<p>LPAD(char1,n,char2)函数<br />
解释:<br />
字符char1按制定的位数n显示，不足的位数用char2字符串替换左边的空位</p>
<p>字段名之间可以进行算术运算<br />
例如:&nbsp; (字段名1*字段名1)/3</p>
<p>查询语句可以嵌套<br />
例如: SELECT &hellip;&hellip; FROM<br />
(SELECT &hellip;&hellip; FROM表名1, [表名2, &hellip;&hellip;] WHERE 条件) WHERE 条件2;</p>
<p>两个查询语句的结果可以做集合操作<br />
例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS,&nbsp; 交集INTERSECT</p>
<p>分组查询<br />
SELECT字段名1, 字段名2, &hellip;&hellip; FROM 表名1, [表名2, &hellip;&hellip;] GROUP BY字段名1<br />
[HAVING 条件] ;</p>
<p>两个以上表之间的连接查询</p>
<p>SELECT字段名1, 字段名2, &hellip;&hellip; FROM 表名1, [表名2, &hellip;&hellip;] WHERE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表名1.字段名 = 表名2. 字段名 [ AND &hellip;&hellip;] ;</p>
<p>SELECT字段名1, 字段名2, &hellip;&hellip; FROM 表名1, [表名2, &hellip;&hellip;] WHERE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表名1.字段名 = 表名2. 字段名(+) [ AND &hellip;&hellip;] ;</p>
<p>有(+)号的字段位置自动补空值</p>
<p>查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESC</p>
<p>SELECT字段名1, 字段名2, &hellip;&hellip; FROM 表名1, [表名2, &hellip;&hellip;]<br />
ORDER BY字段名1, 字段名2 DESC;</p>
<p>字符串模糊比较的方法</p>
<p>INSTR(字段名, &lsquo;字符串&rsquo;)&gt;0<br />
字段名 LIKE&nbsp; &lsquo;字符串%&rsquo;&nbsp; [&lsquo;%字符串%&rsquo;]</p>
<p>每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.</p>
<p>四.ORACLE里常用的数据对象 (SCHEMA)</p>
<p>1.索引 (INDEX)</p>
<p>CREATE INDEX 索引名ON 表名 ( 字段1, [字段2, &hellip;&hellip;] );<br />
ALTER INDEX 索引名 REBUILD;</p>
<p>一个表的索引最好不要超过三个 (特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况,<br />
也可以建立多字段的组合索引和基于函数的索引</p>
<p>ORACLE8.1.7字符串可以索引的最大长度为1578 单字节<br />
ORACLE8.0.6字符串可以索引的最大长度为758 单字节</p>
<p><a href="mailto:--MartriWang@gmail.com">--MartriWang@gmail.com</a>&nbsp; 10/05/2007--</p>
<p>（1）*Tree索引。</p>
<p>Create index indexname on tablename(columnname[columnname...])</p>
<p>（2）反向索引。</p>
<p>Create index indexname on tablename(columnname[columnname...]) reverse</p>
<p>（3）降序索引。</p>
<p>Create index indexname on tablename(columnname DESC[columnname...])</p>
<p>（4）位图索引。</p>
<p>Create BITMAP index indexname on tablename(columnname[columnname...])</p>
<p>（5）函数索引。</p>
<p>Create index indexname on tablename(functionname(columnname))</p>
<p>注意：创建索引后分析要索引才能起作用。</p>
<p>analyze index indexname compute statistics;</p>
<p><br />
2.视图 (VIEW)</p>
<p>CREATE VIEW 视图名AS SELECT &hellip;. FROM &hellip;..;<br />
ALTER VIEW视图名 COMPILE;</p>
<p>视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.</p>
<p>3.同义词 (SYNONMY)<br />
CREATE SYNONYM同义词名FOR 表名;<br />
CREATE SYNONYM同义词名FOR 表名@数据库链接名;</p>
<p>4.数据库链接 (DATABASE LINK)<br />
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING &lsquo;数据库连接字符串&rsquo;;</p>
<p><a href="mailto:--MartriWang@gmail.com">--MartriWang@gmail.com</a>&nbsp; 10/05/2007--<br />
create database mynewdb<br />
&nbsp;user sys IDENTIFIED BY sys_id<br />
&nbsp;user system IDENTIFIED BY system_id<br />
&nbsp;LOGFILE GROUP 1 ('/u01/oracle/oradata/mynewdb/redo01.log') SIZE 100M,<br />
&nbsp;&nbsp;&nbsp;GROUP 2 ('/u01/oracle/oradata/mynewdb/redo02.log') SIZE 100M,<br />
&nbsp;&nbsp;&nbsp;GROUP 3 ('/u01/oracle/oradata/mynewdb/redo03.log') SIZE 100M<br />
&nbsp;MAXLOGFILES 5<br />
&nbsp;MAXLOGMEMBERS 5<br />
&nbsp;MAXLOGHISTORY 1<br />
&nbsp;MAXINSTANCES 100<br />
&nbsp;MAXINSTANCES 1<br />
&nbsp;CHARACTER SET US7ASCII<br />
&nbsp;NATIONAL CHARACTER SET AL16UTF16<br />
&nbsp;DATAFILE '/u01/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE<br />
&nbsp;EXTENT MANAGEMENT LOCAL<br />
&nbsp;SYSAUT DATAFILE '/u01/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE<br />
&nbsp;DEFAULT TABLESPACE tbs_1<br />
&nbsp;DEFAULT TEMPORARY TABLESPACE tempts1 <br />
&nbsp;TEMPFILE '/u01/oracle/oradata/mynewdb/temp01.dbf' SIZE 20M REUSE<br />
&nbsp;UNDO TABLESPACE undotbs<br />
&nbsp;DATAFILE '/u01/oracle/oradata/mynewdb/undotbs01.dbf'<br />
&nbsp; SIZE 20M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED<br />
<a href="mailto:--MartriWang@gmail.com">--MartriWang@gmail.com</a>&nbsp; 10/05/2007--<br />
emctl start dbconsole<br />
emctl stop dbconsole<br />
--http://servername:port/em<br />
--path:$ORACLE_HOME/install/portlist.ini<br />
isqlplusctl start<br />
isqlplusctl stop<br />
--http://servername:port/isqlplus</p>
<p>数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.</p>
<p>数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样</p>
<p>数据库全局名称可以用以下命令查出<br />
SELECT * FROM GLOBAL_NAME;</p>
<p>查询远端数据库里的表<br />
SELECT &hellip;&hellip; FROM 表名@数据库链接名;</p>
<p>五.权限管理 (DCL) 语句</p>
<p>1.GRANT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 赋于权限<br />
常用的系统权限集合有以下三个:<br />
CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)<br />
常用的数据对象权限有以下五个:<br />
ALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON 数据对象名,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ON 数据对象名,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE ON 数据对象名,<br />
DELETE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON 数据对象名,&nbsp; INSERT ON 数据对象名,&nbsp;&nbsp; ALTER&nbsp; ON 数据对象名</p>
<p>GRANT CONNECT, RESOURCE TO 用户名;<br />
GRANT SELECT ON 表名 TO 用户名;<br />
GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;</p>
<p>2.REVOKE 回收权限</p>
<p>REVOKE CONNECT, RESOURCE FROM 用户名;<br />
REVOKE SELECT ON 表名 FROM 用户名;<br />
REVOKE SELECT, INSERT, DELETE ON表名 FROM 用户名1, 用户名2;</p>
<p><br />
查询数据库中第63号错误：<br />
select orgaddr,destaddr from sm_histable0116 where error_code='63';</p>
<p>查询数据库中开户用户最大提交和最大下发数： select MSISDN,TCOS,OCOS from ms_usertable；</p>
<p><br />
查询数据库中各种错误代码的总和：<br />
select error_code,count(*) from sm_histable0513 group by error_code order<br />
by error_code;</p>
<p>查询报表数据库中话单统计种类查询。<br />
select sum(Successcount) from tbl_MiddleMt0411 where ServiceType2=111<br />
select sum(successcount),servicetype from tbl_middlemt0411 group by servicetype</p>
<p><br />
原文地址：<a href="http://www.cnoug.org/viewthread.php?tid=60293">http://www.cnoug.org/viewthread.php?tid=60293</a><br />
//创建一个控制文件命令到跟踪文件 <br />
alter database backup controlfile to trace; </p>
<p>//增加一个新的日志文件组的语句 <br />
connect internal as sysdba <br />
alter database <br />
add logfile group 4 <br />
(&rsquo;/db01/oracle/CC1/log_1c.dbf&rsquo;, <br />
&nbsp;&rsquo;/db02/oracle/CC1/log_2c.dbf&rsquo;) size 5M; </p>
<p>alter database <br />
add logfile member &rsquo;/db03/oracle/CC1/log_3c.dbf&rsquo; <br />
to group 4; <br />
//在Server Manager上MOUNT并打开一个数据库: <br />
connect internal as sysdba <br />
startup mount ORA1 exclusive; <br />
alter database open; </p>
<p>//生成数据字典 <br />
@catalog <br />
@catproc </p>
<p>//在init.ora 中备份数据库的位置 <br />
log_archive_dest_1 = &rsquo;/db00/arch&rsquo; <br />
log_archive_dest_state_1 = enable <br />
log_archive_dest_2 = &quot;service=stby.world mandatory reopen=60&quot; <br />
log_archive_dest_state_2 = enable <br />
//对用户的表空间的指定和管理相关的语句 <br />
create user USERNAME identified by PASSWORD <br />
default tablespace TABLESPACE_NAME; <br />
alter user USERNAME default tablespace TABLESPACE_NAME; <br />
alter user SYSTEM quota 0 on SYSTEM; <br />
alter user SYSTEM quota 50M on TOOLS; <br />
create user USERNAME identified by PASSWORD <br />
default tablespace DATA <br />
temporary tablespace TEMP; <br />
alter user USERNAME temporary tablespace TEMP; </p>
<p>//重新指定一个数据文件的大小 : <br />
alter database <br />
datafile &rsquo;/db05/oracle/CC1/data01.dbf&rsquo; resize 200M; </p>
<p>//创建一个自动扩展的数据文件: <br />
create tablespace DATA <br />
datafile &rsquo;/db05/oracle/CC1/data01.dbf&rsquo; size 200M <br />
autoextend ON <br />
next 10M <br />
maxsize 250M; </p>
<p>//在表空间上增加一个自动扩展的数据文件: <br />
alter tablespace DATA <br />
add datafile &rsquo;/db05/oracle/CC1/data02.dbf&rsquo; <br />
size 50M <br />
autoextend ON <br />
maxsize 300M; </p>
<p>//修改参数: <br />
alter database <br />
datafile &rsquo;/db05/oracle/CC1/data01.dbf&rsquo; <br />
autoextend ON <br />
maxsize 300M; </p>
<p>//在数据文件移动期间重新命名: <br />
alter database rename file <br />
&nbsp;&rsquo;/db01/oracle/CC1/data01.dbf&rsquo; to <br />
&nbsp;&rsquo;/db02/oracle/CC1/data01.dbf&rsquo;; </p>
<p>alter tablespace DATA rename datafile <br />
&nbsp;&rsquo;/db01/oracle/CC1/data01.dbf&rsquo; to <br />
&nbsp;&rsquo;/db02/oracle/CC1/data01.dbf&rsquo;; </p>
<p>alter database rename file&nbsp; <br />
&nbsp;&rsquo;/db05/oracle/CC1/redo01CC1.dbf&rsquo; to <br />
&nbsp;&rsquo;/db02/oracle/CC1/redo01CC1.dbf&rsquo;; </p>
<p>alter database datafile &rsquo;/db05/oracle/CC1/data01.dbf&rsquo;&nbsp; <br />
resize 80M; </p>
<p>//创建和使用角色: <br />
create role APPLICATION_USER; <br />
grant CREATE SESSION to APPLICATION_USER; <br />
grant APPLICATION_USER to username; </p>
<p>&nbsp;//回滚段的管理 <br />
create rollback segment SEGMENT_NAME <br />
tablespace RBS; </p>
<p>alter rollback segment SEGMENT_NAME offline; </p>
<p>drop rollback segment SEGMENT_NAME; </p>
<p>alter rollback segment SEGMENT_NAME online; <br />
//回滚段上指定事务 <br />
commit; <br />
set transaction use rollback segment ROLL_BATCH; <br />
insert into TABLE_NAME <br />
select * from DATA_LOAD_TABLE; <br />
commit; </p>
<p>//查询回滚段的 大小和优化参数 <br />
select * from DBA_SEGMENTS <br />
&nbsp;where Segment_Type = &rsquo;ROLLBACK&rsquo;; <br />
select N.Name,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* rollback segment name */ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S.OptSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* rollback segment OPTIMAL size */ <br />
from V$ROLLNAME N, V$ROLLSTAT S <br />
where N.USN=S.USN; </p>
<p>//回收回滚段 <br />
alter rollback segment R1 shrink to 15M; <br />
alter rollback segment R1 shrink; </p>
<p>//例子 <br />
set transaction use rollback segment SEGMENT_NAME </p>
<p>alter tablespace RBS <br />
default storage <br />
(initial 125K next 125K minextents 18 maxextents 249) </p>
<p>create rollback segment R4 tablespace RBS <br />
&nbsp;&nbsp; storage (optimal 2250K); <br />
alter rollback segment R4 online; </p>
<p>select Sessions_Highwater from V$LICENSE; <br />
grant select on EMPLOYEE to PUBLIC; </p>
<p>//用户和角色&nbsp; <br />
create role ACCOUNT_CREATOR; <br />
grant CREATE SESSION, CREATE USER, ALTER USER&nbsp; <br />
&nbsp;&nbsp; to ACCOUNT_CREATOR; </p>
<p>alter user THUMPER default role NONE; <br />
alter user THUMPER default role CONNECT; <br />
alter user THUMPER default role all except ACCOUNT_CREATOR; </p>
<p>alter profile DEFAULT <br />
limit idle_time 60; </p>
<p>create profile LIMITED_PROFILE limit <br />
FAILED_LOGIN_ATTEMPTS 5; <br />
create user JANE identified by EYRE <br />
profile LIMITED_PROFILE; <br />
grant CREATE SESSION to JANE; </p>
<p>alter user JANE account unlock; <br />
alter user JANE account lock; </p>
<p>alter profile LIMITED_PROFILE limit <br />
PASSWORD_LIFE_TIME 30; </p>
<p>alter user jane password expire; </p>
<p>//创建操作系统用户 <br />
REM&nbsp; Creating OPS$ accounts <br />
create user OPS$FARMER <br />
identified by SOME_PASSWORD <br />
default tablespace USERS <br />
temporary tablespace TEMP; </p>
<p>REM&nbsp; Using identified externally <br />
create user OPS$FARMER <br />
identified externally <br />
default tablespace USERS <br />
temporary tablespace TEMP; </p>
<p>//执行ORAPWD <br />
ORAPWD FILE=filename PASSWORD=password ENTRIES=max_users </p>
<p>create role APPLICATION_USER; <br />
grant CREATE SESSION to APPLICATION_USER; <br />
create role DATA_ENTRY_CLERK; <br />
grant select, insert on THUMPER.EMPLOYEE to DATA_ENTRY_CLERK; <br />
grant select, insert on THUMPER.TIME_CARDS to DATA_ENTRY_CLERK; <br />
grant select, insert on THUMPER.DEPARTMENT to DATA_ENTRY_CLERK; <br />
grant APPLICATION_USER to DATA_ENTRY_CLERK; <br />
grant DATA_ENTRY_CLERK to MCGREGOR; <br />
grant DATA_ENTRY_CLERK to BPOTTER with admin option; </p>
<p>//设置角色 <br />
set role DATA_ENTRY_CLERK; <br />
set role NONE; </p>
<p>//回收权利: <br />
revoke delete on EMPLOYEE from PETER; <br />
revoke all on EMPLOYEE from MCGREGOR; </p>
<p>//回收角色: <br />
revoke ACCOUNT_CREATOR from HELPDESK; </p>
<p>drop user USERNAME cascade; </p>
<p>grant SELECT on EMPLOYEE to MCGREGOR with grant option; <br />
grant SELECT on THUMPER.EMPLOYEE to BPOTTER with grant option; <br />
revoke SELECT on EMPLOYEE from MCGREGOR; </p>
<p>create user MCGREGOR identified by VALUES &rsquo;1A2DD3CCEE354DFA&rsquo;; </p>
<p>alter user OPS$FARMER identified by VALUES &rsquo;no way&rsquo;; </p>
<p>//备份与恢复 <br />
使用 export 程序 <br />
exp system/manager file=expdat.dmp compress=Y owner=(HR,THUMPER) <br />
exp system/manager file=hr.dmp owner=HR indexes=Y compress=Y <br />
imp system/manager file=hr.dmp full=Y buffer=64000 commit=Y</p>
<p><a href="mailto:--MartriWang@gmail.com">--MartriWang@gmail.com</a> 14/05/2007--<br />
&nbsp;1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中<br />
&nbsp;&nbsp; exp <a href="mailto:system/manager@TEST">system/manager@TEST</a> file=d:\daochu.dmp full=y<br />
&nbsp;2 将数据库中system用户与sys用户的表导出<br />
&nbsp;&nbsp; exp <a href="mailto:system/manager@TEST">system/manager@TEST</a> file=d:\daochu.dmp owner=(system,sys)<br />
&nbsp;3 将数据库中的表table1 、table2导出<br />
&nbsp;&nbsp; exp <a href="mailto:system/manager@TEST">system/manager@TEST</a> file=d:\daochu.dmp tables=(table1,table2) <br />
&nbsp;4 将数据库中的表table1中的字段filed1以&quot;00&quot;打头的数据导出<br />
&nbsp;&nbsp; exp <a href="mailto:system/manager@TEST">system/manager@TEST</a> file=d:\daochu.dmp tables=(table1) query=\&quot; where filed1 like '00%'\&quot;</p>
<p><a href="mailto:--MartriWang@gmail.com">--MartriWang@gmail.com</a> 14/05/2007--<br />
&nbsp;1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中<br />
&nbsp;&nbsp; exp <a href="mailto:system/manager@TEST">system/manager@TEST</a> file=d:\daochu.dmp full=y<br />
&nbsp;2 将数据库中system用户与sys用户的表导出<br />
&nbsp;&nbsp; exp <a href="mailto:system/manager@TEST">system/manager@TEST</a> file=d:\daochu.dmp owner=(system,sys)<br />
&nbsp;3 将数据库中的表table1 、table2导出<br />
&nbsp;&nbsp; exp <a href="mailto:system/manager@TEST">system/manager@TEST</a> file=d:\daochu.dmp tables=(table1,table2) <br />
&nbsp;4 将数据库中的表table1中的字段filed1以&quot;00&quot;打头的数据导出<br />
&nbsp;&nbsp; exp <a href="mailto:system/manager@TEST">system/manager@TEST</a> file=d:\daochu.dmp tables=(table1) query=\&quot; where filed1 like '00%'\&quot;<br />
&nbsp;&nbsp; <br />
//备份表 <br />
exp system/manager FILE=expdat.dmp TABLES=(Thumper.SALES) <br />
//备份分区 <br />
exp system/manager FILE=expdat.dmp TABLES=(Thumper.SALES:Part1) </p>
<p>//输入例子 <br />
imp system/manager file=expdat.dmp <br />
imp system/manager file=expdat.dmp buffer=64000 commit=Y </p>
<p>exp system/manager file=thumper.dat owner=thumper grants=N <br />
&nbsp; indexes=Y compress=Y rows=Y <br />
imp system/manager file=thumper.dat FROMUSER=thumper TOUSER=flower <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rows=Y indexes=Y <br />
imp system/manager file=expdat.dmp full=Y commit=Y buffer=64000 <br />
imp system/manager file=expdat.dmp ignore=N rows=N commit=Y buffer=64000 </p>
<p>//使用操作系统备份命令 <br />
REM&nbsp; TAR examples <br />
tar -cvf /dev/rmt/0hc /db0[1-9]/oracle/CC1 <br />
tar -rvf /dev/rmt/0hc /orasw/app/oracle/CC1/pfile/initcc1.ora <br />
tar -rvf /dev/rmt/0hc /db0[1-9]/oracle/CC1 /orasw/app/oracle/CC1/pfile/initcc1.ora </p>
<p>//离线备份的shell脚本 <br />
ORACLE_SID=cc1; export ORACLE_SID <br />
ORAENV_ASK=NO; export ORAENV_ASK <br />
. oraenv <br />
svrmgrl &lt;<eof1></eof1> connect internal as sysdba <br />
shutdown immediate; <br />
exit <br />
EOF1 <br />
insert backup commands like the &quot;tar&quot; commands here <br />
svrmgrl &lt;<eof2></eof2> connect internal as sysdba <br />
startup <br />
EOF2 </p>
<p>//在Server Manager上设置为archivelog mode: <br />
connect internal as sysdba <br />
startup mount cc1; <br />
alter database archivelog; <br />
archive log start; <br />
alter database open; <br />
archive log list<br />
alter system set LOG_ARCHIVE_DEST_1='LOCATION=/oracle/oradata/szdb/archive';&nbsp;&nbsp; <br />
alter system set log_archive_format='%t_%s.dbf' scope=spfile; <br />
alter system set log_archive_start=true scope=spfile; </p>
<p><br />
//在Server Manager上设置为archivelog mode: <br />
connect internal as sysdba <br />
startup mount cc1; <br />
alter database noarchivelog; <br />
alter database open; <br />
archive log list</p>
<p>select Name, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Value <br />
&nbsp; from V$PARAMETER <br />
&nbsp;where Name like &rsquo;log_archive%&rsquo;; </p>
<p>//联机备份的脚本 <br />
# <br />
# Sample Hot Backup Script for a UNIX File System database <br />
# <br />
# Set up environment variables: <br />
ORACLE_SID=cc1; export ORACLE_SID <br />
ORAENV_ASK=NO; export ORAENV_ASK <br />
. oraenv <br />
svrmgrl &lt;<eofarch1></eofarch1> connect internal as sysdba <br />
REM <br />
REM&nbsp;&nbsp; 备份 SYSTEM tablespace <br />
REM <br />
alter tablespace SYSTEM begin backup; <br />
!tar -cvf /dev/rmt/0hc /db01/oracle/CC1/sys01.dbf <br />
alter tablespace SYSTEM end backup; <br />
REM <br />
REM&nbsp; The SYSTEM tablespace has now been written to a <br />
REM&nbsp;&nbsp; tar saveset on the tape device /dev/rmt/0hc.&nbsp; The <br />
REM&nbsp;&nbsp; rest of the tars must use the &quot;-rvf&quot; clause to append <br />
REM&nbsp;&nbsp; to that saveset. <br />
REM <br />
REM&nbsp;&nbsp; 备份&nbsp; RBS tablespace <br />
REM <br />
alter tablespace RBS begin backup; <br />
!tar -rvf /dev/rmt/0hc /db02/oracle/CC1/rbs01.dbf <br />
alter tablespace RBS end backup; <br />
REM <br />
REM&nbsp;&nbsp; 备份&nbsp; DATA tablespace <br />
REM&nbsp;&nbsp; For the purposes of this example, this tablespace <br />
REM&nbsp;&nbsp; will contain two files, data01.dbf and data02.dbf. <br />
REM&nbsp;&nbsp; The * wildcard will be used in the filename. <br />
REM <br />
alter tablespace DATA begin backup; <br />
!tar -rvf /dev/rmt/0hc /db03/oracle/CC1/data0*.dbf <br />
alter tablespace DATA end backup; <br />
REM <br />
REM&nbsp;&nbsp; 备份 INDEXES tablespace <br />
REM <br />
alter tablespace INDEXES begin backup; <br />
!tar -rvf /dev/rmt/0hc /db04/oracle/CC1/indexes01.dbf <br />
alter tablespace INDEXES end backup; <br />
REM <br />
REM&nbsp;&nbsp; 备份&nbsp; TEMP tablespace <br />
REM <br />
alter tablespace TEMP begin backup; <br />
!tar -rvf /dev/rmt/0hc /db05/oracle/CC1/temp01.dbf <br />
alter tablespace TEMP end backup; <br />
REM <br />
REM&nbsp;&nbsp; Follow the same pattern to back up the rest <br />
REM&nbsp;&nbsp; of the tablespaces. <br />
REM <br />
REM&nbsp;&nbsp;&nbsp;&nbsp; <br />
REM&nbsp; Step 2.&nbsp; 备份归档日志文件. <br />
archive log stop <br />
REM <br />
REM&nbsp;&nbsp; Exit Server Manager, using the indicator set earlier. <br />
exit <br />
EOFarch1 <br />
# <br />
#&nbsp; Record which files are in the destination directory. <br />
#&nbsp;&nbsp;&nbsp;&nbsp; Do this by setting an environment variable that is <br />
#&nbsp; equal to the directory listing for the destination&nbsp; <br />
#&nbsp; directory. <br />
#&nbsp; For this example, the log_archive_dest is&nbsp; <br />
#&nbsp; /db01/oracle/arch/CC1. <br />
# <br />
FILES=`ls /db01/oracle/arch/CC1/arch*.dbf`; export FILES <br />
# <br />
#&nbsp; Now go back into Server Manager and restart the <br />
#&nbsp; archiving process.&nbsp; Set an indicator (called EOFarch2 <br />
#&nbsp; in this example). <br />
# <br />
svrmgrl &lt;<eofarch2></eofarch2> connect internal <br />
archive log start; <br />
exit <br />
EOFarch2 <br />
# <br />
#&nbsp; Now back up the archived redo logs to the tape <br />
#&nbsp; device via the &quot;tar&quot; command, then delete them <br />
#&nbsp; from the destination device via the &quot;rm&quot; command. <br />
#&nbsp; You may choose to compress them instead. <br />
# <br />
tar -rvf /dev/rmt/0hc $FILES <br />
rm -f $FILES <br />
# <br />
#&nbsp;&nbsp;&nbsp;&nbsp; Step 3.&nbsp; 备份控制文件到磁盘. <br />
# <br />
svrmgrl &lt;<eofarch3></eofarch3> connect internal <br />
alter database backup controlfile to <br />
&nbsp;&nbsp; &rsquo;db01/oracle/CC1/CC1controlfile.bck&rsquo;; <br />
exit <br />
EOFarch3 <br />
# <br />
#&nbsp; 备份控制文件到磁带. <br />
# <br />
tar -rvf /dev/rmt/0hc /db01/oracle/CC1/CC1controlfile.bck <br />
# <br />
#&nbsp; End of hot backup script. <br />
//自动生成开始备份的脚本 <br />
set pagesize 0 feedback off <br />
select&nbsp; <br />
&nbsp;&nbsp;&nbsp; &rsquo;alter tablespace &rsquo;||Tablespace_Name||&rsquo; begin backup;&rsquo; <br />
&nbsp; from DBA_TABLESPACES <br />
&nbsp;where Status &lt;&gt; &rsquo;INVALID&rsquo; <br />
spool alter_begin.sql <br />
/ <br />
spool off </p>
<p>//自动生成备份结束的脚本 <br />
set pagesize 0 feedback off <br />
select&nbsp; <br />
&nbsp;&nbsp;&nbsp; &rsquo;alter tablespace &rsquo;||Tablespace_Name||&rsquo; end backup;&rsquo; <br />
&nbsp; from DBA_TABLESPACES <br />
&nbsp;where Status &lt;&gt; &rsquo;INVALID&rsquo; <br />
spool alter_end.sql <br />
/ <br />
spool off </p>
<p>//备份归档日志文件的脚本. <br />
REM&nbsp; See text for alternatives. <br />
#&nbsp;&nbsp;&nbsp;&nbsp; Step 1: Stop the archiving process. This will keep <br />
#&nbsp;&nbsp;&nbsp;&nbsp; additional archived redo log files from being written <br />
#&nbsp;&nbsp;&nbsp;&nbsp; to the destination directory during this process. <br />
# <br />
svrmgrl &lt;<eofarch1></eofarch1> connect internal as sysdba <br />
archive log stop; <br />
REM <br />
REM&nbsp;&nbsp; Exit Server Manager using the indicator set earlier. <br />
exit <br />
EOFarch1 <br />
# <br />
#&nbsp;&nbsp;&nbsp;&nbsp; Step 2: Record which files are in the destination&nbsp; <br />
#&nbsp; directory. <br />
#&nbsp;&nbsp;&nbsp;&nbsp; Do this by setting an environment variable that is <br />
#&nbsp; equal to the directory listing for the destination&nbsp; <br />
#&nbsp; directory. <br />
#&nbsp; For this example, the log_archive_dest is <br />
#&nbsp; /db01/oracle/arch/CC1. <br />
# <br />
FILES=`ls /db01/oracle/arch/CC1/arch*.dbf`; export FILES <br />
# <br />
#&nbsp;&nbsp;&nbsp;&nbsp; Step 3: Go back into Server Manager and restart the <br />
#&nbsp; archiving process. Set an indicator (called EOFarch2 <br />
#&nbsp; in this example). <br />
# <br />
svrmgrl &lt;<eofarch2></eofarch2> connect internal as sysdba <br />
archive log start; <br />
exit <br />
EOFarch2 <br />
# <br />
#&nbsp;&nbsp;&nbsp;&nbsp; Step 4. Back up the archived redo logs to the tape <br />
#&nbsp; device via the &quot;tar&quot; command, then delete them <br />
#&nbsp; from the destination device via the &quot;rm&quot; command. <br />
# <br />
tar -rvf /dev/rmt/0hc $FILES <br />
# <br />
#&nbsp;&nbsp;&nbsp;&nbsp; Step 5. Delete those files from the destination directory. <br />
# <br />
rm -f $FILES <br />
# <br />
#&nbsp;&nbsp;&nbsp;&nbsp; End of archived redo log file backup script. </p>
<p>REM&nbsp; 磁盘到磁盘的备份 <br />
REM <br />
REM&nbsp;&nbsp; Back up the RBS tablespace - to another disk (UNIX) <br />
REM <br />
alter tablespace RBS begin backup; <br />
!cp /db02/oracle/CC1/rbs01.dbf /db10/oracle/CC1/backups <br />
alter tablespace RBS end backup; <br />
REM </p>
<p>REM&nbsp; 移动归档日志文件的shell脚本 <br />
# <br />
# Procedure for moving archived redo logs to another device <br />
# <br />
svrmgrl &lt;<eofarch2></eofarch2> connect internal as sysdba <br />
archive log stop; <br />
!mv /db01/oracle/arch/CC1 /db10/oracle/arch/CC1 <br />
archive log start; <br />
exit <br />
EOFarch2 <br />
# <br />
# end of archived redo log directory move. </p>
<p>//生成创建控制文件命令 <br />
alter database backup controlfile to trace; </p>
<p>//时间点恢复的例子 <br />
connect internal as sysdba <br />
startup mount instance_name; <br />
recover database until time &rsquo;1999-08-07:14:40:00&rsquo;; </p>
<p>//创建恢复目录 <br />
rman rcvcat <a href="mailto:rman/rman@&lt;database_service_name">rman/rman@&gt; </a><a href="mailto:remote_username/remote_password@service_name">remote_username/remote_password@service_name</a> <br />
to <br />
<a href="mailto:username/password@service_name">username/password@service_name</a> <br />
[append|create|insert|replace] <br />
TABLE_NAME <br />
using subquery; </p>
<p>// 在(UNIX)下创建恢复目录 <br />
RMAN&gt; create catalog tablespace rcvcat; </p>
<p>// 在(NT)下创建恢复目录 <br />
RMAN&gt; create catalog tablespace &quot;RCVCAT&quot;; </p>
<p>//连接描述符范例&nbsp; <br />
(DESCRIPTION= <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS= <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PROTOCOL=TCP) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (HOST=HQ) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PORT=1521)) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONNECT DATA= <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID=loc))) </p>
<p>// listener.ora 的条目entry <br />
// listener.ora 的条目entry <br />
LISTENER = <br />
(ADDRESS_LIST = <br />
(ADDRESS= <br />
(PROTOCOL=IPC) <br />
(KEY= loc.world) <br />
) <br />
) <br />
SID_LIST_LISTENER = <br />
(SID_LIST = <br />
(SID_DESC = <br />
(SID_NAME = loc) <br />
(ORACLE_HOME = /orasw/app/oracle/product/8.1.5.1) <br />
) <br />
) </p>
<p>// tnsnames.ora 的条目 <br />
LOC= <br />
(DESCRIPTION= <br />
(ADDRESS = <br />
(PROTOCOL = TCP) <br />
(HOST = HQ) <br />
(PORT = 1521)) <br />
) <br />
(CONNECT_DATA = <br />
(SERVICE_NAME = loc) <br />
(INSTANCE_NAME = loc) <br />
) <br />
) </p>
<p>//连接参数的设置（sql*net） <br />
LOC =(DESCRIPTION= <br />
(ADDRESS= <br />
(COMMUNITY=TCP.HQ.COMPANY) <br />
(PROTOCOL=TCP) <br />
(HOST=HQ) <br />
(PORT=1521)) <br />
(CONNECT DATA= <br /