oracle面试

1:使用索引查询一定能提高查询的性能吗?举出实例
根据查询数据的分布情况,有时可以提高查询速度。例如,人事系统中用户输入
身份证号码查询,人员讯息。可以建立身份证的索引。提高查询性能。
不能提供性能的情况也很多:1.1 用户输入的关键字没有规律,例如公众搜索的内容,关注点不一样,无法通过建立索引提供性能。1.2 大比例数据的处理。

2:数据库设计的一、二、三范式、BCNF是什么?
第一范式,属性原子化,一个栏位不要包含多个属性。
   第二范式,主键依赖,要可以根据主键唯一确定其他属性。

3:StoreProcedure和Function有何区别?
1 函数不可以进行事务操作DML, 。2 函数一定要有返回值,且只有一个 。3 调用方式不同。

4:如何跟踪某个session的SQL? 
设置SQL_TRACE 。2 可以确定SID,使用SYSTEM用户设置跟踪状态。分析跟踪的文件。TKPROF.

5:如何使用CBO,CBO与RULE的区别?
2种方式,系统参数设置,在SQL中单独加提示的方式设置。区别在于RULE是依据sql编写的规则来确定执行的路径;COST是参考访问成本来产生最佳路径。RULE的结果取决于开发者的编写能力,COST取决于系统的智能化程度,数据库的管理优化度。需要定期进行统计数据的整理,分析,取得最新的数据。

6:描述tablespace和datafile之间的关系
数据空间是由数据文件组成的,一个数据空间至少包含一个数据文件,可以多个一个数据文件一定属于一个数据空间。

7:truncate和delete有何区别?哪一种操作性能更快?
TRUNCATE 是一次性全部删除,DELETE可以依据需要删除部分范围的数据。TRUNCATGE速度快。

8:什么是Snapshot?与View有何区别?
SNAPSHOT是快照,保持了一个时间点的数据,VIEW视图没有保存数据,直接访问原始数据。SNAPSHOT没有最新的数据,但是速度快。

9:pctused and pctfree 表示什么含义有什么作用
PCTUSED使用比例,PCTFREE空闲比例。数据块中使用空间的比例高于PCTUSED时候被标记为满;空闲比例大于PCTFREE的时候被标记为闲。

10:cursor一般用在什么地方?有何弱点?
游标使用非常广泛。PL/SQL程序中普遍使用游标。对于多行资料的处理需要定义显式游标。

管理篇

1:SQL调整最关注的是什么?
逻辑读,物理读,执行计划。

2:Oracle的系统进程有哪些?作用是什么?
PMON 系统进程监控 SMON LGWR 日志写入 J001排程执行

3:本地管理表空间和字典管理表空间的特点,ASSM有什么特点? 
字典管理表空间的数据段的组成数据保存在数据字典。本地管理表空间的数据段组成数据保存的数据文件的头部。ASSM自动管理

4:备份如何分类?
逻辑备份EXPORT,物理备份 RMAN, OS COPY (热备份,冷备份)

5:如果一个表被drop,在有完善的归档和备份的情况下,如何恢复
先做RESTOR,然后回复归档日志。; IMPORT方式恢复。


6:rman是什么,有何特点?
备份工具。在线进行物理备份。功能强大,提供完善的数据恢复功能。需要处于归档模式。

7:standby的特点
备用站点。依据需求灵活的架构。可以满足多种需求,报表服务器,备份服务功能。备用服务功能。

8:对于一个要求恢复时间比较短的系统(数据库50G,每天归档5G),你如何设计备份策略
1 逻辑备份EXPORT .2 RMAN全备每周日 。3 每天备份归档日志。

9:对于一个存在系统性能的系统,说出你的诊断处理思路
1 运行STATSPACK,制作状态报告。2 分析报告查看原因 .3 再问题时间分析OS状态, 数据库运行状态. .4 分析系统参数的配置. 5 进行改善.

10:列举几种诊断IO、CPU、性能状况的方法
IOSTAT TOP UPTIME VMSTAT

11:对statspack有何认识
STATSPACK综合性的性能报表, 具体需要关注应用的配置,和对报表的解读.

12:如果系统现在需要在一个很大的表上创建一个索引,你会考虑那些因素,如何做以尽量减小对应用的影响
IO, 负载. 时间点, 对SQL执行计划的变化.

13:对raid10 和raid5有何认识
RAID5 可以提供冗余,如果有一个磁盘损坏,数据不会损失.写性能差. RAID10通过RAID1镜像, RAID0 条带方式. 安全,性能高. 成本高.

14:SGA主要有那些部分,主要作用是什么
DB CACHE, SHARE POOL JAVA POOL REDO LOG CACHE

15:简单描述table / segment / extent / block之间的关系
BLOCK组成了EXTENT

16:说说你对索引的认识(索引的结构、对dml影响、对查询影响、为什么提高查询性能)
ROWID, 降低DML的性能,提供查询的性能.


T_STU表:S_ID、S_NAME、S_SEX、S_BIRTHDAY 、S_AGE、S_MOENY、C_ID
T_CLASS表:C_ID、C_NAME
sequence序列:seq_id;
★、学生表:学号、姓名、性别、出生日期、入学年龄、缴费
★、班级表:班级编号、班级名称
1、查询入学年龄在18-20的女生或者未输入性别的,实际年龄小的要排在后面
Select * from T_STU 
WHERE S_AGE BETWEEN 18 AND 20 
AND S_SEX=’女’ OR S_SEX IS DULL
ORDER BY S_BIRTHDAY DESC;
2、查询班级名称、学生姓名、性别、缴费(要求显示单位:元),相同班级的要放在一起,姓名根据字典顺序排列。
Select c_name,s_name,s_sex,s_moeny||’元’ as s_moeny from T_STU T,
T_CLASS F WHERE T.C_ID=F.C_ID
ORDER BY F.C_ID,T.S_NAME
3、查询各班名称和人数.
Select c_name,count(*) as rs from T_STU T, T_CLASS F
Where t.c_id=f.c_id
group by f.c_name,t.c_id
4、★★查询各班名称和人数,但人数必须不少于2,人数多的放在前面
Select c_name,count(*) as rs from T_STU T, T_CLASS F
Where t.c_id=f.c_id
group by f.c_name,t.c_id having rs >= 2
order by rs desc

5.1、查询1980年出生的有哪些学生。
Select s_name from T_STU
Where to_char(S_BIRTHDAY,’yyyy’)=1980

5.2、查询男生和女生人数,没有输入性别的当作男
Select nul(s_sex,1) as x,count(*) from T_STU
Group by nul(s_sex,1)

6.1、查询没有人员的班级
Select c_name from T_CLASS F
Where not in (select x from T_STU T, T_CLASS F where t.c_id=f.c_id)
6.2、查询入学年龄在20以上的同学信息
Select * from T_STU T where s_age > 20

7、查询班级平均入学年龄在20及以上的班级
Select c_name,avg(s_age) as nl from T_STU T, T_CLASS F
Where t.c_id=f.c_id 
Group by f.c_name,f.c_id having avg(s_age)>20
8、★★有工资表salary(e_id,e_date,e_money),求本月发了2笔以上工资的员工信息。
Select * from salary where (select e_id,count(*) from salary 
where to_char(e_date,’yyyymm’)=201207
group by e_id having count(*) > 2)

你可能感兴趣的:(oracle,数据库,面试)