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中SGA和PGA的核心区别是什么?实际工作中如何分配大小?

答案:SGA是共享内存区,所有会话共用,包含数据缓冲区、共享池、日志缓冲区等;PGA是私有内存区,每个会话独占,存储排序区、哈希连接区等。分配原则:OLTP系统(高并发短事务)SGA设为物理内存的40%-50%,PGA设为20%-30%;OLAP系统(复杂查询)PGA可提至40%,避免排序溢出磁盘。比如16G内存的OLTP服务器,SGA设8G,PGA设4G。

问题:什么是Oracle的undo表空间?它的主要作用有哪些?

答案:undo表空间是存储数据修改前镜像的专用表空间。核心作用:①事务回滚(rollback);②读一致性(比如查询时其他会话修改数据,仍能看到修改前的数据);③闪回查询(flashbackquery)恢复误删/改数据。注意undo表空间不能设为自动扩展无上限,否则可能撑满磁盘,一般设置最大容量并开启自动收缩。

问题:Oracle索引的类型有哪些?B树索引和位图索引的适用场景是什么?

答案:常见索引类型:B树索引、位图索引、函数索引、分区索引等。B树索引适合高基数列(值不重复,比如ID、手机号),支持等值查询、范围查询,是OLTP系统首选;位图索引适合低基数列(值重复多,比如性别、状态),适合统计分析类查询,但不适合频繁更新的列(会导致位图锁冲突,性能下降)。

二、实操与优化题(核心考察)

问题:如何查看Oracle数据库的表空间使用情况?如果表空间满了,有哪些解决办法?

答案:查看SQL(常用):

SELECTtablespace_name,

round(total_size/1024/1024,2)总大小G,

round(used_size/1024/1024,2)已用大小G,

round(free_size/1024/1024,2)空闲大小G,

round(used_size/total_size*100,2)使用率%

FROM(SELECTtablespace_name,

sum(bytes)total_size,

sum(bytes-nvl(free_bytes,0))used_size,

sum(nvl(free_bytes,0))free_size

FROMdba_data_filesddf

LEFTJOINdba_free_spacedfs

ONddf.tablespace_name=dfs.tablespace_name

GROUPBYtablespace_name);

解决办法:①扩展数据文件(alterdatabasedatafile路径resize20G;);②添加数据文件(altertablespace表空间名adddatafile路径size10Gautoextendonnext1Gmaxsize50G;);③清理无用数据(删除历史表、归档数据);④如果是临时表空间满,增大临时数据文件或添加临时文件。

问题:如何优化一条执行缓慢的SQL语句?请说说你的排查思路和常用方法。

答案:排查思路:先看执行计划(explainplanforSQL;或用PL/SQLDeveloper的执行计划工具),找性能瓶颈。

常用优化方法:

索引优化:如果执行计划中出现“全表扫描(TABLEACCESSFULL)”,且查询条件是高基数列,添加合适索引;避免索引失效(比如查询条件用函数操作索引列、隐式类型转换)。

SQL改写:简化join条件,避免不必要的子查询,用exists代替in(大数据量时),避免select*只查需要的列。

统计信息:如果执行计划异常,可能是统计信息过期,执行analyzetable表名computestatistics;或execdbms_stats.gather_table_stats(用户名,表名);

调整参数:比如增大shared_pool_size(共享池)、sort_area_size(排序区),避免硬解析或排序溢出。

举例:某SQL用“whereto_char(create_time,yyyy-mm-dd)=2024-01-01”导致索引失效,改写为“wherecreate_timeb

文档评论(0)

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

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

1亿VIP精品文档

相关文档