Oracle基础交流

自我介绍

张小熊(Bear)
毕业于北京理工大学
10年以上Oracle DBA经验(Oracle 9i\10g\11g\12c)
多年数据库集群处理经验及基于云平台的大数据架构设计经验
现任某大型美业互联网平台CTO
51CTO论坛Oracle专家博主
Oracle 10g OCM & Oracle 11g OCM
博客站点: http://bearlovecat.blog.51cto.com/
个人邮箱:bear_boss@163.com,bear_chl@163.com

学习的目的

OK,言归正传,我们既然来学习Oracle数据库,那么首先要明白自己的目的,我为什么要学习数据库,为什么要学习Oracle数据库,出于兴趣? 出于对DBA职位的追求? 出于对薪资的更高向往? 可能都会有吧,那么让我们简单看一下什么是数据库,什么是Oracle数据库。以及应该怎么样来学习Oracle。

我为什么学习Oracle

我当初学Oracle主要也是因为看到DBA待遇好,地位高,哈哈,运维说真的,没多大前途,现在都实现企业云,云桌面,云存储,云计算,就连虚拟化都已经不是什么新鲜事情了,除非你进大公司,接触这些业界先进的东西还有发展,不然做多两年,等技术普遍,对自己的学习发展又是一件很痛苦的事情,技术还是要往高端走

努力成为技术geek

学习Oracle,尽量使用SQLPLUS命令,不要借助一些工具(OEM、TOAD、PL/SQL Develop等),这些工具虽然功能强大,但是封装了很多东西,让你不能知道底层运作机制和相应原理。而且,当你空手白刃不借助任何工具在数据库服务器上运指如飞的熟练键入各种命令,将问题一一解决,看到身后围着无数“屌丝”带着充满羡慕嫉妒恨的语气对你发出感叹词:“牛啊……厉害……碉堡了”,这些词汇的时候,内心的满足感哟,HOHO~

什么是数据库

数据库,顾名思义,是存入数据的仓库。只不过这个仓库是在计算机存储设备上的,而且数据是按一定格式存放的。
当人们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。
要是下定义的话,就应该是:指长期储存在计算机内的、有组织的、可共享的数据集合。

数据库的类别

数据库包含关系数据库、面向对象数据库及新兴的XML数据库等多种,目前应用最广泛的是关系数据库,若在关系数据库基础上提供部分面向对象数据库功能,则称为对象关系数据库。

数据库的种类

关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。目前主流的关系数据库有Oracle、DB2、SQL Server、MySQL等。
面向对象是一种认识方法学,也是一种新的程序设计方法学。把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。
XML数据库是一种支持对XML格式文档进行存储和查询等操作的数据管理系统。在系统中,开发人员可以对数据库中的XML文档进行查询、导出和指定格式的序列化。

金融业数据库

特点:支持海量数据管理、I/O读写频繁、在线并发量大、人为故障可恢复、可在线维护、有操作审计

愿景:高可用性、高可靠性、高稳定性、高可扩展性、高安全性、负载均衡、容灾备份

要求:能正确访问数据库中数据、实时处理、权限控制、日志文件、审计

数据仓库与数据挖掘

数据仓库是决策支持系统和联机分析应用数据源的结构化数据环境。数据仓库研究和解决从数据库中获取信息的问题。数据仓库的特征在于面向主题、集成性、稳定性和时变性。

数据挖掘就是从存放在数据库,数据仓库或其他信息库中的大量的数据中获取有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程。

用数据仓库(Data Warehouse)技术管理银行数据库中的大量宝贵数据

用数据挖掘(Data Mining)技术寻找有价值的信息,以便进行更好的市场决策

OLTP与OLAP

当今的数据处理大致可以分成两大类:联机事务处理OLTP(On-Line Transaction Processing)、联机分析处理OLAP(On-Line Analytical Processing)。
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果

NAS与SAN的区别

存储区域网络(SAN)和网络附加存储(NAS)是相互竞争的两种网络存储技术,实际上,它们可以很好地相辅相成,用于存取不同类型的数据。NAS设计用来在文件这个层次上存取数据,而SAN最适合用于高容量数据块的传输。

SAN结构中,文件管理系统(FS)还是分别在每一个应用服务器上;而NAS则是每个应用服务器通过网络共享协议(如:NFS)使用同一个文件管理系统。换句话说:NAS和SAN存储系统的区别是NAS有自己的文件系统管理。

Oracle的优势

开放性强
保证系统的高性能
系统灵活,易扩展
维护简便
增强系统的可靠性
系统的高可用性
增强的系统安全
用户投资的有效保护

Oracle的安全

数据库监控:Enterprise Manager Grid Control、Enterprise Manager Cloud Control
高可用集群:Real Application Cluster
容灾系统:Data Guard、Golden Gate
RMAN备份、自动归档、先写日志后操作、闪回机制

功夫在戏外

第一层意思:台上一分钟、台下十年功
第二层意思:开阔自己眼界、解决自己能解决与未解决之问题
第三层意思:技术手段不是解决问题的关键,技术仅仅是工具,解决问题依靠的是思路与方法
第四层意思:对业务的深入理解,决定你能走多远
为功能做计划,为效率作计划,为可恢复性作计划,为安全性作计划,为可用性作计划。总之,为最后的成功作计划。

目前学习Oracle的两派人

第一种人,仅是使用Oracle的人
第二种人,真正的Oracle DBA

Oracle的重要性

Oracle非常重要,学习Oracle一定要有一个“谦虚谨慎、戒骄戒躁”的态度

学习前提

学习Oracle的前提是:熟悉Linux操作系统、Unix操作系统、存储、带库。主要是管理和操作系统原理

学习方法

1、SQL、PL/SQL

作为Oracle的基本功,需要大家对SQL和PL/SQL非常的熟悉。特别是SQL里面的多表连接、子查询、各种新版本的函数,以及PL/SQL里面的所有语法。建议大家拿出足够的时间来研究这两块。不要认为这是开发人员的工作,它也是DBA的重要工作,而且对DBA的要求更高,你不但要能够看懂,还要能够找出问题。学习这方面知识的要点就是:多练、多思考、多测试。

2、Oracle管理(体系结构)

这是Oracle的难点,Oracle技术博大精深,主要的难点就集中在这里面。包括Oracle的存储管理、对象管理、内存和进程、UNDO管理、初始化参数、数据字典视图、安全、Latch和Lock、权限和角色、资源调度、闪回、日志原理等。
学习这一块知识的时候,一个重点是:要知道原理和本质,知道表面的东西没有任何意义。
知道原理以后,通过实验去证明,将原理总结出来。
这一块学习的好还是不好,直接决定了以后的一个备份恢复、优化、排错。
这一块虽然是研究管理,但是更加注重原理和体系结构的分析和解剖。
应该叫做“深入剖析Oracle体系结构”,多深都需要。
在这一部分的学习中,已经学习了很多优化的内容,在学习任何一个知识点的时候,我们都离不开对性能的分析。

3、备份恢复

有了第二部分的铺垫,这一章的学习相对有意思,前提是我们对Oracle的日志原理研究得较深,对Oracle的内存和进程研究得较深。策划一个完美和正确的备份计划和实施方案(具体要分析出原理),实施备份;对各种损坏进行恢复(还是要能分析出原理);另外可以做一些高难度的恢复实验(还是老话、要能够分析出原理)

4、优化(单实例优化)

这一块完全是第一部分和第二部分的一个结合。这一块的学习没有最深,只有更深,学习方法和第二部分类似。

首先需要大家掌握一些Oracle优化方面的基础知识,例如深入分析索引原理、分区、等待事件、时间统计模型、动态性能视图、操作系统的一些性能优化和查看命令,例如:top、iostat、vmstat、sar、pmap、prstat、filemon、nmon、svmon等。

最关键的还是要做三件事情:Oracle的动态性能视图、Oracle的报告(trace、statspack、awr、addm、ash)、执行计划;对这三块要熟悉和分析出来。这个部分的分析和动手实验很重要。

5、RAC

现在RAC的使用越来越多,学习RAC的重点还是:基础原理 + RAC优化。
RAC系统的优化分为两个步骤:RAC系统优化和单实例优化;根据RAC的基础原理,能够设计高性能的RAC系统,能够分析RAC性能问题。对RAC的动态性能视图、等待事件、报告,能够看懂和分析。

6、Cloud Control、Data Control、Stream、Golden Gate等

对于这些工具和组件,我们熟悉其体系结构,原理,一些监控性能的工具等。
学习这些部分的几个点:熟悉体系结构、原理、搭建、监控(包括故障和性能)、排错和优化。

7、SQL优化

为什么单独拿出来呢?因为这部分需要持之以恒的进行研究和实验,而且工作中几乎是每天都要做的事情。
目前这方面,有一些比较经典的书,值得大家去看看。

8、PL/SQL深度学习

在这部分学习的时候,就要时时刻刻注意性能,主要是注意测试。

9、综合性项目实战

模拟环境:规划、搭建、测试、排错、优化、分析
实战环境:规划、搭建、测试、排错、优化、分析