Oracle笔试题Word格式.docx
《Oracle笔试题Word格式.docx》由会员分享,可在线阅读,更多相关《Oracle笔试题Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
五、和排序相关的内存在8i和9i分别怎样调整,临时表空间的作用是什么(中等)
Oracle8i中sort_area_size/sort_area_retained_size决定了排序所需要的内存;
如果排序操作不能在sort_area_size中完成,就会用到temp表空间。
Oracle9i中如果workarea_size_policy=auto时,排序在pga内进行,通常pga_aggregate_target的1/20可以用来进行disksort;
如果workarea_size_policy=manual时,排序需要的内存由sort_area_size决定。
在执行orderby/groupby/distinct/union/createindex/indexrebuild/minus等操作时,如果在pga或sort_area_size中不能完成,排序将在临时表空间进行(disksort)。
临时表空间主要作用就是完成系统中的disksort。
-
六、Oracle有哪些用户其默认口令和权限是什么(容易)
当新建一个数据库时,Oracle将创建几个默认数据库用户模式,如SYS、SYSTEM和SCOTT。
SYS用户是Oracle中的超级用户,它的默认口令是change_on_install。
数据库中数据字典的所有表和视图都存储在SYS模式中。
SYSTEM用户也有管理员权限,它的默认口令是manager。
该用户创建显示管理信息的表和视图,以及Oracle工具所使用的内部表和视图。
SCOTT用户是一个示范帐户,其默认口令为tiger,此帐户包含4个示范表。
七、怎样查看哪些用户拥有SYSDBA、SYSOPER权限(中等)
connsys/change_on_install
select*fromV_$PWFILE_USERS;
八、请简述SQL语言的组成、作用及其常用命令。
(容易)
SQL语言分为数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。
DDL用于定义SQL模式、基本表、视图和索引的创建和撤消操作。
常用命令有:
CREATE、ALTER、DROP。
DML用于数据的插入、修改、删除和查询。
INSERT、UPDATE、DELETE、SELECT。
DCL用于对基本表的授权、完整性规则的描述和事务的控制等。
常用的命令有:
GRANT、REVOKE、COMMIT、SAVEPOINT、ROLLBACK。
九、数据库正常启动所经历的状态有哪几种(中等)
STARTUPNOMOUNT数据库实例启动
STARTUPMOUNT数据库装载
STARTUPOPEN数据库打开
十、varchar2,char两种数据类型有什么区别,如果数据表某字段输入ABC后储存,该字段数据类型分别为varchar2(10),char(10)存储字节长度以及内容有何区别(中等)
varchar2数据类型与char数据类型的区别:
1、char数据类型的列长度是1-2000个字节,如果未指明大小,则默认其大小为1个字节。
varchar2数据类型的列长度是1-4000个字节,定义该数据类型时,应指定其大小。
2、char数据类型如果用户输入的值小于指定的长度,数据库用空格填充至固定长度。
而对于varchar2数据类型,如果用户输入的值小于指定的长度,则其长度为用户输入的值长度。
如果数据表某字段输入“ABC”后储存,该字段数据类型为varchar2(10),其存储字节长度为3,内容为“ABC”。
如果数据表某字段输入“ABC”后储存,该字段数据类型为char(10),其存储字节长度为10,内容为“ABC”(七个空格)。
十一、已知客户表a(idnameaddress)登陆流水表b(idtime)购物流水表c(idtimeproductidproductnum)
(1)求每个客户的最新登陆时间time,姓名name,客户id
(2)查最新登陆并且已经购买商品的客户id,name,登陆的时间time(一条sql语句)(难)
(1)求每个客户的最新登陆时间time,姓名name,客户id
selecta.id,a.name,d.timeastime
fromaleftjoin(selectid,max(time)astimefrombgroupbyid)d
ona.id=d.id;
(2)查最新登陆并且已经购买商品的客户id,name,登陆的时间time
froma,(selectid,max(time)astimefrombgroupbyid)d
wherea.id=d.id
andexists(select*fromcwhereid=a.id);
十二、已知学生表student中有班级classid,学号id,成绩grade
(1)计算各个班的平均成绩
(2)查找比该班平均成绩高的学生的班级classid,学号id,成绩grade(难)
selectclassid,avg(grade)fromstudentgroupbyclassid;
(2)查找比该班平均成绩高的学生的班级classid,学号id,成绩grade
selectclassid,id,grade
from(selectclassid,id,grade,
avg(grade)over(partitionbyclassidorderbyclassid,id)asavg_grade
fromstudent)
wheregrade>
avg_grade;
十三、绑定变量是什么绑定变量有什么优缺点(中等)
绑定变量是相对文本变量来讲的,所谓文本变量是指在SQL直接书写查询条件,这样的SQL在不同条件下需要反复解析,绑定变量是指使用变量来代替直接书写条件,查询bindvalue在运行时传递,然后绑定执行。
优点是减少硬解析,降低CPU的争用,节省shared_pool;
缺点是不能使用histogram,sql优化比较困难。
十四、请叙述事务的概念及其性质。
(难)
事务是一个操作序列。
这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位,相当于操作系统环境中的“进程”概念。
事务以BEGINTRANSACTION语句开始,以COMMIT语句或ROLLBACK语句结束。
事务必须有四个性质:
(1)原子性:
一个事务中所有对数据库操作是一个不可分割的操作序列。
事务要么完事地被全部执行,要么什么也不做。
(2)一致性:
一个事务独立执行的结果将保证数据库的一致性,即数据不会因事务的执行而遭受破坏。
(3)隔离性:
在并发事务被执行时,系统应保证与这些事务先后单独执行时的结果一样,此时达到了隔离性要求。
(4)持久性:
一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。
十五、请叙述锁定的概念及其优点。
(中等)
锁定是数据库用来控制共享资源并发访问的机制。
锁定的优点:
(1)一致性:
一次只允许一个用户修改数据,从而提供统一的数据。
(2)完整性:
向所有用户提供正确的数据。
如果一个用户进行了更改并保存,那么所做的更改反映给所有用户。
(3)并发性:
允许多个用户访问同一数据。
十六、两段锁协议规定所有事务要遵守哪些规则(中等)
(1)在对任何数据进行读写操作之前,事务首先要获得对该数据的锁定。
(2)在释放一个锁之后,事务不再获得任何其它锁定。
所谓两段,就是每个事务分成前后两个阶段:
增生阶段和收缩阶段。
增生阶段:
也称为扩展阶段或申请锁阶段。
在增生阶段中,事务可申请锁,但不能解除任何已取得的锁。
收缩阶段:
也称为释放锁阶段。
在收缩阶段中,事务可释放锁,但是不能申请新锁。
十七、请叙述表分区的概念及其优点。
表分区允许用户把一个表中的所有行分为几个部分,并将这些部分存储在不同的位置。
被分区的表称为分区表,分成的每一部分称为分区。
对于包含大量数据的表来说,分区很有用。
表分区有以下优点:
(1)改善表的查询性能,在对表进行分区后,用户执行SQL查询时可以只访问表中的特定分区而非整个表。
(2)表更容易管理,因为分区表的数据存储在多个部分中,按分区加载和删除数据比在表中加载和删除更容易。
(3)便于备份和恢复,可以独立地备份和恢复每个分区。
(4)提高数据安全性,将不同的分区分布在不同的磁盘,可以减少所有分区的数据同时损坏的可能性。
十八、Oracle提供的表分区有哪几种请叙述他们的含义。
Oracle提供的表分区有:
(1)范围分区:
范围分区根据表的某个列或一组列的值范围,决定将该数据存储在哪个分区上。
(2)散列分区:
散列分区通过在分区键值上执行一个散列函数来决定数据的物理位置。
(3)复合分区:
复合分区是范围分区和散列分区的结合。
在创建复合分区时,先根据范围对数据进行分区,然后在这些分区内创建散列子分区。
(4)列表分区:
列表分区允许用户明确地控制行到分区的映射。
列表分区允许按自然方式对无序和不相关的数据集进行分组和组织。
十九、请阐述同议词的作用。
你认为什么情况下要使用同义词(中等)
同义词是数据库对象的一个别名。
同义词的作用有:
简化SQL语句,隐藏对象的名称和所有者,为分布式数据库的远程对象提供了位置透明性,提供对对象的公共访问。
当一个用户访问另一个用户的数据库对象时,可以通过使用同义词,而无需指定模式前缀,就可以实现此用户对其它模式的数据库对象的访问。
这些对象可以是表、视图、序列、过程、函数和程序包,甚至是其它同义词。
二十、什么是序列在表中如何使用序列(容易)
序列是用来生成唯一、连续的整数的数据库对象。
在表中使用序列:
(1)创建序列:
CREATESEQUENCEsequence_name[STARTWITHstartnum][INCREMENTBYstep];
(2)创建表时使用序列:
CREATETABLEtable_name(uidsmallintnotnull,);
(3)插入数据时使用序列:
INSERTINTOtable_nameVALUES(sequence_name.NEXTVAL,);
二十一、什么是视图,它与表的区别是什么(容易)
在SQL中,外模式一级数据结构的基本单位是视图,视图是从若干基本表和(或)其他视图构造出来的表。
我们创建一个视图时,只是把其视图的定义存放在数据字典中,而不存储视图对应的数据,因此,视图被称为“虚表”,这是它与表的主要区别。
二十二、Oracle支持的索引有哪几种(容易)
(1)唯一索引
(2)组合索引
(3)位图索引
(4)反向索引
(5)基于函数的索引
二十三、请解释每种索引,并写出其语法。
1、唯一索引可以确保在定义索引的列中,表的任意两行的值都不相同,Oracle自动为表的主键列创建唯一索引。
其语法为:
CREATEUNIQUEINDEXindex_nameONtable_name(column_name);
2、组合索引是在表中的多个列上创建的索引,可以提高检索数据的速度。
CREATEINDEXindex_nameONtable_name(column_name);
3、反向键索引通常建立在一些值连续增长的列上,可以提高读取的性能。
CREATEINDEXindex_nameONtable_name(column_name)REVERSE;
4、位图索引适用于低基数列,也就是不同值的数目比表的行数少的列。
CREATEBITMAPINDEXindex_nameONtable_name(column_name);
5、基于函数的索引是指基于一个或多个列上的函数或表达式创建的索引,便于WHERE子句中包含函数或表达式以计算查询时使用。
CREATEINDEXindex_nameONtable_name(表达式或函数);
二十四、sqlplus和sqlplusworksheet以及isqlplus三者之间的主要区别是什么(中等)
sqlplus是命令行方式的工具,sqlplusworksheet则带有窗口风格,它们都是客户端;
而isqlplus是B/S结构的,9i及以后的版本中有,可以通过标准浏览器方式来使用,无论你身在何处,只要相应的oracle服务启动即可。
二十五、请你简单叙述一下PL/SQL语言。
PL/SQL是一种块结构的语言,它将一组语句放在一个块中。
构成PL/SQL程序的基本单元是逻辑块(如过程、函数或匿名块),每个逻辑块对应要解决的问题或子问题。
PL/SQL块共分为3个部分,分别为声明部分、可执行部分和异常处理部分。
二十六、属性数据类型有哪几种如何使用(容易)
属性数据类型包括两种,分别是%TYPE和%ROWTYPE。
1、%TYPE将某种数据类型的变量或列提供给其他变量。
其语法格式为:
var1table_name.column_name%TYPE;
其中声明了变量var1,它的数据类型与table_name表中的column_name字段的数据类型相同。
2、%ROWTYPE提供一种表示表中的某行的记录类型。
var1table_name%ROWTYPE;
其中声明了变量var1,可以用来存储从table_name表中提取的一个记录。
二十七、用游标机制协调SQL的集合处理方式所用的SQL语句有哪些(容易)
与游标有关的SQL语句有下列四个:
(1)游标定义语句(DECLARE)
(2)游标打开语句(OPEN)
(3)游标推进语句(FETCH)
(4)游标关闭语句(CLOSE)
二十八、隐式游标和显式游标的区别是什么(容易)
隐式游标在执行SQL语句时由Oracle自动生成,用户不能控制隐式游标。
隐式游标用于检索一行。
显式游标由用户显式声明,用户对显式游标有完全控制权。
显式游标用于返回多行的查询。
二十九、请描述显式游标的属性及其作用。
显示游标有以下4种属性,分别为:
(1)%ISOPEN:
如果游标已打开,则返回true,否则返回false。
(2)%FOUND:
如果成功处理了最后一行,则返回true。
(3)%NOTFOUND:
如果提取最后一行失败,则返回true。
(4)%ROWCOUNT:
返回处理的行数。
三十、过程和函数的区别是什么(容易)
过程与函数都是执行某些操作的子程序,它是执行特定任务的模块。
两者非常类似,只是函数的主要特性是它必须返回一个值,因此,有个RETURN子句,该子句在函数规范中指示变量值的数据类型。
三十一、怎样区分程序包中的公有项和私有项(中等)
项是指子程序、类型、变量和常量。
声明为公有的项可以在程序包之外使用,声明为私有的项不能在程序包之外使用。
公有项通常是在程序包规格说明中声明、在程序包主体中定义的,而私有项只能在程序包主体中声明和定义。
公有项可以用于全局目的,而私有项只能用于局部目的,只能在程序包内使用。
三十二、请解释什么是触发器它与过程的区别是什么(容易)
触发器是当特定事件出现时自动执行的代码块。
其与过程的区别在于:
过程是由用户或应用程序甚至是触发器显式调用的,而触发器是由Oracle根据发生的事件而隐式激活的,它不能被直接调用执行。
三十三、请简述Oracle触发器的类型及其运行时机。
Oracle触发器分为DML触发器、模式(DDL或用户事件)触发器和数据库级触发器。
(1)DML触发器:
当DML语句在表中发生时执行。
DML语句包括以下3种类型:
A、语句级触发器:
无论受触发语句影响的行数是多少,都只激活一次。
B、行级触发器:
每当触发器语句影响表时就会激活行级触发器,行级触发器在被修改的每一行上执行一次。
C、INSTEADOF触发器:
允许用户修改不能使用DML语句修改的视图。
INSTEADOF触发器只可用于视图,不可用于表。
(2)模式(DDL或用户事件)触发器:
在数据库模式中执行DDL语句时激活。
(3)数据库(系统事件)触发器:
在发生LOGOFF(退出)、LOGON(登录)、STARTUP(打开)、SHUTDOWN(关闭)数据库和SERVERERROR(生成错误消息)等系统事件时执行。
三十四、请举例说明Oracle故障的类型。
Oracle的故障类型分为语句故障、用户进程故障、实例故障和介质故障。
(1)语句故障:
在执行SQL语句过程中发生的逻辑故障可导致语句故障。
如用户编写的SQL语句无效,就会发生逻辑故障。
(2)用户进程故障:
当用户程序出错而无法访问Oracle数据库时,就会发生用户进程故障。
如异常断开或终止进程都会导致用户进程故障。
(3)实例故障:
当Oracle的数据库实例由于硬件或软件问题而无法运行时,就会发生实例故障。
硬件问题包括意外断电,而软件问题可能是服务器操作系统崩溃。
(4)介质故障:
是当一个数据库文件、文件的部分或磁盘不能读或不能写时出现的故障。
例如,硬盘磁头损坏会导致数据库文件完全破坏。
三十五、介质故障是如何发生的(难)
在写入或读取数据库操作所需的文件时,可能会出错。
这些错误称为介质故障或磁盘故障。
例如,磁头崩溃会导致存储在数据库中的文件完全损坏。
发生介质故障以后,对控制文件和日志文件执行的数据库操作取决于这些文件是否已通过复用保护起来。
复用是一个文件存储在其他几个磁盘上的过程,如果其中一个磁盘发生介质故障,则可从其他的磁盘中获取该文件。
十六、归档是什么含义(容易)
关于归档日志:
Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archivedredolog)。
其对数据库备份和恢复有下列用处:
数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。
在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。
数据库可运行在两种不同方式下:
NOARCHIVELOG方式或ARCHIVELOG方式数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档,如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。
三十七、解释无归档日志方式(中等)
无归档日志方式可以防止数据库出现实例故障,但无法避免磁盘或介质故障。
对于从实例故障恢复,只有最近对一组联机日志文件中的数据库所做的修改才有效。
对数据库采用无归档日志方式将禁用联机日志文件的归档。
在此模式下,用户需定期进行数据库备份,但无法进行联机备份。
只有在数据库关闭时进行的完全备份才可用于恢复在无归档日志方式下操作的数据库。
三十八、解释冷备份和热备份的不同点以及各自的优点(中等)
热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。
而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。
热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。
冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。
(因为不必将archivelog写入硬盘)
三十九、如果一个表在2004-08-0410:
30:
00被drop,在有完善的归档和备份的情况下,如何恢复(难)
手工拷贝回所有备份的数据文件
startupmount;
sqlalterdatabaserecoverautomaticuntiltime2004-08-04:
10:
00
alterdatabaseopenresetlogs;
四十、表A(含a、b、c三个字段)有n(n>
10000)条记录,现在想每次从A表中取出10条记录(不足10的全部取出),要求每次查询从上次查询的最后一条开始取10条.记录集按时间排序。
selectA.a,A.b,A.c
from(selectrow_number()over(orderbyc)num,a,b,c
from表A)A
wherenum>
startnum
andnum
1.解释冷备份和热备份的不同点以及各自的优点
解答:
冷备份的优点在于它的备份和恢复