【DB笔试面试100-200】

来源:互联网 发布:软件项目安排日程表 编辑:程序博客网 时间:2024/05/16 12:16

【DB笔试面试101】

Which statement is true regarding the COALESCE function?
A、 It can have a maximum of five expressions in a list.
B、 It returns the highest NOT NULL value in the list for all rows.
C、 It requires that all expressions in the list must be of the same data type.
D、 It requires that at least one of the expressions in the list must have a NOT NULL value.
题目的意思是关于COALESCE函数哪些说法是正确的,考察的是对COALESCE函数的理解。COALESCE函数用来匹配多个字段的值,如果表达式1的值为NULL,那么显示表达式2的值,如果表达式2也为空,那么显示表达式3的值,依次类推。
本题中,对于选项A,选项说最大5个列表,说法错误。所以,选项A错误。
对于选项B,选项说返回列表中最大的值。所以,选项B错误。
对于选项C,选项说所有的表达式应该有相同的数据类型,说法是正确的。所以,选项C正确。
对于选项D,选项说列表中至少需要有一个非空值,这个说法错误,列表可以全部为NULL。所以,选项D错误。
所以,本题的答案为C。

【DB笔试面试102】

Which statement is true regarding the COALESCE function?
A、 It can have a maximum of five expressions in a list.
B、 It returns the highest NOT NULL value in the list for all rows.
C、 It requires that all expressions in the list must be of the same data type.
D、 It requires that at least one of the expressions in the list must have a NOT NULL value.
题目的意思是关于COALESCE函数哪些说法是正确的,考察的是对COALESCE函数的理解。COALESCE函数用来匹配多个字段的值,如果表达式1的值为NULL,那么显示表达式2的值,如果表达式2也为空,那么显示表达式3的值,依次类推。
本题中,对于选项A,选项说最大5个列表,说法错误。所以,选项A错误。
对于选项B,选项说返回列表中最大的值。所以,选项B错误。
对于选项C,选项说所有的表达式应该有相同的数据类型,说法是正确的。所以,选项C正确。
对于选项D,选项说列表中至少需要有一个非空值,这个说法错误,列表可以全部为NULL。所以,选项D错误。
所以,本题的答案为C。

【DB笔试面试103】在Oracle中,如何将一个IP地址分解为4个字段?

使用Oracle的正则表达式函数REGEXP_SUBSTR,如下所示:
SYS@lhrdb> SELECT REGEXP_SUBSTR(V.IP, ‘[^.]+’, 1, 1) A,
2 REGEXP_SUBSTR(V.IP, ‘[^.]+’, 1, 2) B,
3 REGEXP_SUBSTR(V.IP, ‘[^.]+’, 1, 3) C,
4 REGEXP_SUBSTR(V.IP, ‘[^.]+’, 1, 4) D
5 FROM (SELECT ‘192.168.59.130’ IP FROM DUAL) V;
A B C D


192 168 59 130

【DB笔试面试104】

假定SERV表有a、b、c三个字段:SERV(a number(10),b number(10),c number(10))。表SERV的内容如下:
这里写图片描述
以下两段PL/SQL的功能是根据a的值,查找出对应b的值赋予变量x,请分别判断这两段PL/SQL是否能正常执行,若不能正常执行,请指出错误的原因并修改。
declare
x number;
begin
select b into x from serv where a=1;
dbms_output.put_line(to_char(x));
end;

declare
x number;
begin
select b into x from serv where a=2;
dbms_output.put_line(to_char(x));
end;
这2段程序除了WHERE语句后的值不同以外,其它均一样。对于程序(1),当a=1时,返回了2行记录,对于程序(2),当a=2时,返回了1行记录。对于变量x而言,只能接受一个值,所以,程序2执行不报错,程序(1)执行报错:ORA-01422: exact fetch returns more than requested number of rows。
对于程序(1)有2种修改方法,第一种就是将“select b into x from serv where a=1;”修改为“select distinct b into x from serv where a=1;”。第二种方法就是返回集合类型,修改后的程序块如下所示:
DECLARE
VARCURSOR SYS_REFCURSOR;
X SERV%ROWTYPE;
BEGIN
OPEN VARCURSOR FOR
SELECT T.* FROM SERV T WHERE A=1;
LOOP
FETCH VARCURSOR
INTO X;
EXIT WHEN VARCURSOR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(R.B);
END LOOP;
END;

【DB笔试面试105】

数据库中有一张如下所示的表,表名为sales。
这里写图片描述
环境如下所示:
这里写图片描述
这是一道行转列的题目,采用聚合函数+DECODE或CASE来回答即可,如下所示:
这里写图片描述
此题若使用PIVOT函数,如下所示:
这里写图片描述

此题若使用临时表的方式,如下所示:
这里写图片描述

【DB笔试面试106】在Oracle中,下面有关SQL绑定变量的描述中,错误的是()

下面有关SQL绑定变量的描述中,错误的是()
A、绑定变量是指在SQL语句中使用变量,改变变量的值来改变SQL语句的执行结果
B、使用绑定变量,可以减少SQL语句的解析,能减少数据库引擎消耗在SQL语句解析上的资源
C、使用绑定变量,提高了编程效率和可靠性,减少访问数据库的次数
D、使用绑定变量,查询优化器会预估的比字面变量更加真实
绑定变量是相对文本变量来讲的,所谓文本变量是指在SQL中直接书写查询条件,这样的SQL在不同条件下需要反复解析,绑定变量是指使用变量来代替直接书写条件,查询绑定变量在运行时传递,然后绑定执行。优点是减少硬解析,降低CPU的争用,节省SHARED_POOL;缺点是不能使用固定的执行计划,SQL优化比较困难。
本题中,对于选项A,绑定变量就是之前不知道具体的值,只有运行的时候才知道值,改变变量的值来改变SQL语句的执行结果。所以,选项A错误。
对于选项B,使用绑定变量,可以减少SQL语句的解析,说法正确。所以,选项B错误。
对于选项C,使用绑定变量,减少解析次数,提高了编程效率和可靠性。所以,选项C错误。
对于选项D,使用绑定变量,查询优化器不知道具体的值,所以,其执行计划也不真实。所以,选项D正确。
所以,本题的答案为D。

【DB笔试面试107】

有如下图的数据,那么SQL语句SELECT AVG(AGE) FROM STUINFO;的结果是多少?STUINFO表的数据如下图所示,AGE的类型为NUMBER
这里写图片描述
由于NULL值不参与运算,所以,(5+4+5+6+6)/5=5.2。

【DB笔试面试108】在Oracle中,sqldlr true 。。。SQL*Loader utility?()

Which two statements are true regarding the usage of the SQL*Loader utility? (Choose two.)
A.You can load data into multiple tables during the same load session.
B.You can load data from multiple files to a table during the same load session.
C.You cannot perform selective data loading based on the values available in the records.
D.You can use an export file generated by the EXPDP utility as an input data file to load the data.
题目中要求选出与SQL*Loader工具的说法正确的2个选项。
本题中,对于选项A,可以在一个SQL*Loader会话中导入多个表的数据,根据前边的分析,该功能可以实现。所以,选项A正确。
对于选项B,可以在一个SQL*Loader会话中将多个数据文件导入到1个表中,根据前边的分析,该功能可以实现。所以,选项B正确。
对于选项C,在导入数据的时候可以使用WHEN关键词实现选择性的导入。所以,选项C错误。
对于选项D,SQL*Loader是文本导入工具,只能导入文本数据,而exp导出的文件属于二进制文件,所以不能导入。所以,选项D错误。
所以,本题的答案为A、B。

【DB笔试面试109】在Oracle中,Which 。。。conventional path of SQL*Loader?()

Which statement is true about loading data using the conventional path of SQL*Loader?
A、Redo is not generated while performing conventional path loads.
B、Only PRIMARY KEY, UNIQUE KEY, and NOT NULL constraints are checked.
C、The SQL*Loader control file is a text file that contains data definition language (DDL) instructions.
D、Instead of performing transactions, SQL*Loader directly writes data blocks to the data files.
E、INSERT triggers are disabled before the conventional path load and reenabled at the end of the load.
题目要求选出与SQL*Loader的常规路径加载说法正确的选项。
本题中,对于选项A,常规路径加载的时候会产生REDO日志的,选项A错误。
对于选项B,所有的约束均有效,而不止PRIMARY KEY、UNIQUE KEY和NOT NULL这3项约束。所以,选项B错误。
对于选项C,SQL*Loader的控制文件是一个文本文件,其中包含了一些DDL结构。所以,选项C正确。
对于选项D,SQL*Loader的常规路径加载是经过内存的,而不是直接写入数据文件。所以,选项D错误。
对于选项E,SQL*Loader加载的时候,表上的相关触发器是会执行的。所以,选项E错误。
所以,本题的答案为C。

【DB笔试面试110】在Oracle中,下列关于AUTHID的说法哪些是正确的?()

下列关于AUTHID的说法哪些是正确的?()
A、AUTHID子句是用于指定哪些用户被授权执行一个程序单元
B、从Oracle 11gR1开始,所有的程序单元都必须指明AUTHID属性
C、一个PL/SQL程序的AUTHID属性会影响该程序在运行的时候发出的SQL语句所涉及的名字解析和权限检查
D、AUTHID属性可以在包头(Package Specification)和对象类型的头部(Object Type Specification)指定,但不能够在包体(Package Body)和类型体(Object Type Body)指定

本题中,对于选项A,AUTHID子句是用于指定一个程序单元是运行于“调用者权限”(AUTHID CURRENT_USER)还是“定义者权限”(AUTHID DEFINER)。所以,选项A错误。

对于选项B,AUTHID子句是可选的,缺省设置为AUTHID DEFINER。所以,选项B错误。
对于选项C,实际上这就是Oracle文档中关于AUTHID的定义。所以,选项C正确。
对于选项D,AUTHID可以在CREATE FUNCTION、CREATE PACKAGE、CREATE PROCEDURE、CREATE TYPE和ALTER TYPE中包含。但不能在CREATE PACKAGE BODY或者CREATE TYPE BODY中包含AUTHID。所以,选项C正确。
所以,本题的答案为C、D。

【DB笔试面试111】在Oracle中,Note the following structures。。。逻辑结构()

Note the following structures in your database server:
1、Extents
2、OS Blocks
3、Tablespace
4、Segments
5、Oracle Data Block
Which option has the correct arrangement of these structures FROM the smallest to the largest?()
A、2, 5, 1, 4, 3
B、1, 2, 3, 4, 5
C、5, 2, 1, 3, 4
D、2, 1, 5, 4, 3
Oracle中逻辑结构包括表空间、段、区和块。说明一下:数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由Oracle 块构成的这样的一种结构,可以提高数据库的效率,块 → 区 → 段 → 表空间 → 数据库。题目问的是从小到大的排序哪个是正确的。
本题中,对于选项A,OS BLOCKS->ORACLE DATA BLOCK->EXTENTS->SEGMENTS->TABLESPACE,排序正确。所以,选项A正确。
对于选项B,Extents不是最小的,排除掉。所以,选项B错误。
对于选项C,Oracle数据块也不是最小的,排除掉。所以,选项C错误。
对于选项D,块组成区,而不是区组成块。所以,选项D错误。
所以,本题的答案为A。

【DB笔试面试112】在Oracle中,下面有关TABLESPACE和DATAFILE之间的关系的描述中,说法错误的是()

下面有关TABLESPACE和DATAFILE之间的关系的描述中,说法错误的是()
A、一个TABLESPACE可以有一个或多个DATAFILE
B、每个DATAFILE只能在一个TABLESPACE内
C、TABLE中的数据,通过HASH算法分布在TABLESPACE中的各个DATAFILE中
D、DATAFILE是逻辑上的概念,TABLESPACE则在物理上储存了数据库的种种对象
关于数据库的逻辑结构和物理结构,TABLESPACE是逻辑上的概念,DATAFILE是物理上的概念。一个TABLESPACE可以由多个DATAFILE组成,一个DATAFILE不能跨越多个TABLESPACE。TABLE中的数据,通过HASH算法分布在TABLESPACE中的各个DATAFILE中,TABLESPACE是逻辑上的概念,DATAFILE则在物理上储存了数据库的种种对象。
表空间是Oracle数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间。表空间在物理上体现为磁盘数据文件,每一个表空间由一个或多个数据文件组成,一个数据文件只可与一个表空间相联系,这是逻辑与物理的统一。
本题中,对于选项A,一个TABLESPACE可以有一个或多个DATAFILE,说法是正确的。所以,选项A错误。
对于选项B,每个DATAFILE只能在一个TABLESPACE内,说法正确。所以,选项B错误。
对于选项C,TABLE中的数据,通过HASH算法分布在TABLESPACE中的各个DATAFILE中,说法正确。所以,选项C错误。
对于选项D,TABLESPACE是逻辑上的概念,DATAFILE是物理上的概念,选项中正好说反了。所以,选项D正确。
所以,本题的答案为D。

【DB笔试面试113】在Oracle中,DATA BLOCK,EXTENT和SEGMENT的区别是什么?

DATA BLOCK,EXTENT和SEGMENT的区别是什么?

DATA BLOCK是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的DATA BLOCK就组成了EXTENT。一个数据库对象拥有的所有EXTENTS被称为该对象的SEGMENT。

【DB笔试面试114】在Oracle中,。。。 background processes()

Note the following functionalities of various background processes:

1. Record the checkpoint information in data file headers.
2. Perform recovery at instance startup.
3. Cleanup unused temporary segments.
4. Free the resources used by a user process when it fails.
5. Dynamically register database services with listeners.
6. Monitor sessions for idle session timeout.
Which option has the correct functionalities listed for a background process?()
A、Archiver Process (ARCn):1, 2, 5
B、System Monitor Process (SMON):1, 4, 5
C、Process Monitor Process (PMON):4, 5, 6
D、Database Writer Process (DBWn):1, 3, 4
Oracle有一些非常重要的后台进程,如下所示:
(1)PMON:进程监视进程(Process Monitor Process)。
(2)SMON:系统监视进程(System Monitor Process)。
(3)DBWn:数据库写入器进程(Database Writer Process),将信息从SGA的数据库缓冲存储区中写入到数据库数据文件中。
(4)LGWR:日志写入器进程(Log Writer Process),将生成的REDO信息从日志缓冲区写入到数据库联机REDO日志中。
(5)CKPT:检查点进程(Checkpoint Process),在检查点操作期间,CKPT进程会通知DBWn检查此点。
本题描述中的1,将检查点记录在文件头属于CKPT的作用,2中在数据库启动的时候执行恢复操作属于SMON的作用,3中清理未使用的临时段也属于SMON的作用,4中释放用户的资源属于PMON的作用,5中动态注册数据库属于PMON的作用,6中监控会话的空闲时间属于PMON的作用。
本题中,对于选项A,1和2不属于ARCn的作用。所以,选项A错误。
对于选项B,4和5不属于SMON的作用。所以,选项B错误。
对于选项C,4、5和6都是PMON的作用。所以,选项C正确。
对于选项D,1、3和4都不是DBWn的作用。所以,选项D错误。
所以,本题的答案为C。
Oracle中还有一些其它的进程,具体分析可以参考BLOG:http://blog.itpub.net/26736162/viewspace-2121305

【DB笔试面试115】在Oracle中, Which three statements 。。。spfile。 ()

Which three statements regarding the server parameter file (SPFILE) are true? (Choose three.)
A、An SPFILE is abinary file.
B、An SPFILE cannot reside on a client.
C、An SPFILE cannot contain static parameters.
D、An SPFILE can store changes persistently across instance restarts.
E、An SPFILE can be read by the database server , but it is not written to by the server.
F、An SPFILE must be created manually , before creating a database, even if you use the Database Configuration Assistant(DBCA) to create the database.
本题考察的是SPFILE的相关知识。
本题中,对于选项A,SPFILE是一个二进制文件。所以,选项A正确。
对于选项B,SPFILE不能用在客户端。所以,选项B正确。
对于选项C,SPFILE可以包含静态参数。所以,选项C错误。
对于选项D,SPFILE可以永久存储参数的值。所以,选项D正确。
对于选项E,SPFILE可以由数据库进行写入。所以,选项E错误。
对于选项F,DBCA创建的数据库不用手动创建SPFILE。所以,选项F错误。
所以,本题的答案为A、B、D。

【DB笔试面试116】在Oracle hint中的DRIVING_SITE的作用是什么?

Oracle hint中的DRIVING_SITE的作用是什么?
日常工作中经常会用到分布式数据库查询,即通过DBLINK同时查询本地表和远程表。分布式查询一般有两种处理方式:一种将远程表数据取回本地,然后和本地表关联查询,获取最终结果;另一种将本地表数据传到远程和远程表关联查询后,再将关联结果取回。前一种处理方式可理解为只有一次网络传输操作比后一种少,也就作为了数据库的默认处理方式。DRIVING_SITE提示能够指定执行计划在远程还是本地做,使用DRIVING_SITE,特别是本地小结果集,远程大结果集,最终结果集较小时,希望计划在远程驱动,这样远程执行完毕,将结果集传输到本地,避免了大结果集的网络传输,从而达到整体优化的效果。使用DRIVING_SITE可以减少总体的网络传输数据量。
当DRIVING_SITE驱动的对象嵌套在视图中时,可通过DRIVING_SITE(V.T)方式来指定,其中V表示视图别名或名称,T表示视图里表的别名或名称。
需要注意的是,对于DML和DDL语句,DRIVING_SITE提示是失效的,会自动被Oracle忽略掉,此时将以目标表所在库为主计划驱动,相当于DRIVING_SITE(目标表库),此时可以通过视图转换来达到优化目的。DML和DDL中如果是对本地表做DML,主计划总是在本地做,会将远程数据拉到本地,相当于DRIVING_SITE(本地表)。如果是对远程表做DML,那么主计划总是在远程做,会将本地数据送到远程,相当于自动DRIVING_SITE(远程表)。
& 说明:
有关HINT的更多内容可以参考BLOG:http://blog.itpub.net/26736162/viewspace-2125011/、http://blog.itpub.net/26736162/viewspace-2125709/、http://blog.itpub.net/26736162/viewspace-2125815/

【DB笔试面试117】

You have statistics collected for some selected tables. Your requirement is that the statistics for the tables and all dependent indexes must not be overwritten by further statistics collection until a certain point of time. How would you achieve this?
A、Lock statistics for the tables.
B、Change STALE_PERCENT to zero for the tables.
C、Set the TIMED_ST A TISTICS parameter to TRUE.
D、Set the ST ATISTICS_LEVEL parameter to BASIC.
E、Set the OPTIMIZER_USE_PENDING parameter statistics to TRUE.
若要保持统计信息不被覆盖,则必须利用DBMS_STATS包将统计信息锁住。

【DB笔试面试118】在Oracle中,An index called ORD_CUSTNAME()

An index called ORD_CUSTNAME_IX has been created on the CUSTNAME column in the ORDERS table using the following command:
SQL>CREATE INDEX ord_custname_ix ON orders(custname);
The ORDERS table is frequently queried using the CUSTNAME column in the WHERE clause.You want to check the impact on the performance of the queries if the index is not available.You do not want the index to be dropped or rebuilt to perform this test.
Which is the most efficient method of performing this task?
A.disabling the index
B.making the index invisible
C.making the index unusable
D.using the MONITORING USAGE clause for the index
题目要求在不能删除和重建的情况下来测试索引的性能。
对于选项A,索引不能被禁用。所以,选项A错误。
对于选项B,让索引不可见,为正确选项。所以,选项B正确。
对于选项C,让索引不可用之后还是得重建索引。所以,选项C错误。
对于选项D,监控索引并不能测试索引在不可用的情况下对系统的性能影响。所以,选项D错误。
所以,本题的答案为B。

【DB笔试面试119】在Oracle中,Identify three key features of ASM() Identify three key features of ASM.(Choose three.)

A、file striping
B、allocation unit mirroring
C、automatic disk rebalancing
D、automatic file size increment
E、automatic undo management
题目要求选出ASM的3个主要特点,选项A为文件条带化,选项B为分配单元镜像选项,选项C为自动磁盘重新平衡,选项D和选项E都不是ASM的特点。

【DB笔试面试120】Which of the following files cannot be backed up by RMAN? (Choose all that apply )

A、Database datafiles
B、Control files
C、Online redo logs
D、Database pfiles
E、Archived redo logs
RMAN可以用来备份什么?
① 数据库:包括数据文件、控制文件、SPFILE(Server Parameter File)文件
② 表空间
③ 归档文件
④ 备份集
RMAN不能用来备份什么?
① 在线日志
② 非READ/WRITE状态的可传输表空间
③ PFILE(Parameter File)文件

【DB笔试面试121】 What methods of point-in-time recovery are available?(Choose all that apply.)

A、Change-based
B、Cancel-based
C、Time-based
D、Sequence number-based
E、Transaction number-based
题目问的是不完全恢复有哪几种类型?
不完全恢复是一种与完全恢复相反的恢复方式,是一种丢失数据的恢复方式,也称为数据库基于时间点恢复(Point-in-Time Recovery),是将整个数据库恢复到之前的某个时间点、日志序列号或者SCN号。通常情况下,若FLASHBACK DATABASE没有启用或者变得无效,则可以执行不完全恢复撤销一个用户错误。不完全恢复不一定在原有的数据库环境执行,可以在测试环境下执行不完全恢复,将找回的数据再重新导入生产库中。不完全恢复根据备份情况恢复到与指定时间、日志序列号和SCN具有一致性的数据,之后的数据都将丢失。执行不完全恢复一方面可能是因为归档REDO日志、联机REDO日志的丢失不得不执行不完全恢复,另一方面可能是因为在某个时刻错误地操作了数据,过了一段时间之后才发现问题,而其它的恢复手段都无法恢复数据,这时也不得不使用不完全恢复来找回数据。执行不完全恢复必须从备份中还原所有的数据文件,备份文件必须是要恢复的时间点之前创建的。当恢复完成后,使用RESTLOGS选项打开数据库,将重新初始化联机Redo日志,创建一个新的日志序列号流,日志序列号从1开始,RESETLOGS之后的SCN还是在递增。
如果是完全恢复,那么数据库就是最新的一致性状态;如果是不完全恢复,那么数据库就是非最新的一致性状态。对于非归档模式的数据库来说,不能执行不完全恢复。
不完全恢复的选项如下表所示:
这里写图片描述
不完全恢复的几种类型如下表所示:
这里写图片描述
综上所述,恢复的分类如下图所示:
这里写图片描述
本题中,对于选项A,Change-based指的是基于SCN的恢复。所以,选项A正确。
对于选项B,Cancel-based指的是基于取消的恢复。所以,选项B正确。
对于选项C,Time-based指的是基于时间的恢复。所以,选项C正确。
对于选项D,Sequence number-based指的是基于日志序列号的恢复。所以,选项D正确。
对于选项E,Transaction number-based指的是基于事务号的恢复,不完全恢复不能按照事务号来恢复。所以,选项E错误。
所以,本题的答案为A、B、C、D。

【DB笔试面试122】在Oracle中,Which options 。。。TSPITR by using RMAN? Which options must you configure while performing an automated Tablespace Point-in-Time Recovery(TSPITR) by using Recovery Manager(RMAN)?

A、 New channels for restore and recovery tasks
B、 New name for the data files of the tablespace
C、 Auxiliary name for the data files of the tablespace
D、 Auxiliary destinations for an auxiliary set of data files
题目中问的是在使用恢复管理器(RMAN)执行自动表空间时间点恢复(TSPITR)的同时,必须配置哪些选项。
本题中,对于选项A,必须配置还原和恢复的任务,TSPITR不用配置这些。所以,选项A错误。
对于选项B,给表空间的数据文件设置新的名称,TSPITR也不用配置这个。所以,选项B错误。
对于选项C,给表空间的数据文件设置新的辅助名称,TSPITR也不用配置这个。所以,选项C错误。
对于选项D,给辅助集的数据文件设置辅助目的地,从TSPITR的命令格式可以看出,Auxiliary destinations对于TSPITR是必须的。所以,选项D正确。
所以,本题的答案为D。

【DB笔试面试123】在Oracle中,Which of。。 point-in-time recovery?() Which of the following restrictions are not true with respect to tablespace point-in-time recovery?(Choose all that apply)

A、The target database must be in NOARCHIVELOG mode.
B、No backup is required of the database before you perform a TSPITR.
C、You must have all archived redo logs generated since the last backup up to the point to which you want to restore the transport set.
D、If you rename a tablespace, you can not perform a TSPITR to any point in time before that rename operation occurred.
E、If you have tables in tablespace_1 that have associated constraints in tablespace_2, then you must transport both tablespaces.
题目中问的是关于表空间时间点恢复,哪些是错误的,要求选出所有的错误选项。
本题中,对于选项A,选项说目标数据库必须在非归档模式,说法错误,事实上,目标数据库必须必须在归档模式。所以,选项A正确。
对于选项B,选项说当执行一个表空间时间点恢复之前,不需要数据库备份,说法错误,必须进行数据库的备份才可以进行TSPITR。所以,选项B正确。
对于选项C,选项说必须拥有所有归档REDO日志,该日志生成于自上次备份到想还原传输集的点,说法正确。所以,选项C错误。
对于选项D,选项说如果重命名一个表空间,那么就不能执行TSPITR到在重命名操作发生之前任何一点,说法正确。所以,选项D错误。
对于选项E,选项说如果有表在表空间1,而表空间1与表空间2有相关约束,那么必须传输两个表空间,说法正确,传输的表空间必须是自包含的表空间。所以,选项E错误。
所以,本题的答案为A、B。

【DB笔试面试124】 You have not configured Oracle Managed Files (OMF) in your database. You do not want to scan the entire datafile every time an incremental backup is performed. You decide to enable the block change tracking feature. Which statement should you use to enable the block change tracking feature?

A、ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
B、ALTER SYSTEM ENABLE BLOCK CHANGE TRACKING USING FILE ;
C、ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE ;
D、ALTER SYSTEM ENABLE BLOCK CHANGE TRACKING;
题目翻译过来的意思为,没有在数据库中配置Oracle管理文件(OMF)的情况下,不想每次执行增量备份时扫描整个数据文件,所以决定启用块改变跟踪功能。你应该使用哪种语句启用块更改跟踪功能?
启用块改变跟踪功能使用的是ALTER DATABASE,所以排除B和D选项。由于题目中说明,并没有配置OMF功能,所以db_create_file_dest参数的值必为空,所以在启用块改变跟踪功能的时候必须使用USING FILE选项,故选项C正确。

【DB笔试面试125】 在Oracle中,Why 。。。 execute 。。。 report obsolete 。。。()

Why would you execute ?
A、To list all backups that were no longer available for restore operations.
B、To list all backups that had aged beyond the RMAN retention criteria.
C、To list all backup set pieces listed in control-file or recovery-catalog metadata that are not on the backup media.
D、To list all datafiles that are no longer part of the database and thus do not need to be backed up.
E、To list all archived redo logs that are no longer needed for any database recovery.
REPORT OBSOLETE命令是为了列出所有超出RMAN保留策略的备份,显然答案为B。

【DB笔试面试126】

You have set Tablespace Full Metrics Threshold values for the USERS tablespace as follows:
Warning (%):90
Critical (%):95
Which background process is responsible for issuing alerts when the threshold is crossed?
A.System monitor (SMON)
B.Process monitor (PMON)
C.Memory manager process (MMAN)
D.Manageability Monitor process (MMON)
题目说为USERS表空间设置了阀值,问的是当到达阀值之后哪个后台进程会发出alert告警。
本题中,对于选项A,SMON的作用是检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复。所以,选项A错误。
对于选项B,PMON的作用是负责在一个Oracle进程失败时清理资源。所以,选项B错误。
对于选项C,MMAN的作用是协调内存各组成部分的大小。所以,选项C错误。
对于选项D,MMON的作用有:(1)启动slave进程Mnnn去做AWR快照;(2)当某个测量值(metrics)超过了其度量阀值(threshold value)时发出alert告警;(3)为最近改变过的SQL对象捕获指标信息。所以,选项D正确。
所以,本题的答案为D。

【DB笔试面试127】

在Oracle中,如何在AWR中查看每秒执行事务的个数?
在Oracle中,如何在AWR中查看每秒执行事务的个数?
该题考察的是对AWR报告的熟悉程度。AWR中每秒事务数在Load Profile部分的最后,负载较低的数据库每秒执行事务的个数可能小于1,而对于一些负载比较大的场景,每秒可能会有50、1000、甚至高达10000的事务,所以,这个只与具体的场景有关。下图给出了某个AWR中每秒的事务数,可以看到该系统的每秒事务数为1.18。
【DB笔试面试128】在Oracle中,。。。 is supported on the table 。。。()
You enabled Flashback Data Archive on the INVENTORY table. Which DDL operation is supported on the table after enabling Flashback Data Archive?
A、Drop the table.
B、Partition the table
C、Truncate the table.
D、Add a column to the table.
E、Rename a column in the table.
题目的意思是启用INVENTORY表的闪回数据归档,启用闪回数据归档之后在表上支持哪一项DDL操作?A、B、C和E都不能操作,A的示例如下所示:
scott@11gR1> DROP TABLE TEST1;
DROP TABLE TEST1
*
ERROR at line 1:
ORA-55610: Invalid DDL statement on history-tracked table

有关闪回数据归档的更多内容可以参考BLOG:http://blog.itpub.net/26736162/viewspace-2125005/
【DB笔试面试129】在Oracle中,CREATE GLOBAL TEMPORARY TABLE()
You issued the following command:
CREATE GLOBAL TEMPORARY TABLE admin_work_area
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS
TABLESPACE tbs_t1;
An index is then created on the ADMIN_WORK_AREA temporary table. Which two statements are true regarding the TBS_T1 tablespace in the above command? (Choose two.)
A、It stores only the temporary table but not its indexes.
B、It stores both the temporary table as well as its indexes.
C、It must be a nondefault temporary tablespace for the database.
D、It can be a default or nondefault temporary tablespace for the database.
E、It must be the default temporary tablespace of the user who issues the command.

本题中的命令是在TBS_T1表空间中创建了一个事务临时表ADMIN_WORK_AREA,并且在该临时表上创建了一个索引,最后要求选出有关TBS_T1表空间的2个正确的选项。
本题中,对于选项A,TBS_T1表空间只存数据而不存索引,说法错误,应该都存储。所以,选项A错误。
对于选项B,TBS_T1表空间即存储数据也存储索引,说法正确。所以,选项B正确。
对于选项C,TBS_T1表空间必须是非默认的表空间,说法错误,默认和非默认都可以。所以,选项C错误。
对于选项D,TBS_T1表空间可以是一个默认或非默认的数据库的临时表空间。所以,选项D正确。
对于选项E,TBS_T1表空间必须是默认的表空间,说法错误,默认和非默认都可以。所以,选项E错误。
所以,本题的答案为B、D。

【DB笔试面试130】在Oracle中,。。。external table? 外部表()

Which two operations can be performed on an external table? (Choose two.)
A、Create a view on the table.
B、Create an index on the table.
C、Create a synonym on the table.
D、Add a virtual column to the table.
E、Update the table using the UPDATE statement.
F、Delete rows in the table using the DELETE command.
简单地说,外部表是指不存在于数据库中的表。通过向Oracle提供描述外部表的元数据,可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问。外部表是对数据库表的延伸。外部表只能在Oracle 9i之后的版本来使用。
Oracle外部表用来存取数据库以外的文本文件(Text File)或Oracle专属格式文件。因此,建立外部表时不会产生段、区、数据块等存储结构,只有与表相关的定义放在数据字典中。外部表仅供查询,不能对外部表的内容进行修改(例如INSERT、UPDATE、DELETE等操作)。不能在外部表上建立索引。因为创建索引就意味着要存在对应的索引记录,而其实外部表的数据没有存储在数据库中,故在外部表上是无法建立索引的。
如果外部表采用PARALLEL的方式加载的话,那么加载的数据是无序的。所以,这种情况需要综合考虑,尤其是在使用该方式来查看告警日志文件内容的时候需要特别注意。
外部表有如下几点特性:
① 数据位于文件系统之中,按一定格式分割。文本文件或者其它类型的表可以作为外部表。
② 对外部表的访问可以通过SQL语句来完成,而不需要先将外部表中的数据装载进数据库中。
③ 外部表是只读的,因此,不能对外部表执行DML操作,也不能创建索引,但是可以创建视图,也可以创建同义词。
④ ANALYZE语句不支持采集外部表的统计数据,应该使用DMBS_STATS包来采集外部表的统计数据。
⑤ 可以对外部表执行查询、连接和并行操作。
⑥ 外部表的数据在数据库的外部组织,属于操作系统文件。
⑦ 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。
在使用外部表时,有如下几点限制:
① 只能对外部表进行SELECT操作,不能进行DELETE、UPDATE和INSERT等DML操作。
② 因为外部表需要在Oracle数据库“服务端”创建目录,所以,OS文件必须放在这些目录中。
③ 外部表上不能创建索引,但可以建立视图,也可以创建同义词。
④ 外部表不支持LOB对象。
与外部表相关的几个视图如下所示:
SELECT * FROM DBA_EXTERNAL_LOCATIONS; –描述外部表的位置
SELECT * FROM DBA_EXTERNAL_TABLES;–所有的外部表
SELECT * FROM DBA_DIRECTORIES;–数据库中所有的目录对象

有关外部表的一个使用示例如下所示:
CREATE DIRECTORY EXT_LOG AS ‘/u01/app/oracle/ext_log’;
DROP TABLE ALERT_LOG;
CREATE TABLE ALERT_LOG(
TEXT VARCHAR2(4000)
)ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY EXT_LOG
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
)LOCATION(‘log.xml’)
);
上边的SQL语句创建了一个外部表,执行下面的SQL语句就可以查看文件/u01/app/oracle/ext_log/log.xml的内容了。
SELECT * FROM ALERT_LOG;

题目问的是哪2个操作可以在外部表上执行,根据本小节的内容可以知道,在外部表上可以创建视图,可以创建同义词,但不能创建索引,不能添加列,不能执行DML语句,所以,本题的答案为A和C。
说明:
有关外部表及外部表的使用更多内容介绍可以参考
BLOG:http://blog.itpub.net/26736162/viewspace-1773430/ 、 http://blog.itpub.net/26736162/viewspace-1221559/

【DB笔试面试131】

对于一个比较复杂的存储过程来说,如何快速定位到是什么语句什么原因导致的失败解析呢?
Oracle提供了一系列的跟踪事件来帮助定位各种问题,通过10035事件可以诊断解析失败的情况,如下:
[oracle@rhel6lhr ~]$ oerr ora 10035
10035, 00000, “Write parse failures to alert log file”
首先通过“alter system set events ‘10035 trace name context forever,leve 5’;”开启监控,然后使用tail观察告警日志,找到问题SQL之后,使用命令“alter system set events ‘10035 trace name context off’;”关闭10035事件。
说明:
有关所有跟踪事件的说明可以参考BLOG:http://blog.itpub.net/26736162/viewspace-2135959/。

【DB笔试面试132】在Oracle中,PMON清理失败进程的频率是多长?

在Oracle中,PMON清理失败进程的频率是多长?
PMON(Process Monitor Process)主要的作用有3点:①在进程失败后执行清除工作:回滚事务、释放锁、释放其它资源。②注册数据库。③检测会话的空闲连接时间。PMON负责处理异常结束的进程相关资源的释放。PMON周期性地被唤醒,这个间隔主要由隐含参数“_PKT_PMON_INTERVAL”进行控制,默认为50厘秒(cs即centisecond,表示百分之一秒,1秒=100厘秒)。例如,可以通过命令“alter system set “_PKT_PMON_INTERVAL”=5;”将该参数设置为5厘秒(cs)。另外,也可以通过查找出PMON进程的PID号,然后执行命令“oradebug wakeup orapid”来手动唤醒PMON进程。需要注意的是,这里的orapid是Oracle进程的PID,不是OS的PID。PMON进程的orapid一般为2,可以使用命令“SELECT PID, SPID FROM V$PROCESS P WHERE P.PROGRAM LIKE ‘%PMON%’;”来查询。可以用事件“alter system set events ‘10246 trace name context forever,level 4’;”来查看PMON的相关操作。

SYS@LHRDB> SELECT a.INDX,  2         a.KSPPINM NAME,  3         a.KSPPDESC,  4         b.KSPPSTVL   5  FROM   x$ksppi  a,  6         x$ksppcv b  7  WHERE  a.INDX = b.INDX  8  and lower(a.KSPPINM) like  lower('%&parameter%');Enter value for parameter: _PKT_PMON_INTERVALold   8: and lower(a.KSPPINM) like  lower('%&parameter%')new   8: and lower(a.KSPPINM) like  lower('%_PKT_PMON_INTERVAL%') INDX NAME                   KSPPDESC                             KSPPSTVL----- ---------------------- ------------------------------------ --------------------   61 _pkt_pmon_interval     PMON process clean-up interval (cs)  50SYS@LHRDB > alter system set "_PKT_PMON_INTERVAL"=50;System altered.SYS@orclasm > ! oerr ora 1024610246, 00000, "print trace of PMON actions to trace file"// *Cause:// *Action:SYS@orclasm > SELECT PID, SPID FROM V$PROCESS P WHERE P.PROGRAM LIKE '%PMON%';       PID SPID---------- ------------------------         2 4014SYS@orclasm > oradebug wakeup 2Statement processed.SYS@orclasm > 

说明:
Oracle中还有一些其它的进程,具体分析可以参考BLOG:http://blog.itpub.net/26736162/viewspace-2121305

【DB笔试面试133】

在Oracle中,数据块,重做日志块及控制文件数据块的大小分别是多少?如何查询?
在Oracle中,数据块,重做日志块及控制文件数据块的大小分别是多少?如何查询?
这3种数据块分别介绍如下:
① 数据块(Data Block),是读写数据文件的最小单位,默认是8KB,可以通过SQL语句“SELECT FILE#,NAME,BLOCK_SIZE FROM VDATAFILE;BYTE RedoBlock5124096SQLSELECTBLOCKSIZEFROMVLOG;”或“SELECT LEBSZ FROM XKCCLE;BYTE ControlFileBlock16KBSQLSELECTBLOCKSIZEFROMVCONTROLFILE;”查询,单位为BYTE。

SQL> col name for a50SQL> select file#,name,block_size from v$datafile;     FILE# NAME                                               BLOCK_SIZE---------- -------------------------------------------------- ----------         1 /u02/app/oracle/oradata/oratest/system01.dbf             8192         2 /u02/app/oracle/oradata/oratest/sysaux01.dbf             8192         3 /u02/app/oracle/oradata/oratest/undotbs01.dbf            8192         4 /u02/app/oracle/oradata/oratest/users01.dbf              8192         5 /u02/app/oracle/oradata/oratest/example01.dbf            8192         6 /u02/app/oracle/oradata/oratest/users02.dbf              8192         7 /u02/app/oracle/oradata/oratest/ts_ogg01.dbf             8192         8 /u02/app/oracle/oradata/oratest/users03.dbf              81928 rows selected.SQL> select lebsz from x$kccle;     LEBSZ----------       512       512       512SQL> select block_size from v$controlfile;BLOCK_SIZE----------     16384     16384

有关OS数据块的查询更多内容可以参考:http://blog.itpub.net/26736162/viewspace-2136094/、http://blog.itpub.net/26736162/viewspace-2136095/。

【DB笔试面试134】在Oracle中,COUNT(1)比COUNT(*)在执行效率上要快吗?

在Oracle中,COUNT(1)比COUNT(*)在执行效率上要快吗?
答案:错。COUNT(1)和COUNT(*)在执行效率上是一样的。COUNT()函数是Oracle中的聚合函数,用于统计结果集的行数。其语法形式如下所示:
COUNT({ * | [ DISTINCT | ALL ] expr }) [ OVER (analytic_clause) ]
可以把COUNT的使用情况分为以下3类:
① COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)
② COUNT(允许为空列)
③ COUNT(DISTINCT 列名)
下面分别从查询结果和效率方面做个比较:
(一)结果区别
① COUNT(1)、COUNT(*)、COUNT(ROWID)、COUNT(常量)、COUNT(主键)、COUNT(非空列)这几种方式统计的行数是表中所有存在的行的总数,包括值为NULL的行和非空行。所以,这几种方式的执行结果相同。这里的常量可以为数字或字符串,例如,COUNT(2)、COUNT(333)、COUNT(‘x’)、COUNT(‘xiaomaimiao’)。需要注意的是:这里的COUNT(1)中的“1”并不表示表中的第一列,它其实是一个表达式,可以换成任意数字或字符或表达式。
② COUNT(允许为空列) 这种方式统计的行数不会包括字段值为NULL的行。
③ COUNT(DISTINCT 列名) 得到的结果是除去值为NULL和重复数据后的结果。
④ “SELECT COUNT(”),COUNT(NULL) FROM T_COUNT_LHR;”返回0行。
(二)效率、索引
① 如果存在主键或非空列上的索引,那么COUNT(1)、COUNT()、COUNT(ROWID)、COUNT(常量)、COUNT(主键)、COUNT(非空列)会首先选择主键上的索引快速全扫描(INDEX FAST FULL SCAN)。若主键不存在则会选择非空列上的索引。若非空列上没有索引则肯定走全表扫描(TABLE ACCESS FULL)。其中,COUNT(ROWID)在走索引的时候比其它几种方式要慢。通过10053事件可以看到这几种方式除了COUNT(ROWID)之外,其它最终都会转换成COUNT()的方式来执行。
② 对于COUNT(COL1)来说,只要列字段上有索引则会选择索引快速全扫描(INDEX FAST FULL SCAN)。而对于“SELECT COL1”来说,除非列上有NOT NULL约束,否则执行计划会选择全表扫描。
③ COUNT(DISTINCT 列名) 若列上有索引,且有非空约束或在WHERE子句中使用IS NOT NULL,则会选择索引快速全扫描。其余情况选择全表扫描。
说明:
有关COUNT(1)、COUNT(*)、COUNT(ROWID)、COUNT(常量)、COUNT(主键)、COUNT(非空列)的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2136339/。