您的位置:首页 > 数据库 > Oracle

面试常见问题整理----oracle

2014-07-30 15:56 323 查看
找工作过程中被问到的一些问题,整理下来供自己学习

1. rman备份原理?如何保证备份过程中的数据一致性?

   一致性备份一个数据库或者数据库的一个部分,那么这个部分的数据文件和控制文件必须被checkpointed并且拥有相同的scn,oracle决定是否一致性备份通过检查数据库文件头以及这个文件头在控制文件里的信息,如果是一致的,则表示为一致性备份。

   rman在备份期间使用快照控制文件,从备份的那个时间点开始rman将锁定此刻的数据文件信息,也就是说只备份数据文件到此刻信息为止,那么就可能出现某些已经提交的操作,但是dbwr还没有写入数据文件或者已经被rman备份过的数据文件又被重新修改。rman不会记录,但是记录这些信息的是redo file。所以rman建议备份完毕马上执行日志切换,然后备份归档日志。因为在rman恢复过程中,对于Inconsistented
backup,rman需要靠这些已经归档的redo file信息恢复和保持数据库的一致状态。

2.  SGA由哪几部分组成,主要作用是什么?

SGA主要由数据高速缓冲区(Database Buffer Cache)、共享池(Shared Pool)、重做日志缓冲区(Redo Log Cache)、大型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他结构(如固定SGA、锁管理等)组成。

主要是下面的三个:

Shared Pool:用于缓存最近被执行的SQL语句和最近被使用的数据定义。主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)。 
共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。 

Redo Log Buffer Cache  :缓存对于数据块的所有修改。 

Database Buffer Cache  :用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。

大型池:Large
Pool是SGA中一个可选的内存区域,它只用于shared server环境。 

Java池:Java
Pool为Java命令的语法分析提供服务。 

另外,Process
Global Area是为每个连接到Oracle database的用户进程保留的内存。  

3. oracle表关联有哪几种方式,都出现在什么场景?

nest loop

join的顺序很重要,驱动表的记录集一定要小,连接表中有索引,并且索引选择性较好。在这俩个条件都满足的情况下,返回结果集的响应时间是最快的。

hash join

散列连接是CBO做大数据集连接时常见的方式,优化器中两个表较小的表利用链接键在内存中建立散列表,然后扫描较大的表并探测散列表,找出与散列表匹配的行。

sort merge join

没有索引,并且数据已经排序的情况下。

4. 左连接和右连接有什么区别?调换表的位置和左右连接,是不是能达到相同的效果?

5. oracle等待事件有哪些?如何查看等待事件?

ORACLE的等待事件,主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。

1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。

2). 非空闲等待事件专门针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的。 http://blog.itpub.net/29065182/viewspace-1070579/
6. oracle有哪几种锁?如何查看锁?发现锁等待事件后怎么处理?

oracle数据库两种基本的锁类型:排它锁(Exclusive Locks 即X锁) 共享锁(share Locks 即S锁)

根据保护对象的不同,可分为

DML锁(data locks,数据锁),用于保护数据的完整性

DDL 锁(dictionary locks,字典锁)保护数据库对象的结构

内部锁和闩 (internal locks and latchs)保护数据库的内部结构

V$SESSION_WAIT 视图用以实时记录活动SESSION的等待情况,是当前信息。

V$SESSION_WAIT_HISTORY 是对V$SESSION_WAIT的简单增强,记录活动SESSION的最近10次等待。
V$lock 
V$lock_object

7. 写下表空间的备份语句,表空间为tbdata,增量level 2的备份

rman的level 0 1 2级备份有什么区别?

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

触发dbwr的执行,dbwr会把和这个日志相关的所有脏队列写到数据文件去,减少数据库崩溃的时的恢复时间。

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

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

11.为什么要重建索引,重建索引的评判标准,带来的好处?

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

13. Data guard有几种模式,各有什么差别。

14. 执行计划是什么,查看执行计划一般有哪几种方式

15. db file sequential read与db file scatteredread等待的差别,如果以上等待比较多,证明了什么问题?

db file sequential read指的是需要一个但当前不在sga中的块,等待从磁盘中读取。db file scattered read需要多个连续的数据库引起等待。

db file sequential read出现大量的等待,或许不是个问题。如果这两个事件等待比较多,根据p1,p2,p3以及sid检查sql语句,是否有调优的可能
==>db file scattered read基本可以定性为FTS/IFS

16. ibrary cache pin与library cache lock是什么地方的等待事件,一般说明什么问题?

一般出现在对package,procedure进行编译,add contraint的时候。

17. 说明一下对raid5与raid01/10的认识。

18. 如果一个linux上的oracle数据库系统突然变慢,你一般从哪里去查找原因。

19. 使用绑定变量的优缺点。

优点:可以在library cache中共享游标,避免硬解析以及相关的额外开销。

           在大批量数据操作时将呈现数据量减少闩锁的使用,避免闩锁竞争。

缺点:绑定变量被使用时,查询优化器会忽略其具体值,因为其预估计的准确性不如字面量值真实,尤其是在表存在数据倾斜(表上的数据非均匀分布)的列上会提供错误的执行计划。

20.如何跟踪一个session的SQL?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: