Upload
lybao
View
273
Download
8
Embed Size (px)
Citation preview
1
3
结合Oracle RDBMS 11g数据库进行应用开发
3
• Oracle数据库与Informix等其它数据库的主要区别
• Oracle数据库与其它主流数据库相比,有哪些优势和劣势,如何写程序才能发挥这些优势并避免其劣势
• 开发中的一些注意事项
• 在Oracle下的数据库与表设计、SQL写法、锁、并发等方面与Informix有哪些不同,应注意哪些要点
• Oracle增量抽取采用时间戳存在问题,但如采用ora_rowscn,能否建立索引,延迟块清除是否会造成问题,需要设置多大的回溯
• Oracle是否支持列存储或列数据库
• 连接池泄漏问题
4
Oracle数据库与Informix等其它数据库的架构比较
4
Oracle MySQL SQLServer Informix 平台环境
与运行模式
Unix,Linux,Windows
*nix 进程方式
Windows 上线程方式
Linux, Windows
线程方式
Windows
线程方式
Unix,Linux,Windows
*nix 线程方式
内存管理 Data cache
Log buffer
Shared Pool
Java Pool
Large Pool
PGA
MyISAM Key caches
InnoDB caches
Dictionary cache
Falcon caches
Partner engine caches
Query Cache
User caches
Buffer cache
SQL cache
Misc caches(lock,
connection, workspace)
驻留段
虚拟段(会话池、多线索池、
字典池、存储过程池、排序池、大缓冲池以及全局池)
通讯缓冲区
数据存储
Redo/Undo
Tablespaces/Datafiles
Undo TBS / Redo Logs /
Archive Logs
TBS/Table & Index Files/
Format files
InnoDB Undo Space /
InnoDB Logs /
Falcon Log/Binary Log
Filegroups / Files
TempDB
Transaction Logs
Tablespace /
DBSpace(tempdbspace /
blobspace)
逻辑日志 / 物理日志
集群与高可用 Real Application Cluster
(Shared disk)
MySQL Cluster (Shared
Nothing)
SQL Server Cluster (采用
数据复制方式,单机服务冷备,Shared Nothing)
网格,采用数据复制方式(Shared Nothing)
5
Oracle数据库的特点
5
• Oracle RDBMS是应用范围最广,使用用户最多的数据库产品
• 技术更为成熟
• 性能最佳
• 真正的高可用集群
• 解决方案最全,整合度最高
• 最多的开发人员
6
Oracle与Informix的区别: Organization
Ma
ster
db
Da
tab
ase
1
Da
tab
ase
2
Da
tab
ase
3
SY
S S
chem
a
Sch
ema 1
Sch
ema
2
Sch
ema
3
memory memory Informix Oracle Instance
Oracle Database
process process
7
Oracle与Informix的区别: Schema Object
Oracle Informix
Database Database
Tablespace Database
User user
Table Table
Global Temp Table Temp Table
PL/SQL Procedure Store Procedure
PL/SQL Function Store Procdure
Package --
8
Oracle与Informix的区别: Schema Object
Oracle Informix
After Triggers Triggers
Before Triggers Triggers
Synonyms Synonyms
Sequences Serial Data type
View View
Materialized View --
9
Oracle与Informix的区别: 不同的数据类型 Serial
• Serial
• Informix中serial类型支持最大到214748367的整数,并且始终加1
• create table
tbl1(serial_column serial,
ename char(15)
• insert into
tbl1(serial_column,ename)
value (0, scott)
• Number & Sequence
• create table tbl1 (
serial_column number(10),
ename char(15))
• create sequence tbl1_serial
• insert into tbl1(
serial_colume,ename)
values(tbl1_serial.nextval,
scott)
10
Oracle与Informix的区别: 不同的数据类型
• Informix – 字符类型
• 支持最大到32767个字符
• Informix – 日期类型
• 10-6 秒
• Oracle – 字符类型
• char 最大到 2000
• varchar2 最大到 4000
• long 2G
• CLOB 4G
• Oracle – 日期类型
• Date
• Timestamp支持到 10-9秒
11
Oracle与Informix的区别: 不同的数据类型
• Informix
• Byte
• Text
• Oracle
• Long Row BLOB
• Long CLOB
12
Oracle与Informix的区别: 事务处理方式
• Oracle
• MVRC - 采用多版本并存控制来支持读一致性,不需要读记录锁。读操作和写操作不会相互阻碍。
• 真正的行级锁
• 较少的INSERT, UPDATE写冲突
• 锁不会升级
• 每个DML都有隐含的 “Begin Transaction”,事物需要commit 或 rollback
• Informix
• 4种隔离级别,读写互相影响
• 采用锁表来管理
• 手工开始事物, 必须指定 “Begin Transaction”, 隐式commit
Oracle可以提供最佳的OLTP性能
13
Oracle与Informix的区别: 临时表
• 数据只有在某个事物或会话中可以见
• 数据的生命周期是从事物开始到事物结束或从会话开始到会话结束
• 不产生redo,只有undo数据
CREATE GLOBAL TEMPORARY TABLE emp_temp(
eno NUMBER, ename VARCHAR2(20), sal NUMBER)
ON COMMIT DELETE ROWS;
14
Oracle与Informix的区别: 存储过程
• 语法不同
• 错误处理机制不同
• Informix
• 出错后可以继续执行 „错误可能被忽略
• Oracle
• 错误可以 “thrown” ,你可以抓住 “catch” 它们 (EXCEPTION WHEN) „ 可以选择忽略或继续处理
15
Oracle与Informix的区别: SQL
Informix Oracle
SELECT zipcode[1,3], customer_num
FROM customer
ORDER BY zipcode
SELECT substr(zipcode,1,3), customer_num
FROM customer
ORDER BY zipcode
SELECT UNIQUE city, state, zipcode FROM
customer
SELECT DISTINCT city, state, zipcode FROM
customer
select FIRST 10 a, b from tabl
select a,b from tabl where ROWNUM <11
其它: 通配符, 内建函数等 … …
16
Oracle数据库建模
• E-R设计与Informix没有本质区别
• 最好结合Oracle数据库的一些特性:
• 控制索引列的数量
• 选择适当的索引种类:B-tree index(normal,reverse key,descending, function based „), Bitmap index, domain index,索引组织表
• 分区:与informix分段类似。
• Rang,list, hash, interval, system, reference, Virtual Column-Based, Composite „
17
Oracle数据库建模
• E-R设计与Informix没有本质区别
• 需要结合Oracle数据库的一些特性:
• 控制索引列的数量
• 适当选择索引的种类:B-tree index(normal,reverse key,descending, function based „), Bitmap index, domain index,索引组织表
• 分区:与informix分段类似。
• Rang,list, hash, interval, system, reference, Virtual Column-Based, Composite „
18
关于性能
• 使用绑定变量,避免硬解析
• 制定SQL编写规范,避免效率不高的语句出现。同样的语句不要出现多个版本
• 避免出现热点数据争用的现象
• 能用单条语句实现就不要开游标遍历
• 能够批量处理的数据不要采用单条操作的方式
• 尽量不要在应用中创建对象,执行过多的DDL
• 。。。
19
数据增量抽取问题
• Oracle增量抽取采用时间戳存在问题,但如采用ora_rowscn,能否建立索引
• 小表可以采用ora_rowscn作为增量抽取的依据。大表并不适合,因为在伪列上无法创建索引
• ORA-43807: 不允许对 ORA_ROWSCN 建立索引
• 可以采用物化视图增量刷新和GoldenGate等数据复制方案
20
延迟块清除是否会造成问题,需要设置多大的回溯
• 延迟块清除是否会造成问题
• Deferred block cleanout 是数据库自身的一种处理方式,正常情况下不会有任何问题。
• 回滚表空间配置应以应用需要为标准
• 是否有ORA-01555
• 监控回滚表空间使用率
21
Oracle是否支持列存储或列数据库
• 行存储NSM(N-ary storage model)与列存储DSM(decomposition storage model)
的区别
• DSM将所有记录中相同字段的数据聚合存储,而NSM将每条记录的所有字段的数据聚合存储
• 列存储的局限性
• 只适合OLAP场景应用
• 如果发生行级操作,特别是数据更新、删除操作,成本会很高。因而非常不适合支持OLTP
• Oracle采用行存储方式,不支持列存储。也没有列数据库版本
22
连接池泄漏问题
• 如何防范出现连接池泄漏
• 通过编码规范防范出现连接池泄漏
• 不允许自定义数据库连接
• 规定数据库操作完成后必须close connection。
• 通过Weblogic配置连接池泄漏监控
23
数据库整合
Traditional Computing Infrastructure Grid Computing Infrastructure
24
数据库整合 -- 系统架构面临挑战 -- 恶性循环国家电网典型应用系统测试 国家电网典型应用系统测试
系统规模不断增长
外围系统越来越多
设备越来越多
数据复制需求增多
系统间接口增多
系统架构变得更加
复杂
系统逐渐变得难以维护
IT投资越来越大
设备的利用率却在下降
对机房的需求不断增长
网络结构变得混乱
故障点众多,故障难以排查
系统高可用性设计不足
数据复制方案混杂
数据复制链路如蜘蛛网
数据复制手工维护量大
设备种类众多,难以管理
不符合节能减排的要求
25
系统整合方法论
系统整合
策略
系统整合
建设目标
系统整合
规划设计 系统整合实施 系统运维
持续改进
26
系统整合方法论
—— 整合策略
系统整合策略 系统整合
建设目标
系统整合
架构设计 系统整合实施 系统运维
整合目标
整合策略制定
持续改进
根据对IT系统未来发展的预估和规划制定整合的总体目标。
确定整合的基本原则,明确各项考虑因素所占权重。
27
持续改进
整合目标
整合策略制定 整合深度
工期规划
实施步骤
整合范围 • 根据系统现状和项目的整体投入确定系统整合范围 • 根据对业务系统的影响和项目的整体投入确定整合的深度; • 结合整合范围与深度制定合理的工期规划 • 根据先外围后中心,先测试后生产和优先排除隐患解决问题的原则制定项目实施的整体步骤。
系统整合方法论
—— 整合策略
系统整合策略 系统整合
建设目标
系统整合
架构设计 系统整合实施 系统运维
28
系统整合方法论
—— 架构设计
持续改进
整合目标
整合策略制定 整合深度
工期规划
实施步骤
整合范围
• 制定系统配置调查表,系统功能模
块调查表,系统运维调查表,进行系
统概况调研。对技术和业务部门进行
访谈,以确认具体需求。
• 对资料汇总分析,进行评估。
• 针对各具体问题和系统整体架构状
况进行系统整合技术选择。
• 工作步骤之间可能按照具体情况发
生迭代。
资料整理
结果评估
技术选择
调研与访谈
架构设计
系统整合策略 系统整合
建设目标
系统整合
架构设计 系统整合实施 系统运维
29
系统整合方法论
—— 整合实施
系统整合
架构设计 系统整合实施 系统运维
持续改进
• 按照整合架构进行实际建设
• 容量规划确定软硬件系统的具体型
号与配置
• 系统安装完毕,根据架构设计,对
系统进行服务配置、资源配置以及管
理系统的配置
• 按照业务场景,制定系统验收方案,
经过测试后,系统割接上线交付使用。
资料整理
结果评估
技术选择
调研与访谈
架构设计
安装、配置
验收测试
割接上线
容量规划
30
系统整合方法论
—— 系统运维
持续改进
• 制定运维规范,规范运维活动
• 运维人员通过监控系统获取系统运
行状态、故障告警、资源容量信息,
为运维操作提供基本信息
• 通过资源调度,完成服务扩展、资
源动态均衡以及灵活部署
• 资源的生命周期管理包括:资源的
申请、审批、交付、扩充/缩减、回收
• 为了保证良好的客户体验,还需要
监控应用的性能。
资料整理
结果评估
技术选择
调研与访谈
架构设计
安装、配置
验收测试
割接上线
容量规划
系统监控
资源调度
生命周期管理
运维管理
服务性能管理
系统整合
架构设计 系统整合实施 系统运维
31
系统整合方法论
—— 持续改进
持续改进
架构优化 技术升级 服务改进 业务调整
• 事物从来都不是一成不变的,系统也应随需而变
• 随着技术的不断升级与强化,系统架构也将不断的进行升级与优化
• 通过客户培育、市场发展、观点改变,服务也必须根据用户需求和消费行
为以及法律法规的遵从不断进行修正和改变
• 系统自身的发展也将不断自我强化,从而调整最初的业务目标和业务模式,
加快或者调整业务战略,促使系统自身的不断发展与完善
系统整合策略 系统整合
建设目标
系统整合
架构设计 系统整合实施 系统运维
32
系统整合方法论
整合目标
整合策略制定 整合深度
工期规划
实施步骤
整合范围
资料整理
结果评估
技术选择
调研与访谈
架构设计
系统整合策略 系统整合
建设目标
系统整合
架构设计 系统整合实施 系统运维
安装、配置
验收测试
割接上线
容量规划
系统监控
资源调度
生命周期管理
运维管理
服务性能管理
持续改进
架构优化 技术升级 服务改进 业务调整
33 Copyright © 2010, Oracle Corporation and/or its affiliates – 33 –
数据库虚拟资源池,更好支持数据库的集中与整合
• 许多不同的数据库可运行于同一数据库机器上
• DB服务器共享配置方式
• 应用以SERVICE服务的方式连接并运行于一个或多个动态的数据库节点上
• Services可以动态 Grow, Shrink, & Move
• 大型数据库可通过RAC技术跨越多个物理节点
• 多个小型数据库可以共享运行于同一个物理节点
• 共享环境下的可预测性能
• 但多个数据库运行于同一节点上时,Instance Caging实例绑定技术提供可预知的CPU cores资源
• 可限制数据库运行于特定的处理器的子集上
稽查监控 客服平台
营销MIS
电能量 采集
多元化缴 费平台
34 Copyright © 2010, Oracle Corporation and/or its affiliates – 34 –
OLTP
More resources
DSS
user
OLTP
user
Database resource manager
DSS Less resources Oracle
Database
动态按服务级别的资源分配
– 管理混合事务的资源负载
– 控制系统性能
35 Copyright © 2010, Oracle Corporation and/or its affiliates – 35 –
在数据库资源池内,进行自动化按需能力供应
营销MIS
电能量 采集
稽查监控 多元化缴 费平台 Oracle
Enterprise
Manager
多元化缴 费平台
营销MIS
感知需求高峰
Oracle Exadata数据库虚拟服务池
感知需求
高峰
调整容量
调整容量
数据库服务 节点
36 Copyright © 2010, Oracle Corporation and/or its affiliates – 36 –
更灵活的IO分配 – Exadata I/O资源管理器 按需计算有效管理混合型数据库 – 库间、库内共享管理
• 确保共享的不同数据库被分配正确的I/O 资源
• Database A: 33% I/O资源
• Database B: 67% I/O资源
• 确保库间、库内的不同用户和任务被分配正确的I/O资源
• Database A:
• 报表: 60% of I/O资源
• ETL: 40% of I/O资源
• Database B:
• 交互作业: 30% of I/O资源
• 批处理: 70% of I/O资源
37 Copyright © 2010, Oracle Corporation and/or its affiliates – 37 –
进行Oracle数据库开发可能用到的技术 . . .
37
SQL Developer
JDeveloper
TAF & ONS Flashback
Enterprise Manager
OVM
Virtual box
SQL Monitor
RUEI
OEL
RAC
Advanced Queue Timesten
Coherence
App Test Suite Server Pool
Resource Manager Service
JRockit
Exadata
38
更多技术资源
• SQL Developer • http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html
• Oracle Virtual Machine (templates) & Oracle Enterprise Linux • https://edelivery.oracle.com
• Oracle sample code • http://www.oracle.com/technetwork/indexes/samplecode/index.html
• Oracle Maximum Availability Architecture – MAA • http://www.oracle.com/technetwork/database/features/availability/maa-090890.html
• Oracle Application Testing Suite • http://www.oracle.com/technetwork/oem/app-test/index.html
39
Oracle Partner Solution Center
甲骨文合作伙伴解决方案中心
40
Q&A