Oracle 面试高频题及实战答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Oracle面试高频题及实战答案

一、基础语法与核心概念(初级)

问题:Oracle中TRUNCATE和DELETE的区别?实际开发中怎么选?

答案:核心区别在事务、性能和自增列。DELETE是DML语句,支持事务回滚,会记录redo日志,删除大数据量时慢,且不重置自增列(如SEQUENCE关联的主键);TRUNCATE是DDL语句,隐式提交事务,不记录详细redo日志,速度极快,会重置自增列(若表有依赖约束可能执行失败)。实际选:小数据量删除、需条件过滤(带WHERE)或可能回滚时用DELETE;清空整张表且无需回滚、追求效率时用TRUNCATE,注意先解除外键依赖。

问题:什么是Oracle表空间?和数据文件的关系是什么?

答案:表空间是Oracle逻辑存储单元,用于管理数据的存储分配,相当于“文件夹”;数据文件是物理存储文件(.dbf格式),相当于“文件”。一个表空间可对应多个数据文件,一个数据文件只能属于一个表空间。实际用途:按业务模块(如用户表空间、日志表空间)或数据类型(如索引表空间、大字段表空间)划分表空间,方便权限控制、备份恢复和性能监控(比如单独监控大表所在表空间的磁盘使用率)。

问题:UNION和UNIONALL的区别?什么时候用后者?

答案:共同点是合并多个查询结果集,要求列数和数据类型一致;区别是UNION会去重并排序,UNIONALL直接合并不处理,性能更优。实际场景:如果确定多个查询结果集无重复数据(如按时间范围分表查询、不同业务模块的独立数据),优先用UNIONALL;若可能有重复且需去重,才用UNION(注意:去重会消耗额外资源,大数据量慎用)。

二、性能优化(中级)

问题:Oracle索引的类型有哪些?怎么判断一张表是否需要建索引?

答案:常用索引类型:B树索引(默认,适合等值查询、范围查询)、位图索引(适合低基数列,如性别、状态,批量操作场景)、函数索引(适合WHERE子句中带函数的查询,如WHEREUPPER(name)=ZHANG)、分区索引(对应分区表)。

判断是否建索引:①看查询频率:高频查询(如分页、条件过滤)的列优先考虑;②看列基数:高基数列(如身份证号、手机号)适合建B树索引,低基数列建位图索引;③看写操作比例:若表频繁插入、更新、删除,索引会增加开销(每次写操作需同步维护索引),需权衡;④看查询条件:WHERE子句、JOIN条件、ORDERBY/GROUPBY涉及的列,建索引能提速。

反例:小表(数据量1万)无需建索引(全表扫描更快);频繁更新的低基数列(如订单状态,频繁从“待支付”改“已支付”)不建议建索引。

问题:SQL优化的常见思路?遇到慢查询怎么排查?

答案:SQL优化思路:①避免全表扫描:确保查询条件命中索引,避免WHERE子句中用函数操作索引列、用!=//ISNOTNULL、模糊查询%XXX(前缀通配符);②优化JOIN:优先用INNERJOIN(比LEFTJOIN高效),小表驱动大表,JOIN条件用索引列;③减少DISTINCT和ORDERBY:DISTINCT去重、ORDERBY排序会消耗资源,能避免则避免(如通过索引排序,而非内存排序);④批量操作:用INSERTALL替代循环单条插入,MERGEINTO替代UPDATE+INSERT;⑤避免空值判断:ISNULL可能导致索引失效,可通过默认值替代。

慢查询排查步骤:①用EXPLAINPLANFOR查看执行计划,重点看是否有“FULLTABLESCAN”(全表扫描)、“INDEXRANGESCAN”(索引范围扫描),判断索引是否生效;②查V$SQL视图,通过ELAPSED_TIME(执行时间)、BUFFER_GETS(逻辑读)定位慢SQL;③分析表统计信息:若统计信息过时(如大量数据插入后未更新统计),用ANALYZETABLE表名COMPUTESTATISTICS更新;④查看锁和等待事件:用V$LOCK、V$SESSION_WAIT排查是否有锁阻塞或资源等待(如磁盘I/O、CPU瓶颈)。

问题:什么是分区表?分区表的优势和适用场景?

答案:分区表是将大表按特定规则(如范围、列表、哈希)拆分成多个小的“分区”,每个分区独立存储(可对应不同表空间)。

优势:①提升查询性能:查询时只扫描相关分区(如查询2023年订单,只扫2023年分区),减少数据扫描量;②方便维护:可单独对分区进行备份、恢复、删除(如删除3年前的历史分区,无需整表操作);③均衡存

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档