前天按照《大话ORACLE RAC》一书中介绍RAC和STREAM相关章节的实验步骤在HP rx8640上搭建了类似的实验环境做实验,结果失败了。昨
前天按照《大话ORACLE RAC》一书中介绍RAC和STREAM相关章节的实验步骤在HP rx8640上搭建了类似的实验环境做实验,结果失败了。昨天跟着网上搜来的一篇《一步一步学ORACLE STREAM 》的文章以两个单实例搭建实验平台初获成功,晚上粗略研读了一下Oracle的官方文档《Streams Concepts and Administration 》,无奈太过繁琐,没有耐心和勇气继续读下去。今天闲来无事,硬着头皮再次挑战单实例和RAC下的ORACLE STREAM实现,按照昨天的思路,居然成功了,心里真是高兴。
细想开来,其实单实例也好,RAC 也好,数据库始终只有一个,区别只是实例多少的不同,实际操作步骤还是大同小异的。这让我想起前段时间操作的ORACLE RAC数据库版本升级(从10.2.0.1升级到10.2.0.4),我执行了两次升级,第一次当然是顺利的,第二次升级失败那是必然的了,因为数据库只有一个,升级也只需要一次即可,再次升级就是画蛇添足。这里又联想起无论是参加ORACLE原厂OCP培训还是看到李丙洋的《涂抹ORACLE》里面都着重指出一个容易混淆的概念:实例是实例,数据库是数据库,如果混为一谈就不好了。我之所以犯错,归根结底还是对数据库的概念理解不够透彻。
ORACLE官方文档《concepts》第四十一页里面有一句话说得很清楚:
"An oracle database server consists of an oracle database and an oracle insance. Every time a database is started, a system global area(SGA) is allocated and oracle background processes are started. Then combination of the background processes and memory buffers is called an oracle instance."
这句话里面有两层意思,第一,数据库是由数据文件和实例两部分组成;第二,实例只是一组内存结构,由内存缓冲区和后台进程组成。我们常常对单个数据库进行操作,所以容易混淆数据库和实例的概念, 【 Linux公社 】 认为实例就是数据库,数据库就是实例,实际根本不是这么回事。
理解了这个概念,然后再回过头来做实验,就相对比较容易了。其实无论是单实例数据库也好,ORACLE RAC也好(多实例数据库),只要认清了数据库只有一个,无论是升级也好,构建高可用性也好,按照单个节点的思路走下去就行。就比如说RAC 数据库升级,所不同的无非就是需要额外修改一下参数文件里面的个别参数,操作起来也挺简单的。基本概念很重要,这也是修房子的时候为什么要先打地基,地基打得牢,房子才盖得高,,想想学技术也是这个道理。
下面言归正传,回到此次实验。