ITPub博客

首页 > 数据库 > Oracle > oracle体系结构

oracle体系结构

原创 Oracle 作者:next_junction 时间:2014-02-26 19:25:37 0 删除 编辑

服务器和实例:   instance 和db是一对一的。非RAC下,一个instance整个生命周期只能打开一个db,一个db只能被一个instance打开。

         (1)数据库部分>主要文件:database files,redo log files,control files。外围文件:pfile/spfile,orapwSIDfile,alert/trace files,archivelog files,backup files
    datafile(dba_data_files和v$datafile):和tablespace是多对一,和segment是多对多 
    redo log files(v$log):循环复写,日志先写的原则(日志切换:alter system switch logfile)。
四个状态:current(当前正在使用的),active(实例恢复需要该激活状态的日志),inactive(非激活状态,实例恢复不需要)和unused(未使用的)。
    control files(v$controlfile):二进制文件,多路复用(alter system set control_files='路径';),位置由参数文件中的control_files指定。  
    参数文件:数据库启动时候可以指定pfile路径但是不可以指定spfile启动。
    密码文件:orapwd 来创建,grant sysdba to yonghu 来授权(entries表示文件中可放用户最大数量)。
    alert file:sql>show parameter background_dump_dest(使用共享服务器连接)。
    trace file:sql>show parameter user_dump_dest(使用专用服务器连接)
    archivelog files:归档日志。启用或者禁用archivelog需要在mount状态设定(alter database archivelog/noarchivelog)
        (2)实例部分:
    视图:v$sga,v$sgastat,v$buffer_pool
    sga>shared pool(library cache,data dictionary cache),db buffer cache,redo log buffer。 large pool,java pool,stream pool
    pga> smon ,pmon,dbwn,ckpt,lgwr,arch
    library cache:存储一些用户提交的sql语句及相关的解析树,执行计划,用户提交的pl/sql块。library cache中还有一些控制结构,用来管理这些内存 (lock,pin,dependency table)。
    data dictionary cache:存放系统管理自身所需要的所有信息(用户名,用户对象和权限等等)
    db buffer cache(default/keep/recycle pool):32位操作系统,此区可达到1.7G,在64位上,可达到10G。
    redo log buffer:记录数据库中所有改变信息。由于考虑到数据库的一致性和可恢复性,数据在此区中滞留时间不会太久,所以此区一般很小(3MB)。
 
    smom:系统监控进程,实例恢复,清理临时段等 
    pmon:进程监控进程,管理进程,当用户进程失败时,清理内存存储区释放资源,注册监听
    dbwn:写db buffer cache中内容到数据文件中。触发条件:dbwr超时3秒,系统中没有多的空缓存区存放数据,ckpt进程触发dbwr等。
    ckpt:alter system checkpoint,一致性关闭和日志切换都会触发ckpt,fast_start_mttr_target参数的设置。
    lgwr:3秒超时,大于1MB的缓冲区内容,3分之一满,commit,dbwn之前
    arch:归档进程。
        (3)user process,server process,backgroud process
    连接:{User--Sql>select ...--(user process--server process)--session}--->>()之间是一个connection,{}之间是一个session

    专用服务器,共享服务器模式(shared_servers,max_shared_servers等参数的设置和tnsnames.ora中server的设置)。
    server process负责处理客户端sql请求,dbwn负责往db file中写数据
监听:
    动态监听和静态监听($ORACLE_HOME/dbs/network/admin目录中的三个文件:listener.ora/tnsnames.ora/sqlnet.ora)
    如果动态监听打开,不管是否有instance启动(前提得有静态注册),客户端都可以连到一个空闲实例。
    lsnrctl中选择设置当前默认监听
    一个默认的动态监听可以监听当前系统中的多个instance
    local_listener参数(tnsnames.ora的一个描述符)的设置可以启动多个监听并且同时注册上服务(alter system register)。
验证方式:
    操作系统验证:本机的oracle软件用户
    口令文件验证:得需要开监听。远程客户端(包括本机的非oracle软件用户,但是此用户得设定oracle_home和oracle_sid才可以执行sqlplus连接服务器)
REMOTE_LOGIN_PASSWORDFILE = { shared | exclusive | none },这个参数为none时候只能走操作系统验证(数据库关闭时候客户端是走口令文件验证,因为这个参数得需要数据库启动到nomount状态读取到参数文件才生效)。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29117696/viewspace-1093688/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-21

  • 博文量
    19
  • 访问量
    167370