Oracle面试题涵盖了许多核心的Oracle数据库管理、设计和优化方面的知识点。以下是对这些题目中涉及的概念的详细解析:
1. `SELECT * FROM A WHERE A.COLUMN1 = A.COLUMN1` 这个查询通常会返回所有记录,因为每个记录的COLUMN1值与自身相等。
2. `CREATE SEQUENCE PEAK_NO` 和 `SELECT PEAK_NO.NEXTVAL FROM DUAL` 两次调用会返回连续的序列号。第一次调用返回1,第二次调用在10秒后,仍然会返回序列的下一个值,即2。
3. 插入和删除DUAL表的操作在Oracle中是特殊的。尽管看起来DUAL表被插入了一行,然后又删除了,但在Oracle中DUAL表始终只有一行。所以,无论执行多少次插入和删除,`SELECT COUNT(*) FROM DUAL` 总是返回1。
4. 数据抽象方法包括分类、聚集、概括。在E-R模型中,实体集是分类的示例;聚集定义对象的组成部分;概括则定义类型间的子集联系。
5. 数据库物理设计涉及选择存储结构和存取方法。确定数据字典和标识实体属于逻辑设计阶段。
6. 视图在Oracle中的创建可以用于增强安全性、简化数据展示、改善性能以及保存常用查询结果。
7. 设计数据库前,需理解客户需求、业务流程,创建数据字典和ER图表,并随着项目进展不断与客户沟通确认需求。
8. 使用`shutdown immediate`关闭实例,下次启动时,Oracle会自动执行实例恢复,无需手动干预。
9. 数据库物理设计的内容包括选择存储结构和存取方法,而确定数据字典和标识实体属于逻辑设计。
10. 视图的优点包括隐藏数据库复杂性、简化权限管理、数据共享以及重组数据输出到其他应用。
11. 视图创建的目的通常涉及安全、简化数据展示、性能提升和保存查询结果。
12. Oracle数据库启动通常包括启动实例、装配数据库和打开数据库。
13. 表连接方式有内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全外连接(FULL OUTER JOIN)和自连接(SELF JOIN)。
14. 查看SQL执行计划可以使用`EXPLAIN PLAN FOR`命令,然后通过`SELECT * FROM TABLE(dbms_xplan.display);`展示。
15. CBO(Cost-Based Optimizer)是基于成本的优化器,它根据统计信息决定最佳执行路径,而RULE是基于规则的优化器,遵循预定义的规则。
16. 定位消耗资源多的SQL可以通过查询V$SQL或AWR报告。
17. 使用`DBMS_SESSION.SPY`跟踪特定session的SQL。
18. SQL调整关注点通常是执行计划、索引利用、绑定变量和资源消耗。
19. 索引提供快速的查询访问,由B树结构组成,对DML操作可能增加写操作成本,但对查询性能有显著提升。
20. 使用索引不一定能提高所有查询性能,对于全表扫描或频繁更新的列,索引可能导致负面影响。
21. 绑定变量可以减少硬解析,提高执行计划的稳定性,但可能导致执行计划的错误预测。
22. 使用 hints 或者创建SQL Profile可以稳定执行计划。
23. 8i和9i中排序内存通过参数调整,临时表空间用于排序和临时结果存储。
24. 要根据c字段排序并获取第21-30条记录,可以使用`ROWNUM`和子查询,如:`(SELECT * FROM T WHERE ROWNUM <= 30 ORDER BY c DESC) WHERE ROWNUM >= 21`
25. pctused和pctfree控制数据块的利用率和空闲空间,用于管理表空间的扩展策略。
26. TABLE是逻辑结构,SEGMENT是分配的物理空间,EXTENT是磁盘上的连续块集合,BLOCK是最小的存储单位。
27. TABLESPACE是逻辑存储区域,包含一个或多个DATAFILE,存储数据库对象。
28. 本地管理表空间(LMT)允许表空间级别的段管理,而字典管理表空间(DMT)使用数据字典记录段信息。ASSM(Automatic Segment Space Management)是LMT的一个特性,自动管理段的空间分配。
29. 回滚段保存事务的回滚信息,用于事务回滚和并发控制。
30. 日志用于记录数据库的所有修改,支持事务的ACID属性和故障恢复。
31. SGA(System Global Area)包含数据缓冲区、重做日志缓冲区、共享池、Java池和大池,分别负责缓存数据、记录更改、存储PL/SQL和SQL解析信息、Java代码和通用用途内存。
以上是对Oracle面试题中关键知识点的详细阐述,涵盖了从基础概念到高级优化的各种主题。