RAC(实时应用集群), 是Oracle新版数据库中采用的一项新技术。
优点:
多节点负载均衡;提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化;
通过并行执行技术提高事务响应时间----通常用于数据分析系统;通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统;节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;可扩展性好,可以方便添加删除节点,扩展硬件资源。
缺点:
相对单机,管理更复杂,要求更高;在系统规划设计较差时性能甚至不如单节点;可能会增加软件成本(如果使用高配置的pc服务器,Oracle一般按照CPU个数收费)。
oracle 优势很多,大部分银行保险电信大部分是用oracle处理的
优势主要 有
1、处理速度快,非常快
2、安全级别高。支持快闪以及完美的恢复,即使硬件坏了 也可以恢复到故障发前的1s
3、几台数据库做集群数据库,可以做到几秒s以内故障转移,而且数据物理完全一致,现在集群一直是最优秀的解决方案,对于银行保险没有其他太多的选项{数据不丢,快速切换,负载均衡}
4、网格控制,以及 数据仓库方面 也非常强大
对了免费 以及 开源的 言论 都是错误的。。。oracle产品及服务都是付费的,而且价格不菲。比其他数据库要贵,物有所值。oracle不是开源的。不过可以在redhat 或者其他开源 *** 作系统上安装。
mysql在sun没被oracle收购是开源的,免费的,之后oracle公司打算 把mysql打造成不开源,收费模式的。
RAC,全称real application clusters,译为“实时应用集群”, 通俗点讲就是数据库集群
它是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。
优点Oracle RAC主要支持Oracle9i、10g、11g版本,可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。
(1)多节点负载均衡;
(2)提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化;
(3)通过并行执行技术提高事务响应时间----通常用于数据分析系统;
(4)通过横向扩展提高每秒交易数和连接数----通常对于联机事务系统;
(5)节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;
(6)可扩展性好,可以方便添加删除节点,扩展硬件资源。
缺点(1)相对单机,管理更复杂,要求更高;
(2)在系统规划设计较差时性能甚至不如单节点;
(3)可能会增加软件成本(如果使用高配置的pc服务器,Oracle一般按照CPU个数收费)。
在Oracle9i之前,RAC的名称是OPS (Oracle parallel Server)。RAC 与 OPS 之间的一个较大区别是,RAC采用了Cache Fusion(高速缓存合并)技术。在 OPS 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用Cache fusion时,RAC的各个节点的数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。
(1)QPS(每秒Query量)
QPS = Questions(or Queries) / seconds
mysql > show global status like 'Question%';
(2)TPS(每秒事务量)
TPS = (Com_commit + Com_rollback) / seconds
mysql > show global status like 'Com_commit';
mysql > show global status like 'Com_rollback';
大家对通常oracle中的cluster的理解是不准确的,经常和sql server中的cluster index混淆。Cluster是存储一组table的一种方法,这些table共享同一数据块中的某些相同column,并把不同table在这一共享column上值相同的data row存储到同一block上。在sql server中的cluster index强制行根据index key按存储顺序存储,这一点和oracle中的IOT类似。
从下图中我们可以清楚的看到cluster 和非cluster 的一组table的物理存储的区别。在cluster中,单个block上的数据可能来自多个table,概念上可以存储“预连接”的数据。单个table也可以使用cluster,即根据某些column按组存储数据。如图中,所有部门ID为 20和 110的部门信息和员工信息的数据都将存储在同一block。注意,这里存储的并不是排序的数据(那是IOT的任务),存储的是按部门ID分组集合的数据,是以heap的方式存储的。因此,部门20刚好和部门110相邻,而部门99和部门100相距很远(硬盘的物理位置)。
当单个block放不下时,额外的block将链接到最初的block,来包容溢出的数据,这种方式和在IOT中溢出block非常相似。
现在我们看看如何创建一个cluster。在cluster中创建一系列table是很简单的,对象存储定义如PCTFREE,PCTUSED,INITIAL都是和cluster相关的,而不是和table相关。这是因为在cluster中存储了若干table,每个table在同一个block中拥有不同的PCTFREE没有意义。
SQL> create cluster e_d_cluster
2 (deptid number(2))
3 size 1024
4 /
Cluster created
这里首先创建了一个index cluster。这个cluster的key为 deptid,在table中这个列可以不命名为deptid,但数据类型number(2)必须匹配。Size选项是用来告诉oracle预计有1024
字节数据和每个cluser key相关。Oracle将使用这个信息来计算每个block能容纳的最大cluster key数目。因此size太高,在每一block将得到很少的key,并且将使用比需要的更多的空间;设置容量太低,将得到过多的数据连接,这将偏离使用cluster的目的。Size是cluster的重要参数。
现在我们来创建cluster index。在把数据放入之前,需要索引cluster。Cluster index的作用是存储一个cluster key,并且返回包含该key的block的地址。
SQL> create index e_d_cluster_idx
2 on cluster e_d_cluster
3 /
Index created
Cluster key 的index可以使用index所有的正常的存储参数,并且可以位于另一个tablespace。它是一个正常的index,能够索引到一个cluster,并且也包含一个完全null的条目。
我们在cluster中创建table:
SQL> create table department
2 (deptid number(2) primary key,
3 dname varchar2(14),
4 loc varchar2(13))
5 cluster e_d_cluster(deptid);
Table created
SQL> create table employee
2 (empid number primary key,
3 ename varchar2(10),
4 job varchar2(10),
5 mgr number,
6 hiredate date,
7 sal number,
8 comm number,
9 deptid number(2) references department(deptid))
10 cluster e_d_cluster(deptid);
Table created
这里创建table与普通的table唯一的区别就是使用了cluster关键字,我们往table中装载数据:
SQL> begin
2 for x in(select from scottdept)
3 loop
4 insert into department
5 values(xdeptno,xdname,xloc);
6 insert into employee
7 select from scottemp
8 where deptno = xdeptno;
9 end loop;
10 end;
11 /
PL/SQL procedure successfully completed
我们可以看到目前table中装载了如下数据:
SQL> select from department;
DEPTID DNAME LOC
------ -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select from employee;
EMPID ENAME JOB MGR HIREDATE SAL COMM DEPTID
---------- ---------- ---------- ---------- ----------- ---------- ---------- ------
7782 CLARK MANAGER 7839 1981-6-9 2450 10
7839 KING PRESIDENT 1981-11-17 5000 10
7934 MILLER CLERK 7782 1982-1-23 1300 10
7369 SMITH CLERK 7902 1980-12-17 800 20
7566 JONES MANAGER 7839 1981-4-2 2975 20
7788 SCOTT ANALYST 7566 1982-12-9 3000 20
7876 ADAMS CLERK 7788 1983-1-12 1100 20
7902 FORD ANALYST 7566 1981-12-3 3000 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600 300 30
7521 WARD SALESMAN 7698 1981-2-22 1250 500 30
7654 MARTIN SALESMAN 7698 1981-9-28 1250 1400 30
7698 BLAKE MANAGER 7839 1981-5-1 2850 30
7844 TURNER SALESMAN 7698 1981-9-8 1500 0 30
7900 JAMES CLERK 7698 1981-12-3 950 30
现在我们看看这两个table数据存储的位置:
SQL> select dbms_rowidrowid_block_number(departmentrowid) dept_rid,
2 dbms_rowidrowid_block_number(employeerowid) emp_rid,departmentdeptid
3 from department,employee
4 where employeedeptid = departmentdeptid;
DEPT_RID EMP_RID DEPTID
---------- ---------- ------
5587 5587 10
5587 5587 10
5587 5587 10
5587 5587 20
5587 5587 20
5587 5587 20
5587 5587 20
5587 5587 20
5587 5587 30
5587 5587 30
5587 5587 30
5587 5587 30
5587 5587 30
5587 5587 30
可以看到部门ID相同的数据存储在一个block上。我们为什么推荐上述方法对cluster进行最初的装载呢?这样能够保证如果有些cluster key的相关数据超过了size,仍能使大部分数据聚集在一个block上。这只适用于最初的数据装载,在这以后,可以使用事务对cluster中的table insert数据。
由于cluster中的特殊的数据存储方式,出现了这样一个问题,rowid出现了重复,现在rowid只能在一个table中唯一标识一行数据了(另一种rowid重复出现在transport tablespace的 *** 作后)。
SQL> select rowid from department
2 intersect
3 select rowid from employee;
ROWID
------------------
AAAGWQAADAAABXTAAA
AAAGWQAADAAABXTAAB
AAAGWQAADAAABXTAAC
AAAGWQAADAAABXTAAD
描述不清楚啊
你是希望 A:1#、2#作为数据库服务器同时访问ORACLE呢,1#、2#数据库服务器的地址是1921681074 ?
还是希望B:另外 1#、2#应用服务器用1921681074 这个虚拟地址去访问数据库?
如果是B你已经实现了,因为数据库服务器就1台,通过负载均衡设备自己就会对 1#、2#应用服务器放问进行分配
如果是A,用ORACLE RAC吧,当然你要升级ORACLE为企业版还要购买RAC功能组件,现有的ORACLE存储LUN需要格式化成ORACLE的文件系统格式才行,RAC自动会进行数据库访问的均衡和冗余,当然价格也还是昂贵的,ORACLE 带RAC基本就40万起步了
默认情况下是是通过 JDBC Thin 驱动器连接到数据库的,因此不需要 Oracle 主目录。
要安装 SQL Developer,只需解压缩下载的文件。
使用 SQL Developer,用户可以连接到 Oracle 数据库 9201(和更高的版本)以及所有 Oracle 数据库版本(包括快捷版)。
以上就是关于oracle中使用多个节点的作用是什么全部的内容,包括:oracle中使用多个节点的作用是什么、Oracle数据库有什么特点、请问oracle数据库RAC是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)