华南理工大学《数据库》(研究生)复习提纲2_第1页
华南理工大学《数据库》(研究生)复习提纲2_第2页
华南理工大学《数据库》(研究生)复习提纲2_第3页
华南理工大学《数据库》(研究生)复习提纲2_第4页
华南理工大学《数据库》(研究生)复习提纲2_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、故障类型分为一下三种:1.事务失败:包括逻辑错误(一个事务由于其内部错误,导致不能正常结束如是不内部的死循环)和系统错误(系统进入一个不良如死锁等状态,导致事务无法执行,但该事务在以后的某个时间是可以重新执行的);2.系统崩溃:如电源问题、其他软硬件引起的系统停机,导致缓存、内存等易失存储设备数据丢失,但是非易失存储设备数据一般不会丢失;3.硬盘故障:人为或是自然灾害等因素造成的硬盘损害导致数据的丢失。故障恢复策略:事务故障和系统故障的恢复方法是:撤销故障发生时未完成事务对DB的所有影响,确保事务的原子性,重做已经成功提交的事务,实现事务的持久性,以上操作一般是由系统在重启时自动完成,不需要用

2、户干预。灾难性或磁盘失败恢复策略:使用归档存储设备(通常是磁带)上的数据库备份进行恢复,并从备份日志重新应用或者重做已经提交的事务的操作来重构故障钱数据库的最新状态。缓存目录:跟踪哪些数据项在缓冲区中。脏位(dirty bit ) :每个缓冲区都和一个脏位相关联,它用来指示该缓冲区是否有所修改。钉住拔去位(pin-unpin bit):即如果缓冲中的页目前还不能写回到磁盘,则称该页被钉住(该位的值为1)。X所在的缓冲块Bx上的操作output(Bx)不需要在write(X)执行后立即执行,因为块Bx可能包含其他仍在被访问的数据项原位更新(in-place update):将缓冲区写回磁盘原来的

3、位置,因而会覆盖被修改的数据项在磁盘上的旧值(必须使用日志帮助);镜像更新(Shadow update):将缓冲区写到磁盘不同的位置,可以保存数据项的多个版本;非潜入(no-steal):缓存中被事务更新的某个页在事务提交前不能写回磁盘;潜入(steal):允许事务在提交前将已经更新的缓冲区写回磁盘;强制(force):事务所有的已经更新的页在事务提交时被立即写回磁盘;非强制制(no-force):无事所有做的更新的页在事务提交时不立即写回磁盘。延迟更新(NO-UNDO/REDO 算法):所有事务的更新都记录在局部事务的工作区(或缓存区),只有在事务到达提交点后才真正更新磁盘上的数据库。 即时

4、更新:事务的某些操作达到提交点前被写入数据库,恢复时需要UNDO/REDO,如果事务在达到提交点前所有的更新已被写入数据库,需要算法UNDO/NO-REDOWAL是一个日志协议规则,明确定义了先写日志的思想,内容如下:1先写日志,无论是在缓冲区还是在磁盘等上面都这样子,这是保证原子性的关键;2在事务提交前写相关的所有日志记录到稳定存储介质,这是保证持久性的关键,确保我们能基于日志重建提交事务。一种日志是把写操作记录下来;另外一种日志形式中,把更新的东西取为一个物理块,则一个日志记录包含了三部分前像、后像、事务状态检查点是为了在系统恢复过程中不要每次撤销和重做事务时从日志文件首条开始而在日志文件

5、中增加的检查点标志记录,使得系统恢复过程中的撤销和重做事务都只是从最近的一个检查地点开始做,可大量减小,降低恢复所需的时间和工作量,分为静态检查点(建立检查点时不允许执行事务)和动态检查点。ARIES ( Algorithm for Recovery and Isolation Exploiting Semantics )日志的恢复管理算法综述1.采用基于潜入/非强制的公职模式;2.使用日志顺序号LSN标志日志记录,在数据库页中用LSN标志哪些更新已经在数据库页上实施过;3.使用脏页表最大程度减少恢复时不必要的重做;4.使用模糊点检查点机制,只记录脏页信息和关联的信息,甚至不要求将脏页写到磁盘

6、;5.当系统崩溃会重启时,恢复管理器将被激活,并按以下三个阶段进行处理:a分析:鉴别系统崩溃时,缓冲区中的脏页和当时仍在活跃的事务;b重做:重做从日志适当起点(比如被修改的最早脏页表对应的日志记录)开始的所有动作,恢复系统到崩溃时的DB状态;c撤销:撤销上次崩溃时所有未提交的事务的动作效果,使DB只反映已经提交的事务的影响;d如果是重启时再次崩溃,则会借助一共有五种日志类型,分别为:Update、Commit、Abort、End、CLRs。Update更新:需要写更新;Commit提交:当事务决定提交,它将先强制写一条类型为commit(内含该事务id)的日志记录到日志尾,并执行一次刷新当前日

7、志尾到稳存的动作;Abort中止:当一个事务中止时,一条类型为abort(内含事务id)的日志记录将被写到日志尾,同时启动一个撤销该事务的Undo过程;End结束:当一个事务提交或是中止后,commit或是abort外,DBMS还将执行一些而外的动作步骤,当这些而外的动作都完成后,将会写一条(包含事务id和、类型为end)日志记录到稳存;CLR s补偿:当由一条更新日志记录U所记录的改变被撤销时,将会有一条类型为CLR的补偿日志记录C被写到日志尾,其中undoNextLSN记录同一事务被撤销的下一条更新记录LSN,一般与U的prevLSN同一值。与日志相关的其他数据结构:事务表Transact

8、ion Table:每个活跃事务占一个表项,(包括提交的中止的),每个表项中有事务id tranID,执行的最后一个日志页lastLSN和事务状态status;脏页表Dirty Page Table:缓冲池中每个脏页占一个表项,每个表项中有个物理页idPageID和记录同一个事务的最早的一个日志顺序号recLSN(也即最小日志顺序号LSN)。脏页表有两种用途。一为在系统正常运行过程中用作缓冲区(buffer pool)脏页表,且系统在作检查点(checkpoint 或 CHKPT)时,将该表包含在其记录中。另一用途是作为重启动(restart)脏页表以记录系统失效时可能的脏页;页面结构:页数据

9、结构指在数据库的每一页辟出一块小空间作为页日志顺序码(Page-LSN)域,用以描述在该页上所作的最近的更新或补偿操作所对应的日志记录的LSN.页结构由单一的数据域页日志顺序码组成。理解归档日志文件:oracle每有一个事务,首先会产生一条日志,这个日志里面包含了能够还原这个事务的最少信息,这些日志会暂存在内存中,再由一个叫LGWR的进程将日志缓冲区的日志写到硬盘上的日志文件上,这些日志文件一般在50兆左右,一般为3组。等一个日志文件写满了50兆的内容,它会断开,LGWR继续往下一个日志文件中写日志;这3个日志文件轮流写入(覆盖写入)。现在来讲重做日志文件归档,就是将一个写满了日志的文件复制一

10、份到一个指定的文件夹中,可以将这些历史日志文件都copy(归档)一份,而不会在轮循中被覆盖,起到保护数据的功能。物理备份是指物理数据库文件的副本,是备份恢复策略的主体。用户可以使用recovery manager或是操作系统工具进行物理备份。(包括热备份和冷备份)逻辑备份是使用oracle工具抽取逻辑数据(如表或是存储过程等)并保存在二进制文件中,逻辑备份可以作为物理备份的补充冷备份:冷备份又称为脱机备份,是在数据库保持关闭,而且是mount的状态下,把数据库的配置文件、数据文件、控制文件、重做日志文件和归档日志文件复制到其他地方保存起来。冷备份可分为一致性备份和非一致性备份;热备份:热备份又

11、称为联机备份或者归档备份,是在数据库保持开放的状态下对数据库进行备份。热备份的好处是不必关闭数据库,不影响数据库的正常运行,但是数据库必须处于归档模式;一致性备份(consistent backup):是备份所包含的各个文件中的所有修改都具备相同的系统变化编号(system change number,SCN)。也就是说,备份所包含的各个文件中的所有数据均来自同一时间点,使用一致性数据库完全备份进行复原后,不需要执行恢复操作。在NOARCHIVELOG(非归档)模式下,一致性数据库完全备份是唯一有效的备份方案;非一致性备份:指在数据库处于打开(open)状态时,或数据库异常关闭(shut do

12、wn abnormally)后,对一个或多个数据库文件进行的备份,非一致性备份需要在还原之后进行恢复操作。对必须24*7 地工作的数据库只能进行非一致性数据库完全备份,也称为热备份简述归档模式:Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。 如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而

13、在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志增量备份: RMAN可以做块级增量备份 0级(level 0)备份是完全备份 在定义高一级备份之前必须有一个0级备份 类似于增量备份的另一种备份是累积备份(cumulative backup),累积备份备份的东西是大于当前最近一个level的最近的一个备份之后的东西,而增量备份是备份大于等于当前最近一个level的一个东西个人曲解:数据库打开状态下,数

14、据库表空间各种数据包括重做日志文件都被假设为一直处于改变状态,(归档重做日志除外),数据库关闭状态下,什么表呀信息呀都不变;归档重做日志文件,重做日志文件都是用于非一致性回复过程中撤销和重做各种事务;一致性备份只能在数据库关闭的时候做;可以根据数据库是否打开,是否是归档模式来判断究竟用哪种备份方式。系统调优的最终目标:是应用运行的更快;缩短查询、事务的响应时间;提高事务的整体吞吐量查询优化就是在众多的查询方案中选择出最高效率的执行计划的一种处理过程,包括代数优化和物理优化。代数优化:通过对关系代数表达式的等价变化来提高查询效率,代数优化仅改变查询语句中操作的次序和组合,不涉及底层的存取路径;物

15、理优化:通过选择高效合理的操作算法或是存取路径,求得优化的查询计划。选择操作:简单的全表扫描方法、索引(或散列)扫描方法连接操作方法:嵌套循环方法(nested loop)、排序-合并方法(sort-merge join 或merge join)、索引连接(index join)方法、哈希连接(Hash Join)方法(先哈希后匹配连接)。查询优化方法选择的依据:基于规则(rule based): 根据某些规则从几个备选的访问路径中进行选择。所有的访问路径都被分配了一个排序值,具有最低排序值的路径被选中基于代价(cost based) : 考虑了数据库对象的最新的统计数据,总是要比老的基于规则

16、的方法执行得要快。Oracle使用CBO(Cost-Based Optimizer,基于成本的优化器)帮助用户确定执行查询的有效方法。Optimizer做些什么:SQL 转换、选择访问路径、选择联结方式、选择联结次序执行开销集中式数据库:磁盘存取块数(I/O代价)(最主要的);处理机时间(CPU代价);查询的内存开销分布式数据库: I/O代价+CPU代价+查询的内存开销+通信代价调优需要统计的信息:1.存储统计:关于存储分配成表空间、索引空间和缓冲区的统计数据;2.I/O和设备性能统计:磁盘盘区和磁盘热点上的全部的读写活动(页面调度);3.查询/事务处理统计:查询和事务的执行时间以及查询优化所

17、需要的时间;4.关于加锁/日志的统计:不同类型的锁的使用频率、事务的吞吐率,以及有关日志记录的活动;5.索引统计:索引中的级数、不连续页的页面数等调优过程的输入需要相关的统计信息调优 索引的调优:将索引和数据存放到不同的文件组,建立必要的索引,去除不必要的索引,必要的使用组合索引和非聚集索引,进一步改善原有的不合适的。 数据库设计的调优:必要时对表进行水平划分、垂直划分、逆规范化,稳定的和稳定的表分开放存,索引和表分开放,大表放在两个磁盘上,尽量用数字类型代替字母类型 查询的调优:1.把not条件转换为肯定表达式;2.可用连接替换使用in、=all、=any、=some的嵌入式select块;

18、3.如果两个表之间存在等值连接,在一个表中的连接属性上的范围谓词(选择条件)可以在另一个表中重复;4.可以使用多个列上的索引重写where条件;5.在查询时,返回的值应该是查询需要的,不能过多的使用通配符;6在where子句中可以使用exist和not exist代替in和not in,应该尽量避免使用in、not in、or或者having;7尽量使用where子句而不是使用having子句;8使用union all关键字而不是union关键字;9.使用限定表(使用所有者限定表的名称);10.在连接查询中使用完全限定的列明引用;11.应尽量避免在where子句中使用!=或是<>操

19、作符,否则引擎将放弃使用索引而进行全表扫描;12.对于连续的数值,能用between就不要用in了;13.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫面;14.在使用索引字段作为条件时,如果该索引是符合索引,那么必须使用到该索引中的第一个字段作为条件是才能保证系统使用该索引;15.尽量使用varchar/nvarchar代替char/ncha 其他的查询调优原则编写有效的SQL: 有效的WHERE子句 使用提示影响执行计划 选择最佳的联结方法: 避免笛卡尔联结/ 选择最佳的联结次序 索引的策略: 查询所检索的行数超过表中总的行数的10%或15%,可能就不

20、需要索引, 对高选择性的列、重要的外键、所有谓词列等进行索引 监控索引的使用 使用相似的SQL语句 通过使用内嵌函数减少SQL开销 使用绑定变量:使用绑定变量,变量值在查询执行时提供 避免不合适的视图使用 避免不必要的全表扫描数据库安全的基本要求:confidentiality机密性、integrity完整性、availability可用性。数据库的安全性措施:Access control访问控制:明确说明谁可以访问及怎么样访问;Inference control 推理控制:防止通过统计数据推导出机密性数据(统计数据库的安全性);Flow control流的控制:防止信息向未授权的用户流通;C

21、ryptographic control加密控制:保护放在不安全介质中的数据;数据库审计:记录应用到数据库的所有更新操作和实施每个更新操作的饿特定用户,一边找出非法的或是未经过授权的操作并确定执行该操作的账号;数据加密:使用一些编码算法可以对数据进行编码,未授权的用户很难从已经编码的数据中破解出原文。使用视图用于访问控制:假设需要限制对元祖子集的访问,创建包含这些子集的视图,然后授予对视图的操作权限,而不授予对基表的操作权限。访问控制策略:Discretionary Access Control (DAC,自主存取控制) 、Mandatory Access Control (MAC,强制存取控

22、制)、Role-Based Access Control (RBAC,基于角色的存取控制)自主访问控制存在的问题以及解决方案:A问题一:访问权限会因为grant option 而随之扩散,难以控制,管理,回收等问题;解决方案:指定权限传播的限定,用一个正整数i来限定水平传播和垂直授权深度(包括自身);B问题二:由于仅仅通过对数据的存取权限来进行安全控制,而数据本身没有安全性标记,可能存在数据的“无意泄露”;解决方案:对系统控制下的所有主客体实施强制存取控制策略。多级安全性的强制访问控制(每对象分配一个安全级别,每个主体(用户或进程)分配一个许可):A每个数据对象分配一个安全级别,每个主题、用户

23、或进程分配一个许可;(安全级别分为绝密、机密、秘密、无分类)B强制存取控制的规则:简单安全性除非class(s)>=class(o),主体s不能读取客体o;性质:除非class(s)<=class(o),主体s不能写客体o。基于角色的访问控制(被命名的一组与数据库操作相关的权限):角色是权限的集合、可以为一组具有相同权限的用户创建一个角色、简化授权的过程推理控制防备策略:A查询控制:规则一查询至少涉及N(N足够大)个以上的记录;规则2任意两个查询的相交数据项不能超过M;规则3任一用户的查询次数不能超过1+(N-2)/MB条目控制:抑制(包含敏感数据的查询被拒绝)、隐藏(提供的答案是

24、接近的但不是准确的)关系数据库的优势:1. 从事数据库研究与运用的人大多数熟悉关系数据库2. 现有关系数据库具有相当多的用户和顾客,具有主流的商业市场3. 关系查询语言具有很好的数学支撑,便于进一步研究和推广4. 现有的关系数据库语言具有广泛使用的工业标准对象组成:A、名称name,在方案内唯一标识一个对象类型B、属性attribute,表示真实世界实体的结构与状态。属性可以是Oracle 内置数据类型,也可以是其他用户定义类型。C、方法method,以PL/SQL 或Java编写并存储于数据库中,或以C 之类的语言编写并存储于数据库外部的过程或函数。方法可供应用程序调用以操作代表真实世界实体

25、的对象。列对象:表中的列值是用户定义的对象类型;行对象:表中的每一行是用户定义的对象类型;关系表和对象表区别:关系表中的每一行有一个或多个列,其中某些列可以是对象类型,但是没有一个对象类型可以藐视整一行;对象表中的每一行都是具有一定属性的行对象,整个行就是一个对象类型,行对象的属性有有效的列名。XML特点:更多的结构和语义、可扩展性、自描述性、数据与显示分离、简洁性XML文档常用语法及说明:XML说明:是对XML文档处理的环境和要求说明,在文档的第一行以“<?”开始,“?>”结束,例如<? xml version=”1.0” encoding=”UTF-8” standalo

26、ne=”no”?>元素:元素就是一对互相匹配的开始和结束标签以及他们之间的文本,XML文档必须有且只有一个独立的根(root)元素来包含文档中的所有其他元素属性:属性通常用来描述元素的有关信息,属性名和属性值在元素的起始标记中给出,一个元素可以有任意多个不同名字的属性,属性值并必须出现在单引号或是双引号中名字空间:名字空间机制允许一些组织机构制定全球唯一的名字作为文档中的元素标签使用,在每个标签或是属性的前面加上通用资源标示符(比如网址),以区别别人定义的标签和属性,命名空间标准提供了一种定义标识符缩写的方法,如<bank xmlns:FB=><FB:branch>

27、;<FB:branch_name>Downtown</FB:branch_name></FB:branch></bank>处理指令:是为使用一段特殊代码而设计的标记,通常用来处理XML文档的应用程序提供信息,格式为<?target data?>,如<?display table-view?>注释:注释以<!-开始,以->结束,这两字符之间是注释的文本内容,可以在XNL文档的任何地方插入良构的XML文档:只有一个根元素,至少包括一个元素(即根元素),所有起始标记都与之对应的终止标记,或是使用空元素速记法,所有的标

28、记都有正确的嵌套,每个元素的所有属性具有不同的属性名实体:XML文档中对于重复使用的文档内容可以使用实体来定义,格式为<!entity 实体名 “实体内容”> 例如:<!entity dw “Data Warehouse”>,引用实体的格式:&实体名文档类型定义DTD:文档类型定义是XML标准组成部分的第一种模式定义语言,用来描述XML文档的结构,定义了XML文档可以出现的元素、属性、元素出现的次序、次数、如何相互嵌套以及其他详细信息,包括定义元素和定义属性;定义元素的格式:<!element 元素名(元素内容描述)>其中元素中的符号意思如下:#pc

29、data表示文本数据|或+一个或多个*零个或多个?指定一个可选的元素(零个或是一个)Empty元素没有内容Any对这个元素的子元素没有任何的限制定义属性的格式:<!attlist 元素名(属性名 属性类型 缺省声明)*>,属性没有顺序之分,可以指定为类型cdata、id、idref或idrefs,其中CDATA表明这个属性包含字符数据ID的属性提供在这个元素的唯一标识符IDREF的属性是对一个元素的引用IDREFS允许以空格分开的一个引用列表XPath是一种用于路径表达式的语言,通过路径表示式指向一个XML文档的部分内容,XPath还可以使用“”符号访问属性值,可以在路径的每一个操

30、作步骤中使用选择谓词。选择谓词包含在方括号中,如/bank/customer/customer_name、/bank/accountbalance>400XQuery:是查询XML数据的标准语言,它的模型是仿照SQL而设计的,但由于它要处理嵌套XML数据,因此与SQL有明显的差异,语法包括FLOWR表达式、连接、嵌套查询、结果的排序、函数和类型FLOWR表达式包括五个部分,for(想sql中的from子句,指定在XPath表达式结果上变动的变量),let(允许直接将XPath表达式的结果赋值给变量名以简化表达),where(相当于sql的where子句,对来自for子句的连接元组进行附加

31、的测试),order by(允许对结果进行排序),和return(允许构造XML形式的结果)连接在XQuery中指定连接与在SQL中指定连接很相似嵌套查询Query FLOWR表达式可以嵌套在return子句中结果排序order by子句在XQuery中队结果排序函数和类型XQuery提供很多内建函数,也支持用户定义函数SQL/XML:定义了新的数据类型(XML数据类型)和一组函数(包括XMLElement函数、XMLAttributes函数、XMLNamespaces函数、XMLForest函数、XMLConcat函数、XMLAGG函数、ZMLComment函数、ZMLPI函数),实现了在S

32、QL中对XML的操作,(包括XML的构造、抽取,XML数据和关系数据之间的相互转换等)使得XML数据可以存储在关系数据库中,可以用标准的查询语言XQuery从中提取信息(包括XMLQUery函数、XMLTable函数、XMLExists函数),也可以将关系数据转换成XML的形式呈现给用户结构化存储将结构化XML存储实现为一组对象优点:A、结构化存储上的XML操作有助于减少内存和存储,因为没有存储XML 标记,而且存在更细粒度的数据检索和使用。B、可通过表和索引设计提供更多的查询和更新优化缺点:A、插入和检索整个文档需要更多开销B、只能存储匹配XMLSchema的文档C、不保留文档中的数据顺序非

33、结构化存储XMLType存储为单个的LOB列优点:a、存储数据匹配文档的准确物理表示b、数据不经常更新,或者整个文档(而非部分文档)有大量的插入和读取时比较高效缺点:A、对部分文档的更新通常不如结构化数据那样高效B、使用函数从CLOB 构造DOM 的XPath操作将使用大量的系统资源。C、SQL 约束无法实现D、内存管理效率不高相关的SQL语句启动数据库有三个步骤::Start an instance (启动实例):Parameter file(参数文件) read、Instance startedMount the database (装载数据库):Control file opened f

34、or this instanceOpen the database (打开数据库):All files opened as described by the control file for this instance(注意启动数据库必须先用管理员权限连到数据库)能创建表的条件:1.用户在表空间有配额CREATE USER USERNAMEIDENTIFIED BY PASSWORDDEFAULT TABLESPACE usersTEMPORARY TABLESPACE tempQUOTA 15m ON users;alter user hr quota 15m on TABLESPACE_n

35、ame;alter user ap quota unlimited on TABLESPACE_name;Grant unlimited tablespace to user_name; 2.用户有创建表的权限Grant create table to USERNAME创建和使用用户概要文件:create profile miser limitconnect_time 120fail_login_attempts 3idle_time 60session_per_user 2资源参数:􀂾CONNECT_TIME: 指定一个会话能保持连接到数据库的总时间(以秒计)⣷

36、66; CPU_PER_CALL: 限制事务内每个调用使用的CPU时间􀂾 CPU_PER_SESSION: 限制会话中使用的总CPU时间􀂾􀂾SESSIONS_PER_USER: 指定用户可打开的并发会话的最大数目.􀂾IDLE_TIME: 限制一个会话空闲的时间量.􀂾LOGICAL_READS_PER_SESSION: 限制数据块读取(从SGA内存区和磁盘读取)的总数目􀂾 LOGICAL_READS_PER_CALL: 限制每个会话调用(分析、执行和取数据)的总的逻辑读取数。⣷

37、66; PRIVATE_SGA:指定一个会话在SGA的共享区中分配的空间限制(仅适用于共享服务器体系结构的系统).􀂾 COMPOSITE_LIMIT: 对资源使用设置一个总的限制。密码参数:􀂾FAILED_LOGIN_ATTEMPTS: 指定一个用户在被锁定之前可尝试的登录次数􀂾 PASSWORD_LIFE_TIME:.设置使用一个特定密码的时间限制。如果在这个指定时间内不更改密码,则密码过期。􀂾 PASSWORD_GRACE_TIME: 设置一个时间段,在此时间段内将发出密码已经过期的警告。在此宽限时间段后,用该密码不能

38、连接数据库。􀂾PASSWORD_LOCK_TIME: 指定在达到不成功登录尝试的最大次数后,用户将被锁定多少天。􀂾 PASSWORD_REUSE_TIME: 指定可重新使用相同密码前要经过的天数。􀂾 PASSWORD_REUSE_MAX:. 确定在可以重新使用某个特定密码前可更改该密码多少次。􀂾PASSWORD_VERIFY_FUNCTION: 如果不希望使用Oracle提供的默认验证函数,此参数允许你指定自己的密码验证函数。创建表空间teacher,并指定为用户teacher的默认表空间create tablespace

39、 teacherdatafile 'e:/teacher.dbf'size 2M;alter user teacher1default tablespace teacher;-创建角色student并授权create role student;-授权角色student查看学生信息grant select on StudentInfo to student;-授权角色给用户grant student to student_me;-创建ClassInfo外键约束条件alter table ClassInfo add constraint Class_Course_coursID_f

40、k1 foreign key(courseID) references CourseInfo(courseID) on delete cascade;修改表列属性:alter table classinfo drop(classtime);alter table classinfo add(classtime data_huang)将某个表空间设为备份模式ALTER TABLESPACE name BEGIN BACKUP;使用操作系统命令将该表空间所有数据文件备份copy c:usersdisk1user01.orae:usersbackupuser01.ora结束该表空间的备份模式ALTE

41、R TABLESPACE name END BACKUP;产生一个控制文件的二进制拷贝ALTER DATABASE BACKUP CONTROLFILE TOd:backcontrol.bkp产生一个包含create controlfile 语句的文本文件 ALTER DATABASE BACKUP CONTROLFILE TO TRACE数据库完全恢复步骤:1.确保数据库已经关闭(使用ABORT操作)SHUTDOWN ABORT;2.使用最后的数据库备份来恢复数据文件;3.如果当前的控制文件丢失,使用镜像版本赋值到已经修好的磁盘中,或者重新创建控制文件;4.还原已经归档的所有日志;5.如果服

42、务器参数文件损坏,则利用备份的初始化参数文件创建服务器参数文件;CREATE SPFILE FROM PFILE;6.将数据库启动到MOUNT状态;STARTUP MOUNT;使用RECOVER命令进行恢复RECOVER DATABASE;恢复完后,重新打开数据库ALTER DATABASE OPEN;授予系统权限:GRANT system_privilege|role , system_privilege|role .TO user|role|PUBLIC , user|role|PUBLIC .WITH ADMIN OPTION授予对象权限:GRANT ALL PRIVILEGES|pri

43、vilege ,privilegeON TABLE tablename |viewnameTO PUBLIC|user-name, user-nameWITH GRANT OPTION你可以用REVOKE 语句收回已经授予用户的权限用WITH GRANT OPTION 转授出去的权限同时被收回,而系统权限却收不回来用WITH ADMIN OPTION 转授出去的权限。指定AUDIT_TRAIL 参数启用审计􀂾 NONE: 禁用数据库审计。这是默认值􀂾􀂾 OS: 将审计记录写到一个操作系统文件􀂾 DB: 将审计记录写到数据库

44、审计跟踪(存储在SYS.AUD$表中)􀂾 DB, EXTENDED: 将审计记录写到数据库审计跟踪,还填充SQLBIND 和SQLTEXT CLOB 列􀂾 XML: 指定数据库审计,进入OS文件的是XML格式的审计记录􀂾 XML, EXTENDED: 与XML设置相同,而且还记录所有的审计跟踪列,包括SQLTEXT 和SQLBINDAUDIT UPDATE ANY TABLE;AUDIT SESSION BY SALAPATI;AUDIT SELECT,INSERT,UPDATE,DELETEON employees BY ACCESS W

45、HENEVER SUCCESSFUL;AUDIT ALL PRIVILEGES;在AUDIT的位置使用NO AUDIT就是关闭审计的意思A 建立带有结构的表:objectobject公共的前提条件: (加as object) Object(方法一: 方法二: B建立具有无名称的行类型的表的方法:create table customer_r (name row(firstname varchar(20),lastname varchar(20),address row(street varchar(20),city varchar(20),zipcode varchar(20),dateOfB

46、irth date)在结构类型上定义方法:create type CustomerType as object(name Name, address Address, dateOfBirth date) not finalmethod ageOnDate (onDate date)returns interval yearcreate instance method ageOnDate (onDate date)returns interval yearfor CustomerTypebeginreturn onDate - self.dateOfBirth;end查看:select name

47、.lastname, ageOnDate (current_date)from customer类型继承:(一个类型可以被继承,在声明此类型时应使用NOT FINAL 关键字;在默认情况下类型的继承属性是FINAL;只能继承自一个父类型)create type Person as object(name varchar(20),address varchar(20)表继承:create table people of Personcreate table students of Studentunder peoplecreate type Studentunder Person(degree

48、varchar(20),department varchar(20)查看继承类型:通过desc Student查看表结构时发现,后面创建的Student类型已经默认继承了personinsert into booksvalues (Compilers, arraySmith,Jones,new Publisher (McGraw-Hill,New York),multiset parsing,analysis )数组和多重集合类型的建立,插入,查询create type Publisher as(name varchar(20),branch varchar(20)select author-

49、array1, author-array2from bookswheredatabase in (unnest(keyword-set )select B.title, A.authorfrom books as B, unnest (B.author-array) as A (author )create type Book as(title varchar(20),author-array varchar(20) array 10,pub-date date,publisher Publisher,keyword-set varchar(20) multiset )create table

50、 books of Bookunnest with ordinality子句可以用于获得元组中元素的顺序信息select title, author, Publisher (pub_name,pub_branch ) as publisher,collect (keyword) as keyword_setfrom flat-booksgroup by title, author, publisherselect B.title, A.author, A.positionfrom books as B, unnest (B.author-array)with ordinality as A (

51、author, position )array:有序,存在主表,要同时说明最大元素个数Multiset:无序,存在主表,元素可重复出现建立自定义的数据类型data_huangcreate or replace type data_huang as OBJECT(classBegin date,classEnd date,classPlace VARCHAR2(50)创建一个ClassInfoTemp表,(其中classTime字段的类型用自定义类型data_huang代替) CREATE TABLE ClassInfoTemp ("CLASSID" NUMBER(10,0)

52、, "CLASSNAME" VARCHAR2(32 BYTE), "TEACHERID" VARCHAR2(18 BYTE), "COURSEID" VARCHAR2(8 BYTE), "DEPARTMENTCODE" VARCHAR2(5 BYTE), "CLASSYEAR" VARCHAR2(6 BYTE), "CLAEEPLACE" VARCHAR2(40 BYTE), "CLASSTIME" DATA_HUANG , PRIMARY KEY (&q

53、uot;CLASSID") )往上面这个表中插入25行记录,并根据上课地点查询该表所有记录。insert into classinfotemp values(1111111111,'bingnan_1','133','2d4','c13','2011','aa', new data_huang ('2011-11-25 08:45:00','2011-11-25 10:25:00','503')建立包含上课时间地点信息也即(data_huan

54、g)类型的数据表classtimecreate table classtime of data_huang或是create type classtime as table of data_huang接着建立classinfo2表Select classtime1 from classinfo2Where classid =1;Select classid from classinfo2 cWhere 6<(select count(*) from table(c.classtime1) CREATE TABLE ClassInfo2 ("CLASSID" NUMBER

55、(10,0), "CLASSNAME" VARCHAR2(32 BYTE), "TEACHERID" VARCHAR2(18 BYTE), "COURSEID" VARCHAR2(8 BYTE), "DEPARTMENTCODE" VARCHAR2(5 BYTE), "CLASSYEAR" VARCHAR2(6 BYTE), "CLAEEPLACE" VARCHAR2(40 BYTE), "CLASSTIME1" classtime , PRIMARY K

56、EY ("CLASSID") ) nested table classtime1 store as classtime_tab插入一条包含两条classtime信息的classinfo2行insert into classinfo2 values(1111111111,'bingnan_1','133','2d4','c13','2011','aa', classtime(data_huang('2011-11-25 08:45:00','2011-11-

57、25 10:25:00','503'), data_huang('2011-11-26 15:45:00','2011-11-26 17:15:00','503')(注意查询的时候有varray、nested table就用表别名,保证不错)Varray:有序,存在主表,要同时说明最大元素个数Nested table:单独存放,无序XML使用:创建职工表employees表create table enployees( eid number(10) primary key, einfo sys.xmltype);向上面的表插入数据insert into enployeesvalues(2,sys.xmltype.createxml('<einfo> <name>小明</name> <gender>男</gender> <age>2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论