> IT面试 >

oracle数据库面试题

1、数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义?
2、表空间的管理方式有哪几种,各有什么优劣。
3、本地索引与全局索引的差别与适用情况。
4、一个表a varchar(2),b number(1),c char(2),有100000条记录,创建B-TREE索引在字段A上,那么表与索引谁大?为什么?
5、9i的data guard有几种模式,各有什么差别
6、执行计划是什么,查看执行计划一般有哪几中方式。
7、简单描述一下nest loop 与 hash join 的差别
8、db file sequential read 与 db file scattered read 等待的差别,如果以上等待比较多,证明了什么问题?
9、library cache pin 与 library cache lock 是什么地方的等待事件,一般说明什么问题?
10、在一个24×7的应用上,需要把一个访问量很大的1000万以上的数据级别的表的普通索引(a,b)修改成唯一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句。
11、如果一个linux上的oracle数据库系统突然变慢,你一般从哪里去查找原因。
12、说明一下对raid5与raid01/10的认识。
13、列举5个10g新特性。

1. checkpoint是将data buffer中的数据交由dbwr写入磁盘,并将scn写入control file及data file head.
切换日志作一个checkpoint, 是要确保将data buffer中数据写入到磁盘,以避免日志文件对应的data buffer还未写入磁盘就再次使用此日志文件的情况。

2. 有数据字典方式、本地管理方式。
本地管理使用位图的算法来管理,较之前的数据字典方式性能优,应该使用本地管理方式

3. 本地索引与分区一一对应,全局索引则可跨越分区

4. 要看这个索引是什么样子的
如果是唯一索引,那么索引比表小
如果不是唯一索引,由于oracle要为此索引附加上rowid(4字节),因此索引比表大[假设number(1)只占用1个字节,否则就是相等了]

5. 是想问物理standby, 逻辑standby?
这个哪位老大来讲讲

6. 执行计划就是plain,呵呵,plain就是执行计划。
方法一:explain plan for
方法二: set autotrace on
方法三:v$sql_plan查询执行sql的实际计划
方法四: pl/sql developer界面中按F5

7. nest loop 就是2个循环; hash join则是先将小表的key放到hash桶中,然后再扫描大表
这个我是从写程序的角度去理解的,可能描述的不清,只可意会不可言传也

8. db file sequential read 扫描索引
db file scattered read 全表扫描

9. 不知道。
看来要google一下了

10. 先建一个索引 create unique index x on t(a, b, c) online;
建好之后再drop 之前的普通索引

11. 用statspack

12. raid5 磁盘陈列5(不用讲跟radi2的区别了吧,要讲我也不知道,呵),适合放data file,之类的
raid10 这个由于写的速度快,适合放redo log;

13. flashback, ….

第10个, 应该把新建的索引加上nologging

9. library cache pin 与 library cache lock 是什么地方的等待事件,一般说明什么问题?
是希望回答 share_pool不够大? 还是希望回答内部原理

(责任编辑:IT)