• 转:从内部开始 认识Oracle数据库结构组件


    转自:

    http://database.51cto.com/art/200707/51422.htm

    【引自相濡以沫的博客】Oracle两部分:实例和数据库

    实例由以下组成:SGA,Sharedpool,Databasebuffercache,Redologbuffercache。数据库由物理文件组成,其中必须有的文件是:数据文件,控制文件,重做日志。另外还有:参数文件,口令文件,归档日志文件(这三个不是必须的)。

    用户建立连接后,启动一个服务器进程,用来将来代替用户进程完成SQLCOMMAND,再通过Oracle实例实现对数据库的相关文件进行改变(数据进行读取或修改)。

    用户进程不可以直接操作数据库,而必须通过建立连接后,再通过服务器进程来完成。

    OracleSERVER由两个部分组成,

    1、INSTANCE:由内存结构和后台进程组成。 
    2、DATABASE:由数据文件,日志文件和控制文件组成<这三个文件是必需的>。

    CONTROLFILE是用来连接实例和DATABASE:

    sql>SHUTDOWNIMMEDIATE 
    sql>STARTUPNOMOUNT
    sql>ALTERDATABASEMOUNT

    以上三个过程就是通过CONTROLFILE来连接实例和数据库。

    sql>ALTERDATABASEOPEN:在OPEN的过程对DATABASE的数据文件和重做日志文件进行一次性的验证,验证它们的状态。

    OracleINSTANCE:存取数据库的一个手段。

    一个DATABASE与INSTANCE之间是1:N的关系,一个INSTANCE只能操作一个DATABASE,由内存结构(共享池,BUFFERCACHE,REDOLOGBUFFERCACHE)及相应的进程结构组成(PMON<程序监控进程>,SMON<系统监控进程>,CKPT<检查点进程>)。

    sql>SHOWSGA---显示DATABASE内存结构信息 
    sql>SETWRAPOFF
    sql>SETLINESIZE200

    以上这两个是设置行宽。

    sql>SELECT*FROMV$BGPROCESS;

    将看到在这个系统中所有可能使用到的进程,其中PADDR并不每个进程都分配到有效的地址,即并不是每个进程都是必须的。

    sql>SELECT*FROMV$BGPROCESSWHEREPADDR<>'00'

    将显示所有必需的进程。

    ESTABLISHINGACONNECTIONANDCREATINGASESSION

    连接到Oracle实例

    包括建立一个用户连接及创建会话。

    sql>SELECT*FROMV$CONTROLFILES;--显示现系统下由几个控制文件组成。
    sql>SELECT*FROMV$DATAFILE;--显示由几个数据文件组成。
    sql>SELECT*FROMV$LOGFILE;--显示由几个日志文件组成。

    Oracle MEMORY STRUCTURE(内存结构)

    由两部分组成:

    1、SGA是动态的,其最大值由SGA_MAX_SIZE指定,SGA的内存由SGACOMPONENTS来动态调整。

    2、PGA是不共享的,即其包含的信息是不一样的,有两个可享的内存可以由SGA配置:

    (1)LARGEPOOL 
    (2)JAVAPOOL
    sql>SHOWPARAMETERSHARED
    sql>SHOWPARAMETERDB_CACHE
    sql>SHOWPARAMETERLOG

    以上三个命令是用于查看相关内存信息。

    sql>ALTERSYSTEMSETDB_CACHE_SIZE=20M; 

    所有内存大小总和不能大于SGA_MAX_SIZE的值,当提示信息出现?号或乱码时,是由于系统的语言问题。

    可以通过ALTERSESSIONSETNLS_LANGUAGE='AMERICAN'或ALTERSESSIONSETNLS_LANGUAGE="SIMPLE CHINESE"。

    SHAREDPOOL(共享池)

    (1)LIBRARYCACHE库缓存;

    (2)DATADICTIONARYCACHE数据字典缓存,有的地方又称行CACHE,由SHARED_POOL_SIZE指定大小。

    sql>ALTERSYSTEMSETSHARED_POOL_SIZE=64M; 

    LIBRARYCACHE主要为提高代码的共享,存储的是最近使用的SQL和PL/SQL代码。

    (1)用最近最少使用(LRU)算法;

    (2)包括两个结构1:共享SQL代码;2:共享PL/SQL代码;

    (3)不可直接定义,而由SHAREDPOOLSIZE决定。

    DATADICTONARYCACHE。

    如:SQL>SELECT*FROMAUTHORS;

    执行此命令的过程是:首先确认是否存在AUTHORS,然后确认字段存不存在,再检查语法,最后验证权限,而这些信息就属于DATADICTIONARYCACHE的内容。其包含的信息有:DATABASEFILES,表,索引,字段,用户,权限和其他数据库对象。

    (1)主要用来改变系统的感应时间和性能。

    (2)通过改变SHAREDPOOL大小来设置,DATADICTIONARYCACHE不能单独设置大小。

  • 相关阅读:
    2019年Pycharm最新激活码_学生党适用
    Day14_分享昨天看到的一句话
    监督学习算法_k-近邻(kNN)分类算法_源代码
    Python学习需要安装的工具
    Python基础学习资料推荐
    总结一下公司项目使用各种较新的前端技术和 Api 的一些经验。
    由 Session 和 Cookie 的区别说起
    我理解的正确的代码
    回忆我是如何赢得一次踢毽子比赛
    日常的例子说明 throttle 和 debounce 的区别
  • 原文地址:https://www.cnblogs.com/zerocc/p/2051870.html
Copyright © 2020-2023  润新知