一个资深DBA提出的面试题及答案

转载 2007年09月28日 11:29:00

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

答:触发dbwr的执行,dbwr会把和这个日志相关的所有脏队列写到数据文件里,缩短实例恢复所需要的时间。另外,当日志文件被覆盖的时候一定要确保相关dirty buffer一定被写入 数据文件, 所以日志的切换必须引起 检查点。

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 char(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 events '10046 trace name context forever,level 12 ';

execute 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和library cache lock都是与库高速缓存并发性有关的等待事件。
前者是当会话正在编译或分析PL/SQL过程和视图时产生;
后者是当会话尝试在库高速缓存中修改或检查给定对象时产生。

当要对一个过程或者函数进行编译时,需要在library cache中pin该对象。在pin该对象以前,需要获得该对象handle的锁定,如果获取失败,就会产生library cache lock等待。如果成功获取handle的lock,则继续在library cache中pin该对象,如果pin对象失败,则会产生library cache pin等待。

可能发生library cache pin和library cache lock的情况:
1、在存储过程或者函数正在运行时被编译;
2、在存储过程或者函数正在运行时被对它们进行授权、或者移除权限等操作;
3、对某个表执行DDL期间,有另外的会话对该表执行DML或者DDL;
4、PL/SQL对象之间存在复杂的依赖性。


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,看看会话都在等待什么资源。

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)  

相关文章推荐

阿里巴巴MySQL DBA面试题及答案

1、MySQL的复制原理以及流程 (1)、先问基本原理流程,3个线程以及之间的关联; 答: 从 发起请求I/O thread线程请求 主 主 接收到请求使用binlog dump线程回应 从 ...

《招聘一个靠谱的iOS》|| 文章 || 面试题 || 参考答案

招聘一个靠谱的 iOS 近一年内陆续面试了不少人了,从面试者到面试官的转变让我对 iOS 招聘有了更多的感受。经过了前段时间的一大波面试,我们终于找到了志同道合的小伙伴,面试也暂时告一段落了。总...

整理 《招聘一个靠谱的iOS》面试题部分参考答案

由于觉得原文说的太繁琐,继而删减了一部分,整理出一份感觉适合自己的、较为清爽的文。(更新ing。。。)

《招聘一个靠谱的iOS》面试题参考答案(上)

《招聘一个靠谱的 iOS》—参考答案(上)说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:《招聘一个靠谱的 iOS》,其中共55题,除第一题为纠错题外,其他54道均为简答题。出题者简介: 孙...

《招聘一个靠谱的iOS》面试题参考答案(下)

《招聘一个靠谱的 iOS》—参考答案(下)说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:《招聘一个靠谱的 iOS》,其中共55题,除第一题为纠错题外,其他54道均为简答题。出题者简介: 孙...

《招聘一个靠谱的iOS》面试题参考答案

说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:《招聘一个靠谱的 iOS》 本人iOS github:https://github.com/netyouli?tab=repositorie...

《招聘一个靠谱的iOS》面试题参考答案(上)(1-6)

借鉴很多前辈的基础上整理,谢谢 原文地址:[面试题] (https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01%E3%...

一个资深DBA的心声

在刚才看了一个资深DBA专家的博客以后,对这个楼主所写的一些话感触尤为深刻,我把他博客里面的一些美味鸡汤贴在下面供大家品尝! 再给想了解DBA的小伙伴们贴出那个楼主的博客地址:http://bl...

阿里巴巴公司DBA笔试题及参考答案

一:SQL tuning 类   1:列举几种表连接方式   2:不借助第三方工具,怎样查看sql的执行计划   3:如何使用CBO,CBO与RULE的区别   4:如何定位重要(消...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)