ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle基础面试题

Oracle基础面试题

原创 Linux操作系统 作者:tolywang 时间:2007-09-26 00:00:00 0 删除 编辑

1. 数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义?

:触发dbwr的执行,dbwr会把和这个日志相关的所有脏队列写到数据文件里,缩短实例恢复所需要的时间。


2. 表空间管理方式有哪几种,各有什么优劣。

:字典管理方式和本地管理方式,本地管理方式采用位图管理extent,减少字典之间的竞争,同时避免了碎片。

本地管理表空间与字典管理表空间相比,其优点如下:

1).减少了递归空间管理;

2).系统自动管理extents大小或采用统一extents大小;

3).减少了数据字典之间的竞争;

4).不产生回退信息;

5).不需合并相邻的剩余空间;

6).减少了空间碎片;

7).对临时表空间提供了更好的管理。

3. 本地索引与全局索引的差别与适用情况。

:对于local索引,每一个表分区对应一个索引分区,当表的分区发生变化时,索引的维护由Oracle自动进行。对于global索引,可以选择是否分区,而且索引的分区可以不与表分区相对应。当对分区进行维护操作时,通常会导致全局索引的INVALDED,必须在执行完操作后REBUILDOracle9i提供了UPDATE GLOBAL INDEXES语句,可以使在进行分区维护的同时重建全局索引。

4. 一个表a varchar2(1),b number(1),c char(2),有100000条记录,创建B-Tree索引在字段a上,那么表与索引谁大?为什么?

:这个要考虑到rowid所占的字节数,假设char总是占用2字节的情况,比较rowid,另外,tableindexsegment free block的管理也有差别。

5. Oracle9idata guard有几种模式,各有什么差别。

:三种模式:

最大性能(maximize performance):这是data guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息。该模式在primary故障时可能丢失数据,但standbyprimary的性能影响最小。

最大可用(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 loophash join的差别。

:nest loop适用于返回结果比较小的情况。

for in 1...n loop

对小表进行遍历

根据小表的结果遍历大表(大表需要索引)

end loop

hash join适用在返回大结果集的情况。

8. db file sequential readdb 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 pinlibrary cache lock是什么地方的等待事件,一般说明什么问题?

:"LIBRARY CACHE PIN"通常是发生在编译或重新编译PL/SQL,VIEW,TYPESobject.

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_waitv$system_event数据字典,找出当前比较严重的等待事件,并试图优化影响性能的SQL语句。

12. 说明一下对raid5raid01/10的认识。

:raid5采用校验信息,硬盘的利用率n-1/n, RAID5(4D+P)为例子来讲,使用4块磁盘存放数据位,使用1块磁盘存放校验位。其基本原理是这样的:根据条带化的数据4D(使用四位数据)生成一位的校验信息,存放在第五块磁盘中。

raid10先采用先镜像在进行条带化,是最高效的硬盘利用方式,硬盘的利用率50%,是一个Raid 0Raid1的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了Raid0的快速和Raid1的安全。

13. 列举510g的新特性.

:1).自动共享内存(SGA)管理

2).自动存储管理(ASM)

3).ADDM和查询优化器

4).闪回表(flashback table)

5).Data Pump(expdpimpdp)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84913/,如需转载,请注明出处,否则将追究法律责任。

下一篇: SOA不完全手册
请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13381965