Oracle数据库管理系统简介

Oracle 是数据库管理系统
oracle数据库有一个数据库和至少一个数据实例构成。数据库是一组存储数据的文件而数据库实例是管理数据库文件的内存结构。此外数据库是由后台进程组成。

物理存储结构:
        物理存储结构是存储数据的纯文件。当执行一个 create database语句来创建新的数据库时,将创建:
    数据文件包含真实数据,还包含逻辑数据库结构(比如表和索引)
    控制文件:每隔数据库都包含一个控制文件,控制文件中有元数据用来描述数据库名称,数据文件物理位置和数据库物理结构。
    联机重做日志文件:每个数据库都有一个这个日志,里面包含多个日志文件能记录下多有对数据所做的更改。
逻辑存储结构:
        Oracle数据库使用逻辑存储结构对磁盘空间进行精细控制:
    数据块:又称逻辑块,Oracle将数据存储在数据块中。
    范围:范围是用于存储特定类型信息的逻辑连续数据块的具体数量
    段:段是分配用于存储用户对象(例如表和索引)的一组范围
    表空间:
        多个块组成区,多个区组成段,多个段组成表空间,多个表空间组成逻辑数据库
        一个区只能在一个数据文件中
        一个段中的各个区可以在多个数据文件中
        组成区的块是连续的。
        逻辑存储结构是有大小的:由于逻辑的数据块对应磁盘空间中的某个固定大小尺寸,所以他也是有大小的

Oracle数据库的实例:
    实例是客户端应用程序(用户)和数据库之间的接口。实例由三个部分组成:系统全局区(SGA),程序全局区(PGA)和后台进程。
    SAG是实例启动时分配的共享内存结构,关闭时释放。它是一组包含一个数据库实例和控制信息的共享内存结构
    PGA是会话开始时为每个会话分配的私有内存区,会话结束时释放。

Oracle进程:用户进程,服务器进程和后台进程:
    Oracle用户进程:用户在运行程序或者Oracle工具时,需要建立用户进程和oracle实例进行通信
        connection是用户进程和Oracle实例之间的一个通信通道。connection连接允许一个用户可以同时多次连接到一个数据库实例
        session(会话) 是用户通过和Oracle身份验证后,会和服务器建立一个会话。同一个用户可以并发的和数据库建立多个会话。
    Oracle服务器进程:
        用于处理连接到该服务器实例的用户进程请求。当应用程序和Oracle运行在同一个主机时,用户进程和相应的服务器进程可以组合成单一进程以减少系统开销。反之,会有俩独立进程。
        服务器进程主要用来分析和执行sql语句、所需数据不再SGA内存中时,从磁盘数据文件复制到SGA的共享数据缓冲区等工作

    Oracle主要的后台进程:
        PMON是数据库中调节其他所有进程的进程监视器,他可以清理异常连接的数据库连接,并自动向侦听器进程注册数据库实例
        SMON是负责系统清理以及恢复工作
        DBWn是数据库编写器。这里的n指的是数字,因为一个实例由很多编写器。oracle会在内存中处理数据而不是在磁盘上,编写器从磁盘中读取数据并写回去
        CKPT是检查点过程。


char,varchar,varchar2的区别
    char的长度是固定的,varchar2是可变字节
    用char(20)存储“abc”占用20字节包括17个空字节
    用varchar(20)存储则只占用3个字节。它是按实际长度存储
    char的效率更高一些,但是会产生空间浪费。
    varchar虽然节省空间,但是如果存储经常改变长度的数据会造成“row migration”


oracle 索引
标准索引(b+树):数据量大的情况下查找任然很快
唯一索引:比如员工编号,唯一索引查找最快
位图索引:适合基数小的字段,比如性别,节约空间
基于函数的索引

Oracle事务
oracle事务是工作的逻辑单元,单个事务是由一个或者多个sql语句组成。确保事务的原子性、一致性、隔离性、持久性。

Oracle 存储过程
存储过程指的是一组为了完成特定功能的sql语句集,经过编译后存储在数据库。用户通过存储过程的名字并给出参数来执行存储过程。
    1。存储过程只在创造时进行编译,以后执行时不再编译。一般的sql执行一次编译一次,因此存储过程提高了数据库执行速度
    2。

分区:分区就是把表和索引分成几大块,每一块存放到一个表空间上

SQL语句执行过程
    1。创建游标:由程序接口创建游标,多数应用中游标是自动创建的。
    2。分析语句:sql语句从用户进程传送到Oracle,经过分析后,sql语句本身和分析信息都被装入共享sql区。
        在该阶段可以解决很多类型的错误。
    语法分析分别执行下列操作:
    翻译sql语句验证它是否为合法语句
    实现数据字典的查找,以验证是否符合表和列的定义
    在所要求的的对象上获取语法分析锁,使得在语句的语法分析过程中不改变这些对象的定义
    验证为存取所涉及的对象所需权限是否满足
    决定此语句的最佳执行计划
    将它装入共享SQL区
    对分布的语句来说,把语句的全部或者部分路由到包含所涉及数据的远程节点
        只有在共享池中不存在等价sql语句的情况下才对sql语句进行语法分析。这种情况下数据库内核重新为该语句分配共享sql区,因此要耗费较多资源
    3。描述查询结果:
    4。定义查询输出数据:
    5。绑定变量:
    6。并行执行语句:
    7。执行语句
    8。取出查询的行
    9。关闭游标


 

发布了36 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/tyro_blog/article/details/103005241