Oracle数据库管理与应用实例教程.docx
- 文档编号:10339108
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:18
- 大小:38.59KB
Oracle数据库管理与应用实例教程.docx
《Oracle数据库管理与应用实例教程.docx》由会员分享,可在线阅读,更多相关《Oracle数据库管理与应用实例教程.docx(18页珍藏版)》请在冰豆网上搜索。
Oracle数据库管理与应用实例教程
Oracle数据库管理与应用实例教程
Oracle数据库管理与应用实例教程第2版人民邮电出版社
仅供参考,如有错误请自行纠正
选择题
第二章
1.B2.B3.D4.A
第三章
1.C2.D3.D4.A
第四章
1.A2.B3.D4.A5.D
第五章
1.C2.A3.D4.A5.A6.B
第六章
1.B2.D3.B4.A5.D
第七章
1.C2.D3.D4.D5.B6.B
第八章
1.C2.D3.D4.D5.B6.D7.C
第九章
1.C2.C3.C4.A5.A6.D
第十章
1.D2.B3.C4.B5.B
第十一章
1.D2.C3.D4.B
第十二章
1.C2.B3.A4.A5.D
填空题
第二章
1.默认情况下OEM的URL地址是https:
//locahost:
1158/em。
2.Oracle9i发布于2001,其中的“i”代表Internet,oracle11g发布于2007年,其中的“g代表grid(网格)。
3.在oracle的内存结构中,用于保存正在执行或可能执行的代码的区是代码区。
4.在oracle的进程中,用于实现进程监控功能的进程是PMON。
第三章
1.Oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、重做日志文件、控制文件。
2.一个表在空间物理上对应一个或多数据文件。
3.在oracle的逻辑存储结构中,根据存储数据的类型,可以将段分为数据段、索引段、回滚段、LOB段和临时段。
第四章
1.在设计表时,对于邮政编码(固定为6位)列最适合的数据类型是CHAR。
2.在altertable语句中,如果要删除列,可以指定DROPCOLUMN关键字来实现。
3.如果需要向表中插入一批已经存在的数据,可以在insert语句中使用SELECT语句。
4.创建一个UPDATE语句来修改Goods表中的数据,并且把每一行的T-ID值都改成15,应该使用的SQL语句是UPDATESCOTT.GoodsSETt_ID=’15’。
5.使用DESC命令可以显示表的结构信息。
6.两个表的主关键字和外关键字的数据应对应一致,这是属于引用完整性,通常可以通过
主键和外键来实现。
7.UNIQUE约束通过确保在列中不输入重复值保证一列或多列的实体完整性。
第五章
1.在SELECT语句中选择满足条件的记录使用WHERE关键字,在分组之后进行选择使用HAVING关键字。
2.用来返回特定字段中所有值得总和的聚合函数是SUM。
3.编写查询语句时,使用%通配符可以匹配多个字符。
4.集合运算符UNION实现集合的并运算,操作符INTERSECT实现了对集合的交运算,而MINUS则实现了减运算。
第六章
1.如果要定义只读的视图,可以在创建视图时使用READONLY关键字。
2.删除视图的PL\SQL语句是DROPVIEW[用户方案.]视图名。
3.在使用CREATEINDEX创建索引时,使用BITMAP关键字可以创建位图索引。
4.聚集(Cluster)是存储表数据的可选择的方法。
一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用,表中相关的列称为聚集键。
5.在为表中某个列定义PRIMARYKEY约束PK_ID后,则系统默认创建的索引名为PK_ID。
6.如果表中某列的基数比较低,则应该在该列上创建反向索引。
7.如果要获知索引的使用情况,可以通过查询DBA_INDEXES视图,而要获知索引的当前状态,可以查询INDEX_STATS视图。
第七章
1.在Oracle的PL/SQL程序中,除了可以使用Oracle规定的数据类型外,还可以使用%TYPE类型的变量,由系统根据检索的数据表列的数据类型决定该变量的类型,也可以使用%ROWTYPE类型的变量用来一次存储从数据表中检索的一行数据。
2.SYSDATE函数可以获得当前系统的日期,SUBSTR(s,start,len)函数可以实现从指定的字符串中取指定长度的字符串。
3.用来变异存储过程的PL/SQL语句是ALTERPROCEDURE,CREATEFUNCTION语句可以用来创建函数。
第八章
1.要从服务器游标中检索特定的一行,可以使用FETCH<游标名>INTO语句,使用CLOSE<游标名>可以关闭指定的游标。
2.一个事务所做的修改必须能够与其他事务所做的修改隔离开来,这是事务的隔离性(Isolation)特性。
3.可以使用COMMIT语句进行显式事务的提交。
第九章
1.根据服务器或数据库中调用触发器的操作不同,Oracle的触发器分为DML触发器、替代触发器系统事件触发器和用户事件触发器。
2.:
OLD变量表用于存储DELETE和UPDATE语句所影响的行的值。
3.查询USER_TRIGGERS数据字典可以查看触发器的类型等信息。
4.BEFORE和AFTER制定了触发器的出发时间。
当为一个表配置了约束时,它们将会特别有用,BEFORE可以规定Oracle在应用约束前调用触发器,而AFTER规定在应用约束后调用触发器。
第十章
1.在Oracle数据库中将全线分为两类,即系统权限和用户权限。
系统权限是指在系统级控制数据库的存取和使用机制,用户权限是指在模式对象上存取和使用的机制。
2.角色是具有名臣的一组相关权限的组合。
3.在用户连接到数据库后,可以查询数据字典USER_USERS了解用户所具有的的系统权限。
第十一章
1.在执行完全数据库备份之前,应该确定备份哪些文件,通过查询V$DATAFILE视图可以获取数据文件的列表。
2.为了使用Oracle提供的EXP命令,必须为EXP命令分配IMP_FULL_DATABASE角色需要的所有特权。
3.Oracle提供RECOVER命令用于执行数据恢复操作,提供了IMP实现数据的导入。
4.在EXP命令中通过PARFILE选项可以指定包含导出参数列表的文件名,即参数文件。
第十二章
1.在3层或多层系统中业务逻辑层可以实现数据库的存取及应用程序的商业逻辑计算功能。
2.在JDBC的API中Statement接口提供了3种执行SQL语句的方法,其中用于产生单个结果集的方法是executeQuery()。
3.在ADO.NET中使用指定命令对象的类型(comm.CommandType=CommandType.StoredProcedure)方法,表示要对Oracle数据库执行的一个存储过程。
简答题
第1章
【简答题】
1.简要说明数据库设计的基本流程,并结合实例说明数据库设计各阶段的主要任务。
数据库设计的基本流程:
按照规范的设计方法,将数据库设计分为六个阶段:
(1)需求分析;
(2)概念结构设计;(3)逻辑结构设计;(4)物理结构设计;(5)数据库实施;(6)数据库的运行和维护。
需要说明的是,数据库设计还包含了应用系统的设计过程。
每个阶段的主要任务是:
(1)需求分析:
通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)的工作概况,明确用户需求,确定新系统的功能。
(2)概念结构设计:
应用E-R模型真实地反映现实世界,包括事物和相互之间的联系,能满足用户对数据的处理要求,是现实世界的一个真实模型;易于理解、易于更改、易于向关系、网状、层次等各种数据模型转换。
概念结构设计有以下四种方法:
①自顶向下;②自底向上;③逐步扩张;④混合策略。
(3)逻辑结构设计:
逻辑结构设计的目的是把概念设计阶段的基本E—R图转换成与选用的具体机器上DBMS所支持的数据模型相符合的逻辑结构(包括数据库模式和外模式)。
逻辑结构设计有如下三个步骤:
①将概念模型(E—R图)转换为一般的关系、网状、层次模型; ②将关系、网状、层次模型向特定的DBMS支持下的数据模型转换; ③对数据模型进行优化。
(4)物理结构设计:
对于一个给定的逻辑数据模式选取一个最适合应用环境的物理结构的过程,称为数据库的物理设计。
(5)数据库实施:
建立实际数据库结构;试运行;装入数据;同时进行数据库的重新组织设计;故障恢复方案设计;安全性考虑;事务控制;
(6)数据库的运行和维护:
数据库的日常维护(安全性、完整性控制,数据库的转储和恢复);性能的监督、分析与改进;扩充新功能;修改错误。
2.依据你对数据库管理员和程序员职业岗位的了解,说明这两个岗位对数据库知识和能力的需求。
请自行查阅前程无忧,智联招聘等网站
第二章
【简答题】
1.查阅资料,了解目前主流的关系型数据管理系统有哪些,并对这些数据库管理系统进行简单比较。
常见的关系型数据库管理系统产品有Oracle、SQLServer、Sybase、DB2、Access等。
(1)Oracle
Oracle是1983年推出的世界上第一个开放式商品化关系型数据库管理系统。
它采用标准的SQL结构化查询语言,支持多种数据类型,提供面向对象存储的数据支持,具有第四代语言开发工具,支持Unix、WindowsNT、OS/2、Novell等多种平台。
除此之外,它还具有很好的并行处理功能。
Oracle产品主要由Oracle服务器产品、Oracle开发工具、Oracle应用软件组成,也有基于微机的数据库产品。
主要满足对银行、金融、保险等企业、事业开发大型数据库的需求。
(2)SQLServer
SQL即结构化查询语言(StructuredQueryLanguage,简称为SQL)。
SQLServer最早出现在1988年,当时只能在OS/2操作系统上运行。
2000年12月微软发布了SQLServer2000,该软件可以运行于WindowsNT/2000/XP等多种操作系统之上,是支持客户机/服务器结构的数据库管理系统,它可以帮助各种规模的企业管理数据。
随着用户群的不断增大,SQLServer在易用性、可靠性、可收缩性、支持数据仓库、系统集成等方面日趋完美。
特别是SQLServer的数据库搜索引擎,可以在绝大多数的操作系统之上运行,并针对海量数据的查询进行了优化。
目前SQLServer已经成为应用最广泛的数据库产品之一。
由于使用SQLServer不但要掌握SQLServer的操作,而且还要能熟练掌握WindowsNT/2000Server的运行机制,以及SQL语言,所以对非专业人员的学习和使用有一定的难度。
(3)Sybase
1987年推出的大型关系型数据库管理系统Sybase,能运行于OS/2、Unix、WindowsNT等多种平台,它支持标准的关系型数据库语言SQL,使用客户机/服务器模式,采用开放体系结构,能实现网络环境下各节点上服务器的数据库互访操作。
技术先进、性能优良,是开发大中型数据库的工具。
Sybase产品主要由服务器产品SybaseSQLServer、客户产品SybaseSQLToolset和接口软件SybaseClient/ServerInterface组成,还有著名的数据库应用开发工具PowerBuilder。
(4)DB2
DB2是基于SQL的关系型数据库产品。
20世纪80年代初期DB2的重点放在大型的主机平台上。
到90年代初,DB2发展到中型机、小型机以及微机平台。
DB2适用于各种硬件与软件平台。
各种平台上的DB2有共同的应用程序接口,运行在一种平台上的程序可以很容易地移植到其他平台。
DB2的用户主要分布在金融、商业、铁路、航空、医院、旅游等各个领域,以金融系统的应用最为突出。
(5)Access
Access是在Windows操作系统下工作的关系型数据库管理系统。
它采用了Windows程序设计理念,以Windows特有的技术设计查询、用户界面、报表等数据对象,内嵌了VBA(全称为VisualBasicApplication)程序设计语言,具有集成的开发环境。
Access提供图形化的查询工具和屏幕、报表生成器,用户建立复杂的报表、界面无需编程和了解SQL语言,它会自动生成SQL代码。
Access被集成到Office中,具有Office系列软件的一般特点,如菜单、工具栏等。
与其他数据库管理系统软件相比,更加简单易学,一个普通的计算机用户,没有程序语言基础,仍然可以快速地掌握和使用它。
最重要的一点是,Access的功能比较强大,足以应付一般的数据管理及处理需要,适用于中小型企业数据管理的需求。
当然,在数据定义、数据安全可靠、数据有效控制等方面,它比前面几种数据库产品要逊色不少。
2.简要说明Oracle数据库体系的内存结构。
软件代码区,系统全局区,程序全局区和排序区
3.简要说明多进程Oracle实例系统中各后台进程的作用。
DBWR进程:
该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个Oracle后台进程。
LGWR进程:
该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个Oracle后台进程。
CKPT进程:
该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。
SMON进程:
该进程实例启动时,执行实例恢复,还负责清理不再使用的临时段。
PMON进程:
该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。
RECO进程:
该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。
ARCH进程:
该进程将已填满的在线日志文件拷贝到指定的存储设备。
LCKn进程:
是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1,LCK9),用于实例间的封锁。
Dnnn进程(调度进程):
该进程允许用户进程共享有限的服务器进程(SERVERPROCESS)。
第3章
【简答题】
1.简要介绍表空间和数据文件之间的关系。
每一个表空间由一个或多个数据文件组成的一个数据文件
只可以属于一个表空间。
2.简要介绍表空间、段、盘区和数据块之间的关系。
Oracle数据库系统逻辑结构中的各种组成元素(表空间、表、段、分区、数据块)之间存在一定的联系,如下图所示。
图3-2Oracle数据库的逻辑结构
(1)表空间(TableSpace)
每个数据库在逻辑上由一个或多个表空间组成,每个表空间由一个或多个数据文件组成,表空间中其他逻辑结构的数据物理地存储在这些数据文件中。
(2)表(Table)
表是存放数据的数据库对象,它是一种二维表格结构。
Oracle数据库中的表分为系统表和用户表,系统表存储数据字典,用户表存储用户的数据。
(3)段(Segment)
按照数据处理要求的不同,有时候需要将表空间划分为不同区域,以存放不同的数据,这些区域称为“段”。
Oracle11g数据库中有4种类型的段:
数据段、索引段、回滚段和临时段。
(4)分区(Extent)
分区是在数据库存储空间中分配的一个逻辑单元,由多个分区组成一个段。
当段中已有空间用完时,该段就获取另外的分区。
(5)数据块(DataBlock)
数据块是Oracle数据库中数据文件的最小存储空间单位,Oracle11g数据库常用的数据块大小可以是2KB或4KB。
第4章
【简答题】
1.简述DELETE语句与TRUNCATE语句的差异?
1.truncate和不带where子句的delete、以及drop都会删除表
内的数据。
2.drop、truncate都是DDL语句(数据定义语言),执行后自动提交。
不同之处:
1.drop和delete只是删除表的数据(定义),drop语句将删除表
的结构、被依赖的约束(constrain)、触发器(trigger)、索引
(index);依赖于该表的存储过程/函数将保留,但是变为invalid
状态。
2.delete语句是DML语言,这个操作会放在rollbacksegement
中,事物提交后才生效;如果有相应的触发器(trigger),执行的
时候将被触发。
truncate、drop是DDL语言,操作后即生效,原
数据不会放到rollback中,不能回滚,操作不会触发trigger。
3.delete语句不影响表所占用的extent、高水线(high
watermark)保持原位置不动。
drop语句将表所占用的空间全部释放。
truncate语句缺省情况下将空间释放到minextents的extent,除非使用reusestorage。
truncate会将高水线复位(回到最初)。
4.效率方面:
drop>truncate>delete
5.安全性:
小心使用drop与truncate,尤其是在没有备份时
候,想删除部分数据可使用delete需要带上where子句,回滚段要足够大,想删除表可以用drop,想保留表只是想删除表的所有数据、如果跟事物无关可以使用truncate,如果和事物有关、又或者想触发trigger,还是用delete,如果是整理表内部的碎片可以用truncate跟上reusestroage再重新导入、插入数据。
6.delete是DML语句,不会自动提交。
drop/truncate都是DDL语句,执行后会自动提交。
drop一般用于删除整体性数据如表模式索引视图完整性限制等delete用于删除局部性数据如表中的某一元组DROP把表结构都删了
DELETE只是把数据清掉
当你不再需要该表时用drop;
当你仍要保留该表但要删除所有记录时用truncate;
当你要删除部分记录时alwayswithaWHEREclause),用
delete.
2.数据完整性通常有哪几种类型,Oracle11g通过哪些方式来进行数据完整性控制。
数据完整性是指数据的精确性和可靠性。
它是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
数据完整性主要分为4类:
域完整性、实体完整性、引用完整性和用户定义完整性。
Oracle通过CHECK、FOREIGNKEY约束和DEFAULT、NOTNULL等实现域完整性;Oracle通过UNIQUE、PRIMARYKEY和IDENTITY实现实体完整性的;Oracle通过FOREIGNKEY约束、PRIMARYKEY实现引用完整性;Oracle提供了触发器(Trigger)等工具来帮助用户实现数据完整性。
第5章
【简答题】
1.什么是SQL注入式攻击?
如何防范SQL注入式攻击?
(1)SQL注入技术定义
SQL注入(SQLInjection)技术在国外最早出现在1999年,我国在2002年后开始大量出现,目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述:
(1)脚本注入式的攻击
(2)恶意用户输入用来影响被执行的SQL脚本
ChrisAnley将SQL注入定义为,攻击者通过在查询操作中插入一系列的SQL语句到应用程序中来操作数据。
StephenKost给出了SQL注入的一个特征,“从一个数据库获得XX的访问和直接检索”。
利用SQL注入技术来实施网络攻击常称为SQL注入攻击,其本质是利用Web应用程序中所输入的SQL语句的语法处理,针对的是Web应用程序开发者编程过程中未对SQL语句传入的参数做出严格的检查和处理所造成的。
习惯上将存在SQL注入点的程序或者网站称为SQL注入漏洞。
实际上,SQL注入是存在于有数据库连接的应用程序中的一种漏洞,攻击者通过在应用程序中预先定义好的查询语句结尾加上额外的SQL语句元素,欺骗数据库服务器执行非授权的查询。
这类应用程序一般是基于Web的应用程序,它允许用户输入查询条件,并将查询条件嵌入SQL请求语句中,发送到与该应用程序相关联的数据库服务器中去执行。
通过构造一些畸形的输入,攻击者能够操作这种请求语句去获取预先未知的结果。
(2)一般的SQL注入攻击防范方法
SQL注入攻击防范方法目前已经有很多,总结起来有下面一些:
在服务端正式处理之前对提交数据的合法性进行检查;
封装客户端提交信息;
替换或删除敏感字符/字符串;
屏蔽出错信息。
不要用字串连接建立SQL查询,而使用SQL变量,因为变量不是可以执行的脚本;
目录最小化权限设置,给静态网页目录和动态网页目录分别设置不同权限,尽量不给写目录权限;
修改或者去掉Web服务器上默认的一些危险命令,例如ftp、cmd、wscript等,需要时再复制到相应目录;
数据敏感信息非常规加密,通过在程序中对口令等敏感信息加密都是采用md5函数进行加密,即密文=md5(明文),本文推荐在原来的加密的基础上增加一些非常规的方式,即在md5加密的基础上附带一些值,如密文=md5(md5(明文)+123456);
2.请举例说明外连接的3种类型及其用法。
外连接其实就是查两张表左连接就是左边的表全有值,右边表的值可以为空(+);右连接是左边表值可以为空(+),右边表的值全有;全连接是左连接和右连接的并集;内连接是左连接和右连接的交集。
(1)左外连接(leftouterjoin)
selecte.last_name,e.department_id,d.department_namefromemployeeseleftouterjoindepartmentsdon(e.department_id=d.department_id);
等价于
selecte.last_name,e.department_id,d.department_namefromemployeese,departmentsdwheree.department_id=d.department_id(+);
结果为:
所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。
(2)右外连接(rightouterjoin)
selecte.last_name,e.department_id,d.department_namefromemployeeserightouterjoindepartmentsdon(e.department_id=d.department_id);
等价于
selecte.last_name,e.department_id,d.department_namefromemployeese,departmentsdwheree.department_id(+)=d.department_id;
结果为:
所有员工及对应部门的记录,包括没有任何员工的部门记录。
3.全连接(fullouterjoin)
selecte.last_name,e.department_id,d.department_namefromemployeesefullouterjoindepartmentsdon(e.department_id=d.department_id);
结果为:
所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 管理 应用 实例教程