zoukankan      html  css  js  c++  java
  • Oracle一些概念重温

    当前项目数据库用的Oracle。鉴于已经有几年没有接触过Oracle了,故在此重新温习一下oracle的部分概念和特性。

    1.Oracle体系结构图

          

    2.Oracle物理结构由三类文件组成,数据文件,控制文件和重做日志文件;参数文件、密码文件和归档日志文件不属于Oracle的数据库文件,但也是运行Oracle必不可少的。

    3.Oracle提供了三种数据库连接方式:

      基于主机的方式

      基于客户机-服务器的方式

      客户-应用服务器-数据库服务器方式。应用服务器包括 IIS或Apache服务器

      通过这三种方式可以建立一个数据库连接(connection),一个连接可以并发建立多个会话(session)

    4.Oracle的内存结构由两大部分:SGA(System Global Area)和PGA(Progress Global Area)构成。从体系结构图中可以形象看出。SGA包含几个重要的内存区:数据库高速缓存(Database buffer cache)、重做日志缓存(Redo log buffer cache)、共享池(Shared pool)、大池(Large pool)和Java池(Java pool)

    5.Oracle的进程分为服务器进程和用户进程。服务器进程中有5个必须的,DBWR(数据库写进程)、LGWR(重做日志写进程)、PMON(进程监控进程)、SMON(系统监控进程)、CKPT(检验点进程)

    6.一些支持的简单的sql函数

    -- || 做字符拼接
    select 'a' || 'b'    as test from dual 
    -- concat做字符拼接
    select CONCAT('a', 'b') from dual;
    -- lower转小写
    select lower('A') from dual;
    -- upper转大写
    select upper('b') from dual;
    --initcap把段首和空格后的第一个字符转大写
    select INITCAP('anyWord test') from dual;
    --substr截取字符
    select SUBSTR('any word test', 0, 3) from dual;
    --length统计字符长度
    select LENGTH('中1a-') from dual;
    --instr查找字符出现的位置
    select INSTR('abc', 'f') from dual;
    --trim清空段首和段尾多余的空格
    select TRIM(' a b c ') from dual;
    --replace替换字符
    select REPLACE('abcd','bc',' any word ') from dual;
    --round按特定精度四舍五入
    select round(0.333333,3) from dual;
    --trunc按特定精度截取
    select trunc(0.3355,3) from dual;
    --sysdate查询当前时间
    select SYSDATE from dual;
    --nvl判空并返回指定结果
    select nvl(BOX_WIDTH,rownum) from WWV_FLOWS where BOX_WIDTH is null;
    --nvl2判空,按是否返回不同结果
    select nvl2(box_width,box_width,rownum) from WWV_FLOWS;
    -- case when.. end 做条件查询
    select  
        (case 
            when flow.id <= 4400 then 'less than 4400'
            when flow.id = 4500 then ' is 4500 '
            else 'bigger than 4500 'end ),flow.ALIAS
    from WWV_FLOWS flow;
    -- decode(str,condtion1,result1...,default)做条件查询
    select DECODE(flow.id, 4400,'is 4400',4500,' is 4500', 'other') from WWV_FLOWS flow;
    --rownum查询
    select fow.rowid,rownum,fow.ALIAS from WWV_FLOWS fow;
    --having和group by的语法组合
    select SUBSTR(flow.name, 0, 4) from 
    WWV_FLOWS flow 
    having SUBSTR(flow.name, 0, 4) like '%PE%'
    group by SUBSTR(flow.name, 0, 4) ;

    7.数据字典,包含有

      所有模式(用户)对象的定义

      数据库的逻辑结构和物理结构信息

      所有模式对象呗分配多少存储空间以及当前使用的空间

      默认列的值

      对象完整性的约束信息

      用户信息

      用户或角色的特权信息

      审计信息

    8.数据字典试图分3类,DBA_*,ALL_*,USER_*

    9.管理和维护表

      临时表的概念(写存储过程中可能会涉及)

      表空间、段空间、区、块的概念

      高水准线、行迁移的概念

      一类特殊表:索引组织表

    10.索引

      索引的特点:

      对于具有只读特性或较少插入、更新或删除操作的大表通常可以提高查询速度

      可以对表的一列或多列建立索引

      建立索引的数量没有限制

      索引需要磁盘存储,需要Oracle自己维护

      索引对用户透明,是否使用索引是Oracle决定的

    11.Oracle的RDBMS在访问数据时最根本的3种访问方式:全表扫描,通过ROWID,使用索引

    12.索引扫描类型包括

      INDEX UNIQUE SCAN(索引唯一扫描)

      INDEX RANGE SCAN(索引范围扫描)

      INDEX FULL SCAN(索引全扫描)

      INDEX FAST FULL SCAN(索引快速扫描)

    13.限制使用索引的一些情况

      where条件中使用不等于运算符(包括 <>、!=)

      使用is null 或 is not null (貌似不会影响到位图索引)

      使用函数(可以建立函数索引来规避这种情况)

      使用不匹配的数据类型

    14.优化器基于 选择性、集群因子两个关键因素来决定是否要所用索引

    15.索引查找分为两个过程:

      根据树进行定位、找出rowid(索引查找)

      根据rowid找出表中的数据行(表数据查找)

    16.直方图的概念

    17.Oralce默认采用B树索引

    18.hash索引、反向键索引、基于函数的索引

    19.监控索引的使用

    20.重建、维护和删除索引

    21.纯粹做开发还可能牵扯到 事务、sql调优的概念。数据库层级除非写存储过程,一般牵扯到这一层的事务较少(大部分都是在上层做事务管控)。oracle的sql优化的话,简单的方式就是基于解释器来做,这一点上,用oracle比用mysql好太多了。

    18位图索引为一种可选索引,但是对于有大量更新操作的表最好不选择使用位图索引

  • 相关阅读:
    BZOJ3752 : Hack
    XIV Open Cup named after E.V. Pankratiev. GP of SPb
    XIII Open Cup named after E.V. Pankratiev. GP of Ukraine
    BZOJ2087 : [Poi2010]Sheep
    BZOJ2080 : [Poi2010]Railway
    BZOJ2082 : [Poi2010]Divine divisor
    Moscow Pre-Finals Workshop 2016. National Taiwan U Selection
    XIII Open Cup named after E.V. Pankratiev. GP of Asia and South Caucasus
    XIII Open Cup named after E.V. Pankratiev. GP of Azov Sea
    XIII Open Cup named after E.V. Pankratiev. GP of SPb
  • 原文地址:https://www.cnblogs.com/ybk2018af/p/9742221.html
Copyright © 2011-2022 走看看