《oracle基础入门》ppt课件
1,ORACLE 数据库入门,安徽省邮通科技有限责任公司,一、Oracle 体系结构,存储结构(Memory Structure) 操作系统文件(Files) 后台进程(Background Processes) 前台进程(Foreground Processes) 实例(Instance) 连接(Session) 交易事务( Transaction ) 监听进程 SQL语句怎样在Oracle内部工作的,1、操作系统文件,data files,redo log files,control file,parameter files,*.dbf,*.log,Initoraid.ora,*.ctl,datafiles redo log files control files parameter file 数据文件 日志文件 控制文件 参数文件,Trace&Alert File 错误信息记录,占OS内存的60-70%,大小可由参数文件内参数计算 shared pool(共享池), database buffer cache(数据缓冲区), redo log buffer(重做日志缓冲区) (如以下图所示) SGA=share_pool_size+db_block_size *db_block_buffers +log_buffers,2、存储结构,shared_pool,database_buffer_cache,redo_log buffer,tnslsnr listener* ORACLE网络监听进程, 处理客户端的连接请求 DBWRN 写数据文件的进程 LGWRN 写日志文件的进程 PMON 做程序的清洁工作,处理一些不正常退出的事件 SMON 做系统的清洁工作,执行系统出错后自动恢复工作 LCKN Oracle系统表级或行级加锁的进程. RECO 恢复进程 CKPT 检测点 ARCH 归档方式备份进程 SNAPN 管理快照复制等的进程 SNNN MTS Server进程 DNNN MTS Dispatcher进程,3、后台进程,用户进程 当用户欲以SQL指令存取数据库数据的应用程序,如Server Manager、SQLplus、Qracle Forms、各种客户端工具等 服务器进程 Oracle数据库对每一个用户进程会启动一个服务器进程与之对应,负责处理对应用户进程的SQL指令,并把执行结果传回给用户进程。,4、前台进程,SGA,background process,实例 = 内存分配 + 一组后台进程 Instance=SGA+background process 如果把Oracle比作一部汽车,instance相当于汽车的发动机一样,启动oracle前提应先启动instance.,5、实例,oracle,user,user,user,session,Session(连接) Oracle是多用户、多任务、可分布式管理的数据库,同时可有许 多个用户对数据库操作。,6、连接,Transaction 交易事务 Eg: 1、DDL (数据定义语句) 例如:create,alter,drop等 2、DML (数据控制语句) 例如:Insert,Delete,Update ,commit, rollback等,7、交易事务,$listener status 显示ORACLE网络监听进程的状态 $listener services 显示当前详细的网络监听进程的服务处理状态 $lsnrctl reload 重新启动 $lsnrctl stop 关闭ORACLE网络监听进程 $lsnrctl start 启动ORACLE网络监听进程,8、 Listener监听进程常用命令,用户发出SQL请求,打开游标; 把SQL语句语法分析,执行计划,数据字典等信息存入内存中共享池内; 从数据文件中把相关数据块读入数据缓冲区 做相应操作,若做修改,先加上行级锁,经确认后,把改过前后记录内容存入重做日志缓冲区内; 返回结果给用户,关闭游标。 备注:SQL语句大小写敏感的,同样的一个语句,若大小写不同,oracle需分析执行两次,9、SQL语句在Oracle内部怎样工作,shutdown,open,读参数文件initoraid.ora,开机,关机,读控制文件,读所有文件,未连上数据库 仅启动instances,nomount,mount,连上数据库,但未打开,二、启动和关闭数据库,$svrmgrl - 唤醒 SVRMGRL数据库管理 SVRMGRL connect internal; - 以系统管理员身份登录。 SVRMGRL startup -启动instance 其它命令: SVRMGRL startup nomount; SVRMGRL startup mount; SVRMGRL alter database open;,1、启动,$svrmgrl -(V7.3.2.0以上) 唤醒SVRMGRL状态 SVRMGRLconnect internal; SVRMGRLshutdown.,2、关闭,如果不小心物理上删除了一Oracle的数据文件,比如说,某应用表空间所对应数据文件“adc.dbf”,Oracle读控制文件时,和打开数据库时所面对的参数不一致,Oracle数据库将启动不了,解决这种问题的方法是把其对应的表空间先卸下,再删除,以保证控制文件描述和物理上存在文件一致。 $svrmgrl SVRMGRconnect internal SVRMGRstartup mount SVRMGRalter database datafile /directory/abc.dbf offline drop; SVRMGRalter database open; SVRMGRdrop tablespace abc;,3、启动时文件损坏,Oracle数据存储单位 block 结构 行链 行迁移 控制block空间使用的几个参数 决定extent的参数 段(segment)的分类 表(Table)的存储 表空间(Tablespace),三、Oracle数据的存储结构,block 数据块: 2k 最小的I-O单位,伴随database产生而产生,不可变 extent 一组连续的数据块:是用户所能分配存储的最小单位 segment 段:有共同结构的一个或几个区域( extent) tablespace 表空间:一组物理数据的逻辑组合,(象逻辑间数据仓库) file 文件:属于某个表空间的物理文件 database 数据库:一组表空间所构成的逻辑的可共享的数据。,1、Oracle数据存储单位,common and variable header 块地址,段类型 85-100bytes Table directory 簇中的表信息,用于簇表段 Row directory 块中的行信息 Free space 用于insert updata Row data 存储数据、索引,block 结构,( 系统管理员能在SQLDBA状态,查看视图dba-extents, dba-segments,dba-tablespace,dba-data-files查看所有的extent, segment, tablespace 和 datafile),2、Block结构,行链,1 block,2 block,当要存储的数据无法在一个数据块中存放时,需分配两个或多个数据块,标志这几个data block连接关系的存储信息,3、行链,行链,1 block,2 block,当一个data block中的某部分数据经修改 后增涨太快,无法继续放在本数据块中,从需把它搬迁到另一个data block,以优化 存储结构,标志这个data block迁移的存储 信息称为行迁移。,4、行迁移,pctfree 20%左右 它们是互相消涨的 pctused 40%左右 Inittrans 在单一块中最初活动的交易事务数 Maxtrans 在单一块中最大交易事务数,5、控制block空间使用的几个参数,Pctfree,低,高,1、可把块填 得较满 2、如果重组数据,代价较高 3、易引起行迁移,1、剩下多的空间给以后修改用 2、需更多的块存数据 3、减少行链和重组数据的代价,5.1、Pctfree,当一个Database Block的剩余空间低于此设置值时(默认值10),此Database Block会被移出Free Block列表,不再允许放入新增的row,所留下来的剩余空间用于容纳目前存在此Block内的数据更新而增加的数据长度以及Block Header数据的成长。,Pctused,低,高,1、使重组数据时,代价较低。 2、增加了未用的空间数,1、增加空间使用率 2、但使重组数据时,代价较高,5.2、Pctused,当一个Database Block引起内部所存放的数据行被删除,或数据行的长度因更新耳变短,会使此Block的剩余空间逐渐增加。当一Block的使用空间低于此设置值时(默认值40),此Database Block会被收回Free Block列表,重新允许放入新增的数据行。,决定extent的参数 pctincrease,initial 最初分配的空间数(缺省为10k,5 个数据块) next 下一步分配的空间数 maxextents 最大分配的extent数 minextents 最小分配的extnet数,所有重 做日志回滚段的存储结构,必 须成对地分配extent pctincrease 增长率,指数级增长, optimal 尽量设小,或为0(缺省为空, 仅用于回滚段) freelist,100,(,),n,1+,6、决定extent的参数,存储参数的设定规则:,1、在对象级的存储参数设置值覆盖表空间级的设置 2、未在对象级设置存储参数,由表空间级数设置决定 3、未在表空间级设置存储参数,由Oracle数据库级参数 设置决定 4、若存储参数改变后,新的选项只针对未分配的extents 有效。,段的分类,7、段(segment)的分类,data 数据段 存储对象object(table,cluster,view,index,sequence.) index 索引段 temporary 临时段 用做(join,group by,order by sorting操作) rollback 回滚段 用于记录修改前后信息,以便数据库系统rollback,read-consistency bootstrap 启动段 存储数据字典系统信息不能读写,放在系统表空间内,数据库管理员可不于理会。,data segment中可能有十种不同类型的存储对象,(1)table (2)view 实为一个select语句 (3)index(一个表不多于3个) (4)cluster (簇) (5)sequence 序列 (6)synonme 用于定义某个 远程数据库同义词,实现分式数据库管理透明 (7)snapsot 快照 (8)stored procedure(function) (9)package 程序包 (10)db trigger 数据触发器,处理updata,delete,insert中可能出现的问题,table存储,按行格式,1,2,3,5,4,6,.