基于Oracle的私有云架构探析(连载一)
沃趣科技高级数据库专家 魏兴华 概述 云是当今最为热门的一个话题或者说技术,在数据库界也一样, Oracle 12G 这个名字不硬生生被掰弯成了 Oracle 12C, 数据库云在我看来能给企业带来的第一价是节省资源,提高服务器资源的利用率,随着更快速 CPU 、更廉价大
沃趣科技高级数据库专家 魏兴华
云是当今最为热门的一个话题或者说技术,在数据库界也一样,Oracle 12G这个名字不硬生生被掰弯成了Oracle 12C,数据库云在我看来能给企业带来的第一价值是节省资源,提高服务器资源的利用率,随着更快速CPU、更廉价大内存的出现,企业传统孤岛式的数据库使用方式,一个主机一个实例,会导致大量的资源浪费,想当年在阿里B2B,有多少服务器的CPU利用率平均只有15%,现在都在倡导绿色数据中心,只有数据库整合了,消耗的电少了,空调吹的少了,数据中心才能绿,地球才能绿(人可不能绿????)。在电刚出现的时候,每个富豪家里都得买个发电机装家里,昂贵,噪声大,扰民,还不环保,后来慢慢发展成电网,每一家只需要接入电网就可获取电资源,不用去买发电机,现在的云很大程度上跟这个很像,私有云平台就像电网,用户只需要接入云平台,就可以便捷的获取资源。本篇文章主要讲解如何构建一个Oracle的私有云平台,主要从以下三个方面进行论述
● 数据库整合技术的选择
● 资源快速供应
● 服务质量管理
在开始阐述这三部分内容之前,有必要带各位客官了解一些数据库的部署现状和相关的基本概念,例如DBaaS是什么?为什么要用Oracle
RAC来构建DBaaS。以及Oracle RAC的版本的一个发展历史。【PS:本文都指的是私有云】
DBaaS
当今一些中大型企业有着成百上千的数据库,这些数据库可能有着不同的版本,不同的配置,甚至是在同样的大版本下打着不同小版本补丁,这给企业带来了非常大的成本和负担:管理的成本、运维的成本、人员的成本、机房的成本、数据库软件licence的成本、存储的成本等等,用一句话概括就是TCO的成本非常的大。此外,由于传统的孤岛式的数据库使用方式,也导致了数据库数量的激增和非常糟糕的敏捷性,每上一个业务,就要申请一批设备,一个机柜,一个数据库项目从立项到项目实施完成往往需要几周甚至几个月之久,如下图:
由于非标准化的东西非常多:硬件环境多变、配置多变、架构多变,这给数据库的可用性带来了非常大的风险,由这些风险带来的非计划性的停机也给企业带来了直接或间接的经济损失、企业信誉的损失。由于近些年PC服务型的CPU性能越来越强劲,内存的价格越来越低,企业往往采购的服务器配置相对都较高,而很多企业还采用着一个主机只部署一个实例这种方式,导致了数据库服务器的资源利用率非常的低下。根据GOOGLE的数字,28%的用户平均每年的数据库增长超过20%,50%的用户数据库是没有经过整合的。怎么办?
什么是DBaaS?
以上面临的场景和解决方案就是构建一个企业的DBaaS平台对数据库进行标准化整合,DBaaS 是一个标准化的、弹性可扩展的平台,基于网络访问,通过一系列共享的数据库服务,整合现有应用,以及快速部署新的应用。DBaaS私有云是部署于企业防火墙内的共享的数据库服务。DBaaS一方面用来满足开发、测试、QA的数据库服务要求,通过简单易用的自服务来满足申请数据库,schema等的需求。一方面帮助IT人员、DBA简化了数据库在标准平台上的部署,减少维护工作,更好的支持客户需求,更多的时间和预算用于创新。
RAC发展史概述
对于Oracle公司来说,构建数据库云的重担会落在RAC上,RAC天然具有高可用、可扩展的特性,RAC版本变化与Oracle一样,经历了从I时代到G时代C时代,I是Internet,G是Grid,C是Cloud,可以看出来Oracle的版本非常迎合时代标签,这个G稍微有点悲剧,其实跟云的概念非常像,但是最终Grid还是不敌Cloud包装的好,最终还是得投入了云的怀抱。Oracle 10G,11GR1虽然都以G冠名,但是产品层面其实并没有得力的配套技术,比如截止到11GR2之前,用户使用RAC,客户端还需要在连接描述符里配置多个条目:

Grid的概念类似于电网的概念,作为用户只需要通过像插头这样的工具接入电网即可,不用去知道后面有多少发电站。对于11GR2之前的RAC来说,如果集群的节点数发生了变化,还需要把客户端里配置都更新一遍,实在是很麻烦。所以Oracle到了11GR2版本发明了SCAN-
Single Client Access Name,用户只需要使用SCAN Name,在连接描述符里配置一个条目就可以了:
不管集群有多大,都只需要配置这么一行描述符就可以(ADDRESS所在行)。如同你使用Google,不管谷歌后台有多少台服务器,你都只需要输入google.com,你不需要关心到底是后台的哪个server为你提供的服务。
以前客户选择使用RAC,大多数是由于单实例的性能不足,可用性不够,现在云的概念如日中天,使用RAC的理由可能已经演变为建数据中心,做数据库的整合。下图为Oracle各个版本的一些核心特性图:

Oracle的核心功能在8I时就已经基本稳定下来了,但是这句话用在Oracle
RAC产品上并不妥当,如上图,在Oracle 8I时,Oracle
RAC只能算是初具雏形,当时的名字还不叫Oracle RAC,而是叫OPS-Oracle
parallel server,在这个版本里,Oracle推出了自己的动态锁管理机制,Cache
Fusion也已经出现,对于多个节点间的读读操作都已经能够完全在内存中实现,但是多实例之间的写操作仍然要通过磁盘作为媒介。Oracle 9I版本,出现了GRD-Global
Resource Directory,Cache Fusion算法变得成熟,充分利用了私有网络的带宽,通过集群的私网来传递数据块包括脏数据块,真正的实现了内存融合。RAC区别于单机的最大一点是集群间需要协商,通过协商来保证多个实例的行为一致,而GRD、DML、Cache
Fusion是实现协商的最重要技术,从Oracle RAC 8I到9I,RAC的这几个核心功能变得成熟,但是不管是Oracle
8I还是9I,Oracle都没有自己的集群件产品、没有自己的存储解决方案,都要借助于第三方厂商的集群件产品和存储解决方案,例如IBM,veritas等。
但是到了Oracle 10G版本,霸气显露,Oracle已经不满足于RAC数据库本身了,一口气推出了自己的集群件Oracle
ClusterWare 和存储管理软件ASM,并且Oracle
ClusterWare在对外宣传上不仅支持Oracle,还提供了API接口支持其他类型的APP。鉴于RAC是shared
nothing的技术架构,共享存储和集群文件系统变得非常的迫切,在10G之前的版本,用户必须借助于第三方的存储解决方案,例如veritas等第三方产品,无形中增加了产品的复杂度,因此在9I版本裸设备倒成了一个很大众化的选择。而10G出现的ASM解决了这一困境,ASM本身集卷管理和文件系统功能与一体,让Oracle真正的具有了管理卷,管理文件的能力,不过这个版本下的ASM有点像是“备胎”的味道,毕竟是新技术,不成熟,很多DBA那时候还不敢用它。到了11GR1这个版本,单就Oracle
RAC来说,非常让人失望,几乎没有任何大的功能创新,似乎是为了保证每五年左右推出一个大版本下的产物,集群所有的核心功能都没有任何改变,不过对于旧的功能像是ASM,在这个版本变得较为稳定,而且也越来越多被DBA所接受。
到了11GR2发行后,一堆亮瞎眼的功能出现,似乎让我们想明白了为什么11GR1会没什么新特性,因为11GR2发布的这些新特性是一揽子的云化解决方案:RAC
One Node ,ServerPool ,Scan,Instance Caging、ACFS等等这些新技术都是为数据库整合,为云而生的,之前的ClusterWare也在11GR2版本被重新包装成为了Grid,ASM也被整合进Grid中作为集群的基础组件。后续的章节,我们也会对其中一些关键的技术做详细的讲解。到了12C版本,Oracle推出了Flex
Cluster ,Flex ASM,更大程度提高了RAC的可用性和可扩展性,IN-Memory的出现也更让实时计算变得可能,CDB让数据库整合的方式更加多样,密度也可以更大。从以上RAC的发展史可以看出来,从11GR2版本开始,Oracle开始真正的从产品层面配合云的概念,我们本文讲解的技术也都是在11GR2之后出现的技术。
数据库整合技术
整合所需要的硬件平台
云的核心是整合,既然要做数据库的整合,对于平台的整体能力要求会比较高,这个能力不但包括性能,对于可用性、可扩展的要求都会比较高。笔者认为做数据库整合的理想平台是一体机平台,像Exadata、QData,但是Exadata的价格实在是过于昂贵,性价比非常低,一般用户难以负担得起。笔者所在的沃趣科技是一家业界知名的做高性能解决方案的公司,我们是国内最早开始做一体机的厂商,QDATA一体机也是我们的明星产品,价格上相对于Exadata优势很大。很多朋友会问到,Exadata最为亮眼的地方是它的存储卸载功能,你们QDATA一体机有吗?对于这点我本人实在不敢苟同,试问有多少客户真的从卸载功能里受益非常大?就像Oracle
12C 推出了IN-Memory,理论上可以提升几十上百倍的性能,但是我去的几位客户那里做性能调优,发现客户业务系统的SQL并没有因为使用了IN-Memory而变快,因为使用IN-Memory有一些前提条件,而客户系统并不满足这样的前提条件,其实不管是针对In-Memory还是存储卸载功能,都需要DBA做一定的技术学习和精细化的调优工作,否则想发挥出它的能力是很难的,而且很多业务本身并不适合用这些特性,因此并不是上了这个IN-Memory或者卸载就能得到巨大的性能提升,例如使用上存储卸载必须要全表扫描,而你的SQL可能使用到了索引,那么你就要考虑是否需要把这个索引干掉以用到卸载功能,而这个索引是不是能被干掉,你又不确定,怕其他SQL引用这个索引,这种情况可能在客户那是一种非常普遍的情况。
就我这些年的从业经历来看,传统的数据库架构最大的问题是它的整体性能不匹配,例如传统IOE架构最容易成为瓶颈的地方,不是CPU、Memory,而是IO,笔者在沃趣工作的不到两年里,接触了N多客户的性能瓶颈,很多都是IO问题(还有少数是索引没优化好)。对于热点数据较多较离散的OLTP系统来说,最为关注的是IO的延迟和整体的IOPS,而传统架构大多跑在机械盘上,因此IO的延迟非常大,并且机械盘能够提供的IOPS也非常的低,因此传统架构对于OLTP的支持就有明显的瓶颈,我们的QDATA一体机是通过使用全SSD闪存或者FLASHCACHE方案来加速IO的读写时间,解决IO性能瓶颈。而对于OLAP系统来说,最为关注的是数据库系统能够提供的IO吞吐量,传统IOE架构,吞吐量往往在几百M到1,2GB的量级,因此吞吐量就成为明显的瓶颈,Exadata通过使用infiniband网络来解决存储到计算节点的IO带宽的问题,同样对于我们的QDATA也是通过使用infiniband来提供高带宽。在传统架构中,由于性能组件之间配置的失调,导致了很多资源虽然非常的充足但是根本利用不到,就如刚才分析的,IO成为瓶颈后,即使CPU资源再富足,也没法利用到,因为都在等IO。
而新的高性能解决方案,如一体机产品,基本都是聚焦于解决传统架构里性能组件之间失调的问题,让IO延时、IO吞吐、CPU、内存这些性能组件更加好的匹配在一起,不会在任何一点上成为明显瓶颈。而一体机作为一款高性能解决方案,完全符合了这些要求。它能提供的IOPS动辄几十万,几百万,IO吞吐更是轻轻松松几十GB,特别是随着100Gb的infiniband的出现,一体机能够提供的吞吐量会更加的大。我相信一体机的市场以后也会越来越大,不管是用它做私有云,还是为核心业务保驾护航,都是一个非常值得考虑的选择。同时一体机产品因为都是预先集成与优化的,这里面包含了我们十几年的运维经验和性能优化经验,例如我们对高TPS的系统预先做了REDO写的优化,把REDO放在了具有RAID卡缓存的磁盘上,保证日志的写延迟足够的稳定足够的低。
作为一名技术人员非常喜欢聊一些炫酷的技术,例如Exadata的卸载,我也是如此,如果你有兴趣,我可以跟你滔滔不绝聊上一整天的Exadata,理论上讲起来非常的浪漫和美好,但是现实情况比较残酷,很多甲方DBA认为上了Exadata后利用卸载功能就能让查询快的飞起来,结果大失所望。学习Exadata的成本非常高,并不是一种用了就能好的万能药。如果你有比较强的DBA团队,还有大把的钞票,还是可以考虑使用下Exadata的,如果你的DBA团队暂时还达不到这个要求,那么建议还是不要花这冤枉钱。
Exadata的卸载看似一项跨时代的创新,其实不然,它其实是向MPP架构致敬的一项功能,Oracle的Share Everything 的架构导致了存储一定需要是共享的,进而导致计算与存储必须分离,这种架构里存储不具备MPP架构中,每个节点都能处理数据的能力,因此Oracle的Exadata的出现一定程度上解决了这个问题,让存储节点在某些条件下具备了处理数据的能力。
数据库整合方案比对
虚拟化一度成为一种流行的数据库整合的方案(特别是MYSQL、PG),但是它的弊端非常的明显,虚拟化整合方案需要额外管理更多的OS,而且虚拟化本身会带来IO性能的大幅度衰减,因此性能上比较差,能够整合的数据库的密度也就比较小,不过就隔离性来说,由于每个虚拟机都有独立的OS,因此除了共享宿主机以外,OS,实例等等都是隔离的,很多用户选择这种整合方案很大程度上也是被它的强隔离性所吸引。
单机多实例也是很多客户在使用的整合方案,在一个主机上部署多个实例,由于共享了主机和OS,性能损耗小,因此整合的密度可以比较大(相对于虚拟化整合),而且通过11GR2的Instance
Caging技术可以做实例间CPU资源的隔离,由于单机多实例方案比虚拟化整合方案多共享了OS这一层,因此隔离线上相对于虚拟化方案来说,降低了一些,不过上面已经提到通过Instance
Caging技术可以做到CPU的隔离。多schema方式的整合,就我们接触到的客户来说,也有客户在用,它的缺陷非常的明显,资源隔离不好做,业务上限制也比较大,同名的schema怎么做整合?几个schema间创建的一些公共权限有冲突怎么办?而且本身由于在一个数据库内,数据库的权限隔离也比较难做,就隔离性来看,因为共享了主机、操作系统、实例,它的隔离级别非常低,从长远来看,后期如果要做拆分,只能使用逻辑迁移,而逻辑迁移往往是非常复杂的。Oracle在12C版本发布了可插拔数据库,它是一个优缺点都比较中和的解决方案,相对于单机多实例来说,它的隔离性没那么强,但它整合的密度可以做到非常的大,因为它像schema整合方案一样,共享了主机、OS、实例(下图),因此性能损失非常的少,总体上,它的隔离性和安全性又比schema方案要强很多,因为本质上每一个PDB都是一个完整独立的DB,DB之间没办法互相访问,除非通过DBLINK这样的工具。
以上种种,笔者推荐的整合方案是基于单机多实例或基于12C的可插拔的方案,但是12C毕竟目前使用的人还不多,因此需要仔细考虑BUG带来的一些风险。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 시스템의 5 가지 기본 구성 요소는 다음과 같습니다. 1. Kernel, 2. System Library, 3. System Utilities, 4. 그래픽 사용자 인터페이스, 5. 응용 프로그램. 커널은 하드웨어 리소스를 관리하고 시스템 라이브러리는 사전 컴파일 된 기능을 제공하며 시스템 유틸리티는 시스템 관리에 사용되며 GUI는 시각적 상호 작용을 제공하며 응용 프로그램은 이러한 구성 요소를 사용하여 기능을 구현합니다.

Oracle에 대한 솔루션은 개설 할 수 없습니다. 1. 데이터베이스 서비스 시작; 2. 청취자를 시작하십시오. 3. 포트 충돌을 확인하십시오. 4. 환경 변수를 올바르게 설정하십시오. 5. 방화벽이나 바이러스 백신 소프트웨어가 연결을 차단하지 않도록하십시오. 6. 서버가 닫혀 있는지 확인하십시오. 7. RMAN을 사용하여 손상된 파일을 복구하십시오. 8. TNS 서비스 이름이 올바른지 확인하십시오. 9. 네트워크 연결 확인; 10. Oracle 소프트웨어를 다시 설치하십시오.

Oracle Cursor Closure 문제를 해결하는 방법에는 다음이 포함됩니다. Close 문을 사용하여 커서를 명시 적으로 닫습니다. For Update 절에서 커서를 선언하여 범위가 종료 된 후 자동으로 닫히십시오. 연관된 PL/SQL 변수가 닫히면 자동으로 닫히도록 사용 절에서 커서를 선언하십시오. 예외 처리를 사용하여 예외 상황에서 커서가 닫혀 있는지 확인하십시오. 연결 풀을 사용하여 커서를 자동으로 닫습니다. 자동 제출을 비활성화하고 커서 닫기를 지연시킵니다.

Oracle에서 FOR 루프 루프는 커서를 동적으로 생성 할 수 있습니다. 단계는 다음과 같습니다. 1. 커서 유형을 정의합니다. 2. 루프를 만듭니다. 3. 커서를 동적으로 만듭니다. 4. 커서를 실행하십시오. 5. 커서를 닫습니다. 예 : 커서는 상위 10 명의 직원의 이름과 급여를 표시하기 위해주기별로 만들 수 있습니다.

Centos 시스템에서 Hadoop 분산 파일 시스템 (HDF)을 구축하려면 여러 단계가 필요합니다. 이 기사는 간단한 구성 안내서를 제공합니다. 1. 초기 단계에서 JDK를 설치할 준비 : 모든 노드에 JavadevelopmentKit (JDK)을 설치하면 버전이 Hadoop과 호환되어야합니다. 설치 패키지는 Oracle 공식 웹 사이트에서 다운로드 할 수 있습니다. 환경 변수 구성 : /etc /프로파일 파일 편집, Java 및 Hadoop 설정 설정 시스템에서 JDK 및 Hadoop의 설치 경로를 찾을 수 있습니다. 2. 보안 구성 : SSH 비밀번호가없는 로그인 SSH 키 : 각 노드에서 ssh-keygen 명령을 사용하십시오.

Oracle Log 파일이 가득 차면 다음 솔루션을 채택 할 수 있습니다. 1) 오래된 로그 파일 청소; 2) 로그 파일 크기를 늘리십시오. 3) 로그 파일 그룹을 늘리십시오. 4) 자동 로그 관리를 설정합니다. 5) 데이터베이스를 다시 이용하십시오. 솔루션을 구현하기 전에 데이터 손실을 방지하기 위해 데이터베이스를 백업하는 것이 좋습니다.

Oracle은 데이터베이스 회사 일뿐 만 아니라 클라우드 컴퓨팅 및 ERP 시스템의 리더이기도합니다. 1. Oracle은 데이터베이스에서 클라우드 서비스 및 ERP 시스템에 이르기까지 포괄적 인 솔루션을 제공합니다. 2. OracleCloud는 AWS와 Azure에 도전하여 IAA, PAAS 및 SAAS 서비스를 제공합니다. 3. E-BusinessSuite 및 FusionApplications와 같은 Oracle의 ERP 시스템은 기업이 운영을 최적화하는 데 도움이됩니다.

Oracle 데이터베이스를 중지하려면 다음 단계를 수행하십시오. 1. 데이터베이스에 연결하십시오. 2. 즉시 종료; 3. 셧다운은 완전히 중단됩니다.
