服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

教你正确认识oracle数据库的结构组件

本文中我们将列举一些实例来对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并不每个进程都分配到有效的地址,即并不是每个进程都是必须的。

1 2 下一页>>


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配置:

<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不能单独设置大小。

扫描关注微信公众号