Oracle 集群学习笔记
- 格式:doc
- 大小:548.00 KB
- 文档页数:6
一、服务1、Oracle服务有很多,最重要的有两个:OracleOraDb11g_home1TNSListener和OracleServiceORCL。
2、由于服务众多,如果全部默认自动启动的话会导致开机非常的缓慢,而且有些服务并不是经常或者必须要用,可以改为手动启动以缓解开机压力。
3、OracleServiceORCL服务是oracle的主服务比较大而且最好设为自动启动。
4、OracleOraDb11g_home1TNSListener服务是oracle的监听服务也是必须开启的。
5、监听服务很容易出错,主要在于两方面:注册表的误操作和网络环境的变更。
6、注册表误操作主要指的是使用系统优化软件,优化软件将注册表清空,导致服务无法开启。
7、网络环境的变更主要指的是计算机名的改变,在oracle 10g之前在修改主机名生效后,监听五服务就会无法正常启动(11g以后会自动识别)。
这种时候就需要进行手动配置了,修改listener.ora和s=tnsnames.ora两个配置文件,将文件中的HOST=[原主机名]修改成现主机名即可。
8、需要外部程序访问数据库的时候要进行网络管理配置,打开Oracle自带的Oracle Net Manager软件可进行设置,Oracle Net设置->本地->监听程序->数据库服务->添加数据库然后修改数据库的全局数据库名和SID即可(需与本地数据库同名?)二、工具1、数据库操作的命令用sqlplus完成,sqlplus的两种形式:sqlplus.exe纯命令行模式和sqlplus w带窗口的操作环境(较为常用)。
2、在登录的时候可以选择主机字符串,在sqlplus命令行操作中是默认选择为空。
当有多个数据库的时候,就要选择相应的数据库的主机字符串(即数该数据库名称)。
3、在sqlplus中操作数据库既可以直接敲响应命令直接执行,也可以使用ed和@来执行命令。
oracle 笔记Oracle是一种关系数据库管理系统,由Oracle Corporation开发。
以下是关于Oracle的一些笔记:1. 数据库架构:Oracle数据库有两个主要的架构:逻辑架构和物理架构。
逻辑架构包括了数据库对象(表、索引、视图等)以及用户和角色的定义。
物理架构指的是数据在磁盘上的存储方式。
2. 数据库对象:Oracle数据库中的主要对象包括表、索引、视图、触发器、存储过程等。
表是最基本的对象,用于存储数据。
索引用于加快表的查询速度。
视图是一种虚拟表,通过查询一个或多个表返回结果。
触发器是一种在表上定义的操作,当满足某些条件时触发。
存储过程是一段可重复使用的程序代码,用于完成特定的任务。
3. SQL语言:Oracle数据库使用SQL(Structured Query Language)进行数据库操作。
SQL语言包括数据查询语句(SELECT)、数据操作语句(INSERT、UPDATE、DELETE)以及数据定义语句(CREATE、ALTER、DROP)等。
4. 数据库管理:Oracle提供了一套完整的数据库管理工具,包括创建数据库、备份和恢复数据库、监控数据库性能等。
其中,Oracle Enterprise Manager是一个图形化界面的管理工具,可以通过它来管理和监控整个数据库系统。
5. 数据完整性:Oracle数据库通过约束条件来确保数据的完整性。
主键、外键、唯一约束、非空约束等都可以用于限制数据的输入。
此外,还可以使用触发器和存储过程来定义自定义的数据完整性规则。
6. 事务管理:Oracle数据库使用ACID(原子性、一致性、隔离性、持久性)模型来管理事务。
事务是一系列数据库操作的逻辑执行单元,要么全部执行成功,要么全部回滚。
这些只是Oracle数据库的一些基本概念和特点,还有很多其他的内容,如高可用性、性能优化、安全性等。
如果想要深入了解Oracle数据库,可以参考相关的文档和教程。
韩顺平oracle学习笔记第0讲:如何学习oracle一、如何学习oracleOracle目前最流行的数据库之一,功能强大,性能卓越。
学习oracle需要具备一定基础:1.学习过一门编程语言(如:java ,c)2.最好学习过一门别的数据库(sql server,mysql , access)教程推荐:oracle使用教程,深入浅出oracle记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解Oracle基础部分:oracle基础使用; oracle用户管理; oracle表管理Oracle高级部分:oracle表的查询; oracle的函数; oracle数据库管理;oracle 的权角色; pl/sql 编程;索引,约束和事物。
期望目标:1 学会安装、启动、卸载oracle2 使用sql *plus工具3 掌握oracle用户管理4 学会在oracle中编写简单的select语句第1讲:基础语法内容介绍:1.为什么学习oracle2.介绍oracle及其公司的背景3.学会安装、启动、卸载oracle4.oracle开发工具5.Sql*plus的常用命令6.oracle用户管理一、主流数据库包括:●微软:sql server 和 access●瑞典:mysql AB公司●IBM公司:DB2●美国sybase公司:sybase●IBM公司:infromix●美国oracle公司:oracle(目前最流行的之一)二、oracle安装,启动及卸载1.系统要求:操作系统最好为windows2000内存最好在256M以上硬盘空间需要2G以上2.oracle安装会自动的生成sys和system两个用户说明:○1Sys用户是超级用户,具有最高权限,具有sysdba角色,create database 的权限,默认密码是manager○2System 用户是管理操作员,权限也很大,具有sysoper角色,没有create database权限,默认密码是 change_on_install○3一般讲,对数据库维护,使用system用户登录就可以了3.启动oracle右键单击我的电脑->服务和应用程序:服务->启动OracleServiceMYORA1(MYORA1是安装oracle时起的名字各有不同)和OracleOracleHome90TNSLlistener4.卸载oracle1、先关掉oralce,net stop OracleServiceORCL(ORCL是我的实例名字,换成你的),或者去我的电脑服务中关闭2、开始->程序->Oracle - oracle的版本号,我的是10ghome->Oracle Installation Products->Universal Installer 卸载oracle3、进注册表,regedit,删除选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。
oracle 笔记摘要:一、Oracle 简介1.Oracle 的发展历程2.Oracle 的产品和服务二、Oracle 数据库的基本概念1.数据库管理系统2.关系型数据库3.Oracle 数据库的结构三、Oracle 数据库的安装与配置1.安装Oracle 数据库的前提条件2.安装过程及注意事项3.配置Oracle 数据库四、Oracle 数据库的管理1.数据库的启动与关闭2.数据库的备份与恢复3.用户与权限管理五、SQL 语言基础1.SQL 简介2.SELECT 查询语句3.INSERT、UPDATE 和DELETE 操作语句六、PL/SQL 编程1.PL/SQL简介2.存储过程与函数3.触发器与异常处理七、Oracle 数据库的应用1.Oracle 数据库在企业级应用中的优势2.Oracle 数据库在典型行业的应用案例正文:一、Oracle 简介Oracle(甲骨文)公司成立于1977 年,总部位于美国加州,是全球著名的数据库软件及解决方案供应商。
Oracle 的产品和服务涵盖了数据库、应用软件、中间件、云计算等领域,广泛应用于企业、政府、金融、医疗等各个行业。
二、Oracle 数据库的基本概念1.数据库管理系统:数据库管理系统(DBMS)是一种用于存储、检索和管理数据的计算机软件。
它提供了对数据的高效组织、存储、检索、更新和维护功能。
2.关系型数据库:关系型数据库是基于关系模型的数据库,采用表格形式存储数据,并通过SQL(结构化查询语言)进行操作。
Oracle 数据库是一种关系型数据库,具有强大的数据管理功能和高度的数据安全性。
3.Oracle 数据库的结构:Oracle 数据库由物理结构和逻辑结构组成。
物理结构包括数据库文件、数据块、表空间等;逻辑结构包括表、视图、索引等。
三、Oracle 数据库的安装与配置1.安装Oracle 数据库的前提条件:首先,需要确保计算机硬件满足Oracle 数据库的最低要求;其次,需要获取Oracle 数据库的安装文件,这些文件通常可以从Oracle 官网下载。
SMP(对称多处理)解决了单处理器系统达到其处理极限时出现的问题。
SMP就是在一个计算机内使用多个处理器CPU来提高处理能力(这些处理器共享内存)。
SMP 计算机通过并行机制实现高性能,这种机制对处理多任务进行分割,然后在可用CPU上执行,通过添加更多的CPU和内存实现高伸缩性。
SMP与群集在基本体系结构方面具有相似性,但这两种体系结构在保持缓存一致性的级别和延迟方面完全不同:SMP为缓存一致性,CPU多核心之间共享缓存,多颗CPU之间共享内存;群集则使用缓存融合,节点中的CPU间共享内存,节点之间则使用缓存融合。
Oracle Exadata传统存储体系结构中的表扫描处理流程:1.应用层(客户端)发出SQL查询,假设这是一条带有where条件的select语句2.数据库内核查询数据字典,确定存储表数据的文件和扩展块3.数据库内核发出I/O调用,从磁盘中读取所有的物理数据块4.来自磁盘的物理数据块加载到数据库服务器的内存中(SGA中的缓存中)5.数据库服务器读取内存缓冲区,根据where条件筛选满足条件的行6.匹配的行被返回到客户端。
如果这些表比较小且有很好的索引,这种传统SQL处理过程会工作良好,但对于涉及多个大型表的复杂业务查询来说,从磁盘读取所有数据并将他们传送到主机内存是一项高成本任务,需要通过网络将大量原始数据传送到主机内存,此外不满足条件的记录在主机级别被丢弃,这是一种效率极低的I/O操作。
Exadata智能扫描模型中,整个工作流程将不同,执行表扫描的查询被卸载到exadata存储服务器上,只有满足条件的记录才会返回数据库服务器。
1.应用层发出select查询2.当数据库服务器检测exadata时,它构建一个表示这一SQL语句的exadata构造(称为iDB命令),并将其发送到exadata存储服务器,iDB是一种基于无线带宽协议的数据传送机制(低延迟,高带宽),在exadata存储服务器和数据库服务器之间通信使用。
Oracle学习笔记一.Oracle的卸载1)软件环境:1、Windows xp+ORACLE 8.1.72、ORACLE安装路径为:C:\ORACLE2)实现方法:1、开始->设置->控制面板->管理工具->服务->停止所有Oracle服务。
2、开始->程序->Oracle-OraHome81->Oracle Installation Products->Universal Installer。
卸装所有Oracle产品,但Universal Installer本身不能被删除。
3、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
4、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。
5、运行refedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,滚动这个列表,删除所有Oracle入口。
6、我的电脑-->属性-->高级-->环境变量。
删除环境变量CLASSPATH和PATH中有关Oracle的设定。
删除Oracle在该值中的内容。
注意:path中记录着一堆操作系统的目录,在windows 中各个目录之间使用分号(; )隔开的,删除时注意。
删除PATH环境变量中关于Oracle 的值时,将该值全部拷贝到文本编辑器中,找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到PATH环境变量中,这样相对而言比较安全。
7、重新启动计算机,重起后才能完全删除Oracle所在目录。
8、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标。
9、删除\Program Files\Oracle目录。
oracle笔记Oracle是一种面向对象的数据库管理系统,被广泛应用于企业级应用程序的开发和管理。
本文将介绍Oracle的基本概念、架构、安装和配置、SQL语言、PL/SQL语言、Oracle的安全性和备份恢复等方面。
一、Oracle的基本概念1. 数据库(Database)数据库是指存放数据的容器,它可以被看作是一个有组织的、可共享的、永久的数据集合。
Oracle数据库是一个基于客户机/服务器体系结构的数据库,它支持多用户、高并发、高可靠性、高性能的数据管理。
2. 实例(Instance)实例是指在一台物理服务器上运行的Oracle数据库进程和内存结构的集合。
每个实例都有一个唯一的实例名,它可以被用来在网络上标识这个实例。
当一个Oracle数据库启动时,它会创建一个实例。
3. 数据字典(Data Dictionary)数据字典是指Oracle数据库中存储数据库对象、用户、权限、表空间等信息的一组元数据。
它提供了一种标准的方式来查看和管理数据库的结构和内容。
4. 表(Table)表是指Oracle数据库中存储数据的基本单元,它由一组有序的列组成,每列都有一个名称和一个数据类型。
表可以包含任意数量的行,每行都是一个记录,包含一组值。
5. 列(Column)列是指表中的一个字段,它包含一个名称和一个数据类型。
每个表可以拥有任意数量的列,每个列都可以存储一个特定的数据类型。
二、Oracle的架构Oracle数据库的架构可以被分为两个部分:物理架构和逻辑架构。
1. 物理架构物理架构是指Oracle数据库在磁盘上的存储结构,包括数据文件、控制文件、归档日志、重做日志等组成部分。
Oracle数据库的物理架构是一个分层的、模块化的结构,它包含了多个层次的存储结构,从最底层的操作系统文件到最顶层的表和视图。
2. 逻辑架构逻辑架构是指Oracle数据库在内存中的存储结构,包括SGA(System Global Area)、PGA(Program Global Area)等组成部分。
Oracle学习笔记Oracle学习笔记Oracle学习笔记(1) Oracle数据库编程基础文章分类:数据库这段时间出差,一直在搞需求分析和设计,每天都是写文档画UML,都有好几个月没有写代码了,只怕都快忘记了!这是我用Oracle时学习的Oracle编程做的笔记,今天也发上来与大家分享一下,一共有八章。
现在在有时间就学一下EJB3,因为在项目中会用到,等学完了把EJB3的笔记也发上来和大家分享!通过SqlPlus登录Oracle ,sqlplus 用户名/密码@数据库名建表Sql代码1.create table demo(2. id number(8),3. name varchar2(20)4.)插入数据Sql代码1.insert into demo values(1,'zhangshang');2.insert into demo values(2,'lishi');提交Sql代码/doc/fe11207420.html,mit;查询数据字典(table_name='这里的值要大写')Sql代码1.select * from dba_tab_cols a where a.table_name='DEMO';创建视图create or replace:如果该视图存在就替换,如果不存在就创建1.create or replace view myView as select id 编号,name 姓名 from demo;2.select * from myView;创建同义词(同义词相当于表的别名或逻辑名,可以通过该名称来操作相对应的物理表)在分布式Oracle数据库中,标识一个对象需要四部分:主机名、实例名、模式名、对象名。
例如********************,其中模式名是SYSTEM,对象名是auths,PX.orcl是一个数据库链,它指向服务器PX上的实例orcl,我们可以为其指定一个同义词,使所有的用户都可以通过简单的同义词来访问表********************创建公有的同义词Sql代码1.create public synonym syn1 for demo;创建私有的同义词Sql代码1.create synonym syn2 for demo;创建并使用序列创建序列的完整语法:create sequence 序列名 increment by 增量种子数 start with 起始数字maxvalue 最大值;我们可以使用序列的两个属性nextval和currval,其中nextval 是返回下一个可用的序列值,而currval用于获得当前序列的值创建序列的简单方法Sql代码1.create sequence mySeq;使用创建的序列Sql代码1.insert into demo values(mySeq.nextval,'ddd');获得当前序列的值1.select mySeq.currval from dual;删除一条记录Sql代码1.delete from demo where id=2;查询所有记录Sql代码1.select * from demo;格式化日期时间Sql代码1.select to_char(sysdate,'yyyy-MM-dd hh24:mm:ss') 格式化日期 from dual;Oracle学习笔记(2) PLSQL编程基础文章分类:数据库这是第二章的学习笔记,学习完第一章的基础之后,从现在开始要学习Oracle编程了……,希望大家能多给俺一些支持啊!编程时使用的工具是PLSQL Developer 7.1.4Sql代码1.select * from Employee;2.select * from dba_tab_cols t where t.table_name='EMPLOYEE'; Sql代码1.-- 声明部分,用于定义变量2.declareconstant用于定义常量,当定义常量时必须指定它的初始值,且数据不能改变Sql代码1.n_aaa constant number(4,2) :=5.5;boolean 类型的值只能用于sqlplus语句块中,不能用在表字段的数据类型中not null 用于强制初始化变量不能为空,此时必须为变量指定值default用于指定变量或常量的默认值1.v_valid boolean not null default false;2.v_name varchar2(20);为了确保变量使用合适的数据类型和长度,可以使用%type属性定义变量,它会按照数据库列或其它变量来确定新变量的类型和长度Sql代码1.v_job Employee.Job%type;将v_job2定义为与变量v_job的数据类型和长度完全一致Sql代码1.v_job2 v_job%type;复合变量:处理单行单列数据时,用标量变量;处理单行多列时,用PL/SQL 记录;处理单列多行时,用集合;处理多行多列数据时,可以结合使用PL/SQL记录和集合PL/SQL记录(RECORD):方法一:emp_recode_type 是PL/SQL记录类型并包含有三个成员(name,salary,job)Sql代码1.type emp_recode_type is record(2. name /doc/fe11207420.html,%type,3. salary employee.salary%type,4. job employee.job%type5.);emp_recode是记录变量Sql代码1.emp_recode emp_recode_type;方法二:使用表名的%rowtype 属性定义记录变量注意:用%rowtype 属性定义记录变量时,记录成员个数、名称、类型必须与表或视图的列的个数、名称和类型完全相同Sql代码1.emp_recode2 employee%rowtype;集合类型PL/SQL 表(也称索引表,下标可以为负数,下标没有上限和下限,并且元素的个数无限)Sql代码1.--这里的table 实指集合2.type name_table_type is table of /doc/fe11207420.html,%type index by bi nary_integer;3. name_table name_table_type;嵌套表:嵌套表的下标不能为负值,其元素的个数没有限制并可以使用表列的数据类型在使用嵌套表时必须先用create type 语句建立嵌套表类型嵌套表只是比PL/SQL 表少了 index by binary_integerSql代码1.type num_table_type is table of number(4);2.num_table num_table_type;varray(变长数组):varray的元素个数是有限制的,在使用其之前必须先建立varray 类型在此创建的varray只能存放20个varchar2类型的数据注意:嵌套表列数据需要存储在专门的存储表中,而varray数据则与其它列数据一起存放在表字段中Sql代码1.type v_varray_type is varray(20) of varchar2(10);2.n_empno employee.empno%type;Sql代码1.-- 程序开始2.begin执行部分,执行PL/SQL/和SQL语句可以用into将从表人查询出来的值赋给指定的变量将值赋给变量有两种方法,一是用 := ,二是用 into& 符号用于提示用户输入一个值,& 为sqlplus的替代变量Sql代码1.n_empno := &输入你要查询的员工编号:;2.select Name,Job into v_name,v_job from Employee where empno=n_empno;这里的 || 号与Java中的 + 号类似,表示要将两边的字符串连接起来dbms_output是Oracle所提供的系统包,用于输出数据或消息,而put_line是该包所包含的过程,用于输出字符串信息并换行当在CMD中使用dbms_output包时,必须要先将sqlplus 的环境变量serveroutput 设置为 onSql代码1.dbms_output.put_line('你查询的员工是:' || v_name || ' 他的工作是:' || v_job);引用记录变量的成员并赋值(赋值可以用 := 和 into 两种方法)注意:用sele ct……into 语句给记录变量赋值时,select语句中的列名列表的名称和个数、类型必须与记录变量的成员个数、名称、类型完全相同Sql代码1.dbms_output.put_line('你查询的员工是:' || v_name || ' 他的工作是:' || v_job);2.3.emp_/doc/fe11207420.html, := '钱森';4. dbms_output.put_line('引用记录变量的成员并赋值(Recode):' || emp_/doc/fe11207420.html,);5.6. select name,job into emp_/doc/fe11207420.html,,emp_recode2.jobfrom employee where empno=2;7. dbms_output.put_line('引用记录变量的成员并赋值(RowType):' || emp_/doc/fe11207420.html, || ' 的工作是:' || emp_recode2.job);8. -- 使用PL/SQL表(索引表)9. select name into name_table(-50) from employee where empno=1;10. dbms_output.put_line('雇员名:' || name_table(-50));11. -- 使用嵌套表12. -- 必须先设置嵌套表的下标,然后才能对该集合进行赋值13. num_table := num_table_type(1,2,3,4,5);14. num_table(1) := 10;15. num_table(5) := 100;16. dbms_output.put_line('使用嵌套表:' || num_table(1) || ',' || num_table(5));17.18.exception19. -- 异常处理部分20. when NO_DATA_FOUND then dbms_output.put_line('查询不到员工编号为' || n_empno || '的员工!');21. when TOO_MANY_ROWS then dbms_output.put_line('数据完整性错误,员工编号' || n_empno || '重复!');22. when OTHERS then dbms_output.put_line('PL/SQL执行错误!' || sqlerrm);23.-- 程序结束24.end;25./Oracle学习笔记(3) PLSQL程序控制结构文章分类:数据库这是第三章的学习笔记,学习完第二章的编程基础之后,从现在开始要学习Oracle编程了……,希望大家能多给俺一些支持啊!这周六总算是不用加班,可以好好出去玩一下了!今天去武大看樱花了,哈哈,不错!编程时使用的工具是PLSQL Developer 7.1.4Sql代码1.select * from employee;2.select * from dba_tab_cols t where t.table_name='EMPLOYEE';Sql代码1.declare2. n_empno employee.empno%type;3. v_name /doc/fe11207420.html,%type;4. n_salary employee.salary%type;5. v_temp varchar2(30);6. n_temp number(5) := 1;7. -- 自定义异常8. e_exception exception;exception_init 是一个编译时指令,用于将一个内部错误与异常的名称关联。
oracle 笔记Oracle是一种关系型数据库管理系统 (RDBMS),广泛应用于企业级应用程序中。
以下是一些关于Oracle的常见笔记:1. 安装Oracle:Oracle可以在Windows、Linux和Solaris等操作系统上安装。
安装过程中需要指定数据库的相关信息,如数据库名称、端口号和管理员密码等。
2. 数据库实例:Oracle数据库由一个或多个数据库实例组成。
每个数据库实例包含一个或多个数据文件和日志文件。
数据库实例由SGA (System Global Area)和后台进程组成。
3. 数据库对象:Oracle支持多种数据库对象,如表、视图、索引、序列和触发器等。
这些对象可以存储和管理数据。
4. SQL语言:Oracle使用结构化查询语言 (SQL) 进行数据库操作。
SQL语句可以用于创建、修改和查询数据库中的数据。
5. 表空间:表空间是Oracle中逻辑存储空间的单位。
每个表空间包含一个或多个数据文件,用于存储表和索引数据。
6. 数据备份和恢复:Oracle提供了多种备份和恢复机制,如全备份、增量备份和归档日志等。
这些机制可以保护数据库免受数据损坏和丢失的影响。
7. 性能优化:Oracle提供了多种性能优化工具和技术,如索引、分区和查询优化器。
这些工具可以帮助提高数据库的性能和响应时间。
8. 数据库安全:Oracle提供了多种安全功能,如用户认证、访问控制和数据加密等。
这些功能可以保护数据库免受未经授权的访问和数据泄露的威胁。
9. 远程连接:Oracle支持远程连接,可以从远程计算机访问和管理数据库。
远程连接使用Oracle客户端软件进行配置和连接。
10. 高可用性:Oracle支持多种高可用性解决方案,如数据复制、故障转移和备份服务器等。
这些解决方案可以确保在数据库故障时继续提供服务。
1、Oracle 集群原理概述
1.1 Oracle 集群的总体结构
Oracle集群实质上就是使多个服务器访问同一个Oracle数据库,这样一方面可以避免一个服务器宕机时数据库不能访问(即高可用性) ,同时也可以进行并行运算和负载均衡。
要安装Oracle的集群,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。
同时至少需要两个软件:Oracle数据库软件(集成了RAC组件)和Oracle ClusterWare。
Oracle clusterware也可以使用经过了RAC认证的第三方集群软件来代替。
同时所有服务器上的OS都应该是同一类OS。
从软件组件上来讲,一个Oracle 集群由多台服务器组成,每台服务器有自己的监听器(Listener),用于监听自己的网络端口;每台服务有自己的Oracle RAC服务,用于数据库的集群访问;每台服务器有自己的集群就绪服务(clusterware) ,用于集群管理;所有的服务器通过自己的操作系统访问一个共享的存储设备,共享存储设备的存储机制可以使用裸设备(Raw)、Oracle集群文件系统(OCFS)、自动存储管理(ASM)或网络附属存储(NAS)。
当有客户端访问时,由上而下依次调用相应的软件。
从逻辑结构上来讲,集群中的每台服务器有一个实例,每台服务器上的实例都对应到同一个数据库。
关于Oracle软件和本地存档日志,既可以存储在本地磁盘上(如下图),也可以存储在共享磁盘上,这取决于在安装时选择的存储机制。
下图显示了更详细的逻辑结构。
客户端首先访问某个实例,让后再通过集群管理软件访问到数据库的数据;节点之间使用内部连接进行通讯。
1.2 Oracle Clusterware 体系结构
Oracle Clusterware是一个集群软件,使用它做集群的所有操作系统必须相同。
使用Oracle Clusterware将多个装有相同操作系统的服务器捆绑到一起,当对这些集群的服务器进行访问时,就像访问一台服务器一样。
Oracle Clusterware要求两个集群组件:
(1)voting disk(表决磁盘):用于记录集群节点的信息。
虽然名字是磁盘,但是如果使用的是OCFS文件系统,它是以一个文件的方式存在。
RAC 用它来确定哪些实例是集群实例。
当
网络发生故障时,还要用它存储的信息进行健康检查(例如检查成员服务器是否可用)和仲裁。
表决磁盘必须存放在共享磁盘上。
(2)Oracle Cluster Registry(OCR,集群注册),用于记录集群配置信息。
集群注册也必须存放在共享磁盘上。
1.3 RAC 体系结构与进程
可以选择一个RAC支持的存储机制来存储这些数据。
Oracle10g推荐使用自动存储管理(ASM)来存储RAC数据库。
可以使用下列存储机制来存储RAC数据库:
(1)自动存储管理(ASM)
(2)Oracle 集群文件系统(OCFS2),也可以使用通过RAC认证的第三方集群文件系统
(3)网络文件系统(NFS)
(4)裸设备(Raw devices)
在存储结构上,RAC 数据库与单实例数据库不同的地方是:
(1)每一个节点的instance都有自己的SGA
(2)每一个节点的instance都有自己的background process
(3)每一个节点的instance都有自己的redo logs
(4)每一个节点的instance都有自己的undo表空间
(5)所有节点都共享一份datafiles和controlfiles
当对Oracle数据库进行集群时,所有的集群节点必须连接到一个局域网(LAN) ,以便应用程序和用户访问RAC数据库。
应用程序用该使用Oracle数据库服务功能连接到数据库,数据库服务允许定义规则和特性来控制用户和应用程序如何连接到数据库实例,特性包括:唯一名称(unique name)、负载均衡(load balance)和故障处理(failover) 。
Oracle 网络服务(Net Services)允许对应用程序的连接进行负载均衡以使应用程序交叉连接到每个集群实例上。
每个RAC数据库有两个或多个实例,每个实例有自己的内存结构和后台进程。
在RAC 环境中,每个实例的内存结构和后台进程都是相同的,它们看起来像单一系统的影像。
每个实例的SGA内有一个缓冲区(buffer cache) ,使用缓存融合(Cache Fusion)技术,每个实例就像使用单一缓存一样使用集群实例的缓存来处理数据库。
因此,RAC实例的SGA要比单一实例的SGA大。
如下图所示,图中所示为使用缓存融合技术对数据进行处理的一个简单过程,图中标注中的序号为访问的步骤,共享缓存分布在所有节点上。
RAC使用两个进程来保证每个实例都包含一个查询或事务所需要的数据:Global Cache Service (GCS) 和the Global Enqueue Service (GES)。
GCS 和GES 使用Global Resource Directory (GRD)来维护和记录每个数据文件的状态。
GRD(全局资源目录)的内容分布在所有活动的实例上,这又无形中增加了RAC 实例的SGA的容量。
RAC的特定进程与GRD结合, 使得RAC可以使用缓存融合, 下面是RAC的几个进程:
(1)LMS—Global Cache Service process(全局缓存服务进程)
(2)LMD—Global Enqueue Service Daemon (全局查询服务守护进程)
(3)LMON—Global Enqueue Service Monitor (全局查询服务监视进程)
(4)LCK0—Instance Enqueue Process (实例查询进程)
1.4 Linux(X86)下Oracle 集群的存储选项
要知道如何规划安装的磁盘,首先要了解需要存储那些内容,每部分内容的容量至少需要多少,每部可以如何存储。
下图列出了在Oracle集群需要存储的软件和数据:
下表显示了可以用来存储Oracle集群中各部分的存储机制:
从存储位置中可以看出,所有的内容均可使用网络磁盘,但是网络磁盘要求有NAS设备。
如果不使用NAS设备,除软件外,其他的数据都必须存储在共享磁盘上。
对于Oracle数据库软件,如果要存储在共享磁盘上(所有服务器共享一个Oracle Home),需要使用OCFS2 文件系统。
再来看Clusterware和Oracle数据库存储的选项, 下图显示了Clusterware和Oracle数据库支持的存储选项。
从上图可以看出, 要想使用单一文件系统, 必须使用OCFS2或NFS文件系统。
但是,Oracle 10g提供了非常方便的存储管理系统ASM,因此,大多数情况下建议使用OCFS2来存储Clusterware的数据和Oracle数据库软件,使用ASM来存储数据库文件。
综上所述,在Linux(x86)下安装Oracle集群,推荐采用以下几种策略之一:
(1)将Oracle数据库软件安装在本地磁盘(每个节点上一个拷贝),使用裸设备来存储Clusterware,使用ASM来存储数据库和恢复文件。
如下图所示。
(2)数据全部使用OCFS2来存储,并将Oracle数据库软件安装在OCFS2上(所有节点共享一个Orache Home)如下图所示。
(3)将Oracle数据库软件安装在共享磁盘上(所有节点共享一个Orache Home) ,使用ASM
存储恢复文件和数据库。
如下图所示。
下。
使用第 3 种策略对于管理和扩展以及I/O 负载均衡会更好。