Home >Database >Mysql Tutorial >从内部开始来认识Oracle数据库的结构组件

从内部开始来认识Oracle数据库的结构组件

WBOY
WBOYOriginal
2016-06-07 17:56:471136browse

本文从问题入手来对Oracle数据库组件的一些问题做出仔细的分析。 1、由哪些组件组成; 2、建立连接时需要哪些组件; Oracle两部分:实例和数据库 实例由以下组成:SGA,Sharedpool,Databasebuffercache,Redologbuffercache。数据库由物理文件组 成,其中必须有

本文从问题入手来对Oracle数据库组件的一些问题做出仔细的分析。    1、由哪些组件组成;
    2、建立连接时需要哪些组件;
    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;--显示由几个日志文件组成。
OracleMEMORYSTRUCTURE(内存结构)
由两部分组成:
1、SGA是动态的,其最大值由SGA_MAX_SIZE指定,SGA的内存由SGACOMPONENTS来动态调整。
2、PGA是不共享的,即其包含的信息是不一样的,有两个可享的内存可以由SGA配置:
LARGEPOOL
JAVAPOOL
SQL>SHOWPARAMETERSHARED
SQL>SHOWPARAMETERDB_CACHE
SQL>SHOWPARAMETERLOG
以上三个命令是用于查看相关内存信息。
SQL>ALTERSYSTEMSETDB_CACHE_SIZE=20M;
所有内存大小总和不能大于SGA_MAX_SIZE的值,当提示信息出现?号或乱码时,是由于系统的语言问题。
可以通过ALTERSESSIONSETNLS_LANGUAGE=''AMERICAN''或ALTERSESSIONSETNLS_LANGUAGE="SIMPLE
CHINESE"。
SHAREDPOOL(共享池)
LIBRARYCACHE库缓存;
DATADICTIONARYCACHE数据字典缓存,有的地方又称行CACHE,由SHARED_POOL_SIZE指定大小。
SQL>ALTERSYSTEMSETSHARED_POOL_SIZE=64M;
LIBRARYCACHE主要为提高代码的共享,存储的是最近使用的SQL和PL/SQL代码。
用最近最少使用(LRU)算法;
包括两个结构1:共享SQL代码2:共享PL/SQL代码;
不可直接定义,而由SHAREDPOOLSIZE决定。
DATADICTONARYCACHE。
如:SQL>SELECT*FROMAUTHORS;
执行此命令的过程是:首先确认是否存在AUTHORS,,然后确认字段存不存在,再检查语法,最后验证权限,而这些信息就属于DATADICTIONARYCACHE的内容。其包含的信息有:DATABASEFILES,表,索引,字段,用户,权限和其他数据库对象。
主要用来改变系统的感应时间和性能。
通过改变SHAREDPOOL大小来设置,DATADICTIONARYCACHE不能单独设置大小
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article: Mongodb之(初出茅庐)Next article: MongoDB学习