您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > oracle sg 读书笔记
1.oracle服务器=oracle实例+oracle数据库2.oracle实例=共享内存区域(sga)+后台进程或线程(主要进程dbwn,lgwr,ckpt,arch,pmon,smon)3.oracle数据库即一系列的os文件,主要的文件有数据文件,日志文件和控制文件。4.其他文件:参数文件和口令文件5.其它进程:高级队列,RAC,共享服务器,高级复制,Oracleserver运行环境:1.Client–applicationserver–server:客户端通过应用服务器访问oracle2.Client–server:客户端直接通过网络访问服务器3.Host—base:客户端和服务器位于一台机器上Oracle服务器的两大重要组成部分:一。Oracle实例1.oracleinstance由共享内存结构和后台进程(windows下线程)组成,用来管理数据库2.实例与数据库的关系一个时刻,一个实例有且仅能mount一个数据库,而一个数据库可以由多个实例来管理(例如9i以前的ops,以及9i以后的rac,都是可以一个数据库对应多个实例)4.区别实例和数据库实例就是共享内存结构+后台进程(线程)数据库就是一系列的os文件连接到oracle实例用户连接实例的过程:1.用户打开一个客户端工具,如sqlplus,oracleforms.2.用户进程登陆到服务器,oracle服务器为用户进程开启一个服务器进程(这个应该是指独占服务器模式下,共享服务器模式下用户进程不会直接连接到服务器进程而是连接到调度器,如果存在空闲的服务器进程,调度器就将用户的请求传递给服务器进程),服务器进程代表用户进程于oracle实例通信以及执行sql语句。Connection:用户进程和服务器的一个通路,建立连接的三种方式1.客户端和服务器位于一台机器上,通过interprocess建立connection2.客户端和通过网络连接到oracle服务器,这也就是常见的cs结构3.客户端通过网络连接到应用服务器,应用服务器再通过网络连接oracle服务器,这就是常说的三层结构。SessionSession是用户到数据库的特殊连接,这里的特殊是指用户是合法的(即用户名和密码是正确的),当用户正常退出或者异常中断的时候都会导致session结束。一个用户可以起很多个session,如运行不同的客户端工具。共享服务器和独占服务器的区别:独占服务器是指一个服务器进程只能为一个客户端进程服务,并且用户进程直接和服务器进程连接。对于共享服务器进程,一个服务器进程可以为不同的客户进程服务,共享服务器中,客户进程是直接于调度器连接,并非是服务器进程。二.Oracle数据库Oracle数据库即一系列的os文件,由三个部分组成,控制文件,数据文件和日志文件。数据库由逻辑结构和物理结构之分:1.数据库的物理结构,主要由三个类型的文件组成,控制文件,数据文件和日志文件。控制文件:存储了数据库的结构信息,还有checkpoint信息,同时rman的备份信息也是存储在控制文件中,对于rman没有使用catalog的话,控制文件是很重要的,控制文件中的内容分为可重用和不可重用,如数据文件和日志文件的信息就属于不可重用的部分,rman的信息就属于可重用的部分和control_file_record_keep_time这个参数有关(控制文件必须保留rman信息的最短时间),建议将控制文件保存在多个不同的磁盘,这几个文件互为镜象,如果所有控制文件都损坏可以重建,重建控制文件读取数据头的信息。数据文件:数据库中所有的数据都存储在这类文件中,我将它分为四类,system文件(10g中是system,sysaux,9i中的system),撤消文件(undo,一个数据库虽然可以建立多个undotablespace,但是一个时刻只能使用其中的一个),临时文件(主要用来排序),用户数据文件(除去以上三类)日志文件:日志记录了数据库中的重做信息,用户的操作都会被记录在日志文件中,实例恢复利用status为active和current的日志。当数据库异常关机(abort),或者因为某种原因而异常当机,那么下次启动的时候就要做实例恢复,实例恢复的第一个过程是rollforward(前滚),即将数据库恢复到当机前的那个时刻。接着就open数据库,数据库打开后做rollback。2.其它的文件主要有参数文件(initsid.ora或者服务端参数文件),口令文件,归档日志文件。参数文件:记载了数据库启动信息,nomount的时候就要读取参数文件。Oracle的认证模式主要有口令文件认证和os认证。认证就要通过口令文件。口令文件存储了sysoper和sysdba用户的密码信息,可以通过查询v$pwfile_users来查询具有sysoper或sysdba的用户。Os认证:对于windows,os的用户要在oracle_dba组中,同时SQLNET.AUTHENTICATION_SERVICES=(NTS)对于linux,只要os的用户在oracle_dba组中即可。归档文件:这类文件只会在归档模式下存在,就是日志文件的副本,altersystemswitchlogfile,altersystemarchivelogcurrent以及数据库自己引起的日志切换都会触发arch进程归档。Oracle内存结构:sga+pgaSga:共享内存区域,所有的进程共享,sga在数据库nomount的过程中分配Pga:进程全局区,又称私有全局区,和进程一一对应,其他进程不能访问。服务器进程进程启动的时候分配。Uga:用户全局区域,和会话对应。对于共享服务器模式,uga来自sga,独占服务器模式uga来自pga。Sga分类:1.动态sga:允许在线修改sga的组成部分,直接生效。动态修改的2个前提(1)使用服务端参数文件(2)修改后的sga的总和小于或等于sga_max_size。2.定制(size)sga:在参数文件中把sga的各个组件设置好。Sga的分配:粒度(granule):sga分配和收缩的最小单元。9i:ifsga_max_size128mthengranule=4melseifplatform=windowsthengranule=8melsegranule=16m10g:ifsga_max_size1gthengranule=4melseifplatform=windowsthengranule=8melsegranule=16m也可以查视图v$sga_dynamic_componentsSga的最小值是三个粒度,onegranuleforfixedsga(includelog_buffer),oneforbuffercache,oneforshared_pool(摘自sg)Sga的主要组成部分:一.SharedpoolSharedpool:存储最近使用的sql语句和数据定义,大小设置shared_pool_size,可以通过altersystem在线改。Sharedpool的主要组成部分1.库高速缓存区(librarycache),大小受限于shared_pool_size,为了共享相同的sql语句,避免不要的硬分析,librarycache使用LRU算法。(相关视图v$librarycache)(1)共享sql区:存储sql语句的执行计划和分析树,下次运行相同的语句时,可以直接执行语句,从而避免再次分析。(语句是否共享和cursor_sharing的设置有关)Cursoring_sharinghttp://www.dba-oracle.com/t_cursor_sharing_cached_cursors.htmhttp://www.oracle.com/technology/oramag/oracle/06-jan/o16asktom.html(2)共享plsql区:共享最近执行的plsql语句,包括分析和编译的程序单元(存储过程,函数,包和触发器)3.数据字典缓存区(datdictionarycache),依赖于shared_pool_size,存储数据字典信息提高响应时间。(相关视图v$rowcache)二.Buffercache从数据文件中读取的数据先缓存到databuffer中,如果下一次要读取相同数据的时候可以直接从databuffer中提取,减少物理读,遵循LRU算法。Buffercache大小的设置:1.db_cache_size:默认cache的大小,不能设置为0,从数据文件中读取的数据默认放这个池。2.db_keep_cache_size:保留池的大小,如果一个表很小而有经常查询,可以将这个表keep到保留池3.db_recycle_cache_size:回收池的大小,如果一个大对象基本不会被重用,可以放到这个池这三个池相互独立。buffercache中buffer的大小,默认是db_block_size,9i中可以为用户表空间设置不同的块大小,前提是设置db_nk_cache_size(n=2-32,n的大小与平台有关,有的平台n不能为32),不同块大小的buffercache也是相互独立。Buffercache的大小可以通过altersystem修改在线改。三.Log_buffer:用户对数据库所有修改先存在到log_buffer中,然后由lgwr进程将logbuffer中的数据写入日志文件。保证数据的一致性。由log_buffer参数控制大小,可以再线改。四.Largepool(可选池)1.共享服务器下,uga优先从largepool分配2.rman备份也会使用largepool,前提是当backup_slave_io=n(这个参数我在10g中没找到,不知道被什么参数替代),backup_tape_io_slaves=true,并且largepool能够分配足够的内存,否则将会在alert.log中记录一条错误信息,而且不使用io_slaves做备份和恢复。参数large_pool_size,可以通过altersystem在线改。五.Javapool(可选)如果安装并且使用java,就要设置java_pool,大小由java_pool_size确定,9i中默认值24m。PGAPGA包含服务器进程和后台进程的数据信息和控制信息的内存区域,pga在进程创建是创建,销毁是销毁。独占模式下pga的结构:Sortarea,sessioninformation,cursorstate,stackspace进程结构:1.用户进程:当客户端向数据库请求连接时创建,用户进程不与数据库服务器直接通信。2.服务器进程:当用户和数据库建立连接后,服务器进程启动,独占模式下,一个服务器只能为一个用户进程服务。共享模式下,一个服务器进程可以为多个用户进程服务。3.后台进程:(1)dbwn(必须):负责将数据库缓存区中的数据写如数据文件。触发条件1.Incrementcheckpointandnormalcheckpoint2.Thenumberofdirtybuffersreachesathresholdvalue(thresholdvalue是多少呢???)3.Aprocessscanaspecifiednumberofblockswhenscaningforfreebufferbutnotfound.(specifiednumber指多少???)4.Timeoutcursor.(多长写一次???)5.ApingrequestinRACenviorment(不知道pingrequest啥意思)6.Tablespaceoffline(excludeimmediate)7.ModifyTablespacereadonly8.Droportruncateatable9.Altertablespacetablespace_namebeginbackup;(2)lgwr(必须):负责将logbuffer中的内容写到
本文标题:oracle sg 读书笔记
链接地址:https://www.777doc.com/doc-8715 .html