<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>adapt2050</title>
    <description>一切皆有可能，
一切皆不可能。</description>
    <link>http://adapt2050.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>锻炼你的思维</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178218" style="color:red;">http://adapt2050.javaeye.com/blog/178218</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          年薪40万的面试题<br />小明和小强都是张老师的学生，张老师的生日是m月n日，2人都不知道张老师的生日是下列10组中的一天，张老师把m值告诉了小明，把n值告诉了小强，张老师问他们知道他的生日是那一天吗？ <br />　　3月4日　　3月5日　3月8日 <br />　　6月4日　　6月7日 <br />　　9月1日　　9月5日 <br />　　12月1日　　12月2日　12月8日 <br />　　小明说：如果我不知道的话，小强肯定也不知道 <br />　　小强说：本来我也不知道，但是现在我知道了 <br />　　小明说：哦，那我也知道了 <br />　　请根据以上对话推断出张老师的生日是哪一天？
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178218#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 22:41:23 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178218</link>
        <guid>http://adapt2050.javaeye.com/blog/178218</guid>
      </item>
      <item>
        <title>心态决定一切</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178217" style="color:red;">http://adapt2050.javaeye.com/blog/178217</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有位秀才第三次进京赶考，住在一个经常住的店里。考试前两天他做了三个梦，第一个梦是梦到自己在墙上种白菜，第二个梦是下雨天，他戴了斗笠还打伞，第三个梦是梦到跟心爱的表妹脱光了衣服躺在一起，但是背靠着背。 　　这三个梦似乎有些深意，秀才第二天就赶紧去找算命的解梦。算命的一听，连拍大腿说："你还是回家吧。你想想，高墙上种菜不是白费劲吗？戴斗笠打雨伞不是多此一举吗？跟表妹都脱光了躺在一张床上了，却背靠背，不是没戏吗？" 　　秀才一听，心灰意冷，回店收拾包袱准备回家。店老板非常奇怪，问："不是明天才考试吗，今天你怎么就回乡了？" 　　秀才如此这般说了一番，店老板乐了："哟，我也会解梦的。我倒觉得，你这次一定要留下来。你想想，墙上种菜不是高种吗？戴斗笠打伞不是说明你这次有备无患吗？跟你表妹脱光了背靠靠躺在床上，不是说明你翻身的时候就要到了吗？" 　　秀才一听，更有道理，于是精神振奋地参加考试，居然中了个探花。 　　积极的人，象太阳，照到哪里哪里亮，消极的人，象月亮，初一十五不一样。想法决定我们的生活，有什么样的想法，就有什么样的未来。
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178217#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 22:38:52 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178217</link>
        <guid>http://adapt2050.javaeye.com/blog/178217</guid>
      </item>
      <item>
        <title>刘邦用人之道</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178216" style="color:red;">http://adapt2050.javaeye.com/blog/178216</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          第一个特点叫做知人善任<br /><br />第二个特点是不拘一格，一个有着自知之明的人，往往也会有知人之明，一个连自己都不了解的人，往往也很难了解别人。<br /><br />第三个特点，招降纳叛，刘邦的队伍里面，有很多人原来曾经是在项羽手下当差的，因为在项羽的部队里面待不下去跑过来投奔刘邦，刘邦敞开大门，一视同仁表示欢迎，你愿意，欢迎，欢迎。<br /><br />刘邦用人的第四个特点是不计前嫌。<br /><br />刘邦用人的第五个特点是坦诚相待。<br /><br />刘邦用人的第六个特点，叫做用人不疑。<br /><br />刘邦用人的第七个特点是论功行赏。<br /><br />刘邦用人的第八个特点是暗中控制，我们刚才说了，萧何被列为刘邦的第一功臣，而且刘邦建国以后，萧何就担任他的第一任丞相，就是现在的国务总理，后来又拜为相国，在政府当中他的地位仅次于刘邦。打个比方说这个时候的刘邦集团，如果是一家公司的话，刘邦就是董事长，萧何就是总经理，非常重要的地位，可以说是给予极大地信任，但是即便对这样的人，刘邦其实是暗中控制的。只不过他控制的不动声色，不像项羽，一怀疑，那个怀疑就写到脸上去了，人家一眼就看出来，刘邦这种猜忌和怀疑是不动声色的。
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178216#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 22:36:44 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178216</link>
        <guid>http://adapt2050.javaeye.com/blog/178216</guid>
      </item>
      <item>
        <title>一个好团队</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178215" style="color:red;">http://adapt2050.javaeye.com/blog/178215</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有一个博士分到一家研究所，成为学历最高的一个人。有一天他到单位后面的小池塘去钓鱼，正好正副所长在他的一左一右，也在钓鱼。 他只是微微点了点头，这两个本科生，有啥好聊的呢？不一会儿，正所长放下钓竿，伸伸懒腰，蹭蹭蹭从水面上如飞地走到对面上厕所。博士眼睛睁得都快掉下来了。水上飘？不会吧？这可是一个池塘啊。正所长上完厕所回来的时候，同样也是蹭蹭蹭地从水上飘回来了。怎么回事？博士生又不好去问，自己是博士生哪！过一阵，副所长也站起来，走几步，蹭蹭蹭地飘过水面上厕所。这下子博士更是差点昏倒：不会吧，到了一个江湖高手集中的地方？博士生也内急了。这个池塘两边有围墙，要到对面厕所非得绕十分钟的路，而回单位上又太远，怎么办？博士生也不愿意去问两位所长，憋了半天后，也起身往水里跨：我就不信本科生能过的水面，我博士生不能过。 只听咚的一声，博士生栽到了水里。两位所长将他拉了出来，问他为什么要下水，他"为什么你们可以走过去呢？" 两所长相视一笑："这池塘里有两排木桩子，由于这两天下雨涨水正好在水面下。我们都知道这木桩的位置，所以可以踩着桩子过去。你怎么不问一声呢？" 　　学历代表过去，只有学习力才能代表将来。尊重经验的人，才能少走弯路。一个好的团队，也应该是学习型的团队。
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178215#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 22:35:28 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178215</link>
        <guid>http://adapt2050.javaeye.com/blog/178215</guid>
      </item>
      <item>
        <title>无题。。。</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178214" style="color:red;">http://adapt2050.javaeye.com/blog/178214</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <img src="/images/smiles/icon_biggrin.gif"/>难得来搞下blog， 今天先粘贴些以前收集的文章，以后争取自己有空多来写点，天空没有留下痕迹，那就在blog里面存点回忆吧。
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178214#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 22:25:52 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178214</link>
        <guid>http://adapt2050.javaeye.com/blog/178214</guid>
      </item>
      <item>
        <title>十八个超经典故事，做技术的朋友累了可以来休息下，^_^</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178210" style="color:red;">http://adapt2050.javaeye.com/blog/178210</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一： <br />去过庙的人都知道，一进庙门，首先是弥陀佛，笑脸迎客，而在他的北面，则是黑口黑脸的韦陀。但相传在很久以前，他们并不在同一个庙里，而是分别掌管不同的庙。弥乐佛热情快乐，所以来的人非常多，但他什么都不在乎，丢三拉四，没有好好的管理账务，所以依然入不敷出。而韦陀虽然管账是一把好手，但成天阴着个，过严肃，搞得人越来越少，最后香火断绝。佛祖在查香火的时候发现了这个问题，就将他们俩放在同一个庙里，由弥乐佛负责公关，笑迎八方客，于是香火大旺。而韦陀铁面无私， 锱珠必较，则让他负责财务，严格把关。在两人的分工合作中，庙里一派欣欣向荣景象。其实在用人大师的眼里，没有废人，正如武功高手，不需名贵宝剑，摘花飞叶即可伤人，关键看如何运用。 <br /><br />二： <br />　一个人去买鹦鹉，看到一只鹦鹉前标：此鹦鹉会两门语言，售价二百元。另一只鹦鹉前则标道：此鹦鹉会四门语言，售价四百元。该买哪只呢？两只都毛色光，常灵活可爱。这人转啊转，拿不定主意。 结果突然发现一只老掉了牙的鹦鹉，毛色暗淡散乱，标价八百元。　这人赶紧将老板叫来：这只鹦鹉是不是会说八门语言？ 店主说：不。这人奇怪了：那为什么又老又丑，又没有能力，会值这个数呢？店主回答：因为另外两只鹦鹉叫这只鹦鹉老板。这故事告诉我们，真正的领导人，不一定自己能力有多强，只要懂信任，懂放权，懂珍惜，就能团结比自己更强的力量，从而提升自己的身价。相反许多能力非常强的人却因为过于完美主义，事必躬亲，什么人都不如自己，最后只能做最好的攻关人员，销售代表，成不了优秀的领导人。 　　 <br /><br />三 　 <br />　A，在合资公司做白领，觉得自己满腔抱负没有得到上级的赏识，经常想：如果有一天能见到老总，有机会展示一下自己的才干就好了！！ A的同事B，也有同样的想法，他更进一步，去打听老总上下班的时间，算好他大概会在何时进电梯，他也在这个时候去坐电梯，希望能遇到老总，有机会可以打个招呼。他们的同事C更进一步。他详细了解老总的奋斗历程，弄清老总毕业的学校，人际风格，关心的问题，精心设计了几句简单却有份量的开场 白，在算好的时间去乘坐电梯，跟老总打过几次招呼后，终于有一天跟老总长谈了一次，不久就争取到了更好的职位。 愚者错失机会，智者善抓机会，成功者创造机会。机会只给准备好的人，这准备二字，并非说说而已。 <br /><br />四 　　 <br />一个心理学教授到疯人院参观，了解疯子的生活状态。一天下来，觉得这些人疯疯癫癫，行事出人意料，可算大开眼界。想不到准备返回时，发现自己的车胎被人下掉了。"一定是哪个疯子干的！"教授这样愤愤地想道，动手拿备胎准备装上。 事情严重了。下车胎的人居然将螺丝也都下掉。没有螺丝有备胎也上不去啊！教授一筹莫展。在他着急万分的时候，一个疯子蹦蹦跳跳地过来了，嘴里唱着不知名的欢乐歌曲。他发现了困境中的教授，停下来问发生了什么事。教授懒得理他，但出于礼貌还是告诉了他。疯子哈哈大笑说："我有办法！"他从每个轮胎上面下了一个螺丝，这样就拿到三个螺丝将备胎装了上去。教授惊奇感激之余，大为好奇："请问你是怎么想到这个办法的？" 疯子嘻嘻哈哈地笑道："我是疯子，可我不是呆子！" 　　其实，世上有许多的人，由于他们发现了工作中的乐趣，总会表现出与常人不一样的狂热，让人难以理解。许多人在笑话他们是疯子的时候，别人说不定还在笑他呆子呢。做人呆呆，处事聪明，在中国尤其不失为一种上佳做人姿态。 <br /><br />五 　　 <br />有一个博士分到一家研究所，成为学历最高的一个人。有一天他到单位后面的小池塘去钓鱼，正好正副所长在他的一左一右，也在钓鱼。 他只是微微点了点头，这两个本科生，有啥好聊的呢？不一会儿，正所长放下钓竿，伸伸懒腰，蹭蹭蹭从水面上如飞地走到对面上厕所。博士眼睛睁得都快掉下来了。水上飘？不会吧？这可是一个池塘啊。正所长上完厕所回来的时候，同样也是蹭蹭蹭地从水上飘回来了。怎么回事？博士生又不好去问，自己是博士生哪！过一阵，副所长也站起来，走几步，蹭蹭蹭地飘过水面上厕所。这下子博士更是差点昏倒：不会吧，到了一个江湖高手集中的地方？博士生也内急了。这个池塘两边有围墙，要到对面厕所非得绕十分钟的路，而回单位上又太远，怎么办？博士生也不愿意去问两位所长，憋了半天后，也起身往水里跨：我就不信本科生能过的水面，我博士生不能过。 只听咚的一声，博士生栽到了水里。两位所长将他拉了出来，问他为什么要下水，他"为什么你们可以走过去呢？" 两所长相视一笑："这池塘里有两排木桩子，由于这两天下雨涨水正好在水面下。我们都知道这木桩的位置，所以可以踩着桩子过去。你怎么不问一声呢？" 　　学历代表过去，只有学习力才能代表将来。尊重经验的人，才能少走弯路。一个好的团队，也应该是学习型的团队。 <br /><br />六　 <br />　 A对B说："我要离开这个公司。我恨这个公司！" B建议道："我举双手赞成你报复！！破公司一定要给它点颜色看看。不过你现在离开，还不是最好的时机。" 　A问：？？？B说："如果你现在走，公司的损失并不大。你应该趁着在公司的机会，拼命去为自己拉一些客户，成为公司独挡一面的人物，然后带着这 些客户突然离开公司，公司才会受到重大损失，非常被动。" A觉得B说的非常在理。于是努力工，遂所愿，半年多的努力工作后，他有了许多的忠实客户。再见面时B问A：现在是时机了，要跳赶快行动哦！A淡然笑道：老总跟我长谈过，准备升我做总经理助理，我暂时没有离开的打算了。其实这也正是B的初衷。一个人的工作，永远只是为自己的简历。只有付出大于得到，让老板真正看到你的能力大于位置，才会给你更多的机会替他创造更多利润。 <br /><br />七 　　 <br />曾经有个小国到中国来，进贡了三个一模一样的金人，金壁辉煌，把皇帝高兴坏了。可是这小国不厚道，同时出一道题目：这三个金人哪个最有价值？皇帝想了许多的办法，请来珠宝匠检查，称重量，看做工，都是一模一样的。怎么办？使者还等着回去汇报呢。泱泱大国，不会连这个小事都不懂吧？ 最后，有一位退位的老大臣说他有办法。皇帝将使者请到大殿，老臣胸有成足地拿着三根稻草，插入第一个金人的耳朵里，这稻草从另一边耳朵出来了。第二个金人的稻草从嘴巴里直接掉出来，而第三个金人，稻草进去后掉进了肚子，什么响动也没有。老臣说：第三个金人最有价值！使者默默无语，答案正确。　这个故事告诉我们，最有价值的人，不一定是最能说的人的人。老天给我们两只耳朵一个嘴巴，本来就是让我们多听少说的。善于倾听，才是成熟的人最基本的素质。 <br /><br />八 <br />　　有一位表演大师上场前，他的弟子告诉他鞋带松了。大师点头致谢，蹲下来仔细系好。等到弟子转身后，又蹲下来将鞋带解松。 　　有个旁观者看到了这一切，不解地问："大师，您为什么又要将鞋带解松呢？"大师回答道："因为我饰演的是一位劳累的旅者，长途跋涉让他的鞋事松开，可以通过这个细节表现他的劳累憔悴." 　　"那你为什么不直接告诉你的弟子呢？" 　　"他能细心地发现我的鞋带松了，并且热心地告诉我，我一定要保护他这种热情的积极性，及时地给他鼓励，至于为什么要将鞋带解开，将来会有更多的机会教他表演，可以下一次再说啊。" 　　人一个时间只能做一件事，懂抓重点，才是真正的人才。 <br /><br />九 <br />　　陈阿土是台湾的农民，从来没有出过远门。攒了半辈子的钱，终于参加一个旅游团出了国。 　　国外的一切都是非常新鲜的，关键是，陈阿土参加的是豪华团，一个人住一个标准间。这让他新奇不已。 　　早晨，服务生来敲门送早餐时大声说道："GOODMORNING SIR！" 　　陈阿土愣住了。这是什么意思呢？在自己的家乡，一般陌生的人见面都会问："您贵姓？" 　　于是陈阿土大声叫道："我叫陈阿土！" 　　如是这般，连着三天，都是那个服务生来敲门，每天都大声说："GOODMORNING SIR！"而陈阿土亦大声回道："我叫陈阿土！" 　　但他非常的生气。这个服务生也太笨了，天天问自己叫什么，告诉他又记不住，很烦的。终于他忍不住去问导游，"GOODMORNING SIR！"是什么意思，导游告诉了他，天啊！！真是丢脸死了。 　　陈阿土反复练习"GOODMORNING SIR！"这个词，以便能体面地应对服务生。 　　又一天的早晨，服务生照常来敲门，门一开陈阿土就大声叫道："GOODMORNING SIR！" 　　与此同时，服务生叫的是："我是陈阿土！" 　　这个故事告诉我们，人与人交往，常常是意志力与意志力的较量。不是你影响他，就是他影响你，而我们要想成功，一定要培养自己的影响力，只有影响力大的人才可以成为最强者。 <br /><br />十　 <br />　有个富家子弟特别爱吃饺子，每天都要吃。但他又特别刁，只吃馅，两头的皮尖尖就丢到后面的小河里去。 　　好景不长，在他十六岁那年，一把大火烧了他的全家，父母急怒中相继病逝。这下他身无分文，又不好意思要饭。邻居家大嫂非常好，每餐给他吃一碗面糊糊。他则发奋读书，三年后考取官位回来，一定要感谢邻居大嫂。 　　大嫂对他讲：不要感谢我。我没有给你什么，都是我收集的当年你丢的饺子皮尖，晒干后装了好凡麻袋，本来是想备不时之需的。正好你有需要，就又还给你了。 　　大官思考良久，良久。。。。 　　有一个有名的三八理论：八小时睡觉，八小时工作，这个人人一样。人与人之间的不同，是在于业余时间怎么渡过。时间是最有情，也最无情的东西，每人拥有的都一样，非常公平。但拥有资源的人不一定成功，善用资源的人才会成功。白天图生存，晚上求发展，这是二十一世纪对人才的要求。 <br /><br />十一 <br />　　有三个人要被关进监狱三年，监狱长给他们三个一人一个要求。 　　美国人爱抽雪茄，要了三箱雪茄。 　　法国人最浪漫，要一个美丽的女子相伴。 　　而犹太人说，他要一部与外界沟通的电话。 　　三年过后，第一个冲出来的是美国人，嘴里鼻孔里塞满了雪茄，大喊道："给我火，给我火！"原来他忘了要火了。 　　接着出来的是法国人。只见他手里抱着一个小孩子，美丽女子手里牵着一个小孩子，肚子里还怀着第三个。 　　最后出来的是犹太人，他紧紧握住监狱长的手说："这三年来我每天与外界联系，我的生意不但没有停顿，反而增长了200％，为了表示感谢，我送你一辆劳施莱斯！" 　　这个故事告诉我们，什么样的选择决定什么样的生活。今天的生活是由三年前我们的选择决定的，而今天我们的抉择将决定我们三年后的生活。我们要选择接触最新的信息，了解最新的趋势，从而更好的创造自己的将来。 <br /><br />十二 　 <br />　两个人在森林里，遇到了一只大老虎。A就赶紧从背后取下一双更轻便的运动鞋换上。B急死了，骂道："你干嘛呢，再换鞋也跑不过老虎啊！" 　　A说："我只要跑得比你快就好了。" 　　二十一世纪，没有危机感是最大的危机。特别是入关在即，电信，银行，保险，甚至是公务员这些我们以为非常稳定和有保障的企业，也会面临许多的变数。当更多的老虎来临时，我们没有有准备好自己的跑鞋？ <br /><br />十三　 <br />　父子两住山上，每天都要赶牛车下山卖柴。老父较有经验，坐镇驾车，山路崎岖，弯道特多，儿子眼神较好，总是在要转弯时提醒道："爹，转弯啦！" 　　有一次父亲因病没有下山，儿子一人驾车。到了弯道，牛怎么也不肯转弯，儿子用尽各种方法，下车又推又拉，用青草诱之，牛一动不动。 　　到底是怎么回事？儿子百思不得其解。最后只有一个办法了，他左右看看无人，贴近牛的耳朵大声叫道："爹，转弯啦！" 　　牛应声而动。 　　牛用条件反射的方式活着，而人则以习惯生活。一个成功的人晓得如何培养好的习惯来代替坏的习惯，当好的习惯积累多了，自然会有一个好的人生。 <br /><br />十四 <br />　　五岁的汉克和爸爸妈妈哥哥一起到森林干活，突然间下起雨来，可是他们只带了一块雨披。 　　爸爸将雨披给了妈妈，妈妈给了哥哥，哥哥又给了汉克。 　　汉克问道："为什么爸爸给了妈妈，妈妈给了哥哥，哥哥又给了我呢？" 　　爸爸回答道："因为爸爸比妈妈强大，妈妈比哥哥强大，哥哥又比你强大呀。我们都会保护比较弱小的人。" 　　汉克左右看了看，跑过去将雨披撑开来挡在了一朵风雨中飘摇的娇弱小花上面。 　　这个故事告诉我们，真正的强者不一定是多有力，或者多有钱，而是他对别人多有帮助。 　　责任可以让我们将事做完整，爱可以让我们将事情做好。 <br /><br />十五 <br />　　有位秀才第三次进京赶考，住在一个经常住的店里。考试前两天他做了三个梦，第一个梦是梦到自己在墙上种白菜，第二个梦是下雨天，他戴了斗笠还打伞，第三个梦是梦到跟心爱的表妹脱光了衣服躺在一起，但是背靠着背。 　　这三个梦似乎有些深意，秀才第二天就赶紧去找算命的解梦。算命的一听，连拍大腿说："你还是回家吧。你想想，高墙上种菜不是白费劲吗？戴斗笠打雨伞不是多此一举吗？跟表妹都脱光了躺在一张床上了，却背靠背，不是没戏吗？" 　　秀才一听，心灰意冷，回店收拾包袱准备回家。店老板非常奇怪，问："不是明天才考试吗，今天你怎么就回乡了？" 　　秀才如此这般说了一番，店老板乐了："哟，我也会解梦的。我倒觉得，你这次一定要留下来。你想想，墙上种菜不是高种吗？戴斗笠打伞不是说明你这次有备无患吗？跟你表妹脱光了背靠靠躺在床上，不是说明你翻身的时候就要到了吗？" 　　秀才一听，更有道理，于是精神振奋地参加考试，居然中了个探花。 　　积极的人，象太阳，照到哪里哪里亮，消极的人，象月亮，初一十五不一样。想法决定我们的生活，有什么样的想法，就有什么样的未来。 <br /><br />十六 <br />　　在动物园里的小骆驼问妈妈："妈妈妈妈，为什么我们的睫毛那么地长？" 　　骆驼妈妈说："当风沙来的时候，长长的睫毛可以让我们在风暴中都能看得到方向。" 　　小骆驼又问："妈妈妈妈，为什么我们的背那么驼，丑死了！" 　　骆驼妈妈说："这个叫驼峰，可以帮我们储存大量的水和养分，让我们能在沙漠里耐受十几天的无水无食条件。" 　　小骆驼又问："妈妈妈妈，为什么我们的脚掌那么厚？" 　　骆驼妈妈说："那可以让我们重重的身子不至于陷在软软的沙子里，便于长途跋涉啊。" 　　小骆驼高兴坏了："哗，原来我们这么有用啊！！可是妈妈，为什么我们还在动物园里，不去沙漠远足呢？" 　　天生我才必有用，可惜现在没人用。一个好的心态+一本成功的教材+一个无限的舞台=成功。每人的潜能是无限的，关键是要找到一个能充分发挥潜能的舞台。 <br /><br />十七 <br />　　有七个人曾经住在一起，每天分一大桶粥。要命的是，粥每天都是不够的。 　　一开始，他们抓阄决定谁来分粥，每天轮一个。于是乎每周下来，他们只有一天是饱的，就是自己分粥的那一天。 　　后来他们开始推选出一个道德高尚的人出来分粥。强权就会产生腐败，大家开始挖空心思去讨好他，贿赂他，搞得整个小团体乌烟障气。 　　然后大家开始组成三人的分粥委员会及四人的评选委员会，互相攻击扯皮下来，粥吃到嘴里全是凉的。 　　最后想出来一个方法：轮流分粥，但分粥的人要等其它人都挑完后拿剩下的最后一碗。为了不让自己吃到最少的，每人都尽量分得平均，就算不平，也只能认了。大家快快乐乐，和和气气，日子越过越好。 　　同样是七个人，不同的分配制度，就会有不同的风气。所以一个单位如果有不好的工作习气，一定是机制问题，一定是没有完全公平公正公开，没有严格的奖勤罚懒。如何制订这样一个制度，是每个领导需要考虑的问题。 <br /><br />十八 <br />我想跟什么样的人合作 　　曾经有人采访比尔盖次成功的秘决。比尔盖次说：因为又有更多的成功人士在为我工作。 　　陈安之的超级成功学也有提到：先为成功的人工作，再与成功的人合作，最后是让成功的人为你工作。 　　成功的人很多，但在我生活中我不认识，也没有办法去为他工作，而让成功的人为我工作，在现阶段，我更没有这个实力。 　　只有合作，是我最喜欢和最欣赏的。我也力图借助一个宽松的环境和积极的团队，与更多的人公平合作，以便在未来替自己经营一个抵抗风险的事业。我最喜欢合作的人应该有以下几个特点： 　　一。不甘心。二十一世纪，最大的危机是没有危机感，最大的陷阱是满足。人要学会用望远镜看世界，而不是用近视眼看世界。顺境时要想着为自己找个退路，逆境时要懂为自己找出路. 　　二.学习力强.学历代表过去,学习力掌握将来.懂得从任何的细节,所有的人身上学习和感悟,并且要懂得举一反三。主要的是，学习，其实是学与习两个字。学一次，做一百次，才能真正掌握。学，做，教是一个完整的过程，只有达到教的程度，才算真正吃透。而且在更多时候，学习是一种态度。只有谦卑的人，才真正学到东西。大海之所以成为大海，是因为它比所有的河流都低。 　　三。行动力强。只有行动才会有结果。行动不一样，结果才不一样。知道不去做，等于不知道，做了没有结果，等于没有做。不犯错误，一定会错，因为不犯错误的人一定没有尝试。错了不要紧，一定要善于总结，然后再做，一直到正确的结果出来为止。 　　四。要懂付出。要想杰出一定得先付出。斤斤计较的人，一生只得两斤。没有点奉献精神，是不可能创业的。要先用行动让别人知道，你有超过所得的价值，别人才会开更高的价。 　　五。有强烈的沟通意识。沟通无极限，这更是一种态度，而非一种技巧。一个好的团队当然要有共同的愿景，非一日可以得来。需要无时不在的沟通，从目标到细节，甚至到家庭等等，都在沟通的内容之列。 　　六。诚恳大方。每人都有不同的立场，不可能要求利益都一致。关键是大家都要开诚布公地谈清楚，不要委屈求全。相信诚信才是合作的最好基石。 　　七。有最基本的道德观。曾经有一个记者在家写稿时，他的四岁儿子吵着要他陪。记者很烦，就将一本杂志的封底撕碎，对他儿子说：" 你先将这上面的世界地图拼完整，爸爸就陪你玩。"过了不到五分钟，儿子又来拖他的手说："爸爸我拼好了，陪我玩！" 　　记者很生气："小孩子要玩是可以理解的，但如果说谎话就不好了。怎么可能这么快就拼好世界地图！" 　　儿子非常委屈："可是我真的拼好了呀！" 　　记者一看，果然如此：不会吧？家里出现了神童？他非常好奇地问："你是怎么做到的？" 　　儿子说：世界地图的背面是一个人的头像。我反过来拼，只要这个人好了，世界就完整了。 　　所以做事先做人。做人做好了，他的世界也就是好的。
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178210#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 22:17:23 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178210</link>
        <guid>http://adapt2050.javaeye.com/blog/178210</guid>
      </item>
      <item>
        <title>input限制级用法</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178207" style="color:red;">http://adapt2050.javaeye.com/blog/178207</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.取消按钮按下时的虚线框 <br /> 　　在input里添加属性值  hideFocus 或者 HideFocus=true <br />  <br /> 2.只读文本框内容 <br />        在input里添加属性值  readonly <br />   <br />3.防止退后清空的TEXT文档(可把style内容做做为类引用) <br /> 　　&lt;INPUT style=behavior:url(#default#savehistory);  type=text id=oPersistInput> <br />   <br />4.ENTER键可以让光标移到下一个输入框 <br />　　 &lt;input onkeydown="if(event.keyCode==13)event.keyCode=9"  > <br />  <br /> 5.只能为中文(有闪动) <br />　　&lt;input  onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13)event.keyCode=9" > <br />  <br /> 6.只能为数字(有闪动) <br />　　&lt;input  onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData ('text').replace(/[^\d]/g,''))"> <br />  <br /> 7.只能为数字(无闪动) <br />　　&lt;input  style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9"  onKeyPress="if ((event.keyCode&lt;48 || event.keyCode>57)) event.returnValue=false"> <br />   <br />8.只能输入英文和数字(有闪动) <br />　　 &lt;input onkeyup="value=value.replace(/[\W]/g,'')" onbeforepaste ="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"> <br />   <br />9.屏蔽输入法 <br />　　 &lt;input type="text" name="url"  style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9" > <br />  <br /> 10. 只能输入 数字，小数点，减号（-） 字符(无闪动) <br />　　&lt;input  onKeyPress="if (event.keyCode!=46 && event.keyCode!=45 && (event.keyCode&lt;48 || event.keyCode>57)) event.returnValue=false" > <br />  <br /> 11. 只能输入两位小数，三位小数(有闪动) <br />　　&lt;input  maxlength=9 onkeyup="if(value.match(/^\d{3}$/))value=value.replace(value,parseInt(value/10)) ;value=value.replace (/\.\d*\./g,'.')" onKeyPress="if((event.keyCode&lt;48 || event.keyCode>57) && event.keyCode!=46 && event.keyCode!=45 ||  value.match(/^\d{3}$/) || /\.\d{3}$/.test(value)) {event.returnValue=false}" id=text_kfxe name =text_kfxe><br />--
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178207#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 22:06:48 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178207</link>
        <guid>http://adapt2050.javaeye.com/blog/178207</guid>
      </item>
      <item>
        <title>oracle常用SQL查询</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178205" style="color:red;">http://adapt2050.javaeye.com/blog/178205</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、查看表空间的名称及大小<br /><br /> <br /><br />select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size<br /><br />from dba_tablespaces t, dba_data_files d<br /><br />where t.tablespace_name = d.tablespace_name<br /><br />group by t.tablespace_name;<br /><br /> <br /><br />2、查看表空间物理文件的名称及大小<br /><br /> <br /><br />select tablespace_name, file_id, file_name,<br /><br />round(bytes/(1024*1024),0) total_space<br /><br />from dba_data_files<br /><br />order by tablespace_name;<br /><br /> <br /><br />3、查看回滚段名称及大小<br /><br /> <br /><br />select segment_name, tablespace_name, r.status, <br /><br />(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, <br /><br />max_extents, v.curext CurExtent<br /><br />From dba_rollback_segs r, v$rollstat v<br /><br />Where r.segment_id = v.usn(+)<br /><br />order by segment_name;<br /><br /> <br /><br />4、查看控制文件<br /><br /> <br /><br />select name from v$controlfile;<br /><br /> <br /><br />5、查看日志文件<br /><br /> <br /><br />select member from v$logfile;<br /><br /> <br /><br />6、查看表空间的使用情况<br /><br /> <br /><br />select sum(bytes)/(1024*1024) as free_space,tablespace_name <br /><br />from dba_free_space<br /><br />group by tablespace_name;<br /><br /> <br /><br />SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,<br /><br />(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"<br /><br />FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C<br /><br />WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME; <br /><br /> <br /><br />7、查看数据库库对象<br /><br /> <br /><br />select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;<br /><br /> <br /><br />8、查看数据库的版本　<br /><br /> <br /><br />Select version FROM Product_component_version <br /><br />Where SUBSTR(PRODUCT,1,6)='Oracle';<br /><br /> <br /><br />9、查看数据库的创建日期和归档方式<br /><br /> <br /><br />Select Created, Log_Mode, Log_Mode From V$Database; <br /><br /> <br /><br />10、捕捉运行很久的SQL<br /><br /> <br /><br />column username format a12 <br /><br />column opname format a16 <br /><br />column progress format a8 <br /><br /> <br /><br />select username,sid,opname, <br /><br />      round(sofar*100 / totalwork,0) || '%' as progress, <br /><br />      time_remaining,sql_text <br /><br />from v$session_longops , v$sql <br /><br />where time_remaining &lt;> 0 <br /><br />and sql_address = address <br /><br />and sql_hash_value = hash_value <br /><br />/<br /><br />11。查看数据表的参数信息<br /><br />SELECT   partition_name, high_value, high_value_length, tablespace_name,<br /><br />        pct_free, pct_used, ini_trans, max_trans, initial_extent,<br /><br />        next_extent, min_extent, max_extent, pct_increase, FREELISTS,<br /><br />        freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks,<br /><br />        empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size,<br /><br />        last_analyzed<br /><br />   FROM dba_tab_partitions<br /><br />  --WHERE table_name = :tname AND table_owner = :towner<br /><br />ORDER BY partition_position<br /><br /> <br /><br />12.查看还没提交的事务<br /><br />select * from v$locked_object;<br /><br />select * from v$transaction;<br /><br /> <br /><br />13。查找object为哪些进程所用<br /><br />select <br /><br />p.spid,<br /><br />s.sid,<br /><br />s.serial# serial_num,<br /><br />s.username user_name,<br /><br />a.type  object_type,<br /><br />s.osuser os_user_name,<br /><br />a.owner,<br /><br />a.object object_name,<br /><br />decode(sign(48 - command),<br /><br />1,<br /><br />to_char(command), 'Action Code #' || to_char(command) ) action,<br /><br />p.program oracle_process,<br /><br />s.terminal terminal,<br /><br />s.program program,<br /><br />s.status session_status   <br /><br />from v$session s, v$access a, v$process p   <br /><br />where s.paddr = p.addr and<br /><br />     s.type = 'USER' and    <br /><br />     a.sid = s.sid   and<br /><br />  a.object='SUBSCRIBER_ATTR'<br /><br />order by s.username, s.osuser<br /><br /> <br /><br />14。回滚段查看<br /><br />select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extents <br /><br />Extents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs, <br /><br />v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes, <br /><br />sys.dba_rollback_segs.status status from v$rollstat, sys.dba_rollback_segs, <br /><br />v$rollname where v$rollname.name(+) = sys.dba_rollback_segs.segment_name and <br /><br />v$rollstat.usn (+) = v$rollname.usn order by rownum<br /><br /> <br /><br />15。耗资源的进程（top session）<br /><br />select s.schemaname schema_name,    decode(sign(48 - command), 1, <br /><br />to_char(command), 'Action Code #' || to_char(command) ) action,    status <br /><br />session_status,   s.osuser os_user_name,   s.sid,         p.spid ,         s.serial# serial_num,   <br /><br />nvl(s.username, '[Oracle process]') user_name,   s.terminal terminal,    <br /><br />s.program program,   st.value criteria_value  from v$sesstat st,   v$session s  , v$process p   <br /><br />where st.sid = s.sid and   st.statistic# = to_number('38') and   ('ALL' = 'ALL' <br /><br />or s.status = 'ALL') and p.addr = s.paddr order by st.value desc,  p.spid asc, s.username asc, s.osuser asc<br /><br /> <br /><br />16。查看锁（lock）情况<br /><br />select /*+ RULE */ ls.osuser os_user_name,   ls.username user_name,   <br /><br />decode(ls.type, 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock', 'TX', <br /><br />'Transaction enqueue lock', 'UL', 'User supplied lock') lock_type,   <br /><br />o.object_name object,   decode(ls.lmode, 1, null, 2, 'Row Share', 3, <br /><br />'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', null) <br /><br />lock_mode,    o.owner,   ls.sid,   ls.serial# serial_num,   ls.id1,   ls.id2    <br /><br />from sys.dba_objects o, (   select s.osuser,    s.username,    l.type,     <br /><br />l.lmode,    s.sid,    s.serial#,    l.id1,    l.id2   from v$session s,     <br /><br />v$lock l   where s.sid = l.sid ) ls  where o.object_id = ls.id1 and    o.owner <br /><br />&lt;> 'SYS'   order by o.owner, o.object_name<br /><br /> <br /><br />17。查看等待（wait）情况<br /><br />SELECT v$waitstat.class, v$waitstat.count count, SUM(v$sysstat.value) sum_value <br /><br />FROM v$waitstat, v$sysstat WHERE v$sysstat.name IN ('db block gets', <br /><br />'consistent gets') group by v$waitstat.class, v$waitstat.count<br /><br /> <br /><br />18。查看sga情况<br /><br />SELECT NAME, BYTES FROM SYS.V_$SGASTAT ORDER BY NAME ASC<br /><br /> <br /><br />19。查看catched object<br /><br />SELECT owner,              name,              db_link,              namespace,  <br /><br />           type,              sharable_mem,              loads,              executions,   <br /><br />          locks,              pins,              kept        FROM v$db_object_cache<br /><br />          <br /><br />20。查看V$SQLAREA<br /><br />SELECT SQL_TEXT, SHARABLE_MEM, PERSISTENT_MEM, RUNTIME_MEM, SORTS, <br /><br />VERSION_COUNT, LOADED_VERSIONS, OPEN_VERSIONS, USERS_OPENING, EXECUTIONS, <br /><br />USERS_EXECUTING, LOADS, FIRST_LOAD_TIME, INVALIDATIONS, PARSE_CALLS, DISK_READS,<br /><br />BUFFER_GETS, ROWS_PROCESSED FROM V$SQLAREA<br /><br /> <br /><br />21。查看object分类数量<br /><br />select decode (o.type#,1,'INDEX' , 2,'TABLE' , 3 , 'CLUSTER' , 4, 'VIEW' , 5 , <br /><br />'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) object_type , count(*) quantity from <br /><br />sys.obj$ o where o.type# > 1 group by decode (o.type#,1,'INDEX' , 2,'TABLE' , 3 <br /><br />, 'CLUSTER' , 4, 'VIEW' , 5 , 'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) union select <br /><br />'COLUMN' , count(*) from sys.col$ union select 'DB LINK' , count(*) from <br /><br /> <br /><br />22。按用户查看object种类<br /><br />select u.name schema,   sum(decode(o.type#, 1, 1, NULL)) indexes,   <br /><br />sum(decode(o.type#, 2, 1, NULL)) tables,   sum(decode(o.type#, 3, 1, NULL)) <br /><br />clusters,   sum(decode(o.type#, 4, 1, NULL)) views,   sum(decode(o.type#, 5, 1, <br /><br />NULL)) synonyms,   sum(decode(o.type#, 6, 1, NULL)) sequences,   <br /><br />sum(decode(o.type#, 1, NULL, 2, NULL, 3, NULL, 4, NULL, 5, NULL, 6, NULL, 1)) <br /><br />others   from sys.obj$ o, sys.user$ u   where o.type# >= 1 and    u.user# = <br /><br />o.owner# and   u.name &lt;> 'PUBLIC'   group by u.name    order by <br /><br />sys.link$ union select 'CONSTRAINT' , count(*) from sys.con$<br /><br /> <br /><br />23。有关connection的相关信息<br /><br />1）查看有哪些用户连接<br /><br />select s.osuser os_user_name,    decode(sign(48 - command), 1, to_char(command),<br /><br />'Action Code #' || to_char(command) ) action,     p.program oracle_process,     <br /><br />status session_status,    s.terminal terminal,    s.program program,    <br /><br />s.username user_name,    s.fixed_table_sequence activity_meter,    '' query,    <br /><br />0 memory,    0 max_memory,     0 cpu_usage,    s.sid,   s.serial# serial_num    <br /><br />from v$session s,    v$process p   where s.paddr=p.addr and    s.type = 'USER'  <br /><br />order by s.username, s.osuser<br /><br />2）根据v.sid查看对应连接的资源占用等情况<br /><br />select n.name, <br /><br /> v.value, <br /><br /> n.class,<br /><br /> n.statistic#  <br /><br />from  v$statname n, <br /><br /> v$sesstat v <br /><br />where v.sid = 71 and <br /><br /> v.statistic# = n.statistic# <br /><br />order by n.class, n.statistic#<br /><br />3）根据sid查看对应连接正在运行的sql<br /><br />select /*+ PUSH_SUBQ */<br /><br /> command_type, <br /><br /> sql_text, <br /><br /> sharable_mem, <br /><br /> persistent_mem, <br /><br /> runtime_mem, <br /><br /> sorts, <br /><br /> version_count, <br /><br /> loaded_versions, <br /><br /> open_versions, <br /><br /> users_opening, <br /><br /> executions, <br /><br /> users_executing, <br /><br /> loads, <br /><br /> first_load_time, <br /><br /> invalidations, <br /><br /> parse_calls, <br /><br /> disk_reads, <br /><br /> buffer_gets, <br /><br /> rows_processed,<br /><br /> sysdate start_time,<br /><br /> sysdate finish_time,<br /><br /> '>' || address sql_address,<br /><br /> 'N' status <br /><br />from v$sqlarea<br /><br />where address = (select sql_address from v$session where sid = 71)<br /><br /> <br /><br />24．查询表空间使用情况<br /><br />select a.tablespace_name "表空间名称",<br /><br />100-round((nvl(b.bytes_free,0)/a.bytes_alloc)*100,2) "占用率(%)",<br /><br />round(a.bytes_alloc/1024/1024,2) "容量(M)",<br /><br />round(nvl(b.bytes_free,0)/1024/1024,2) "空闲(M)",<br /><br />round((a.bytes_alloc-nvl(b.bytes_free,0))/1024/1024,2) "使用(M)",<br /><br />Largest "最大扩展段(M)",<br /><br />to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "采样时间" <br /><br />from  (select f.tablespace_name,<br /><br />   sum(f.bytes) bytes_alloc,<br /><br />   sum(decode(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) maxbytes <br /><br />from dba_data_files f <br /><br />group by tablespace_name) a,<br /><br />(select  f.tablespace_name,<br /><br />    sum(f.bytes) bytes_free <br /><br />from dba_free_space f <br /><br />group by tablespace_name) b,<br /><br />(select round(max(ff.length)*16/1024,2) Largest,<br /><br />   ts.name tablespace_name <br /><br />from sys.fet$ ff, sys.file$ tf,sys.ts$ ts <br /><br />where ts.ts#=ff.ts# and ff.file#=tf.relfile# and ts.ts#=tf.ts# <br /><br />group by ts.name, tf.blocks) c <br /><br />where a.tablespace_name = b.tablespace_name and a.tablespace_name = c.tablespace_name<br /><br /> <br /><br />25. 查询表空间的碎片程度 <br /><br /> <br /><br />select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_name <br /><br />having count(tablespace_name)>10; <br /><br /> <br /><br />alter tablespace name coalesce; <br /><br />alter table name deallocate unused; <br /><br /> <br /><br />create or replace view ts_blocks_v as <br /><br />select tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_space <br /><br />union all <br /><br />select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents; <br /><br /> <br /><br />select * from ts_blocks_v; <br /><br /> <br /><br />select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space <br /><br />group by tablespace_name;<br /><br /> <br /><br />26。查询有哪些数据库实例在运行<br /><br />select inst_name from v$active_instances;<br /><br /> <br /><br />===========================================================<br /><br />######### 创建数据库----look $ORACLE_HOME/rdbms/admin/buildall.sql ############# <br /><br /> <br /><br />create database db01 <br /><br />maxlogfiles 10 <br /><br />maxdatafiles 1024 <br /><br />maxinstances 2 <br /><br />logfile <br /><br />GROUP 1 ('/u01/oradata/db01/log_01_db01.rdo') SIZE 15M, <br /><br />GROUP 2 ('/u01/oradata/db01/log_02_db01.rdo') SIZE 15M, <br /><br />GROUP 3 ('/u01/oradata/db01/log_03_db01.rdo') SIZE 15M, <br /><br />datafile 'u01/oradata/db01/system_01_db01.dbf') SIZE 100M, <br /><br />undo tablespace UNDO <br /><br />datafile '/u01/oradata/db01/undo_01_db01.dbf' SIZE 40M <br /><br />default temporary tablespace TEMP <br /><br />tempfile '/u01/oradata/db01/temp_01_db01.dbf' SIZE 20M <br /><br />extent management local uniform size 128k <br /><br />character set AL32UTE8 <br /><br />national character set AL16UTF16 <br /><br />set time_zone='America/New_York'; <br /><br /> <br /><br />############### 数据字典 ########## <br /><br /> <br /><br />set wrap off <br /><br /> <br /><br />select * from v$dba_users; <br /><br /> <br /><br />grant select on table_name to user/rule; <br /><br /> <br /><br />select * from user_tables; <br /><br /> <br /><br />select * from all_tables; <br /><br /> <br /><br />select * from dba_tables; <br /><br /> <br /><br />revoke dba from user_name; <br /><br /> <br /><br />shutdown immediate <br /><br /> <br /><br />startup nomount <br /><br /> <br /><br />select * from v$instance; <br /><br /> <br /><br />select * from v$sga; <br /><br /> <br /><br />select * from v$tablespace; <br /><br /> <br /><br />alter session set nls_language=american; <br /><br /> <br /><br />alter database mount; <br /><br /> <br /><br />select * from v$database; <br /><br /> <br /><br />alter database open; <br /><br /> <br /><br />desc dictionary <br /><br /> <br /><br />select * from dict; <br /><br /> <br /><br />desc v$fixed_table; <br /><br /> <br /><br />select * from v$fixed_table; <br /><br /> <br /><br />set oracle_sid=foxconn <br /><br /> <br /><br />select * from dba_objects; <br /><br /> <br /><br />set serveroutput on <br /><br /> <br /><br />execute dbms_output.put_line('sfasd'); <br /><br /> <br /><br />############# 控制文件 ########### <br /><br /> <br /><br />select * from v$database; <br /><br /> <br /><br />select * from v$tablespace; <br /><br /> <br /><br />select * from v$logfile; <br /><br /> <br /><br />select * from v$log; <br /><br /> <br /><br />select * from v$backup; <br /><br /> <br /><br />/*备份用户表空间*/ <br /><br />alter tablespace users begin backup; <br /><br /> <br /><br />select * from v$archived_log; <br /><br /> <br /><br />select * from v$controlfile; <br /><br /> <br /><br />alter system set control_files='$ORACLE_HOME/oradata/u01/ctrl01.ctl', <br /><br />'$ORACLE_HOME/oradata/u01/ctrl02.ctl' scope=spfile; <br /><br /> <br /><br />cp $ORACLE_HOME/oradata/u01/ctrl01.ctl $ORACLE_HOME/oradata/u01/ctrl02.ctl <br /><br /> <br /><br />startup pfile='../initSID.ora' <br /><br /> <br /><br />select * from v$parameter where name like 'control%' ; <br /><br /> <br /><br />show parameter control; <br /><br /> <br /><br />select * from v$controlfile_record_section; <br /><br /> <br /><br />select * from v$tempfile; <br /><br /> <br /><br />/*备份控制文件*/ <br /><br />alter database backup controlfile to '../filepath/control.bak'; <br /><br /> <br /><br />/*备份控制文件，并将二进制控制文件变为了asc 的文本文件*/ <br /><br />alter database backup controlfile to trace; <br /><br /> <br /><br />############### redo log ############## <br /><br /> <br /><br />archive log list; <br /><br /> <br /><br />alter system archive log start;--启动自动存档 <br /><br /> <br /><br />alter system switch logfile;--强行进行一次日志switch <br /><br /> <br /><br />alter system checkpoint;--强制进行一次checkpoint <br /><br /> <br /><br />alter tablspace users begin backup; <br /><br /> <br /><br />alter tablespace offline; <br /><br /> <br /><br />/*checkpoint 同步频率参数FAST_START_MTTR_TARGET,同步频率越高，系统恢复所需时间越短*/ <br /><br />show parameter fast; <br /><br /> <br /><br />show parameter log_checkpoint; <br /><br /> <br /><br />/*加入一个日志组*/ <br /><br />alter database add logfile group 3 ('/$ORACLE_HOME/oracle/ora_log_file6.rdo' size 10M); <br /><br /> <br /><br />/*加入日志组的一个成员*/ <br /><br />alter database add logfile member '/$ORACLE_HOME/oracle/ora_log_file6.rdo' to group 3; <br /><br /> <br /><br />/*删除日志组:当前日志组不能删；活动的日志组不能删；非归档的日志组不能删*/ <br /><br />alter database drop logfile group 3; <br /><br /> <br /><br />/*删除日志组中的某个成员，但每个组的最后一个成员不能被删除*/ <br /><br />alter databse drop logfile member '$ORACLE_HOME/oracle/ora_log_file6.rdo'; <br /><br /> <br /><br />/*清除在线日志*/ <br /><br />alter database clear logfile '$ORACLE_HOME/oracle/ora_log_file6.rdo'; <br /><br /> <br /><br />alter database clear logfile group 3; <br /><br /> <br /><br />/*清除非归档日志*/ <br /><br />alter database clear unarchived logfile group 3; <br /><br /> <br /><br />/*重命名日志文件*/ <br /><br />alter database rename file '$ORACLE_HOME/oracle/ora_log_file6.rdo' to '$ORACLE_HOME/oracle/ora_log_file6a.rdo'; <br /><br /> <br /><br />show parameter db_create; <br /><br /> <br /><br />alter system set db_create_online_log_dest_1='path_name'; <br /><br /> <br /><br />select * from v$log; <br /><br /> <br /><br />select * from v$logfile; <br /><br /> <br /><br />/*数据库归档模式到非归档模式的互换,要启动到mount状态下才能改变;startup mount;然后再打开数据库.*/ <br /><br />alter database noarchivelog/archivelog; <br /><br /> <br /><br />achive log start;---启动自动归档 <br /><br /> <br /><br />alter system archive all;－－手工归档所有日志文件 <br /><br /> <br /><br />select * from v$archived_log; <br /><br /> <br /><br />show parameter log_archive; <br /><br /> <br /><br />###### 分析日志文件logmnr ############## <br /><br /> <br /><br />1) 在init.ora中set utl_file_dir 参数 <br /><br />2) 重新启动oracle <br /><br />3) create 目录文件 <br /><br />desc dbms_logmnr_d; <br /><br />dbms_logmnr_d.build; <br /><br />4) 加入日志文件 add/remove log file <br /><br />dhms_logmnr.add_logfile <br /><br />dbms_logmnr.removefile <br /><br />5) start logmnr <br /><br />dbms_logmnr.start_logmnr <br /><br />6) 分析出来的内容查询 v$logmnr_content --sqlredo/sqlundo <br /><br /> <br /><br />实践： <br /><br /> <br /><br />desc dbms_logmnr_d; <br /><br /> <br /><br />/*对数据表做一些操作，为恢复操作做准备*/ <br /><br />update 表 set qty=10 where stor_id=6380; <br /><br /> <br /><br />delete 表 where stor_id=7066; <br /><br />/***********************************/ <br /><br />utl_file_dir的路径 <br /><br />execute dbms_logmnr_d.build('foxdict.ora','$ORACLE_HOME/oracle/admin/fox/cdump'); <br /><br /> <br /><br />execute dbms_logmnr.add_logfile('$ORACLE_HOME/oracle/ora_log_file6.log',dbms_logmnr.newfile); <br /><br /> <br /><br />execute dbms_logmnr.start_logmnr(dictfilename=>'$ORACLE_HOME/oracle/admin/fox/cdump/foxdict.ora'); <br /><br /> <br /><br />######### tablespace ############## <br /><br /> <br /><br />select * form v$tablespace; <br /><br /> <br /><br />select * from v$datafile; <br /><br /> <br /><br />/*表空间和数据文件的对应关系*/ <br /><br />select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.ts#=t2.ts#; <br /><br /> <br /><br />alter tablespace users add datafile 'path' size 10M; <br /><br /> <br /><br />select * from dba_rollback_segs; <br /><br /> <br /><br />/*限制用户在某表空间的使用限额*/ <br /><br />alter user user_name quota 10m on tablespace_name; <br /><br /> <br /><br />create tablespace xxx [datafile 'path_name/datafile_name'] [size xxx] [extent management local/dictionary] [default storage(xxx)]; <br /><br /> <br /><br />exmple: create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M AUTOEXTEND ON NEXT 5M MAXSIZE 200M; <br /><br />create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M extent management dictionary default storage(initial 100k next 100k pctincrease 10) offline; <br /><br />/*9i以后，oracle建议使用local管理，而不使用dictionary管理，因为local采用bitmap管理表空间 ，不会产生系统表空间的自愿争用;*/ <br /><br />create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M extent management local uniform size 1m; <br /><br />create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M extent management local autoallocate; <br /><br />/*在创建表空间时，设置表空间内的段空间管理模式，这里用的是自动管理*/ <br /><br />create tablespace userdata datafile '$ORACLE_HOME/oradata/userdata01.dbf' size 100M extent management local uniform size 1m segment space management auto; <br /><br /> <br /><br />alter tablespace userdata mininum extent 10; <br /><br /> <br /><br />alter tablespace userdata default storage(initial 1m next 1m pctincrease 20); <br /><br /> <br /><br />/*undo tablespace(不能被用在字典管理模下) */ <br /><br />create undo tablespace undo1 datafile '$ORACLE_HOME/oradata/undo101.dbf' size 40M extent management local; <br /><br /> <br /><br />show parameter undo; <br /><br /> <br /><br />/*temporary tablespace*/ <br /><br />create temporary tablespace userdata tempfile '$ORACLE_HOME/oradata/undo101.dbf' size 10m extent management local; <br /><br /> <br /><br />/*设置数据库缺省的临时表空间*/ <br /><br />alter database default temporary tablespace tablespace_name; <br /><br /> <br /><br />/*系统/临时/在线的undo表空间不能被offline*/ <br /><br />alter tablespace tablespace_name offline/online; <br /><br /> <br /><br />alter tablespace tablespace_name read only; <br /><br /> <br /><br />/*重命名用户表空间*/ <br /><br />alter tablespace tablespace_name rename datafile '$ORACLE_HOME/oradata/undo101.dbf' to '$ORACLE_HOME/oradata/undo102.dbf'; <br /><br /> <br /><br />/*重命名系统表空间 ,但在重命名前必须将数据库shutdown,并重启到mount状态*/ <br /><br />alter database rename file '$ORACLE_HOME/oradata/system01.dbf' to '$ORACLE_HOME/oradata/system02.dbf'; <br /><br /> <br /><br />drop tablespace userdata including contents and datafiles;---drop tablespce <br /><br /> <br /><br />/*resize tablespace,autoextend datafile space*/ <br /><br />alter database datafile '$ORACLE_HOME/oradata/undo102.dbf' autoextend on next 10m maxsize 500M; <br /><br /> <br /><br />/*resize datafile*/ <br /><br />alter database datafile '$ORACLE_HOME/oradata/undo102.dbf' resize 50m; <br /><br /> <br /><br />/*给表空间扩展空间*/ <br /><br />alter tablespace userdata add datafile '$ORACLE_HOME/oradata/undo102.dbf' size 10m; <br /><br /> <br /><br />/*将表空间设置成OMF状态*/ <br /><br />alter system set db_create_file_dest='$ORACLE_HOME/oradata'; <br /><br /> <br /><br />create tablespace userdata;---use OMF status to create tablespace; <br /><br /> <br /><br />drop tablespace userdata;---user OMF status to drop tablespace; <br /><br /> <br /><br />select * from dba_tablespace/v$tablespace/dba_data_files; <br /><br /> <br /><br />/*将表的某分区移动到另一个表空间*/ <br /><br />alter table table_name move partition partition_name tablespace tablespace_name; <br /><br /> <br /><br />###### ORACLE storage structure and relationships ######### <br /><br /> <br /><br />/*手工分配表空间段的分区(extend)大小*/ <br /><br />alter table kong.test12 allocate extent(size 1m datafile '$ORACLE_HOME/oradata/undo102.dbf'); <br /><br /> <br /><br />alter table kong.test12 deallocate unused; ---释放表中没有用到的分区 <br /><br /> <br /><br />show parameter db; <br /><br /> <br /><br />alter system set db_8k_cache_size=10m; ---配置8k块的内存空间块参数 <br /><br /> <br /><br />select * from dba_extents/dba_segments/data_tablespace; <br /><br /> <br /><br />select * from dba_free_space/dba_data_file/data_tablespace; <br /><br /> <br /><br />/*数据对象所占用的字节数*/ <br /><br />select sum(bytes) from dba_extents where onwer='kong' and segment_name ='table_name'; <br /><br /> <br /><br />############ UNDO Data ################ <br /><br /> <br /><br />show parameter undo; <br /><br /> <br /><br />alter tablespace users offline normal; <br /><br /> <br /><br />alter tablespace users offline immediate; <br /><br /> <br /><br />recover datafile '$ORACLE_HOME/oradata/undo102.dbf'; <br /><br /> <br /><br />alter tablespace users online ; <br /><br /> <br /><br />select * from dba_rollback_segs; <br /><br /> <br /><br />alter system set undo_tablespace=undotbs1; <br /><br /> <br /><br />/*忽略回滚段的错误提示*/ <br /><br />alter system set undo_suppress_errors=true; <br /><br /> <br /><br />/*在自动管理模式下,不会真正建立rbs1;在手工管理模式则可以建立,且是私有回滚段*/ <br /><br />create rollback segment rbs1 tablespace undotbs; <br /><br /> <br /><br />desc dbms_flashback; <br /><br /> <br /><br />/*在提交了修改的数据后,9i提供了旧数据的回闪操作,将修改前的数据只读给用户看,但这部分数据不会又恢复在表中,而是旧数据的一个映射*/ <br /><br />execute dbms_flashback.enable_at_time('26-JAN-04:12:17:00 pm'); <br /><br /> <br /><br />execute dbms_flashback.disable; <br /><br /> <br /><br />/*回滚段的统计信息*/ <br /><br />select end_time,begin_time,undoblks from v$undostat; <br /><br /> <br /><br />/*undo表空间的大小计算公式: UndoSpace=[UR * (UPS * DBS)] + (DBS * 24) <br /><br />UR :UNDO_RETENTION 保留的时间(秒) <br /><br />UPS :每秒的回滚数据块 <br /><br />DBS:系统EXTENT和FILE SIZE(也就是db_block_size)*/ <br /><br /> <br /><br />select * from dba_rollback_segs/v$rollname/v$rollstat/v$undostat/v$session/v$transaction; <br /><br /> <br /><br />show parameter transactions; <br /><br /> <br /><br />show parameter rollback; <br /><br /> <br /><br />/*在手工管理模式下,建立公共的回滚段*/ <br /><br />create public rollback segment prbs1 tablespace undotbs; <br /><br /> <br /><br />alter rollback segment rbs1 online;----在手工管理模式 <br /><br /> <br /><br />/*在手工管理模式中,initSID.ora中指定 undo_management=manual 、rollback_segment=('rbs1','rbs2',...)、 <br /><br />transactions=100 、transactions_per_rollback_segment=10 <br /><br />然后 shutdown immediate ,startup pfile=....\???.ora */ <br /><br /> <br /><br />########## Managing Tables ########### <br /><br /> <br /><br />/*char type maxlen=2000;varchar2 type maxlen=4000 bytes <br /><br />rowid 是18位的64进制字符串 (10个bytes 80 bits) <br /><br />rowid组成: object#(对象号)--32bits,6位 <br /><br />rfile#(相对文件号)--10bits,3位 <br /><br />block#(块号)--22bits,6位 <br /><br />row#(行号)--16bits,3位 <br /><br />64进制: A-Z,a-z,0-9,/,+ 共64个符号 <br /><br /> <br /><br />dbms_rowid 包中的函数可以提供对rowid的解释*/ <br /><br /> <br /><br />select rowid,dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_row_number(rowid) from table_name; <br /><br /> <br /><br />create table test2 <br /><br />( <br /><br />id int, <br /><br />lname varchar2(20) not null, <br /><br />fname varchar2(20) constraint ck_1 check(fname like 'k%'), <br /><br />empdate date default sysdate) <br /><br />) tablespace tablespace_name; <br /><br /> <br /><br /> <br /><br />create global temporary table test2 on commit delete/preserve rows as select * from kong.authors; <br /><br /> <br /><br />create table user.table(...) tablespace tablespace_name storage(...) pctfree10 pctused 40; <br /><br /> <br /><br />alter table user.tablename pctfree 20 pctused 50 storage(...);---changing table storage <br /><br /> <br /><br />/*手工分配分区,分配的数据文件必须是表所在表空间内的数据文件*/ <br /><br />alter table user.table_name allocate extent(size 500k datafile '...'); <br /><br /> <br /><br />/*释放表中没有用到的空间*/ <br /><br />alter table table_name deallocate unused; <br /><br /> <br /><br />alter table table_name deallocate unused keep 8k; <br /><br /> <br /><br />/*将非分区表的表空间搬到新的表空间,在移动表空间后，原表中的索引对象将会不可用，必须重建*/ <br /><br />alter table user.table_name move tablespace new_tablespace_name; <br /><br /> <br /><br />create index index_name on user.table_name(column_name) tablespace users; <br /><br /> <br /><br />alter index index_name rebuild; <br /><br /> <br /><br />drop table table_name [CASCADE CONSTRAINTS]; <br /><br /> <br /><br />alter table user.table_name drop column col_name [CASCADE CONSTRAINTS CHECKPOINT 1000];---drop column <br /><br /> <br /><br />/*给表中不用的列做标记*/ <br /><br />alter table user.table_name set unused column comments CASCADE CONSTRAINTS; <br /><br /> <br /><br />/*drop表中不用的做了标记列*/ <br /><br />alter table user.table_name drop unused columns checkpoint 1000; <br /><br /> <br /><br />/*当在drop col是出现异常，使用CONTINUE，防止重删前面的column*/ <br /><br />ALTER TABLE USER.TABLE_NAME DROP COLUMNS CONTINUE CHECKPOINT 1000; <br /><br /> <br /><br />select * from dba_tables/dba_objects; <br /><br /> <br /><br />######## managing indexes ########## <br /><br /> <br /><br />/*create index*/ <br /><br />example: <br /><br />/*创建一般索引*/ <br /><br />create index index_name on table_name(column_name) tablespace tablespace_name; <br /><br />/*创建位图索引*/ <br /><br />create bitmap index index_name on table_name(column_name1,column_name2) tablespace tablespace_name; <br /><br />/*索引中不能用pctused*/ <br /><br />create [bitmap] index index_name on table_name(column_name) tablespace tablespace_name pctfree 20 storage(inital 100k next 100k) ; <br /><br />/*大数据量的索引最好不要做日志*/ <br /><br />create [bitmap] index index_name table_name(column_name1,column_name2) tablespace_name pctfree 20 storage(inital 100k next 100k) nologging; <br /><br />/*创建反转索引*/ <br /><br />create index index_name on table_name(column_name) reverse; <br /><br />/*创建函数索引*/ <br /><br />create index index_name on table_name(function_name(column_name)) tablespace tablespace_name; <br /><br />/*建表时创建约束条件*/ <br /><br />create table user.table_name(column_name number(7) constraint constraint_name primary key deferrable using index storage(initial 100k next 100k) tablespace tablespace_name,column_name2 varchar2(25) constraint constraint_name not null,column_name3 number(7)) tablespace tablespace_name; <br /><br /> <br /><br />/*给创建bitmap index分配的内存空间参数，以加速建索引*/ <br /><br />show parameter create_bit; <br /><br /> <br /><br />/*改变索引的存储参数*/ <br /><br />alter index index_name pctfree 30 storage(initial 200k next 200k); <br /><br /> <br /><br />/*给索引手工分配一个分区*/ <br /><br />alter index index_name allocate extent (size 200k datafile '$ORACLE/oradata/..'); <br /><br /> <br /><br />/*释放索引中没用的空间*/ <br /><br />alter index index_name deallocate unused; <br /><br /> <br /><br />/*索引重建*/ <br /><br />alter index index_name rebuild tablespace tablespace_name; <br /><br /> <br /><br />/*普通索引和反转索引的互换*/ <br /><br />alter index index_name rebuild tablespace tablespace_name reverse; <br /><br /> <br /><br />/*重建索引时，不锁表*/ <br /><br />alter index index_name rebuild online; <br /><br /> <br /><br />/*给索引整理碎片*/ <br /><br />alter index index_name COALESCE; <br /><br /> <br /><br />/*分析索引,事实上是更新统计的过程*/ <br /><br />analyze index index_name validate structure; <br /><br /> <br /><br />desc index_state; <br /><br /> <br /><br />drop index index_name; <br /><br /> <br /><br />alter index index_name monitoring usage;-----监视索引是否被用到 <br /><br /> <br /><br />alter index index_name nomonitoring usage;----取消监视 <br /><br /> <br /><br />/*有关索引信息的视图*/ <br /><br />select * from dba_indexes/dba_ind_columns/dbs_ind_expressions/v$object_usage; <br /><br /> <br /><br />########## 数据完整性的管理(Maintaining data integrity) ########## <br /><br /> <br /><br />alter table table_name drop constraint constraint_name;----drop 约束 <br /><br /> <br /><br />alter table table_name add constraint constraint_name primary key(column_name1,column_name2);-----创建主键 <br /><br /> <br /><br />alter table table_name add constraint constraint_name unique(column_name1,column_name2);---创建唯一约束 <br /><br /> <br /><br />/*创建外键约束*/ <br /><br />alter table table_name add constraint constraint_name foreign key(column_name1) references table_name(column_name1); <br /><br /> <br /><br />/*不效验老数据，只约束新的数据[enable/disable：约束/不约束新数据;novalidate/validate:不对/对老数据进行验证]*/ <br /><br />alter table table_name add constraint constraint_name check(column_name like 'B%') enable/disable novalidate/validate; <br /><br /> <br /><br />/*修改约束条件，延时验证，commit时验证*/ <br /><br />alter table table_name modify constraint constraint_name initially deferred; <br /><br /> <br /><br />/*修改约束条件，立即验证*/ <br /><br />alter table table_name modify constraint constraint_name initially immediate; <br /><br /> <br /><br />alter session set constraints=deferred/immediate; <br /><br /> <br /><br />/*drop一个有外键的主键表,带cascade constraints参数级联删除*/ <br /><br />drop table table_name cascade constraints; <br /><br /> <br /><br />/*当truncate外键表时，先将外键设为无效，再truncate;*/ <br /><br />truncate table table_name; <br /><br /> <br /><br />/*设约束条件无效*/ <br /><br />alter table table_name disable constraint constraint_name; <br /><br /> <br /><br />alter table table_name enable novalidate constraint constraint_name; <br /><br /> <br /><br />/*将无效约束的数据行放入exception的表中，此表记录了违反数据约束的行的行号；在此之前，要先建exceptions表*/ <br /><br />alter table table_name add constraint constraint_name check(column_name >15) enable validate exceptions into exceptions; <br /><br /> <br /><br />/*运行创建exceptions表的脚本*/ <br /><br />start $ORACLE_HOME/rdbms/admin/utlexcpt.sql; <br /><br /> <br /><br />/*获取约束条件信息的表或视图*/ <br /><br />select * from user_constraints/dba_constraints/dba_cons_columns; <br /><br /> <br /><br />################## managing password security and resources #################### <br /><br /> <br /><br />alter user user_name account unlock/open;----锁定/打开用户; <br /><br /> <br /><br />alter user user_name password expire;---设定口令到期 <br /><br /> <br /><br />/*建立口令配置文件,failed_login_attempts口令输多少次后锁，password_lock_times指多少天后口令被自动解锁*/ <br /><br />create profile profile_name limit failed_login_attempts 3 password_lock_times 1/1440; <br /><br />/*创建口令配置文件*/ <br /><br />create profile profile_name limit failed_login_attempts 3 password_lock_time unlimited password_life_time 30 password_reuse_time 30 password_verify_function verify_function password_grace_time 5; <br /><br />/*建立资源配置文件*/ <br /><br />create profile prfile_name limit session_per_user 2 cpu_per_session 10000 idle_time 60 connect_time 480; <br /><br /> <br /><br />alter user user_name profile profile_name; <br /><br /> <br /><br />/*设置口令解锁时间*/ <br /><br />alter profile profile_name limit password_lock_time 1/24; <br /><br /> <br /><br />/*password_life_time指口令文件多少时间到期，password_grace_time指在第一次成功登录后到口令到期有多少天时间可改变口令*/ <br /><br />alter profile profile_name limit password_lift_time 2 password_grace_time 3; <br /><br /> <br /><br />/*password_reuse_time指口令在多少天内可被重用,password_reuse_max口令可被重用的最大次数*/ <br /><br />alter profile profile_name limit password_reuse_time 10[password_reuse_max 3]; <br /><br /> <br /><br />alter user user_name identified by input_password;-----修改用户口令 <br /><br /> <br /><br />drop profile profile_name; <br /><br /> <br /><br />/*建立了profile后，且指定给某个用户，则必须用CASCADE才能删除*/ <br /><br />drop profile profile_name CASCADE; <br /><br /> <br /><br />alter system set resource_limit=true;---启用自愿限制,缺省是false <br /><br /> <br /><br />/*配置资源参数*/ <br /><br />alter profile profile_name limit cpu_per_session 10000 connect_time 60 idle_time 5; <br /><br />/*资源参数(session级) <br /><br />cpu_per_session 每个session占用cpu的时间 单位1/100秒 <br /><br />sessions_per_user 允许每个用户的并行session数 <br /><br />connect_time 允许连接的时间 单位分钟 <br /><br />idle_time 连接被空闲多少时间后，被自动断开 单位分钟 <br /><br />logical_reads_per_session 读块数 <br /><br />private_sga 用户能够在SGA中使用的私有的空间数 单位bytes <br /><br /> <br /><br />(call级) <br /><br />cpu_per_call 每次(1/100秒)调用cpu的时间 <br /><br />logical_reads_per_call 每次调用能够读的块数 <br /><br />*/ <br /><br /> <br /><br />alter profile profile_name limit cpu_per_call 1000 logical_reads_per_call 10; <br /><br /> <br /><br />desc dbms_resouce_manager;---资源管理器包 <br /><br /> <br /><br />/*获取资源信息的表或视图*/ <br /><br />select * from dba_users/dba_profiles; <br /><br /> <br /><br />###### Managing users ############ <br /><br /> <br /><br />show parameter os; <br /><br /> <br /><br />create user testuser1 identified by kxf_001; <br /><br /> <br /><br />grant connect,createtable to testuser1; <br /><br /> <br /><br />alter user testuser1 quota 10m on tablespace_name; <br /><br /> <br /><br />/*创建用户*/ <br /><br />create user user_name identified by password default tablespace tablespace_name temporary tablespace tablespace_name quota 15m on tablespace_name password expire; <br /><br /> <br /><br />/*数据库级设定缺省临时表空间*/ <br /><br />alter database default temporary tablespace tablespace_name; <br /><br /> <br /><br />/*制定数据库级的缺省表空间*/ <br /><br />alter database default tablespace tablespace_name; <br /><br /> <br /><br />/*创建os级审核的用户，需知道os_authent_prefix，表示oracle和os口令对应的前缀,'OPS$'为此参数的值，此值可以任意设置*/ <br /><br />create user user_name identified by externally default OPS$tablespace_name tablespace_name temporary tablespace tablespace_name quota 15m on tablespace_name password expire; <br /><br /> <br /><br />/*修改用户使用表空间的限额,回滚表空间和临时表空间不允许授予限额*/ <br /><br />alter user user_name quota 5m on tablespace_name; <br /><br /> <br /><br />/*删除用户或删除级联用户(用户对象下有对象的要用CASCADE，将其下一些对象一起删除)*/ <br /><br />drop user user_name [CASCADE]; <br /><br /> <br /><br />/*每个用户在哪些表空间下有些什么限额*/ <br /><br />desc dba_ts_quotas;select * from dba_ts_quotas where username='...'; <br /><br /> <br /><br />/*改变用户的缺省表空间*/ <br /><br />alter user user_name default tablespace tablespace_name; <br /><br /> <br /><br />######### Managing Privileges ############# <br /><br /> <br /><br />grant create table,create session to user_name; <br /><br /> <br /><br />grant create any table to user_name; revoke create any table from user_name; <br /><br /> <br /><br />/*授予权限语法,public 标识所有用户,with admin option允许能将权限授予第三者的权限*/ <br /><br />grant system_privs,[......] to [user/role/public],[....] [with admin option]; <br /><br /> <br /><br />select * from v$pwfile_users; <br /><br /> <br /><br />/*当 O7_dictionary_accessiblity参数为True时，标识select any table时，包括系统表也能select ,否则，不包含系统表;缺省为false*/ <br /><br />show parameter O7; <br /><br /> <br /><br />/*由于 O7_dictionary_accessiblity为静态参数，不能动态改变，故加scope=spfile,下次启动时才生效*/ <br /><br />alter system set O7_dictionary_accessiblity=true scope=spfile; <br /><br /> <br /><br />/*授予对象中的某些字段的权限，如select 某表中的某些字段的权限*/ <br /><br />grant [object_privs(column,....)],[...] on object_name to user/role/public,... with grant option; <br /><br /> <br /><br />/*oracle不允许授予select某列的权限,但可以授insert ,update某列的权限*/ <br /><br />grant insert(column_name1,column_name2,...) on table_name to user_name with grant option; <br /><br /> <br /><br />select * from dba_sys_privs/session_privs/dba_tab_privs/user_tab_privs/dba_col_privs/user_col_privs; <br /><br /> <br /><br />/*db/os/none 审计被记录在 数据库/操作系统/不审计 缺省是none*/ <br /><br />show parameter audit_trail; <br /><br /> <br /><br />/*启动对表的select动作*/ <br /><br />audit select on user.table_name by session; <br /><br /> <br /><br />/*by session在每个session中发出command只记录一次，by access则每个command都记录*/ <br /><br />audit [create table][select/update/insert on object by session/access][whenever successful/not successful]; <br /><br /> <br /><br />desc dbms_fga;---进一步设计，则可使用dbms_fgs包 <br /><br /> <br /><br />/*取消审计*/ <br /><br />noaudit select on user.table_name; <br /><br /> <br /><br />/*查被审计信息*/ <br /><br />select * from all_def_audit_opts/dba_stmt_audit_opts/dba_priv_audit_opts/dba_obj_audit_opts; <br /><br /> <br /><br />/*获取审计记录*/ <br /><br />select * from dba_audit_trail/dba_audit_exists/dba_audit_object/dba_audit_session/dba_audit_statement; <br /><br /> <br /><br />########### Managing Role ################# <br /><br /> <br /><br />create role role_name; grant select on table_name to role_name; grant role_name to user_name; set role role_name; <br /><br /> <br /><br />create role role_name; <br /><br />create role role_name identified by password; <br /><br />create role role_name identified externally; <br /><br /> <br /><br />set role role_name ; ----激活role <br /><br />set role role_name identified by password; <br /><br /> <br /><br />alter role role_name not identified; <br /><br />alter role role_name identified by password; <br /><br />alter role role_name identified externally; <br /><br /> <br /><br />grant priv_name to role_name [WITH ADMIN OPTION]; <br /><br />grant update(column_name1,col_name2,...) on table_name to role_name; <br /><br />grant role_name1 to role_name2; <br /><br /> <br /><br />/*建立default role,用户登录时，缺省激活default role*/ <br /><br />alter user user_name default role role_name1,role_name2,...; <br /><br />alter user user_name default role all; <br /><br />alter user user_name default role all except role_name1,...; <br /><br />alter user user_name default role none; <br /><br /> <br /><br />set role role1 [identified by password],role2,....; <br /><br />set role all; <br /><br />set role except role1,role2,...; <br /><br />set role none; <br /><br /> <br /><br />revoke role_name from user_name; <br /><br />revoke role_name from public; <br /><br /> <br /><br />drop role role_name; <br /><br /> <br /><br />select * from dba_roles/dba_role_privs/role_role_privs/dba_sys_privs/role_sys_privs/role_tab_privs/session_roles; <br /><br /> <br /><br />########### Basic SQL SELECT ################ <br /><br /> <br /><br />select col_name as col_alias from table_name ; <br /><br /> <br /><br />select col_name from table_name where col1 like '_o%'; ----'_'匹配单个字符 <br /><br /> <br /><br />/*使用字符函数(右边截取,字段中包含某个字符,左边填充某字符到固定位数,右边填充某字符到固定位数)*/ <br /><br />select substr(col1,-3,5),instr(col2,'g'),LPAD(col3,10,'$'),RPAD(col4,10,'%') from table_name; <br /><br /> <br /><br />/*使用数字函数(往右/左几位四舍五入,取整,取余)*/ <br /><br />select round(col1,-2),trunc(col2),mod(col3) from table_name ; <br /><br /> <br /><br />/*使用日期函数(计算两个日期间相差几个星期,两个日期间相隔几个月,在某个月份上加几个月,某个日期的下一个日期, <br /><br />某日期所在月的最后的日期,对某个日期的月分四舍五入，对某个日期的月份进行取整)*/ <br /><br />select (sysdate-col1)/7 week,months_between(sysdate,col1),add_months(col1,2),next_day(sysdate,'FRIDAY'),last_day(sysdate), <br /><br />round(sysdate,'MONTH'),trunc(sysdate,'MONTH') from table_name; <br /><br /> <br /><br />/*使用NULL函数(当expr1为空取expr2/当expr1为空取expr2,否则取expr3/当expr1=expr2返回空)*/ <br /><br />select nvl(expr1,expr2),nvl2(expr1,expr2,expr3),nullif(expr1,expr2) from table_name; <br /><br /> <br /><br />select column1,column2,column3, case column2 when '50' then column2*1.1 <br /><br />when '30' then column2*2.1 <br /><br />when '10' then column3/20 <br /><br />else column3 <br /><br />end as ttt <br /><br />from table_name ; ------使用case函数 <br /><br /> <br /><br />select table1.col1,table2.col2 from table1 <br /><br />[CROSS JOIN table2] | -----笛卡儿连接 <br /><br />[NATURAL JOIN table2] | -----用两个表中的同名列连接 <br /><br />[JOIN table2 USING (column_name)] | -----用两个表中的同名列中的某一列或几列连接 <br /><br />[JOIN table2 <br /><br />ON (table1.col1=table2.col2)] | <br /><br />[LEFT|RIGHT|FULL OUTER JOIN table2 ------相当于(+)=,=(+)连接,全外连接 <br /><br />ON (table1.col1=table2.col2)]; ------SQL 1999中的JOIN语法; <br /><br /> <br /><br />example: <br /><br />select col1,col2 from table1 t1 <br /><br />join table2 t2 <br /><br />on t1.col1=t2.col2 and t1.col3=t2.col1 <br /><br />join table3 t3 <br /><br />on t2.col1=t3.col3; <br /><br /> <br /><br />select * from table_name where col1 &lt; any (select col2 from table_name2 where continue group by col3); <br /><br /> <br /><br />select * from table_name where col1 &lt; all (select col2 from table_name2 where continue group by col3); <br /><br /> <br /><br />insert into (select col1,col2,col3 form table_name where col1> 50 with check option) values (value1,value2,value3); <br /><br /> <br /><br />MERGE INTO table_name table1 <br /><br />USING table_name2 table2 <br /><br />ON (table1.col1=table2.col2) <br /><br />WHEN MATCHED THEN <br /><br />UPDATE SET <br /><br />table1.col1=table2.col2, <br /><br />table1.col2=table2.col3, <br /><br />... <br /><br />WHEN NOT MATCHED THEN <br /><br />INSERT VALUES(table2.col1,table2.col2,table2.col3,...); -----合并语句 <br /><br /> <br /><br />##################### CREATE/ALTER TABLE ####################### <br /><br /> <br /><br />alter table table_name drop column column_name ;---drop column <br /><br /> <br /><br />alter table table_name set unused (col1,col2,...);----设置列无效，这个比较快。 <br /><br />alter table table_name drop unused columns;---删除被设为无效的列 <br /><br /> <br /><br />rename table_name1 to table_name2; ---重命名表 <br /><br /> <br /><br />comment on table table_name is 'comment message';----给表放入注释信息 <br /><br /> <br /><br />create table table_name <br /><br />(col1 int not null,col2 varchar2(20),col3 varchar2(20), <br /><br />constraint uk_test2_1 unique(col2,col3))); -----定义表中的约束条件 <br /><br /> <br /><br />alter table table_name add constraint pk_test2 primary key(col1,col2,...); ----创建主键 <br /><br /> <br /><br />/*建立外键*/ <br /><br />create table table_name (rid int,name varchar2(20),constraint fk_test3 foreign key(rid) references other_table_name(id)); <br /><br /> <br /><br />alter table table_name add constraint ck_test3 check(name like 'K%'); <br /><br /> <br /><br />alter table table_name drop constraint constraint_name; <br /><br /> <br /><br />alter table table_name drop primary key cascade;----级联删除主键 <br /><br /> <br /><br />alter table table_name disable/enable constraint constraint_name;----使约束暂时无效 <br /><br /> <br /><br />/*删除列，并级联删除此列下的约束条件*/ <br /><br />alter table table_name drop column column_name cascade constraint; <br /><br /> <br /><br />select * from user_constraints/user_cons_columns;---约束条件相关视图 <br /><br /> <br /><br />############## Create Views ##################### <br /><br /> <br /><br />CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[,alias]...)] <br /><br />AS subquery <br /><br />[WITH CHECK OPTION [CONSTRAINT constraint_name]] <br /><br />[WITH READ ONLY [CONSTRAINT constraint_name]]; ------创建视图的语法 <br /><br /> <br /><br />example: Create or replace view testview as select col1,col2,col3 from table_name; ------创建视图 <br /><br />/*使用别名*/ <br /><br />Create or replace view testview as select col1,sum(col2) col2_alias from table_name; <br /><br />/*创建复杂视图*/ <br /><br />Create view view_name (alias1,alias2,alias3,alias4) as select d.col1,min(e.col1),max(e.col1),avg(e.col1) from table_name1 e,table_name2 d where e.col2=d.col2 group by d.col1; <br /><br />/*当用update修改数据时，必须满足视图的col1>10的条件，不满足则不能被改变.*/ <br /><br />Create or replace view view_name as select * from table_name where col1>10 with check option; <br /><br /> <br /><br />/*改变视图的值.对于简单视图可以用update语法修改表数据，但复杂视图则不一定能改。如使用了函数，group by ,distinct等的列*/ <br /><br />update view_name set col1=value1; <br /><br /> <br /><br />/*TOP-N分析*/ <br /><br />select [column_list],rownum from (select [column_list] from table_name order by Top-N_column) where rownum&lt;=N; <br /><br /> <br /><br />/*找出某列三条最大值的记录*/ <br /><br />example: select rownum as rank ,col1 ,col2 from (select col1 ,col2 from table_name order by col2 desc) where rownum&lt;=3; <br /><br /> <br /><br />############# Other database Object ############### <br /><br /> <br /><br />CREATE SEQUENCE sequence_name [INCREMENT BY n] <br /><br />[START WITH n] <br /><br />[{MAXVALUE n | NOMAXVALUE}] <br /><br />[{MINVALUE n | NOMINVALUE}] <br /><br />[{CYCEL | NOCYCLE}] <br /><br />[{CACHE n | NOCACHE}]; -----创建SEQUENCE <br /><br /> <br /><br />example: <br /><br />CREATE SEQUENCE sequence_name INCREMENT BY 10 <br /><br />START WITH 120 <br /><br />MAXVALUE 9999 <br /><br />NOCACHE <br /><br />NOCYCLE; <br /><br /> <br /><br />select * from user_sequences ;---当前用户下记录sequence的视图 <br /><br /> <br /><br />select sequence_name.nextval,sequence_name.currval from dual;-----sequence的引用 <br /><br /> <br /><br />alter sequence sequence_name INCREMENT BY 20 <br /><br />MAXVALUE 999999 <br /><br />NOCACHE <br /><br />NOCYCLE; -----修改sequence,不能改变起始序号 <br /><br /> <br /><br />drop sequence sequence_name; ----删除sequence <br /><br /> <br /><br />CREATE [PUBLIC] SYNONYM synonym_name FOR object; ------创建同义词 <br /><br /> <br /><br />DROP [PUBLIC] SYNONYM synonym_name;----删除同义词 <br /><br /> <br /><br />CREATE PUBLIC DATABASE LINK link_name USEING OBJECT;----创建DBLINK <br /><br /> <br /><br />select * from object_name@link_name; ----访问远程数据库中的对象 <br /><br /> <br /><br />/*union 操作，它将两个集合的交集部分压缩，并对数据排序*/ <br /><br />select col1,col2,col3 from table1_name union select col1,col2,col3 from table2_name; <br /><br /> <br /><br />/*union all 操作，两个集合的交集部分不压缩，且不对数据排序*/ <br /><br />select col1,col2,col3 from table1_name union all select col1,col2,col3 from table2_name; <br /><br /> <br /><br />/*intersect 操作，求两个集合的交集,它将对重复数据进行压缩，且排序*/ <br /><br />select col1,col2,col3 from table1_name intersect select col1,col2,col3 from table2_name; <br /><br /> <br /><br />/*minus 操作，集合减,它将压缩两个集合减后的重复记录, 且对数据排序*/ <br /><br />select col1,col2,col3 from table1_name minus select col1,col2,col3 from table2_name; <br /><br /> <br /><br />/*EXTRACT 抽取时间函数. 此例是抽取当前日期中的年*/ <br /><br />select EXTRACT(YEAR FROM SYSDATE) from dual; <br /><br />/*EXTRACT 抽取时间函数. 此例是抽取当前日期中的月*/ <br /><br />select EXTRACT(MONTH FROM SYSDATE) from dual; <br /><br /> <br /><br />########################## 增强的 group by 子句 ######################### <br /><br /> <br /><br />select [column,] group_function(column)... <br /><br />from table <br /><br />[WHERE condition] <br /><br />[GROUP BY [ROLLUP] group_by_expression] <br /><br />[HAVING having_expression]; <br /><br />[ORDER BY column]; -------ROLLUP操作字，对group by子句的各字段从右到左进行再聚合 <br /><br /> <br /><br />example: <br /><br />/*其结果看起来象对col1做小计*/ <br /><br />select col1,col2,sum(col3) from table group by rollup(col1,col2); <br /><br />/*复合rollup表达式*/ <br /><br />select col1,col2,sum(col3) from table group by rollup((col1,col2)); <br /><br /> <br /><br />select [column,] group_function(column)... <br /><br />from table <br /><br />[WHERE condition] <br /><br />[GROUP BY [CUBE] group_by_expression] <br /><br />[HAVING having_expression]; <br /><br />[ORDER BY column]; -------CUBE操作字，除完成ROLLUP的功能外，再对ROLLUP后的结果集从右到左再聚合 <br /><br /> <br /><br />example: <br /><br />/*其结果看起来象对col1做小计后，再对col2做小计，最后算总计*/ <br /><br />select col1,col2,sum(col3) from table group by cube(col1,col2); <br /><br />/*复合rollup表达式*/ <br /><br />select col1,col2,sum(col3) from table group by cube((col1,col2)); <br /><br />/*混合rollup,cube表达式*/ <br /><br />select col1,col2,col3,sum(col4) from table group by col1,rollup(col2),cube(col3); <br /><br /> <br /><br />/*GROUPING(expr)函数，查看select语句种以何字段聚合，其取值为0或1*/ <br /><br />select [column,] group_function(column)...,GROUPING(expr) <br /><br />from table <br /><br />[WHERE condition] <br /><br />[GROUP BY [ROLLUP] group_by_expression] <br /><br />[HAVING having_expression]; <br /><br />[ORDER BY column]; <br /><br /> <br /><br />example: <br /><br />select col1,col2,sum(col3),grouping(col1),grouping(col2) from table group by cube(col1,col2); <br /><br /> <br /><br />/*grouping sets操作，对group by结果集先对col1求和，再对col2求和，最后将其结果集并在一起*/ <br /><br />select col1,col2,sum(col3) from table group by grouping sets((col1),(col2));
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178205#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 22:02:25 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178205</link>
        <guid>http://adapt2050.javaeye.com/blog/178205</guid>
      </item>
      <item>
        <title>SQL 语句优化原则</title>
        <author>adapt2050</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://adapt2050.javaeye.com">adapt2050</a>&nbsp;
          链接：<a href="http://adapt2050.javaeye.com/blog/178204" style="color:red;">http://adapt2050.javaeye.com/blog/178204</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          SQL 语句优化原则:<br />1． IN 操作符<br />    用IN写出来的SQL的优点是比较容易写及清晰易懂，这比较适合现代软件开发的风格。<br />    但是用IN的SQL性能总是比较低的，从执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别：<br />    将其转换成多个表的连接，如果转换不成功则先执行IN里面的子查询，再查询外层的表记录，如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功，但对于含有分组统计等方面的SQL就不能转换了。 <br />推荐方案：在业务密集的SQL当中尽量不采用IN操作符。可以用exists代替。 <br />SQL Server例子：<br />Exists用法：<br />select * from kj_dept where exists (select * from kj_dept_info where kj_dept.dept_id = dept_id and dept_id=XXX)<br />in用法：<br />select * from kj_dept where dept_id in (select dept_id from kj_dept_info where dept_id=XXX) <br /> <br />2．NOT IN操作符<br />    此操作是强列推荐不使用的，因为它不能应用表的索引。<br />    推荐方案：用NOT EXISTS 或（外连接+判断为空）方案代替。<br /><br />3. &lt;> 操作符（不等于）<br />    不等于操作符是永远不会用到索引的，因此对它的处理只会产生全表扫描。<br />    推荐方案：用其它相同功能的操作运算代替，如<br />    a&lt;>0 改为 a>0 or a&lt;0<br />a&lt;>'' 改为 a>''<br /><br />4．IS NULL 或IS NOT NULL操作（判断字段是否为空）<br />    判断字段是否为空一般是不会应用索引的，因为B树索引是不索引空值的。<br />    推荐方案：用其它相同功能的操作运算代替，如<br />    a is not null 改为 a>0 或a>''等。<br />    不允许字段为空，而用一个缺省值代替空值，如业扩申请中状态字段不允许为空，缺省为申请。<br /><br />5． > 及 &lt; 操作符（大于或小于操作符）<br />    大于或小于操作符一般情况下是不用调整的，因为它有索引就会采用索引查找，但有的情况下可以对它进行优化，如一个表有100万记录，一个数值型字段A，30万记录的A=0，30万记录的A=1，39万记录的A=2，1万记录的A=3。那么执行A>2与A>=3的效果就有很大的区别了，因为A>2时ORACLE会先找出为2的记录索引再进行比较，而A>=3时ORACLE则直接找到=3的记录索引。 <br /> <br />6．LIKE操作符<br />    LIKE操作符可以应用通配符查询，里面的通配符组合可能达到几乎是任意的查询，但是如果用得不好则会产生性能上的问题，如LIKE '%5400%' 这种查询不会引用索引，而LIKE 'X5400%'则会引用范围索引。一个实际例子：用YW_YHJBQK表中营业编号后面的户标识号可来查询营业编号 YY_BH LIKE '%5400%' 这个条件会产生全表扫描，如果改成YY_BH LIKE 'X5400%' OR YY_BH LIKE 'B5400%' 则会利用YY_BH的索引进行两个范围的查询，性能肯定大大提高。 <br /><br />7. UNION操作符<br />UNION在进行表链接后会筛选掉重复的记录，所以在表链接后会对所产生的结果集进行排序运算，删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录，最常见的是过程表与历史表UNION。如：<br />select * from gc_dfys<br />union<br />select * from ls_jg_dfys<br />这个SQL在运行时先取出两个表的结果，再用排序空间进行排序删除重复的记录，最后返回结果集，如果表数据量大的话可能会导致用磁盘进行排序。 <br /><br /><br />推荐方案：采用UNION ALL操作符替代UNION，因为UNION ALL操作只是简单的将两个结果合并后就返回。<br />select * from gc_dfys<br />union all<br />select * from ls_jg_dfys<br /><br />8. WHERE后面的条件顺序影响 <br />WHERE子句后面的条件顺序对大数据量表的查询会产生直接的影响，如：<br />Select * from zl_yhjbqk where dy_dj = '1KV以下' and xh_bz=1<br />Select * from zl_yhjbqk where xh_bz=1  and dy_dj = '1KV以下'<br />以上两个SQL中dy_dj（电压等级）及xh_bz（销户标志）两个字段都没进行索引，所以执行的时候都是全表扫描；第一条SQL的dy_dj = '1KV以下'条件在记录集内比率为99%，而xh_bz= 1的比率只为0.5%，在进行第一条SQL的时候99%条记录都进行dy_dj及xh_bz的比较，而在进行第二条SQL的时候0.5%条记录都进行dy_dj及xh_bz的比较，以此可以得出第二条SQL的CPU占用率明显比第一条低。<br />表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. [越有效地缩小范围的条件越放后]<br /><br />9. 查询表顺序的影响<br />在FROM后面的表中的列表顺序会对SQL执行性能影响，在没有索引情况下，会按表出现的顺序进行链接，由此因为表的顺序不对,会产生十分耗服务器资源的数据交叉。<br /><br />10. 联接列<br />对于有联接的列，即使最后的联接值为一个静态值，优化器是不会使用索引的。我们一起来看一个例子，假定有一个职工表（employee），对于一个职工的姓和名分成两列存放（FIRST_NAME和LAST_NAME），现在要查询一个叫比尔.克林顿（Bill Cliton）的职工。 　　<br />下面是一个采用联接查询的SQL语句：<br />select * from employss <br /> where　　 first_name=''　and　last_name ='Beill Cliton'; <br />上面这条语句完全可以查询出是否有Bill Cliton这个员工，但是这里需要注意，对于last_name创建的索引没有使用。 当采用下面这种SQL语句的编写，系统就可以采用基于last_name创建的索引。 <br />Select * from employee　　 where　　 first_name ='Beill' and last_name ='Cliton';<br />遇到下面这种情况又如何处理呢？如果一个变量（name）中存放着Bill Cliton这个员工的姓名，对于这种情况我们又如何避免全程遍历，使用索引呢？可以使用一个函数，将变量name中的姓和名分开就可以了，但是有一点需要注意，这个函数是不能作用在索引列上。下面是SQL查询脚本： <br />select * from employee <br />　　 where<br />　　 first_name = SUBSTR('&&name',1,INSTR('&&name',' ')-1) <br />　　 and <br />　　 last_name = SUBSTR('&&name',INSTR('&&name',' ')+1)<br /><br />11. Order by语句 　　 <br />ORDER BY语句决定了如何将返回的查询结果排序。Order by语句对要排序的列没有什么特别的限制，也可以将函数加入列中（象联接或者附加等）。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。 　　<br />仔细检查order by语句以找出非索引项或者表达式，它们会降低性能。解决这个问题的办法就是重写order by语句以使用索引，也可以为所使用的列建立另外一个索引，同时应绝对避免在order by子句中使用表达式。 <br />可以使用where子句代替order by。<br /><br />12. 避免使用 ' * '<br />SELECT子句中避免使用 ' * ' 当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 '*' 是一个方便的方法.不幸的是,这是一个非常低效的方法. 实际上,在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间。<br /><br />13. 用表连接替换EXISTS <br />通常来说采用表连接的方式比EXISTS更有效率。 <br /><br />14. 用EXISTS替换DISTINCT <br />当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT. 一般可以考虑用EXIST替换。<br /><br />15. 避免不合理的索引设计<br />合理索引设计，可以尽量使每个SQL都可以利用索引。in、or子句常会使用工作表，使索引失效；如果不产生大量重复值，可以考虑把子句拆开；拆开的子句中应该包含索引。<br />避免在索引列上使用NOT。<br /><br />16. 通过内部函数提高SQL效率<br />复杂的SQL往往牺牲了执行效率，能够掌握运用内部函数解决问题的方法，在实际工作中是非常有意义的。如果有可能，可以使用存储过程来加以实现！<br />但是避免在索引列上使用函数。<br /><br />上面的是以前收集的东西，忘记是哪里载的，仅当学习用。
          <br/><br/>
          <span style="color:red;">
            <a href="http://adapt2050.javaeye.com/blog/178204#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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>Mon, 31 Mar 2008 21:59:50 +0800</pubDate>
        <link>http://adapt2050.javaeye.com/blog/178204</link>
        <guid>http://adapt2050.javaeye.com/blog/178204</guid>
      </item>
  </channel>
</rss>