Oracle有很多值得学习的地方,这里我们主要介绍Oracle文档,包括介绍RBO优化器等方面。在Oracle文档上说:对于RBO来说,以from 子句中从右到左的顺序选择驱动表,即最右边的表为第一个驱动表,这是其英文原文:All things being equal RBO chooses the driving order by taking the tables in the FROM clause RIGHT to LEFT。
不过,在我做的测试中,从来也没有验证过这种说法是正确的。我认为,即使在RBO中,也是有一套规则来决定使用哪种连接类型和哪个表作为驱动表,在选择时肯定会考虑当前索引的情况,还可能会考虑where 中的限制条件,但是肯定是与where中限制条件的位置无关。
如果我创建3个表:
执行查询:
通过上面的这些例子,使我对Oracle文档上的” All things being equal RBO chooses the driving order by taking the tables in the FROM clause RIGHT to LEFT”这句话持怀疑态度。此时,我也不能使用Hints来强制优化器使用nested loop,如果使用了hints,这样就自动使用CBO优化器,而不是RBO优化器了。
【编辑推荐】

oracle学习过程
Oracle有很多值得学习的地方,Oracle体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对Oracle有一个总体的认识,少走一些弯路。 一、定位 Oracle分两大块,一块是开发,一块是管理。 开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。 有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭;管理则需要对Oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。 因为数据库管理的责任重大,很少公司愿意请一个刚刚接触Oracle的人去管理数据库。 对于刚刚毕业的年轻人来说,可以先选择做开发,有一定经验后转型,去做数据库的管理。 当然,这个还是要看人个的实际情况来定。 二、学习方法 我的方法很简单,就是:看书、思考、写笔记、做实验、再思考、再写笔记。 看完理论的东西,自己静下心来想想,多问自己几个为什么,然后把所学和所想的知识点做个笔记;在想不通或有疑问的时候,就做做实验,想想怎么会这样,同样的,把实验的结果记下来。 思考和做实验是为了深入的了解这个知识点。 而做笔记的过程,也是理清自己思路的过程。 Oracle学习过程是使一个问题由模糊到清晰,再由清晰到模糊的过程。 而每次的改变都代表着你又学到了一个新的知识点。 Oracle学习过程也是从点到线,从线到网,从网到面的过程。 当点变成线的时候,你会有总豁然开朗的感觉。 当网到面的时候,你就是高手了。 很多网友,特别是初学的人,一碰到问题就拿到论坛上来问,在问前,你有没有查过书,自己有没有研究过,有没有搜索一下论坛?这就叫思维惰性。 由别人来回答你的问题,会让你在短时间内不费劲地弄懂这个知识点,然而通过自己的努力去研究它,不但会更深入的了解这个知识点,更重要的是在研究的过程会提高你解决问题和分析问题的能力。 总的来说,没有钻研的学习态度,不管学什么东西,都不会成功的。 当然,初学的人很多时候是因为遇到问题时,无从下手,也不知道去哪里找资料,才会到论坛上提问题的。 但我认为,在提问的时候,是不是可以问别人是如何分析这个问题?从哪里可以找到相关的资料?而不是这个问题的答案是什么?授人以鱼不如授人以渔。
oracle数据库的导入和导出应注意些什么
IMP 和 Exp命令的导出导入操作都是很简单的,可以查一下帮助怎么做,如果过程中有问题,也有Log显示出来,如果太长了可以重定向输出到一个文本文件中,这样便于查看。
另外,使用PL/SQL developer的菜单里也有相应的操作选项,很方便的。
Oracle中归档模式的定义
什么时候开始学oracle的? 我们知道数据库有至少两组在线日志文件,这些日志文件是循环使用的。 归档模式就是当在线日志文件被循环重用(覆盖)之前保存一份副本文件到其他位置,这样我们就保留了历史上对数据库的所有修改日志记录,对数据库恢复很有意义。
发表评论