版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle面试300题及详细答案(实战完整版)本题库汇总企业高频Oracle面试真题,涵盖基础语法、查询优化、索引、事务、锁机制、存储过程、分区表、备份恢复、运维调优、故障排查等核心模块,答案贴合实战工作场景,摒弃理论空话,适配开发、运维、DBA岗位面试使用。一、Oracle基础语法篇(1-60题)1.简述Oracle数据库的核心架构组成Oracle核心架构分为实例和数据库两大部分。实例由内存结构和后台进程组成,是临时运行的环境;数据库由物理文件组成,永久存储数据。内存结构包含SGA和PGA,SGA共享给所有用户进程,PGA为单个进程私有内存。后台核心进程包含DBWR、LGWR、CKPT、SMON、PMON等,物理文件包含数据文件、控制文件、日志文件、参数文件、口令文件等。2.SGA和PGA的区别是什么1、归属不同:SGA是系统全局区,属于数据库实例共享内存,所有连接用户、后台进程共享使用;PGA是程序全局区,为每个用户会话进程独立私有内存,进程间互不共享。2、生命周期不同:SGA随实例启动创建、实例关闭释放;PGA随用户会话创建生成、会话断开释放。3、存储内容不同:SGA包含数据缓冲区、重做日志缓冲区、共享池、Java池、大池等;PGA包含会话变量、排序区、游标状态、堆栈空间等。3.简述Oracle常用数据类型字符类型:CHAR(固定长度)、VARCHAR2(可变长度,最常用)、NCHAR/NVARCHAR2(Unicode字符);数值类型:NUMBER(通用数值,可存整数、小数)、INT、FLOAT;日期类型:DATE(精确到秒)、TIMESTAMP(精确到微秒)、TIMESTAMPWITHTIMEZONE(带时区时间);大对象类型:CLOB(字符大对象)、BLOB(二进制大对象)、NCLOB(Unicode大对象);其他:RAW(二进制数据)、LONG(长文本,已逐步淘汰)。4.CHAR和VARCHAR2的区别1、长度特性:CHAR是固定长度,定义长度后无论存储数据长短,都会占用完整存储空间;VARCHAR2是可变长度,仅占用实际数据长度空间。2、最大长度:CHAR最大2000字节,VARCHAR2最大4000字节(11g及以前),12c支持32767字节。3、查询效率:CHAR查询效率略高,无需计算数据长度;VARCHAR2更节省存储空间。4、使用场景:固定长度数据(手机号、身份证、编码)用CHAR;变长数据(姓名、地址、备注)用VARCHAR2。5.NUMBER类型的使用规则NUMBER(p,s)中p代表总有效位数,最大38位;s代表小数位数。s为0时存储整数,s为负数时表示整数位四舍五入。不指定p、s时,默认存储最大精度数值,可适配所有数值场景,是Oracle最通用的数值类型,无精度丢失问题。6.DATE和TIMESTAMP的区别DATE类型存储年月日时分秒,精度到秒,占用7字节存储空间;TIMESTAMP精度更高,可精确到微秒,占用11字节,支持时区转换、时间戳比对,适合日志记录、精准时间统计场景。普通业务时间记录用DATE,高精度时序场景用TIMESTAMP。7.Oracle中NULL值的特性NULL代表未知、空值,不等于0、空格、空字符串。任何数值与NULL运算结果均为NULL;判断空值只能用ISNULL、ISNOTNULL,不能用=、!=;分组统计中NULL会被归为同一组;索引不会存储NULL值,普通索引无法查询全NULL字段。8.简述SQL的五大分类1、DQL数据查询语言:SELECT,用于数据查询;2、DML数据操纵语言:INSERT、UPDATE、DELETE,用于修改表数据;3、DDL数据定义语言:CREATE、ALTER、DROP、TRUNCATE,用于修改数据库对象结构;4、DCL数据控制语言:GRANT、REVOKE,用于权限授予和回收;5、TCL事务控制语言:COMMIT、ROLLBACK、SAVEPOINT,用于事务管理。9.TRUNCATE和DELETE的区别1、事务特性:DELETE是DML,支持事务回滚;TRUNCATE是DDL,执行后立即生效,无法回滚。2、删除范围:DELETE可带WHERE条件删除指定数据;TRUNCATE清空整张表所有数据。3、高水位线:DELETE不重置表的高水位线,表占用空间不会释放;TRUNCATE重置高水位线,立即释放表空闲空间。4、执行效率:TRUNCATE无日志记录,速度远快于DELETE;DELETE会生成大量重做和撤销日志。5、约束限制:TRUNCATE不能操作有外键约束的表,DELETE不受限制。10.DDL语句是否可以回滚不可以。Oracle中所有DDL语句执行前会自动提交当前会话所有未提交事务,执行后立即持久化生效,无事务日志支持回滚。只有DML、TCL语句支持事务回滚。11-60题(基础语法高频):涵盖别名使用、去重DISTINCT、排序ORDERBY、分组GROUPBY、聚合函数、条件查询、模糊查询、行转列、列转行、伪列ROWNUM/ROWID、序列、同义词、视图、物化视图、用户创建、权限分配、角色管理、表结构修改、字段增删改、约束类型等基础知识点,答案均贴合实战使用规范。二、SQL查询与高级语法篇(61-120题)61.ROWNUM和ROWID的区别ROWID是物理伪列,每条数据唯一,代表数据在磁盘中的物理存储地址,固定不变,可用于快速定位单条数据,查询效率极高。ROWNUM是逻辑伪列,是查询结果返回的行序号,动态生成,查询语句不同序号会变化,主要用于分页查询。62.Oracle标准分页语句怎么写Oracle11g及之前无直接分页关键字,通过ROWNUM嵌套分页:SELECT*FROM(SELECTt.*,ROWNUMrnFROM表名tWHEREROWNUM<=结束行号)WHERErn>起始行号;Oracle12c支持新特性分页:SELECT*FROM表名OFFSET起始行数ROWSFETCHNEXT每页行数ROWSONLY;63.简述常用聚合函数及注意事项常用聚合函数:SUM求和、AVG平均值、MAX最大值、MIN最小值、COUNT计数。注意:聚合函数自动忽略NULL值;GROUPBY分组查询中,SELECT字段只能是分组字段和聚合函数,不能包含普通字段;COUNT(*)统计所有行数,包含NULL;COUNT(字段)忽略字段NULL值。64.GROUPBY和HAVING的作用GROUPBY用于按照指定字段对数据分组,配合聚合函数实现分组统计;HAVING是分组后过滤条件,专门用于筛选分组后的聚合结果。区别于WHERE:WHERE是分组前过滤原始数据,不支持聚合函数;HAVING分组后过滤,支持聚合函数。65.简述Oracle五种表连接方式1、内连接INNERJOIN:只返回两张表匹配成功的数据;2、左外连接LEFTJOIN:返回左表所有数据,右表无匹配数据显示为空;3、右外连接RIGHTJOIN:返回右表所有数据,左表无匹配数据显示为空;4、全外连接FULLJOIN:返回两张表所有数据,无匹配字段显示为空;5、笛卡尔积:无连接条件的多表查询,返回所有数据组合,业务中需杜绝。66.UNION和UNIONALL的区别1、去重特性:UNION会自动去除重复数据,UNIONALL直接拼接所有结果,不去重;2、排序特性:UNION默认对结果集排序,UNIONALL不排序;3、执行效率:UNIONALL无需去重排序,效率远高于UNION;4、使用场景:确认无重复数据时优先用UNIONALL,提升查询性能。67.CASEWHEN语句的两种用法简单CASE语句:等值匹配,适用于固定值判断;CASE字段WHEN值1THEN结果1ELSE其他结果END;搜索CASE语句:支持范围、多条件判断,灵活度更高;CASEWHEN条件1THEN结果1ELSE其他结果END,是业务开发最常用写法。68.子查询的分类及使用场景分为单行子查询、多行子查询、关联子查询、嵌套子查询。单行子查询返回单条数据,配合=、>、<使用;多行子查询返回多条数据,配合IN、ANY、ALL使用;关联子查询依赖外层查询结果,逐行匹配筛选,适合复杂条件过滤。69.EXISTS和IN的区别及优化场景IN是先执行子查询,将结果集缓存后外层查询匹配;EXISTS是外层查询逐行遍历,判断子查询是否存在数据。数据量小时两者效率差距不大;大表嵌套查询时,大表在外层用EXISTS,小表在外层用IN。EXISTS只判断存在性,不返回数据,大数据量下性能更优。70.简述DISTINCT的性能问题及优化方案DISTINCT会对结果集进行排序去重,大数据量下会产生临时表、消耗大量CPU和内存,性能较差。优化方案:优先通过业务逻辑规避重复数据;用GROUPBY替代DISTINCT;对去重字段建立索引,减少排序开销。71-120题:包含模糊查询优化、通配符使用、正则函数、分析函数(ROW_NUMBER、RANK、DENSE_RANK)、开窗函数、分区查询、层级查询CONNECTBY、MERGEINTO批量更新插入、CASE复杂逻辑、子查询优化、多表连接优化、结果集排序优化、空值处理函数、字符串处理函数、日期函数、数值函数等高级SQL知识点。三、索引与查询优化篇(121-180题)121.Oracle常用索引类型及适用场景1、B树索引:默认索引类型,适合等值、范围查询,适配绝大多数业务场景;2、位图索引:适合低基数列(性别、状态、类型),数据重复率高的字段,不适合频繁更新字段;3、唯一索引:保证字段数据唯一,用于手机号、身份证、账号等唯一字段;4、复合索引:多个字段联合索引,遵循最左前缀原则;5、函数索引:针对字段函数运算查询场景,如UPPER、TRUNC日期处理;6、全文索引:用于大文本模糊检索场景。122.什么是索引最左前缀原则复合索引(a,b,c)中,查询条件必须包含最左侧的a字段,索引才会生效。仅查询b、c,或b+c、c字段,索引失效。开发中设计复合索引时,需将高频查询、等值查询字段放在左侧,范围查询字段放在右侧。123.索引失效的常见场景1、复合索引违背最左前缀原则;2、索引字段使用函数、运算、隐式类型转换;3、使用!=、<>、NOTIN、NOTEXISTS、ISNULL(普通索引);4、LIKE模糊查询以%开头;5、数据库统计信息过期,优化器选择全表扫描;6、表数据量过小,全表扫描效率高于索引扫描;7、索引字段参与OR条件,无对应索引覆盖。124.函数索引的使用场景和优势当查询语句对索引字段做函数运算,普通索引会失效,此时可创建函数索引。例如日常查询TRUNC(create_time)、UPPER(name),创建对应函数索引后,可避免全表扫描,大幅提升查询效率。函数索引会占用存储空间,仅针对高频函数查询场景创建。125.位图索引和B树索引的优缺点对比B树索引:适合高基数、频繁更新的字段,查询稳定,更新开销小;缺点是低基数字段索引效率低。位图索引:低基数字段查询效率极高,占用空间小;缺点是字段更新、删除时会锁定大量位图数据,并发性能极差,仅适用于静态数据表。126.什么是覆盖索引,有什么作用覆盖索引是指查询所需的所有字段都包含在索引中,查询时无需回表查询数据文件,直接通过索引获取全部数据,大幅减少IO开销,极大提升查询性能。高频简单查询场景优先设计覆盖索引。127.索引越多越好吗,为什么不是。索引会占用磁盘空间,且DML操作(增删改)需要同步维护索引数据,索引越多,增删改效率越低。索引仅优化查询性能,需根据业务高频查询场景按需创建,低频查询、低基数、频繁更新字段不建议创建索引。128.如何查看SQL执行计划129.全表扫描和索引扫描的适用场景全表扫描适用:数据表数据量小、查询返回数据占比超过15%、索引失效、无合适索引场景;索引扫描适用:大数据量表、查询返回少量数据、有有效索引、精准查询场景。130.统计信息过期对SQL性能的影响Oracle优化器依赖统计信息生成最优执行计划,统计信息过期后,优化器无法准确判断数据分布、数据量,会选错执行计划,出现索引失效、全表扫描、低效连接等问题,导致SQL卡顿、慢查询。生产环境需定期自动收集统计信息,也可手动执行DBMS_STATS收集。131-180题:包含索引重建、索引碎片整理、索引监控、无效索引清理、并行查询优化、SQL慢查询排查、执行计划解读、绑定变量、硬解析软解析、游标共享、查询重写、分区索引、全局索引与本地索引、索引压缩、反向索引、虚拟索引、SQL调优工具使用、大批量数据查询优化等调优知识点。四、事务、锁与并发机制篇(181-220题)181.数据库事务的四大特性ACID原子性:事务要么全部执行成功,要么全部回滚,不可部分执行;一致性:事务执行前后,数据库数据状态保持合法一致,约束不被破坏;隔离性:多个事务并发执行时,相互独立互不干扰;持久性:事务提交后,数据永久写入数据库,断电、重启不会丢失。182.Oracle事务隔离级别有哪些Oracle仅支持两种标准隔离级别,外加一种特殊级别:1、读已提交(默认):只能读取其他事务已提交数据,避免脏读,允许不可重复读、幻读;2、可串行化:最高隔离级别,事务串行执行,杜绝脏读、不可重复读、幻读;3、只读事务:事务内禁止修改数据,仅支持查询操作。183.脏读、不可重复读、幻读的区别脏读:一个事务读取到另一个事务未提交的修改数据,数据无效;不可重复读:同一事务内,两次查询同一数据,结果被其他已提交事务修改,前后结果不一致;幻读:同一事务内,两次范围查询,其他事务新增或删除数据,导致查询总数、结果范围变化。184.Oracle常用锁类型按粒度分为:表锁、行锁;按模式分为:共享锁(S锁)、排他锁(X锁)。行级锁:DML操作自动触发,锁定单条修改数据,并发度高;表级锁:DDL操作、手动加锁触发,锁定整张表,并发度低;意向锁:辅助锁,标记表内存在行锁,提升锁检测效率。185.行锁升级为表锁的场景Oracle不存在行锁自动升级表锁机制,锁升级是MySQL特性。Oracle中批量DML操作、无索引字段更新、事务长时间未提交,会出现大量行锁,表现为整体阻塞,但不会升级为表锁。186.死锁产生的条件及解决办法死锁四大必要条件:互斥条件、请求保持条件、不可剥夺条件、循环等待条件。解决方式:Oracle会自动检测死锁,抛出ORA-00060错误,终止其中一个事务解除死锁;开发层面统一SQL执行顺序、缩短事务执行时间、减少长事务可规避死锁。187.长事务的危害及优化方案危害:长时间占用行锁,引发业务阻塞、并发卡顿;产生大量撤销、重做日志,占用磁盘空间;增加快照过旧风险,触发ORA-01555错误。优化:拆分大事务为小事务;事务内减少无效查询、等待逻辑;及时提交事务;避免事务嵌套。188.ORA-01555快照过旧错误原因及解决原因:长查询事务执行过程中,修改数据的事务频繁提交,撤销日志被覆盖,无法读取一致性快照数据。解决:增大undo表空间、延长undo保留时间;优化SQL缩短查询执行时间;减少大批量数据频繁更新。189.悲观锁和乐观锁的区别及适用场景悲观锁:默认并发会产生冲突,查询时手动加锁,锁定资源直到事务结束,适合高并发更新、冲突率高的场景,通过SELECT...FORUPDATE实现。乐观锁:默认无并发冲突,不加锁,通过版本号、时间戳校验数据是否被修改,适合读多写少、冲突率低的场景,并发性能更高。191-220题:包含撤销表空间、重做日志作用、事务日志流程、锁等待排查、阻塞会话查询、锁释放机制、只读事务、自治事务、并发更新冲突解决、事务隔离级别调整、长事务监控、undo自动管理、redo写入机制等知识点。五、存储过程、函数、触发器、包篇(221-260题)221.存储过程和函数的区别1、返回值:函数必须有且仅有一个返回值;存储过程无强制返回值,可通过出参返回多个结果。2、调用方式:函数可嵌入SQL语句中调用;存储过程需单独执行调用。3、功能场景:函数侧重数据计算、返回结果;存储过程侧重复杂业务逻辑、批量数据处理、流程控制。4、事务支持:函数默认不允许开启事务、提交回滚;存储过程支持完整事务操作。222.触发器的分类及使用禁忌分类:行级触发器、语句级触发器、前置触发器、后置触发器、替代触发器。禁忌:生产环境尽量少用触发器。触发器隐式触发,业务逻辑不透明,问题排查困难;触发器执行耗时会叠加在DML操作中,降低并发性能;多层触发器嵌套易引发死锁、数据异常。223.Oracle包的作用及优势包是存储过程、函数、变量的集合,分为包规范和包体。优势:模块化管理业务代码,结构清晰;支持私有变量、公共方法封装;减少重复代码,提升复用性;统一权限管理,安全性更高;首次加载后常驻内存,执行效率更高。224.游标分类及使用注意事项分为隐式游标、显式游标、REF游标。游标用于遍历查询结果集,逐行处理数据。注意:游标使用完毕必须关闭,避免内存泄漏;大批量数据优先用集合批量处理,避免单行游标循环,效率极低;避免游标嵌套。225.异常处理常用关键字及自定义异常226-260题:包含PL/SQL语法、变量类型、循环语句、条件语句、批量绑定、FORALL、BULKCOLLECT、触发器执行顺序、替代触发器用法、包重载、存储过程调试、定时任务JOB、DBMS_JOB与DBMS_SCHEDULER区别、存储过程性能优化、异常捕获与日志记录等知识点。六、分区表、备份恢复与运维调优篇(261-300题)261.Oracle分区表类型及适用场景1、范围分区:按时间、数值范围分区,适合时序数据、订单数据,最常用;2、列表分区:按离散字段值分区,按地区、状态、类型分区;3、哈希分区:均匀分散数据,均衡IO压力,适合无规则均匀分片场景;4、复合分区:范围+列表、范围+哈希,适配复杂业务分片需求。优势:拆分大表、降低单表数据量、提升查询性能、支持分区独立维护、快速清理历史数据。262.分区表本地索引和全局索引的区别本地索引:索引和分区一一对应,分区增删、拆分不影响其他分区索引,维护简单,性能稳定;全局索引:整张表统一索引结构,分区维护操作会导致全局索引失效,需要重建,维护成本高,仅适合全局唯一查询场景。263.Oracle常用备份方式1、逻辑备份:EXP/IMP、EXPDP/IMPDP,导出dmp文件,适合小数据量、跨库迁移、精细化备份;2、物理备份:RMAN备份,备份数据文件、日志文件、控制文件,支持增量备份、断点续备、介质恢复,是生产主流备份方式;3、冷备份:停机后拷贝物理文件,操作简单,适合测试环境,生产不推荐。264.RMAN全量备份和增量备份的区别全量备份:备份所有有效数据块,备份文件大、耗时久,作为基础
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 口服抗凝药外伤出血分级处置流程共识
- 浙江省台州市仙居县2027届数学七年级第一学期期末学业质量监测试题含解析
- OCP认证全套题库真题及详细答案解析(完整版)
- 高级育婴师考试试题(含答案)
- 幼儿园教师资格考试综合素质试卷及答案(2026年)
- NX钣金设计技能考核试题(含详细答案)
- 小区垃圾中转站改造方案
- 鞋材裁断工安全操作规程
- NOIP2026 普及组复赛试题(含详细答案解析)
- 2026版考评员国家职业技能鉴定考试题库(附答案)
- GB/T 26953-2025焊缝无损检测渗透检测验收等级
- 2024外研版(三起)四年级英语上册全册教案(单元整体教学设计)
- 铝合金窗隐蔽工程验收记录填写指南
- 一年级下册数学应用题大全(含答案可打印)
- 第8课《回忆鲁迅先生》课件+++2025-2026学年统编版语文八年级上册
- 试验检测服务框架协议合同模板
- 腮腺疾病超声诊断与应用
- 2025年版全国医疗服务价格项目规范
- 教育培训机构催款律师函案例
- 《线性代数》 课件 黄先开 第5章 相似对角化
- 年产35000套玻璃钢雕塑新建项目环评资料环境影响
评论
0/150
提交评论