Oracle复习大纲扩展版.docx
《Oracle复习大纲扩展版.docx》由会员分享,可在线阅读,更多相关《Oracle复习大纲扩展版.docx(31页珍藏版)》请在冰豆网上搜索。
Oracle复习大纲扩展版
#Oracle考前突击小分队@RZZ
0.视图的概念及其操作
-createview(orreplace)
-withcheckoption
1.Oracle体系结构(OracleArchitectureComponents)
*OraclePrimaryComponents(主要组件)
关于Session&connection的相关信息,可以参看1-7
OracleServer:
包含一些文件、进程和内存结构,但在处理一个SQL语句时不是所有的都会被使用。
OracleServer由一个OracleInstance(实例)和Oracledatabase(数据库)组成。
-内存结构:
Instance
OracleInstance:
组合了SGA、后台进程和内存结构来管理一个database。
每次一个instance启动,一个SystemGlobalArea(SGA)会被分配,若干后台进程会被调用。
一个实例一次只能打开和使用一个数据库。
内存结构分两部分:
n SystemGlobalArea(SGA):
实例启动的时候分配的实例的功能组件。
n ProgramGlobalArea(PGA):
serverprocess(服务进程)开始的时候分配,是用于给一个单一服务进程(Serverprocess)或单一后台进程维护数据和控制信息
*SGA:
sharedpool(librarycache,datadict.cache),databasebuffercache,redologbuffercache.
SGA:
用来储存database信息,并由数据库进程共享。
它包含了数据和控制信息。
它被分配在Oracle所在的虚拟内存中。
SGA包括如下部分:
SharedPool:
用来存储最近的执行的SQL语句和最近使用的数据定义。
它包括两个关键的性能相关(performance-related)的内存结构:
Librarycache:
保存最近的SQL&PL/SQL语句。
Datadictionarycache:
最近使用的定义(definitions)集合,包括最近的databasefiles,tables,indexes等等的信息。
Databasebuffercache:
保存重新取回的(retrieved)数据块(datablocks)
Redologbuffer:
纪录database数据块的所有改变。
OtherStructures:
e.g.lockandlatchmanagement[不考]
Oracle进程分为:
Userprocess:
当一个数据库用户请求连接的时候启动;用来请求一个向Server的交互操作(interaction),进程本身不直接与server交互。
serverprocess:
连接到一个实例并当用户建立一个会话(Session)的时候开始,直接与Server连接,完成生成和返回结果的功能,可以是专门的/共享的server;
*BackgroundProcesses:
pmon,smon,dbwr,lgwr,ckpt,others.及其作用(1-29)
backgroundprocess:
当一个Oracleinstance启动的时候可用。
物理和内存结构之间的关系是通过后台进程维护和执行的。
托管的(mandatory)后台进程有:
DBWn,PMON,CKPT,LGWR,SMON,RECO
DBWn(DatabaseWriter)他将脏的缓存写入datafile中,来确保有充足的空闲缓存。
当以下事件之一发生的时候,触发写事件:
增加的或一般的检查点
脏缓存达到极限值
无空闲缓存
超时发生
RAC(realapplicationclusters)ping请求
表空间离线(Tablespaceoffline)
表空间只读
表执行了DROP/Truncate
LGWR(LogWriter)当如下事件发生,LGWR会按顺序(sequential)从redologbuffer向redologfile中写
当一个事务(transaction)提交
当redologbuffercache1/3满的时候(one-thirdfull)
当有超过1M字节的改变记录在redologbuffercache.
当DBWn的写操作通过缓存修改了datafile.
每隔三秒
SystemMonitor(SMON)实例发生错误后,SMON将在重启时自动恢复实例。
包括以下三步:
1.重新执行(Rollingforwardto)恢复那些记录在onlineredolog却没有记录在datafile中的数据。
2.打开一个database使得用户可以登录
3.回滚(Rollingback)未提交的事务
PMON(ProcessMonitor)在错误进程滞后清理:
(cleansupafterfailed)processesby:
1.回滚用户的当前事务
2.释放所有当前锁定的表和行(heldtable&rowlocks)
3.重起死掉的dispatcher
User&serverprocess:
执行SQLStatement时含有的主要进程。
Otherprocesses:
用于Oracle的其它选项。
-物理文件构成:
*必须的:
数据文件、控制文件、重做日志文件
Oracledatabase:
拥有一个逻辑的和一个物理的结构。
数据库的物理结构是操作系统文件的集合。
含如下三个部分:
n Datafile:
数据库实际数据
n Redologfiles:
数据库改变的纪录,用来将数据库从错误中恢复。
n Controlfiles:
包括维护和验证数据库的信息。
*可选的:
参数文件、密码文件、归档日志文件
Otherkeyfile:
non-databasefiles用来配置一个实例(instance),验证用户,恢复数据库等等。
包括:
l Parameterfile:
参数文件,定义一个实例instance的特点。
l Passwordfile:
验证用户权限以启动和关闭一个instance.
l Archivedredologfiles:
离线备份的(offlinecopies)redologfiles用于从物理介质的损坏中恢复。
*虽然启动和使用一个database的时候需要otherkeyfiles,但是一个database的物理结构只包括三类文件。
Datafile,redologfiles,controlfiles.
*检查点的作用是:
(1-33)
-signalingDBWnatcheckpoints在检查点处记录DBWn
-updatedatafileheaderswithcheckpointinformation通过检查点信息更新数据文件头
-updatecontrolfilewithcheckpointinformation通过检查点信息更新控制文件
CKPT(checkpoint)当DBWn写所有被修改的数据缓存时检查点(checkpoint)事件触发。
包括提交的和未提交的数据到datafile.检查点因为如下原因被实现:
检查点用来确定内存中被频繁修改的数据块规则的写入datafiles。
由于DBWn的最近最少使用算法(一个算法名字,不用管),一个频繁的修改的数据块可能永远不会作为最近最少使用的数据块。
这样如果检查点事件不发生,他可能永远不会被写入到硬盘上。
因为在某个检查点之前的数据库的更改已经记录到datafile和redologfile中,所以需要实例恢复的时候,检查点之前的修改就没有必要再应用到datafile了。
(详细情况可以看《数据库原理》256页~258页左右)。
这样检查点技术可以有效的提高实例恢复的速度。
检查点记录的信息(1-34)
CKPT不会把数据块写道硬盘上。
或者把redoblock写道onlineredologs上
ARCn(Archiver)可选的后台进程,当ARCHIVELOG模式开启时,自动保存onlineredologs.保护database中记录(record)所有的改变
2.Oracle服务器初步(GettingStartedwiththeOracleServer)
*常用工具及其任务:
-oracleuniversalinstaller用于安装、更新或删除server组件
-oracledatabaseconfigurationassitant(ODCA)
createadatabase,configuredatabaseoptions,deleteadatabase,
managetemplates...
(ODCA)图形用户界面工具来与与OUI交互,ODCA也被独立使用,用来创建(create)、删除(delete)、管理(manage)一个数据库,配置数据库选项(Configuredatabaseoptions)
-passwordfileutility创建数据库密码的工具
-sql*plus访问数据库数据的工具
-oracleenterprisemanager(OEM)
图形界面用于administer,monitor和tuneone或moredatabases
*OracleAuthenticationMethodsforDBA(2-13)
-OSAuthentication
sqlnet.ora(NTS)
-PasswordAuthentication
$orapwdfile=$ORACLE_HOME/database/orapw{sid}.orapassword=admin
entries=5
grantsysdbatousername;
3.Oracle实例的管理(ManaginganOracleInstance)
*初始参数文件(initialparameterfile)的作用、种类及其不同。
(3-4)
主要参数:
db_name,control_files,...
Oracle实例启动的时候读取初始参数文件。
参数(注意,不是参数文件)主要分两类:
清楚的(Explicit):
有一个明确的实体(Entry)在文件中(entry通俗说就是文件中出现了这个参数)
隐式的(Implicit):
没有明确出现在文件中,是Oracle的默认值。
不同的文件作用于同一个数据库来在不同场合下优化性能。
修改文件中的参数
其中初始参数文件主要包括两类:
Staticparameterfile,PFILE
Persistentparameterfile,SPFILE
对比
PFILE
SPFILE
文件名
Init{SID}.ora
spfile{SID}.ora
格式
textfile(文本)
binaryfile(二进制)
编辑方式
1。
利用文本工具直接进行修改
1。
利用企业管理器对pfile进行修改,然后转换为spfile
2。
在企业管理器里修改配置后导出形式
2。
在SQL.plus里使用Altersystem语句,进行修改
启动次序
pfile低于spfile
优先
ps:
pflie文件:
pfile文件含有数据库的配置参数,它只能在实例被起动的时候才能读取。
如果pfile文件被修改之后,只有在让实例先shutdown然后restarted时才能生效。
spfile文件:
1。
无论是Shutdown 还是startup都不影响它的修改。
2。
靠OracleServer来维护。
3。
用Altersystem来改变spfile文件。
*OMF:
db_create_file_dest,db_create_online_log_dest_n
OMF可以通过减少对OraDB文件的直接管理(needtodirectlymanagethefileswithinanOracledatabase)达到精简文件管理(fileadministration)的目的(从而提高效率)
直接通过SQL语句创建和删除OMF。
OMF通过设置两个参数创建:
DB_CREATE_FILE_DEST:
设置数据文件的默认路径
DB_CREATE_ONLINE_LOG_DEST_N:
设置在线重做日志文件和控制文件的默认路径,最大5个路径。
*数据库实例启动的步骤:
startupnomount|mount|open(3-17)
Shutdown
Nomount:
启动实例(Instancestarted),读取初始文件,分配SGA,开始后台线程
Mount:
将一个database和先前开始的实例绑定,定位并打开参数文件中指定的控制文件,读取控制文件来获得数据文件、重做日制文件的名称和状态。
(但是不检查文件是否存在)
重命名数据文件,启动/禁止重做日志归档选项,全数据库恢复必须在mount状态下实现。
Open:
打开在线数据文件(onlinedatafiles),在线重做日志文件。
*关闭数据库实例不同的方法:
normal,transactional,immediate,abort(3-24)
关闭模式
A
I
T
N
允许新的连接
x
x
x
x
等待当前会话结束
x
x
x
o
等待当前事务结束
x
x
o
o
设定检查点并关闭文件
x
o
o
o
normal(默认模式),transactional,immediate,abort
4.数据库的建立(CreatingaDatabase)
5.数据字典的内容及使用(DataDictionaryContentsandUsage)
*数据字典(DataDictionary)的种类及不同之处(5-3)
在数据库创建时,server会在数据文件中创建附加的对象结构:
Datadictionarytables
是只读表和视图的集合,用来记录,验证,并提供与数据库相关的信息
其中包括两类基本对象
Datadictionarytable:
包括两个成员
basetables:
保存数据库的描述信息
datadictionaryviews:
总结基本的表信息
当DDL语句执行的时候会被修改。
用户(Users&DBA)只能将其作为只读的数据库信息引用来读取。
Dynamicperformancetables
是性能试图,记录了当前的数据库状态。
DBA使用,监视和调整数据库性能。
动态视图属于SYS用户。
DML是不允许的。
6.控制文件的管理(MaintainingtheControlFile)
控制文件是定义了当前的物理数据库状态的二进制文件。
在MOUNT状态读取。
对应于单一数据库。
*控制文件的作用及其内容(6-5)
是数据库正常启动和成功操作的必不可少的文件。
一个文件对应一个database。
database打开前,系统会读取控制文件来判断数据库是否为可用状态。
数据库使用的时候,控制文件被持续的修改。
控制文件信息只能是被server修改,用户不可以。
文件不可用,db就不可用。
内容:
数据库名字或ID
数据库创建的时间戳
表空间名
数据文件,重做日志文件的名称和位置
当前的重做日制文件序列号
检查点信息
开始和结束的撤销(undo)段(segments)。
重做日志存档信息
备份信息
*系统控制文件的信息获取(6-10)
通过查询数据字典,可以获得控制文件的信息。
V$CONTROLFILE;V$PARAMETER;V$CONTROLFILE_SECTION
SHOWPARAMETERSCONTROL_FILES
*如何使用pfile,spfile实现控制文件的多功化[多功化就是Multiplexing吧?
]
SPFILE:
在数据库创建的时候创建多个控制文件;添加一个控制文件到已经创建的数据库
init.ora创建备份文件,然后使用alter命令切换。
7.重做日志文件的管理(MaintainingRedoLogFiles)
*重做日志文件的作用及其组织结构(7-3)
作用:
重做日志文件记录数据的改变,提供从介质错误中恢复的机制。
当数据库错误时,重做日志文件提供重做事务。
结构:
重做日志文件按组(groups)组织,一个数据库至少需要2个组(group)。
每一组中一个重做日志称为一个member。
(7-4的图有助于理解这几个概念)其中包括:
OnlineRedoLogGroups
OnlineRedoLogMembers
*日志文件组的切换(logswitch)(7-8)
日至文件和检查点切换一般是自动的,不过也可以让DBA手动。
ALTERSYSTEMSWITCHLOGFILE;
ALTERSYSTEMCHECKPOINT;
*v$log日志组状态的变化:
inactive,active,current
*对日志文件的操作(日志组的建立、日志文件的添加和删除、改变大小等)
ALTERDATABASEADDLOGFILEGROUP3(‘FILE1’,‘FILE2’)SIZE1M;
ALTERDATABASEADDLOGFILEMEMBER‘XXX’TOGROUP1;
ALTERDATABASEDROPLOGFILEGROUP3;
ALTERDATABASEDROPLOGFILEMEMBER‘SOMEFILE’;
ALTERDATABASECLEARLOGFILE‘SOMEFILE’;
*重做日志信息的获取:
v$log,v$logfile
select…fromv$log;(7-20)
8.表空间及数据文件的管理(ManagingTablespacesandDatafiles)
*Oracle数据库的存储层次(逻辑结构和物理结构)(8-4)
物理结构:
控制文件,online重做日志文件,数据文件。
逻辑结构:
数据库〉表空间〉段〉扩展区〉块
*System,non-system表空间及其作用(8-7)
System表空间:
由database创建,包含数据字典,包含System重做段(undosegment)
Non-System表空间:
独立(separate)的段,简单的空间管理,空间数量(amount)控制权分配给用户。
*表空间按照功能分类:
普通表空间、临时表空间、undo表空间及其作用、特点(8-17,8-18)
普通表空间
临时表
Undo表
作用
允许你自定义databasewide默认临时表空间。
避免SYSTEM表空间来存储临时数据的使用
用于保存操作
用于保存重做数据
限制
此表不能被删除,除非在一个新的默认表可用。
他不能设置成离线
你不能把一个默认的临时表空间换到永久的表空间
不能包括任何持久数据,本地化管理长度。
不能包括任何其他对象。
长度是本地管理的。
只能通过使用createtable子句DATAFILE和EXTENTMANAGEMENT
undo表空间:
用于存放重做段。
不能包括任何对象;扩展区(extents)是本地管理的;
临时表空间:
用于排序操作,不能保存持久的数据,建议本地管理长度。
*表空间的空间管理方式:
本地管理和字典管理,及其区别,建立的方法等。
(8-11)
本地管理:
位图方式记录可用空间长度;每个字节联系一个块或者一组块。
字节的值表示可用还是不可用。
字典管理:
默认方法,数据字典表中控制可用空间长度。
建立方法:
8-12
*表空间(及其内容和文件)的删除操作等。
(8-29)
DROPTABLESPACEuserdataINCLUDINGCONTENTSANDDATAFILES
*表空间信息的获取。
(8-44)
表空间信息:
DBA_TABLESAPCES,V$TABLESPACE
数据文件信息:
DBA_DATA_FILES,V$DATAFILE
临时文件信息:
DBA_TEMP_FILES,V$TEMPFILE
[建表过程]
createtablespacetbsname
datafile'd:
\path\to\datafile.dbf'size100m
autoextendonextentmanagementlocaluniformsize1m
segmentspacemanagementauto;
9.存储结构及关系(StorageStructureandRelations)
*segment的概念及类型(9-4)
segment是数据库中的空间占位(space-occupying)对象,它是使用数据库的数据文件中的空间。
有两类:
Table:
整张表是一个segment
TablePartition:
将一个表分成多个部分,每个部分是一个segment
Cluster:
在cluster中,行被保存成基于键列的值。
一个Cluster可能包括一个或多个表。
可通过hash访问行。
Index:
所有的细节(particular)索引都保存在一个索引段。
Index-OrganizedTable:
数据保存基于键值的索引。
IndexPartition:
一个索引可以被分开或扩展到多张表空间。
UndoSegment:
用于改变数据库的事务。
TemporarySegment:
排序、临时结果等用段
LOBsegment:
保存大对象(largeobject==LOB)的段
NestedTable:
表中一个列可以被用做一个用户自定的表(表中含的表)
BootstrapSegment:
缓存段
*与存储相关信息的获取(9-21)
DBA_TABLESPACES;DBA_DATA_FILES;DBA_SEGMENTS;DBA_EXTENTS;DBA_FREE_SPACE;
10.撤销数据的管理(ManagingUndoData)
*undo数据的作用(10-5)
-transactionrecovery
当一个事务修改了表中的一行,重做段回保存旧的被修改的列(重做数据)的镜像。
如果事务回滚,server将通过把重做段的数据写会行。
-transactionrollback
如果在事务进行时实例发生错误,server需要在重新