Oracle数据库入门教程Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。Linux公社(LinuxIDC.com)Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。一、Oracle体系结构(1)物理结构datafilesredologfilescontrolfilesparameterfile数据文件日志文件控制文件参数文件datafilesredologfilescontrolfileparameteriles*.dbf*.logInitoraid.ora*.ctlPMONLCKnRECORECOsharedPoolDatabaseBufferCacheRedoLogBufferSGADataDataDataDataDataDataDataDataDataDataDatafilesRedoLogfilesParameterFileControlfilesServerUserDBWRLGWRCKPTARCHOfflinestorage(2)内存结构(SGA)占OS内存的60-70%,大小可由参数文件内参数计算sharedpool(共享池),databasebuffercache(数据缓冲区),redologbuffer(重做日志缓冲区)(如以下图所示)SGA=share_pool_size+db_block_size*db_block_buffers+log_buffersshared_pooldatabase_buffer_cacheredo_logbufferSGAbackgroundprocess(3)instance=SGA+backgroundprocess实例=内存分配+一组后台进程如果把Oracle比作一部汽车,instance相当于汽车的发动机一样,启动oracle前提应先启动instance.(4)session(连接)Oracle是多用户、多任务、可分布式管理的数据库,同时可有许多个用户对数据库操作。oracleuseruserusersession(5)transaction(一组修改动作的集合)交易事务Eg:1、insertDDL(数据定义语句)delete例如:create,alter,drop,conmit等commit每两个DDL语句间是一个transaction2、updateDML(数据控制语句)rollback例如:Insert,Delete,Update(6)后台进程PMON,LCLN,RECO,SMON,DBWR,LGWR,CKPT,ARCHPMON做程序的清洁工作,处理一些不正常退出的事件.SMON做系统的清洁工作,执行系统出错后自动恢复工作.LCKNOracle系统表级或行级加锁的进程.RECO恢复进程.DBWR数据写进程LGWR日志文件写的进程CKPT检测点ARCH归档方式备份进程(7)分析一个SQL语句是怎样在Orcle内部工作的。A、用户发出SQL请求,打开游标;B、把SQL语句语法分析,执行计划,数据字典等信息存入内存中共享池内;C、从数据文件中把相关数据块读入数据缓冲区;D、做相应操作,若做修改,先加上行级锁,经确认后,把改过前后记录内容存入重做日志缓冲区内;E、返回结果给用户,关闭游标。备注:SQL语句大小写敏感的,同样的一个语句,若大小写不同,oracle需分析执行两次,每句后必以“;”结束。PMONLCKnRECORECOsharedPoolDatabaseBufferCacheRedoLogBufferSGA二、启动和关闭数据库。(1)启动%svrmgrl.唤醒SVRMGRL数据库管理SVRMGRLconnectinternal;以系统管理员身份登录。SVRMGRLstartup启动instance连上数据库打开数据库(2)关闭(旧版Oracle用%sqldbalmode=Y)%svrmgrl.(V7.3.2.0以上)唤醒SVRMGRL状态SVRMGRLconnectinternal;SVRMGRLshutdown.(3)启动和关闭Oracle数据库过程图。shutdownopen读参数文件initoraid.ora开机关机读控制文件读所有文件未连上数据库仅启动instancesnomountmount连上数据库,但未打开(4)如果不小心物理上删除了一Oracle的数据文件,比如说,某应用表空间所对应数据文件“adc.dbf?Oracle读控制文件时,和打开数据库时所面对的参数不一致,Oracle数据库将启动不了,解决这种问题的方法是把其对应的表空间先卸下,再删除,以保证控制文件描述和物理上存在文件一致。%svrmgrlSVRMGRconnectinternalSVRMGRstartupmountSVRMGRalterdatabasedatafile‘/directory/abc.dbf’offline;SVRMGRalterdatabaseopen;SVRMGRdroptablespaceabc;1、Oracle数据存储单位a、block数据块:2k最小的I-O单位,伴随database产生而产生,不可变b、extent一组连续的数据块:是用户所能分配存储的最小单位c、segment段:有共同结构的一个或几个区域(extent)d、tablespace表空间:一组物理数据的逻辑组合,(象逻辑间数据仓库)e、file文件:属于某个表空间的物理文件f、database数据库:一组表空间所构成的逻辑的可共享的数据。三、Oracle数据的存储结构Linux公社(LinuxIDC.com)Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。LinuxIDC.com提供包括Ubuntu,Fedora,SUSE技术,以及最新IT资讯等Linux专业类网站。commonandvariableheader块地址,段类型85-100bytesTabledirectory簇中的表信息,用于簇表段Rowdirectory块中的行信息Freespace用于insertupdataRowdata存储数据、索引block结构(系统管理员能在SQLDBA状态,查看视图dba-extents,dba-segments,dba-tablespace,dba-data-files查看所有的extent,segment,tablespace和datafile)3、行链行链1block2block当要存储的数据无法在一个数据块中存放时,需分配两个或多个数据块,标志这几个datablock连接关系的存储信息行链4、行迁移1block2block当一个datablock中的某部分数据经修改后增涨太快,无法继续放在本数据块中,从需把它搬迁到另一个datablock,以优化存储结构,标志这个datablock迁移的存储信息称为行迁移。pctfree20%左右它们是互相消涨的pctused40%左右Inittrans在单一块中最初活动的交易事务数Maxtrans在单一块中最大交易事务数5、控制block空间使用的几个参数Pctfree低高1、可把块填得较满2、如果重组数据,代价较高3、易引起行迁移1、剩下多的空间给以后修改用2、需更多的块存数据3、减少行链和重组数据的代价Pctused低高1、使重组数据时,代价较低。2、增加了未用的空间数1、增加空间使用率2、但使重组数据时,代价较高6、决定extent的参数initial最初分配的空间数(缺省为10k,5个数据块)next下一步分配的空间数maxextents最大分配的extent数minextents最小分配的extnet数,所有重做日志回滚段的存储结构,必须成对地分配extentpctincrease增长率,指数级增长,optimal尽量设小,或为0(缺省为空,仅用于回滚段)freelistpctincrease100()n1+存储参数的设定规则:1、在对象级的存储参数设置值覆盖表空间级的设置2、未在对象级设置存储参数,由表空间级数设置决定3、未在表空间级设置存储参数,由Oracle数据库级参数设置决定4、若存储参数改变后,新的选项只针对未分配的extents有效。data数据段存储对象object(table,view,indexsequence...)index索引段temporary临时段用做(join,groupby,orderbysorting操作)rollback回滚段用于记录修改前后信息,minextent为2,increace为0bootstrap启动段存储数据字典系统信息不能读写,放在系统表空间内,约占40几个block7、segment段的分类datasegment中可能有十种不同类型的存储对象(1)table(2)view实为一个select语句(3)index(一个表不多于3个)(4)cluster(簇)(5)sequence序列(6)synonme用于定义某个远程数据库同义词,实现分式数据库管理透明(7)snapsot快照(8)storedprocedure(function)(9)package程序包(10)dbtrigger数据触发器,处理updata,delete,insert中可能出现的问题见sun屏幕,创建......SQL语句以摚粩结束缺省:10分钟无SQL请求,做rollback缺省:连接在线connecttime(1个小时)8、table存储,按行格式123546............1、rowoverhead行头2、rowpiece列数3、clusterkey(不一定有)4、rowid行的唯一标记(有行链时,记录其它block的rowid5、length6、value当字段值为null时,length为0,无6字value部分,所以某字段常为空,应放table最后;尽量不设为null的字段rowid:xxxxxxxx.xxxx.xxxx块物理地址该row在块中的行号块所属的文件号9、表空间tablespacesystemRBSnosystem把system表空间单独放在一个硬盘上把system表空间单独放在一个硬盘上做成一组镜像(如下附图)toolsuserstempapplicationdataapplicationindex分开存放减少争用(rollback)12附图:四、备份和恢复(1)逻辑备份用Export/Import实用工具(2)物理备份操作系统下的备份1、备份分类归档方式不关闭database状态不归档方式关闭database后,把物理文件进行备份(cptar)2、SVRMGRarchireloglist看当前数据库归档方式3、exp.imp见telnet屏幕table表级user用户级database数据库级incretypecompleteincrementalcumulative累计改过数据(上次cun;或complete后改过的所有数据)(1)createtable(2)insertdata(3)createindex(4)createtriggers,constraintsimp步骤:4、备份和恢复策略逻辑备份仅能恢复到上次的备份点物理备份中的不归档备份可恢复到