- 相关推荐
oracle数据库笔试题
1. 数据库 数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义? 答:触发 dbwr 的执行,dbwr 会把和这个日志相关的所有脏队列写到数据文件里,缩短实例恢复所需要的 时间。
2. 表空间管理 管理方式有哪几种,各有什么优劣. 管理 答:字典管理方式和本地管理方式,本地管理方式采用位图管理 extent,减少字典之间的竞争,同时避免了 碎片. 本地管理表空间与字典管理表空间相比,其优点如下:
1).减少了递归空间管理;
2).系统自动管理 extents 大小或采用统一 extents 大小;
3).减少了数据字典之间的竞争;
4).不产生回退信息;
5).不需合并相邻的剩余空间;
6).减少了空间碎片;
7).对临时表空间提供了更好的管理.
3. 本地索引与全局索引的差别与适用情况. 答:对于 local 索引,每一个表分区对应一个索引分区,当表的分区发生变化时,索引的维护由 Oracle 自动 进行.对于 global 索引,可以选择是否分区,而且索引的分区可以不与表分区相对应.当对分区进行维护 操作时,通常会导致全局索引的 INVALDED,必须在执行完操作后 REBUILD.Oracle9i 提供了 UPDATE GLOBAL INDEXES 语句,可以使在进行分区维护的同时重建全局索引.
4. 一个表 a varchar2(
1),b number(
1),c
2),有 100000 条记录,创建 B-Tree 索引在字段 a 上,那么 表与索引谁大?为什么? 答:这个要考虑到 rowid 所占的字节数,假设 char 总是占用 2 字节的情况,比较 rowid,另外,table 和 index 在 segment free block 的管理也有差别.
5. Oracle9i 的 data guard 有几种模式,各有什么差别. 答:三种模式: 最大性能(maximize performance):这是 data guard 默认的保护模式.primay 上的事务 commit 前不需要从 standby 上收到反馈信息.该模式在 primary 故障时可能丢失数据,但 standby 对 primary 的性能影响最 小. 最大可用(maximize availability):在正常情况下,最大可用模式和最大保护模式一样;在 standby 不可用时, 最大可用模式自动最大性能模式,所以 standby 故障不会导致 primay 不可用.只要至少有一个 standby 可
用的情况下,即使 primarydown 机,也能保证不丢失数据. 最大保护(maximize protection):最高级别的保护模式.primay 上的事务在 commit 前必须确认 redo 已经传 递到至少一个 standby 上,如果所有 standby 不可用,则 primary 会挂起.该模式能保证零数据丢失.
6. 执行计划是什么,查看执行计划一般有哪几种方式. 答:执行计划是数据库内部的执行步骤: set autotrace on select * from table alter session set event 10046 trace name context forever,level 12 ; SYS.DBMS\_SYSTEM.SET\_SQL\_TRACE\_IN\_SESSION=(SID,SERIAL#,TRUE); 一般采用 pl/sql developer,再加个 explain plan , v$sql\_plan.
7. 简单描述一下 nest loop 与 hash join 的差别. 答:nest loop 适用于返回结果比较小的情况. for in
1...n loop 对小表进行遍历 根据小表的结果遍历大表(大表需要索引) end loop hash join 适用在返回大结果集的情况.
8. db file sequential read 与 db file scattered read 等待的差别,如果以上等待比较多,证明了什么问题? 答:db file sequential read-DB 文件顺序读取,这一事件通常显示与单个数据块相关的读取操作(如索引读 取).如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,可能没有正确的使用 驱动表;或者可能说明不加选择地进行索引.在大多数情况下我们说,通过索引可以更为快速的获取记录, 所以对于一个编码规范,调整良好的数据库,这个等待很大是很正常的.但是在很多情况下,使用索引并 不是最佳的选择,比如读取较大表中大量的数据,全表扫描可能会明显快于索引扫描,所以在开发中我们 就应该注意,对于这样的查询应该进行避免使用索引扫描. db file sequential read-DB 档分散读取,这种情况通常显示与全表扫描相关的等待. 当数据库进行全表扫时, 基于性能的考虑,数据会分散(scattered)读入 Buffer Cache.如果这个等待事件比较显著,可能说明对于 某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进 行了正确的设置.然而这个等待事件不一定意味着性能低下,在某些条件下 Oracle 会主动使用全表扫描 来替换索引扫描以提高性能, 这和访问的数据量有关, CBO 下 Oracle 会进行更为智能的选择, RBO 在 在 下 Oracle 更倾向于使用索引.当这个等待事件比较显著时,可以结合 v$session\_longops 动态性能视图
来进行诊断,该视图中记录了长时间(运行时间超过 6 秒的)运行的事物,可能很多是全表扫描操作(不管怎 样,这部分信息都是值得我们注意的).
9. library cache pin 与 library cache lock 是什么地方的等待事件,一般说明什么问题? 答:"LIBRARY CACHE PIN"通常是发生在编译或重新编译 PL/SQL,VIEW,TYPES 等 object 时.
10. 在一个 24*7 的应用上,需要把一个访问量很大的 1000 万以上数据级别的表的普通索引(a,b)修改成唯 一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句. 答:不能确定,是否可以采用先建索引后建约束: create index idx\_w1 on w\_1 (a,b,c) online ; alter table w\_1 add constraint uni\_w1 unique (a,b,c) novalidate;
11. 如果一个 linux 上的 oracle 数据库系统突然变慢,你一般从哪里去查找原因. 答:
1).用 vmstat,iostat 命令查看系统的负载(I/O 读写是否严重,CPU 是否空闲).
2).用 top 工具查看有哪些进程 CPU 占用率高;
3). 查询 v$session\_wait 和 v$system\_event 数据字典,找出当前比较严重的等待事件,并试图优化影响性 能的 SQL 语句.
12. 说明一下对 raid5 与 raid01/10 的认识. 答:raid5 采用校验信息,硬盘的利用率 n-1/n, 以 RAID5(4D+P)为例子来讲,使用 4 块磁盘存放数据位,使 用 1 块磁盘存放校验位.其基本原理是这样的:根据条带化的数据 4D(使用四位数据)生成一位的校验信息, 存放在第五块磁盘中. raid10 先采用先镜像在进行条带化,是最高效的硬盘利用方式,硬盘的利用率 50\%,是一个 Raid 0 与 Raid1 的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了 Raid0 的快速和 Raid1 的安全.
13. 列举 5 个 10g 的新特性. 答:
1).自动共享内存(SGA)管理
2).自动存储管理(ASM)
3).ADDM 和查询优化器
4).闪回表(flashback table)
5).Data Pump(expdp,impdp)
14.char 与 varchar 的区别 char 是固定长度的字符串;varchar 是可变长度的字符串
【oracle数据库笔试题】相关文章:
oracle 技术笔试题02-18
益和电力Oracle笔试题分享11-21
Oracle认证11-14
数据库常见笔试面试题11-11
Oracle笔试,攒RP中02-18
Oracle笔试,分享笔试内容11-21
中国银行笔试题回顾,新鲜笔经!11-21
Oracle面试问题 技术篇11-19
迅雷JAVA广州站二笔笔试题目分享11-21
大唐移动测试工程师笔经,笔试题目分享11-21