Oracle9i数据库体系结构[1]
- 格式:ppt
- 大小:1.78 MB
- 文档页数:62
描述oracle数据库体系结构的组成及其关系。
Oracle数据库体系结构由以下几个部分组成:1. 实例(Instance):实例是在计算机内存中运行的一个进程,负责管理数据库的操作。
每个实例都有自己的内存空间和进程,可以同时运行多个实例。
2. 数据库(Database):数据库是一个存储数据的容器,包含了表、视图、索引等对象。
一个实例可以管理多个数据库,每个数据库由一个或多个数据文件组成。
3. 数据文件(Data File):数据文件是用来存储数据库的实际数据的文件,包含了表、索引等对象的数据。
一个数据库可以有多个数据文件,每个数据文件具有独立的文件名和路径。
4. 控制文件(Control File):控制文件是用来记录数据库的结构和状态信息的文件,包括数据库名、数据文件的路径、表空间的信息等。
一个数据库通常有一个或多个控制文件。
5. 日志文件(Redo Log File):日志文件是用来记录数据库的变化操作的文件,包括数据更改、事务回滚等。
日志文件用于实现数据库的恢复和数据的一致性。
每个数据库通常有多个日志文件。
6. 表空间(Tablespace):表空间是数据库中逻辑数据存储的单位,用来管理和组织对象。
每个表空间由一个或多个数据文件组成,不同表空间可以包含不同的数据对象。
7. 段(Segment):段是逻辑存储结构的基本单位,是指数据库中的一个连续空间。
每个表、索引等对象都占用一个或多个段。
8. 区(Extent):区是段的扩展单位,是一组连续的数据块。
一个段由多个区组成。
9. 块(Data Block):块是数据库存储的最小单位,通常是8KB大小。
每个数据文件由多个块组成。
以上组成部分之间的关系如下:- 实例与数据库:一个实例可以管理多个数据库,每个数据库都有自己的实例。
- 数据库与数据文件:一个数据库可以由一个或多个数据文件组成,每个数据文件存储数据库的实际数据。
- 实例与控制文件:一个实例通常有一个或多个控制文件,控制文件记录了数据库的结构和状态信息。
Oracle 9iORACLE9i数据库技术Oracle数据库效劳器的最新版本Oracle 9i是Oracle数据库效劳器家族中的新一代旗舰产品。
ORACLE数据库产品具备许多技术特性。
1-先进性ORACLE公司成立以来,在数据库领域始终处于技术领先地位。
通过自身产品在技术的不断创新和对信息技术开展方向的敏锐洞察,始终领导数据库产品的开展。
不管在哪个时期,都具有技术优势。
为了实现事务处理的高性能,Oracle 9i的多线程的、多效劳器的体系结构能够协调处理上万条并发用户请求。
单个请求均被放入队列,并由最少量的效劳器进程处理。
Oracle 9i的可伸缩的,可靠的体系结构推出了无法匹敌的任务关键系统所需的可伸缩性、可用性以及高性能。
Oracle 9i和Oracle 9i Real Application Server能充分利用所有的硬件系统资源,从单处理器,并行多处理器,集群系统(cluster)到大规模并行处理器(MPP)系统。
Oracle支持行级封锁技术来解决写/写冲突,并支持数据多版本来解决读/写冲突。
行级封锁因为占用的系统资源最少,能最大限度地提高系统的吞吐量。
数据多版本(读一致性快照)防止了读锁,使系统对锁的管理因锁种类的减少而大大简化。
Oracle杜绝锁升级,防止死锁的发生。
并且,Oracle有专门的后台进程监控和解决死锁,一旦出现死锁,自动解除死锁。
Oracle9i 的一个功能,是能够将业务数据和索引进行分区。
经分区的数据和索引具有以下优点:缩短对长时间运行的查询的响应时间;分区减少了磁盘I/O 操作减少对并发查询的响应时间;I/O 操作在每个分区上同时进行索引维护更加轻松,因为可进行分区级创立和重构操作可以重建分区上的索引,而不影响在其他分区上的查询可以更改每个本地索引的存储参数,而与其他分区无关对于民政部民政公用政务平台系统,需要存贮大量的资料、档案和各地的业务数据,同时,还需要同协作机构进行数据交换,而Oracle9i支持最大为512Peta bytes的数据库(1 Petabytes = 1000TB =1000,000GB),较好地支持大型存储设备的管理操作,整个管理过程对用户是完全透明的。
oracle9i数据库:Oracle9i 数据库控制文件疯狂代码 / ĵ:http://Java/Article62724.html经过前几期专栏文章洗礼相信大家对于 Oracle9i 数据库应该已具备些基本管理概念但是这还不足以驾驭Oracle9i 数据库!接下来我将从实务角度深入解说 Oracle9i 数据库各种核心组成组件和各种数据库管理窍门技巧本期先从 Oracle9i 数据库控制文件(Control files) 开始谈起j%KOG@_oJAVA中文站社区门户$AZ4DeRh!I控制檔角色j D2wkJJAVA中文站社区门户-G%R"H2c ~5h每个 Oracle9i 数据库都必须有个控制档它是个小型 2进制档案主要是储存 Oracle9i 数据库结构信息包括:#v jGvdwF/k4`q hI`n kc:n`jn ; ; ; ; ; ; 数据库名称8W+y\J ejSn ; ; ; ; ; ; 数据库建立时间 JAVA中文站社区门户[Cd*X:x7E,Xs4]`n ; ; ; ; ; ; 资料文件名称和所在位置{"U(F9NDhH-xn ; ; ; ; ; ; 重置日志文件名称和所在位置 JAVA中文站社区门户*Z7L l:F3J\D/VQn ; ; ; ; ; ; 目前日志序列码(log sequence number) JAVA中文站社区门户J$G]_v-tG8]Wn ; ; ; ; ; ; 检查点信息M9\;_}1U8K*xi"vJAVA中文站社区门户o8p$Z-C'NA\,K2OwGpkWw|6j简言的控制档可用来描述 Oracle9i 实体结构因此开启 Oracle9i 数据库时定要读取控制文件才能取得所有数据库实体档案相关信息旦控制文件不幸毁损数据库便无法顺利开启也如此控制档管理和维护工作显得格外重要JAVA中文站社区门户S~l}G2s(s(_JAVA中文站社区门户bI\h*TG如何管理控制檔F9?On+@k/T:s#I sU@x q%Y设定控制文件名称和所在位置*ITq A]f8hcl:]`q6u4GQ M~控制文件将用来存放 Oracle9i 数据库实体结构信息即使目前尚未建置 Oracle9i 数据库您也必须先准备好控制档!换言的在激活 Oracle Instance 时就必须知道控制文件名称和所在位置为此控制文件相关信息必须设定在起始参数档内才能在开启 Oracle Instance 时并读取控制档内容进而激活 Oracle9i 数据库控制文件名称和所在路径位置是设定在起始参数档内 CONTROL_FILES 参数IAOl2bl/n1n;Y7x ]mb+vB如何配置控制文件JAVA中文站社区门户(]Q8T&i9^~:XJAVA中文站社区门户C!l+bB9D7ie%Z每个 Oracle9i 数据库最好拥有两个以上控制档并各自存放在区别磁盘上如此来当控制档因故毁损时您便可以在最短时间内修复控制文件尽可能缩短数据库停摆时间假定您 Oracle9i 数据库目前配置了 3个控制文件那么Oracle 如何维护这些控制档呢? Oracle9i 和控制档互动方式如下:5~'`9eR5s,aT#wM)p#] VG`#tI~Lxn ; ; ; ; ; ; 开启 Oracle 数据库时只会读取第个控制文件(顺序以 CONTROL_FILES 设定值为基准)0W8M!G-G.{!@n ; ; ; ; ; ; 如果需要将特定信息写入控制文件则 Oracle 会同时写入 CONTROL_FILES 参数所指定档案 JAVA中文站社区门户){1K ^-W+u4RUn ; ; ; ; ; ; 当某个控制档发生问题时Oracle Instance 将因此停摆JAVA中文站社区门户 z/[ m!K9I2NHJAVA中文站社区门户O5WY L?sM5Gn,wi如前所述各控制档复本应该分散在区别实体磁盘因此实际上规划个正式系统时请仔细研究控制文件和重置日志文件的搭配方式JAVA中文站社区门户8H0w{%rj%|%{+V[%rp.k;p:~0}@假定目前重置日志群组有两个分别置于 /u01 和 /u02两个磁盘;每个重置群组包含 3个重置日志文件:PEmGr'Rj~;EA$f l9EB+XV/u01/oradata/ora901/log1a.rdo(Group1)[D9?V.yoJ E:Jo8pWJAVA中文站社区门户Tl Q]q)W/u01/oradata/ora901/log2a.rdo(Group2){+{|(T-N;j2Z1_r\VNDH0{,kn/u02/oradata/ora901/log1b.rdo(Group1)9_:c"deBJb)H.beJAVA中文站社区门户 Bu)w{|1S/u02/oradata/ora901/log2b.rdo(Group2)JAVA中文站社区门户*_g\Rl3LjUJQ3pAB/u03/oradata/ora901/log1c.rdo(Group1)JAVA中文站社区门户"y1\DFTv s!ouJAVA中文站社区门户RtZR{2Ih(I/u03/oradata/ora901/log2c.rdo(Group2)9k'_0I+r+r,}JAVA中文站社区门户\B7~Fr5V此时不妨在 /u01 和 /u02 各配置个控制文件如此可有效降低重置日志文件和控制文件同时遗失风险不管哪个磁盘出问题另个磁盘仍然保留完整重置日志文件和控制文件资料JAVA中文站社区门户;s(O,`u5n1Y5r&dJAVA中文站社区门户;b fG:M6Wh5f|XJAVA中文站社区门户p6X:U1M\|如何决定控制档大小JAVA中文站社区门户*G|3\:@Zw#BOracle9i 控制檔大小主要是由 CREATE DATABASE 指令内数个参数所决定分别是: MAXDATAFILES、MAXLOGFILES、MAZLOGMEMBERS、MAXLOGHISTORY 和 MAXINSTANCESJAVA中文站社区门户5Y%F*u[$x)B3\ P4C jJAVA中文站社区门户{ Eg#v7Y ze控制檔建立方式V qp0f:k]%~-MogV5e经由 CREATE DATABASE 指令建立控制文件0Da&f {$@)J&ScJAVA中文站社区门户,OSR-J.eOracle9i 控制文件在建立数据库同时就会并建立;换句话说当您执行 CREATE DATABASE 的后就会产生控制档但是有点必须注意:CREATE DATABASE 指令内并未指定控制文件相关信息! 其实控制文件名称和所在位置是定义在起始参数档CONTROL_FILES参数其命名方式必须视操作系统环境而定;例如 Windows 系统和 Linux 系统档案路径表示法就不相同以下是 CONTROL_FILES 参数的定义方式:3t.`M*D,fCONTROL_FILES = ( /u01/oracle/ora901/control01.ctl,JAVA中文站社区门户uZixJVV0V/u02/oracle/ora901/control02.ctl,z!uA F-IX~#v/u03/oracle/ora901/control03.ctl)JAVA中文站社区门户8~pP1MP6rDz.JJAVA中文站社区门户{Q,v W[]B如果 CONTROL_FILES 参数所指定文件名称已经存在于操作系统中如何办? 此时您在执行 CREATE DATABASE 指令时就会发生不过只要加上 CONTROL FILE REUSE 子句即可然而如果现有控制档名称和 CONTROL_FILES 所设定名称相同但是其 “大小” 却区别那么您还是无法使用 REUSE 选项JAVA中文站社区门户)fhQce7Xy4y F#l^JAVA中文站社区门户(eEH;|-Z1x/szjx建立额外控制档JAVA中文站社区门户hI\5T6m为了避免控制文件(或其所在磁盘)毁损时影响到 Oracle9i 数据库正常运作您也许需要在其它硬盘上新增其它控制档最简单方式就是先将既有控制文件复制到目位置然后将控制文件名称加入起始参数档 CONTROL_FILES 的中同理如果想更改控制档名称也可以先将控制文件复制到目位置后予以更名再更新 CONTROL_FILES 参数请注意不管是上述何项动作都应该先关闭 Oracle9i instance 再进行在其它磁盘建立额外控制文件步骤如下:-yp!J2[Ih2{rnRbf m1. ; ; ; ; 关闭 Oracle9i 数据库 JAVA中文站社区门户s s`'b-S!oY2. ; ; ; ; 在操作系统下将既有控制文件复制到目位置;Tt~:Ir3. ; ; ; ; 开启起始参数档并修改 CONTROL_FILES 参数您必须将新控制文件名和所在目录名称加入CONTROL_FILES 参数 JAVA中文站社区门户/u'v,p$UIt3SC4. ; ; ; ; 重新开启 Oracle9i 数据库L}nA@r:ZJAVA中文站社区门户&|n }3]_\建立全新控制檔JAVA中文站社区门户 tf5VCE Uat除了将控制文件复制到其它磁盘的外某些时候您可能需要建立 ”全新” 控制檔例如:JAVA中文站社区门户 iz;L qOFI$R"s:mn ; ; ; ; ; ; 目前数据库既有控制文件不幸毁损不仅未进行备份也尚未在其它磁盘建立镜射控制文件.M+dpg4I4rL:En ; ; ; ; ; ; ; ;您希望更改 CREATE DATABASE 指令内设定控制文件相关参数例如:数据库名称或是 MAXLOGFILES、MAXLOGMEMBERS 和 MAXLOGHISTORY 等参数JAVA中文站社区门户TuK(a6RE]:Z JAVA中文站社区门户&[A1uA7KEOb举例来说在分布式运算环境中可能会有两部 Oracle9i 数据库名称相同其中台必须更改数据库名称也有可能MAXLOGFILES 和 MAXLOGMEMBERS 最初设定值太小现在必须加大上述情况都必须建立全新控制档以下是建立详细建置步骤:JAVA中文站社区门户yb:[ ` Dx'Q L.GA8R c4?_#^hO1. ; ; ; ; ; ; 先整理份数据库档案清单其中包含所有数据文件和重置日志档案的路径和名称V$LOGFILE 和 V$DATAFILE 这两个视观表可协助您进行这项供工作例如:@"v z&Hr+P4]D[-XSELECT member FROM v$logfile;JAVA中文站社区门户'r._0`3nO*PTgSELECT NAME FROM V$DATAFILE;JAVA中文站社区门户G8H&YKR7DI+Pw[z3b\Ghz}2. ; ; ; ; ; ; 关闭数据库请尽可能以 NORMAL 选项关闭数据库必要时才使用 IMMEDIATE 或ABORT 选项0}z,p/^4\H3. ; ; ; ; ; ; 重新激活 Oracle Instance 至 NOMOUNT 状态:JAVA中文站社区门户6hNt-b+z&_?!T3ESTARTUP NOMOUNT;JAVA中文站社区门户 {0|ut!H:hU1^SLG|6e7F&X[.?b4. ; ; ; ; ; ; 执行 CREATE CONTROLFILE 指令建立新控制文件以下范例将为 ora901 数据库建立个全新控制档:,A\d}5u#JW&m1f P(iYQm9JCREATE CONTROLFILE9B9YM%Awm-BWRKz5cn:XuV6NDLSET DATABASE ora901JAVA中文站社区门户:];n(xiP'vte~X kupl;mLOGFILEGROUP 1 ( '/u01/oracle/ora901/redo01_01.log',JAVA中文站社区门户+Qd[5|UFu,h-k_;u6yG'/u01/oracle/ora901/redo01_02.log'),7c9w |?n4nSA-vJAVA中文站社区门户C`h&g`z9_-TjqGROUP 2 ( '/u01/oracle/ora901/redo02_01.log',ZYV!^}[[CJAVA中文站社区门户iiXqy9nRQ%E,`$}'/u01/oracle/ora901/redo02_02.log'),JAVA中文站社区门户.EQ)c#v/N'U1D@] ZJAVA中文站社区门户\JL e8TC8QGROUP 3 ( '/u01/oracle/ora901/redo03_01.log',.W#OLSzdq:l0U@.k6P^'/u01/oracle/ora901/redo03_02.log')JAVA中文站社区门户l"O"eg~Wxv1Qu.t)wn+pZNORESETLOGSQonzn4?_p$\AIf{.@+TDATAFILE'/u01/oracle/ora901/system01.dbf'SIZE 300M,JAVA中文站社区门户(H8^dipYU&DuA e$hzgli\n'/u01/oracle/ora901/rbs01.dbf'SIZE 50M,L7bpO[sVA:Oq)v$V6Hc,KlV(I'/u01/oracle/ora901/users01.dbf'SIZE 500M,JAVA中文站社区门户or-O}ic%\-K ew-cJ'/u01/oracle/ora901/temp01.dbf'SIZE 100Mg0iO2{&cD.u5Y|Ycs$v`j*Xo1E&|MAXLOGFILES 100JAVA中文站社区门户@_h_^ ]9k*TJAVA中文站社区门户^q5Bc~ f.w@1UMAXLOGMEMBERS 3n9f,Y Fe5\dU:uC_%l!z,pjaUMAXDATAFILES 500|ASb)UH1AEyc.Z c!u.O_MAXINSTANCES 10JAVA中文站社区门户bc$hm$Wkc%HcJAVA中文站社区门户a4MRs%nn(y7foARCHIVELOG;)mG%ZmIm_"lJAVA中文站社区门户 W[ymX6Nm注意如果您打算在控制文件内更改数据库名称则必须使用 RESETLOGS 选项否则请使用 NORESETLOGS 选项JAVA中文站社区门户9fp8K6_oJAVA中文站社区门户.Y2d;\&a@?5. ; ; ; ; ; ; 必要时修改起始参数档 CONTROL_FILES 参数如果数据库名称已被更改请记得修改 DB_NAME 参数 JAVA中文站社区门户z+Ue4eT6. ; ; ; ; ; ; 将数据库开启至 Open 状态:JAVA中文站社区门户#{RSnS.Y;IeALTER DATABASE OPEN;6k|c^?"r.nHB{m,p1RSAZ6G9~如果您建立控制文件时曾搭配RESETLOGS 选项那么执行 ALTER DATABASE 指令时必须加上RESETLOGS 选项:JAVA中文站社区门户i+[dG2D%@7L3p!pALTER DATABASE OPEN RESETLOGS;JAVA中文站社区门户B;i[f*D(y1W@/lNFs(q'}Q备份控制档h!aEh v'[JAVA中文站社区门户aRe3_Wy#?也许您已经在区别磁盘上配置多个控制文件但这并不表示控制档永远不会毁损为此您应该适时备份这些控制档;特别是在 Oracle9i 数据库实体结构经过变动时例如:PH8{ k*p$J6J+[7@nJn ; ; ; ; ; ; 新增或移除数据文件或是更改某数据文件名称 JAVA中文站社区门户j u'Y~G#C7qDRn ; ; ; ; ; ; 新增或移除表格空间或是更改表格空间状态F"N_;awtdS3[n ; ; ; ; ; ; 新增或移除重置日志档案(或群组)s d!E3cT-~k%T8pV4lD欲备份控制档时您可执行 ALTER DATABASE BACKUP CONTROLFILE 指令分为以下两种方式: Td'Si-W/a2wt;CS&O!mw1. ; ; ; ; 将控制文件备份到某个 2进制档案例如:S x"a"gV^Bi4kDwv/aP`S2A{eALTER DATABASE BACKUP CONTROLFILE TO1x/d.qw`V\D7{&q)z2g/bN6J'/backup/controlfile/control.bkp';3O*_;Pax6r&^y yGy%q2. ; ; ; ; 制作能够重建控制档的 SQL 叙述句例如:JAVA中文站社区门户SPa#?*ZC$ql4b2p0@/OA9yx2FALTER DATABASE BACKUP CONTROLFILE TO TRACE;Lj#U^f}JAVA中文站社区门户 LH,h~9x~^+z这道指令会将某个 SQL 叙述句写入数据库追踪文件您可从追踪档内撷取出这段代码进而重建控制档8ix3x9c Z"mj8a/if"egs|#[)@如何修复控制档(或其复本)JAVA中文站社区门户4K%|e5{4e@;vu1x~)W,gC3VF O情境:目前您 Oracle9i 数据库拥有 3个控制档分别置于 3个区别磁盘:JAVA中文站社区门户F@`ejD IHJAVA中文站社区门户m*e/w_L'f^5i$b/u01/ora901/controlfile/control01.ctlJAVA中文站社区门户 x#o8sfB^5nDkdZfl#B9ey#Q/u02/ora901/controlfile/control02.ctlz~ qT3qM6L jO1S'J&{,| b@!j/u03/ora901/controlfile/control03.ctl/zS*_)AQ2v)] jJAVA中文站社区门户1qr*nWi-b状况:control02.ctl 不幸毁损导致 Oracle9i 数据库无法正常运作JAVA中文站社区门户pi1w_\`2}yJ-@;f:bl解决方式:参考下列步骤修复控制档复本并重新激活数据库:'W{ar-{JAVA中文站社区门户UA4p&k&`|9u1. ; ; ; ; 关闭 Oracle9i 数据库在操作系统下将控制文件复制份至 /u02/ora901/目是覆盖掉毁损旧控制档:*a2M}M1}% cp /u01/ora901/controlfile/control01.ctlkD:BC,a)c~+x8Mq-nJAVA中文站社区门户IwWI&b6|1N/lA/y/u02/ora901/controlfile/control02.ctl;q{;C(S*jb2]m k'MvMB@2. ; ; ; ; 重新开启 Oracle9i 数据库8C-[!ED(H_0W~#l_&qRBJAVA中文站社区门户r5uhg|1h7f状况 2:control02.ctl 所在磁盘整个毁损(该磁盘并未存放其它数据库相关档案)JAVA中文站社区门户Kz ^F/Gfs\j1H%w6k!Vb解决思路方法A:以其它磁盘取代毁损磁盘!r"t x$gy"K8rJ"F ?JAVA中文站社区门户kU;S&C%M])ysn1. ; ; ; ; 关闭 Oracle9i 数据库在操作系统下将控制文件复制份至其它磁盘的适当目录 (例如 /u04):JAVA中文站社区门户a:q7T6fQ$nkp"v% cp /u01/oracle/ora901/control01.ctl /u04/oracle/ora901/control02.ctl;+K^m+?%GJAVA中文站社区门户:Hp5q8D:n&Hn*ri2. ; ; ; ; 更改启始参数档内 CONTROL_FILES 参数例如:JAVA中文站社区门户^m8vF'@ ?/o qCONTROL_FILES =(/u01/oracle/ora901/control01.ctl,:O&D2Y2M k1@/tOx8Q\Lt5{?([(z;y/u03/oracle/ora901/control03.ctl,JAVA中文站社区门户 u_+M1TE9U6N/H\mW&D"x8}Co/u04/oracle/ora901/control02.ctl)JAVA中文站社区门户3B|QF'@nRWm-u5u}7u7h.|M{.I3. ; ; ; ; 重新开启 Oracle9i 数据库D5p9_Z ESCJAVA中文站社区门户b#t!]^(L`D解决思路方法B:移除 control02.ctl 设定值JAVA中文站社区门户ptKi1mv(W2Ne:EP.D_Is1. ; ; ; ; 关闭 Oracle9i 数据库R*msq_ v2. ; ; ; ; 更改启始参数档内 CONTROL_FILES 参数移除原先 control02.ctl 的路径和名称 JAVA中文站社区门户/]F6nu!ziO @6g7q3. ; ; ; ; 重新开启 Oracle9i 数据库JAVA中文站社区门户:C k1}6E4{n\JAVA中文站社区门户$^a0V+@db0C6@需注意是:使用思路方法A以后您 Oracle9i 数据库仍然保有 3个控制档;但是使用思路方法B的后只剩下两个控制档+mK,t7p}%N/}JAVA中文站社区门户+Nv$PFyY如何查询控制文件相关信息9o&JvMBpeK7RPM9Ne!Z7Iq1`U欲查询 Oracle9i 控制文件相关资料时可参考下列几种方式:r|f6en8|)F*E1. ; ; ; ; ; ; 执行 SHOW PARAMETER 指令:}!F+f&Gm?+\2. ; ; ; ; ; ; 查询 V$CONTROLFILE 视观表:JAVA中文站社区门户e0dM#x`*i!x6bSELECT name FROM V$CONTROLFILE;JAVA中文站社区门户T1x8T r.\!a8d|%T3. ; ; ; ; ; ; 查询 V$PARAMETER 视观表:JAVA中文站社区门户I-O3lyy:G [CSELECT name, value from V$PARAMETER VV|FP+P:R(KvWHERE name = 'control_files';TAG: 数据库 文件 Oracle9i2009-2-14 1:15:03疯狂代码 /。
Oracle数据库体系结构⼀、oracle数据库体系结构基本组成:Oracle server:⼀般情况下是⼀个instance和⼀个database组成⼀般:1个instance只能对应⼀个数据库。
特殊:1个数据库可以有多个instance(RAC)⼀台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应⼀个instance,也可以理解成每个数据库只有⼀个SID 。
利⽤DBCA建出的每个库都是相对独⽴的,在同⼀服务器上如果创建多库必须将环境变量的参数⽂件做区分,并且在对实例切换时需如下操作:connect ⽤户名/密码@实例的服务名1.1 oracle服务器和实例1.1.1实例由内存区和后台进程组成①内存区:数据库⾼速缓存、重做⽇志缓存、共享池、流池以及其它可选内存区(如Java池),这些池也称为数据库的内存结构②后台进程:包括系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT)、其它进程(SMON,如归档进程、RECO进程等)③注:要访问数据库必须先启动实例,实例启动时先分配内存区,然后再启动后台进程,后台进程执⾏库数据的输⼊、输出以及监控其它Oracle进程。
在数据库启动过程中有五个进程是必须启动的,它们是系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT),否则实例⽆法创建。
1.1.2服务器Oracle服务器由数据库实例和数据⽂件组成,也就是我们常说的数据库管理系统。
数据库服务器除了维护实例和数据库⽂件之外,还在⽤户建⽴与服务器的连接时启动服务器进程并分配PGA1.2 oracle数据库逻辑结构表空间:据库的基本逻辑结构,是⼀系列数据⽂件的集合;段:不同类型数据在数据库中占⽤的空间,有许多区组合⽽成;区:由连续的块组成,⽬的是为数据⼀次性预留⼀个较⼤的空间,oracle为存储空间进⾏分配回收都是以区为单位的;块:最⼩的存储单位,在创建数据库时指定,不能修改。
oracle数据库体系架构详解在学习oracle中,体系结构是重中之重,一开始从宏观上掌握它的物理组成、文件组成和各种文件组成。
掌握的越深入越好。
在实际工作遇到疑难问题,其实都可以归结到体系结构中来解释。
体系结构是对一个系统的框架描述。
是设计一个系统的宏观工作。
这好比建一栋大楼。
你首先应该以图纸的方式把整个大楼的体系架构描述出来。
然后一点点的往里面填充东西。
下面我们先以一个图解的方式对oracle体系结构有一个基本了解根据示图,便于我们记忆,示图分三部分组成,左侧User Process、Server Process、PGA可以看做成Clinet端,上面的实例(Instance)和下面的数据库(Database)及参数文件(parameter file)、密码文件(password file)和归档日志文件(archived logfiles)组成Oracle Server,所以整个示图可以理解成一个C/S架构。
Oracle Server由两个实体组成:实例(instance)与数据库(database)。
这两个实体是独立的,不过连接在一起。
在数据库创建过程中,实例首先被创建,然后才创建数据库。
在典型的单实例环境中,实例与数据库的关系是一对一的,一个实例连接一个数据库,实例与数据库也可以是多对一的关系,即不同计算机上的多个实例打开共享磁盘系统上的一个公用数据库。
这种多对一关系被称为实际应用群集(Real Application Clusters,RAC)RAC极大提高了数据库的性能、容错与可伸缩性(可能耗费更多的存储空间)并且是oracle网格(grid)概念的必备部分。
下面我们来详细看一下oracle数据库的体系架构Oracle体系架构主要有两大部分组成:数据库实例(Instance)和数据库文件(database)数据库实例指数据库服务器的内存及相关处理程序,它是Oracle的心脏。
与Oracle 性能关系最大的是SGA(System Global Area,即系统全局区活共享内存区),SGA包含三个部分:1、数据缓冲区,可避免重复读取常用的数据;2、日志缓冲区,提升了数据增删改的速度,减少磁盘的读写而加快速度;3、共享池,使相同的SQL语句不再编译,提升了SQL的执行速度。
Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白。
如图:一、基本组成:Oracle server:一般情况下是一个instance和一个database组成1个instance只能对应一个数据库。
特殊:1个数据库可以有多个instance(rac)一台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应一个instance,也可以理解成每个数据库只有一个SID 。
利用DBCA建出的每个库都是相对独立的,在同一服务器上如果创建多库必须将环境变量的参数文件做区分,并且在对实例切换时需如下操作:connect 用户名/密码@实例的服务名Oracle Instance:是由内存(SGA)和后台进程(backupground Process)组成通过instance来访问database一个实例只能打开一个数据库Oracle database:数据文件(Data files):数据文件永远存储数据库的数据,包括数据字典、用户数据(表、索引、簇)、undo数据等重做日志(Redo log):“先记后写”重做日志用于记录数据库的变化,当进行例程恢复或介质恢复时需要使用重做日志执行DDL或DML操作时,事物变化会被写到重做日志缓冲区,而在特定的时刻LGWR会将重做日志缓冲区中的内容写入重做日志。
控制文件(Control file)控制文件用于记录和维护数据库的物理结构,并且每个Oracle数据库至少要包含一个控制文件。
归档日志(Archive log):是非活动(Inactive)重做日志的备份。
口令文件(Password file):用于验证特权用户(具有SYSDBA、SYSOPER权限的特殊数据库用户)参数文件(Parameter file):用于定义启动实例所需要的初始化参数,包括文本参数文件(pfile)和服务器参数文件(spfile)(二进制文件放入裸设备,引入spfile)User and Server process :在执行sql语句时产生的进程,每一个连接,oracle server创建一个session,产生一个server process,在client发起一个connection时就产生了一个user process。
关系型数据库系统简介1.1.1 什么是关系型数据关系型数据是以关系数学模型来表示的数据。
关系数学模型中以二维表的形式来描述数据,如表1.1和表1.2所示。
1.1.2 什么是关系型数据库1. 什么是主码(主键)能够唯一表示数据表中的每个记录的【字段】或者【字段】的组合就称为主码。
2. 什么是外码(外键)表1.2的【编号】字段和表1.1的【导师编号】字段是对应的。
表1.2中的【编号】字段是表1.2的主码。
表1.2中的【编号】字段又可以称为是表1.1的外码。
1.1.3 什么是关系型数据库系统一个完整的关系型数据库系统包含5层结构,如图1.1所示。
1. 硬件硬件指安装数据库系统的计算机,包括两种。
服务器客户机2. 操作系统操作系统指安装数据库系统的计算机采用的操作系统。
3. 关系型数据库管理系统、数据库关系型数据库是存储在计算机上的、可共享的、有组织的关系型数据的集合。
关系型数据库管理系统是位于操作系统和关系型数据库应用系统之间的数据库管理软件。
4. 关系型数据库应用系统关系型数据库应用系统指为满足用户需求,采用各种应用开发工具(如VB、PB和Delphi等)和开发技术开发的数据库应用软件。
5. 用户用户指与数据库系统打交道的人员,包括如下3类人员。
最终用户数据库应用系统开发员数据库管理员1.1.4 什么是关系型数据库管理系统1. 数据定义语言与翻译程序DDL2. 数据操纵语言与编译(解释)程序DML3. 数据库管理程序目前主流的两类关系型数据库系统1.2.1 桌面关系型数据库系统1.2.2 网络关系型数据库系统在网络关系型数据库系统中,有3个特别重要的概念。
1. 数据库服务器逻辑上的服务器指的是安装在计算机上提供一些基于网络环境的应用的软件。
2. 管理客户机逻辑上的管理客户机是指对数据库进行管理的软件。
3. 端口为了区分这些不同的逻辑服务器,使用了称为端口的概念。
网络关系型数据库的代表Oracle 9i1.3.1 Oracle 9i数据库1. 企业版(Enterprise Edition)2. 标准版(Standard Edition)3. 个人版(Personal Edition)1.3.2 Oracle 9i应用服务器Oracle 9i应用服务器有两种版本。
Oracle数据库逻辑结构2.1.1Oracle系统体系结构话说与其他数据库产品不同,Oracle有其自己独特的系统体系结构。
Oracl e系统体系结构是整个Oracle服务器系统的框架,是管理和应用Oracle数据服务器的基础和核心。
Oracle系统体系结构由三部分组成:逻辑结构、物理结构和实例。
其中,实例是维系物理结构和逻辑结构的核心,如图2-1和图2-2所示。
图2-1表明了数据库三级模式及其物理文件之间的关系。
图2-1 数据库模式及其物理文件关系示意图图2-2 Oracle系统体系结构与功能不论是Oracle的应用开发还是数据库管理都是以实例作为切入点的。
只不过Oracle的应用程序开发主要是以数据库的逻辑对象为主(如表、索引和视图等),而数据库管理则是针对数据库的全部内容。
Oracle数据库由构成物理结构的各种文件组成,如数据文件、控制文件和重做日志文件等;实例是Oracle在内存中分配的一段区域SGA和服务器后台进程的集合。
Oracle数据库服务器就是数据库和实例的组合。
2.1.2Oracle逻辑结构Oracle的逻辑结构是一种层次结构。
主要由:表空间、段、区和数据块等概念组成。
逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构。
数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系,如图2-3和图2-4所示。
图2-3 Oracle 10g数据库层次结构图图2-4 段、区和数据块之间的关系1.数据块Oracle数据块(Data Block)是一组连续的操作系统块。
分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位。
数据块的大小一般是操作系统块大小的整数倍,这样可以避免不必要的系统I/O操作。
从Oracle9i开始,在同一数据库中不同表空间的数据块大小可以不同。
数据块是O racle最基本的存储单位,而表空间、段、区间则是逻辑组织的构成成员。
Oracle数据库逻辑结构2.1.1Oracle系统体系结构话说与其他数据库产品不同,Oracle有其自己独特的系统体系结构。
Oracl e系统体系结构是整个Oracle服务器系统的框架,是管理和应用Oracle数据服务器的基础和核心。
Oracle系统体系结构由三部分组成:逻辑结构、物理结构和实例。
其中,实例是维系物理结构和逻辑结构的核心,如图2-1和图2-2所示。
图2-1表明了数据库三级模式及其物理文件之间的关系。
图2-1 数据库模式及其物理文件关系示意图图2-2 Oracle系统体系结构与功能不论是Oracle的应用开发还是数据库管理都是以实例作为切入点的。
只不过Oracle的应用程序开发主要是以数据库的逻辑对象为主(如表、索引和视图等),而数据库管理则是针对数据库的全部内容。
Oracle数据库由构成物理结构的各种文件组成,如数据文件、控制文件和重做日志文件等;实例是Oracle在内存中分配的一段区域SGA和服务器后台进程的集合。
Oracle数据库服务器就是数据库和实例的组合。
2.1.2Oracle逻辑结构Oracle的逻辑结构是一种层次结构。
主要由:表空间、段、区和数据块等概念组成。
逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构。
数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系,如图2-3和图2-4所示。
图2-3 Oracle 10g数据库层次结构图图2-4 段、区和数据块之间的关系1.数据块Oracle数据块(Data Block)是一组连续的操作系统块。
分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位。
数据块的大小一般是操作系统块大小的整数倍,这样可以避免不必要的系统I/O操作。
从Oracle9i开始,在同一数据库中不同表空间的数据块大小可以不同。
数据块是O racle最基本的存储单位,而表空间、段、区间则是逻辑组织的构成成员。