本文中我们将列举一些实例来对oracle数据库组件的一些问题做出缜密的解析。
1、由哪些组件组成;
2、建立连接时需要哪些组件;
oracle两部分:实例和数据库
实例由以下组成:sga,sharedpool,databasebuffercache,redologbuffercache。数据库由物理文件组成,其中必须有的文件是:数据文件,控制文件,重做日志,另外还有:参数文件,口令文件,归档日志文件(这三个不是必须的)。
用户建立连接后,启动一个服务器进程,用来将来代替用户进程完成sqlcommand,再通过oracle实例实现对数据库的相关文件进行改变(数据进行读取或修改)。
用户进程不可以直接操作数据库,而必须通过建立连接后,再通过服务器进程来完成.
oracleserver由两个部分组成,
1、instance:又由内存结构和后台进程。
2、database:又由数据文件,日志文件和控制文件组成<这三个文件是必需的>。
controlfile是用来连接实例和database:
|
以上三个过程就是通过controlfile来连接实例和数据库。
sql>alterdatabaseopen:在open的过程对database的数据文件和重做日志文件进行一次性的验证,验证它们的状态。
oracleinstance:存取数据库的一个手段。
一个database与instance之间是1:n的关系,一个instance只能操作一个database,由内存结构(共享池,
buffercache,redologbuffercache)及相应的进程结构组成(pmon<程序监控进程>,smon<系统监控进程>,ckpt<检查点进程>)。
|
以上这两个是设置行宽。
|
将看到在这个系统中所有可能使用到的进程,其中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配置:
|
以上三个命令是用于查看相关内存信息。
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不能单独设置大小。
闽公网安备 35060202000074号