Oracle DBA 面试题及详细实操答案(一线实战版)_第1页
Oracle DBA 面试题及详细实操答案(一线实战版)_第2页
Oracle DBA 面试题及详细实操答案(一线实战版)_第3页
Oracle DBA 面试题及详细实操答案(一线实战版)_第4页
Oracle DBA 面试题及详细实操答案(一线实战版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OracleDBA面试题及详细实操答案(一线实战版)一、Oracle基础架构与原理1、简述Oracle数据库实例和数据库的区别答案:数据库指物理存储文件的集合,包含数据文件、控制文件、日志文件、参数文件等静态物理文件,是永久存储数据的载体。实例指Oracle后台进程+内存结构的集合,是动态运行的程序,依托内存和进程对外提供数据库访问服务。一台服务器可以启动多个实例,对应不同数据库。简单来说:数据库是静态文件,实例是动态服务,实例挂载并打开数据库后,用户才能正常读写数据。2、OracleSGA和PGA的区别及核心组件答案:SGA是系统全局区,属于共享内存,所有数据库会话、后台进程都可以共享访问,数据库启动时分配,关闭时释放。核心组件:数据缓冲区(DBBufferCache):缓存从磁盘读取的数据块,减少磁盘IO重做日志缓冲区(RedoBuffer):缓存事务的重做日志数据共享池(SharedPool):包含数据字典缓存、SQL执行计划缓存,解析和缓存SQL语句大型池、Java池、流池:适配备份、并行查询、Java程序等特殊场景PGA是程序全局区,属于私有内存,每个数据库会话独立分配,会话断开后自动释放,进程之间无法共享。核心用于存储会话的排序数据、游标状态、变量信息等。3、简述Oracle事务的ACID特性,以及事务提交、回滚原理答案:ACID分别为原子性、一致性、隔离性、持久性。原子性:一个事务的所有操作要么全部执行成功,要么全部回滚;一致性:事务执行前后数据库数据完整性约束不被破坏;隔离性:多个并发事务相互隔离,互不干扰;持久性:事务提交后,数据永久落地,宕机不丢失。事务执行DML操作时,不会直接修改磁盘数据,只会修改内存缓冲区数据,同时生成undo日志保存修改前数据、redo日志记录修改操作。提交(commit):触发LGWR进程将redo缓冲区数据写入磁盘日志文件,标记事务完成,释放行级锁,undo数据可被覆盖。回滚(rollback):读取undo日志中修改前的数据,还原数据状态,清空redo临时记录,撤销所有操作。二、数据库启动与关闭流程1、Oracle数据库启动三个阶段及核心操作答案:阶段一:nomount(启动实例)。读取参数文件(spfile/pfile),分配SGA内存、启动后台进程,此时未关联任何物理数据文件,无数据库挂载。主要用于修改参数、重建控制文件等操作。阶段二:mount(挂载数据库)。读取控制文件,获取数据文件、日志文件的路径和状态信息,校验文件完整性,此时数据库关闭读写,用户无法访问,可执行备份、恢复、修改日志模式等运维操作。阶段三:open(打开数据库)。校验所有数据文件、日志文件一致性,执行实例恢复(如有宕机残留事务),打开数据库,允许用户正常连接访问、读写数据。2、数据库异常宕机后,重启自动恢复的原理答案:Oracle异常关机(断电、进程崩溃)时,存在部分事务已提交但数据未写入磁盘、或未提交事务残留的情况,重启后会自动执行实例恢复,分为三步:第一步:前滚。读取onlineredo日志,将所有已提交事务的数据更新到数据文件,保证数据一致性;第二步:回滚。针对未提交、中断的事务,通过undo日志还原数据,撤销无效修改;第三步:完成恢复,打开数据库对外提供服务。3、四种数据库关闭方式的区别答案:shutdownnormal:正常关闭,等待所有用户主动断开连接,禁止新连接,执行检查点,干净关闭数据库,速度最慢。shutdowntransactional:等待所有正在执行的事务完成,自动断开空闲会话,禁止新事务,比normal速度快。shutdownimmediate:立即关闭,终止所有活跃会话、回滚未完成事务,执行检查点,干净关闭,生产环境最常用。shutdownabort:强制终止,直接停止实例、切断所有进程,不执行检查点、不回滚事务,属于非正常关闭,重启需要自动实例恢复,仅用于数据库卡死、紧急故障场景。三、备份与恢复(RMAN核心)1、简述RMAN全量备份与增量备份的区别,0级、1级备份差异答案:全量备份:备份数据文件所有有效数据块,不依赖其他备份集,恢复时可独立使用,占用空间大、备份耗时久。增量备份:仅备份上一次备份后发生修改的数据块,节省空间、速度快,恢复时需要依赖基础备份+增量备份集。0级增量备份:等同于全量备份,是所有增量备份的基础,会标记所有数据块状态,后续1级备份均基于0级备份。1级增量备份:分为差异增量和累积增量。差异增量备份上一次任意级别备份后的修改数据(默认);累积增量备份上一次0级备份后的所有修改数据,恢复时步骤更少、速度更快。2、数据库误删表,如何通过RMAN恢复?(无闪回场景)答案:生产常用精准恢复流程,不会影响整体数据库运行:1、确认删除时间点,查询备份集、归档日志完整性,确保目标时间点备份和日志齐全;2、创建临时辅助实例,通过RMAN基于全量备份+归档日志,恢复到误删除前的时间点;3、在临时实例中导出被误删的表数据;4、将导出的数据导入生产数据库,完成恢复。优势:无需重启生产库、无需整体恢复,零业务大面积影响。如果开启闪回功能,可直接使用flashbacktable恢复,效率更高。3、控制文件丢失如何恢复?答案:控制文件是数据库核心文件,存储文件路径、备份信息、日志序列号等关键数据,丢失分两种场景:1、多路复用控制文件,单份丢失:直接复制正常控制文件覆盖损坏文件,重启数据库即可恢复;2、所有控制文件全部丢失:需要重建控制文件。首先启动数据库到nomount状态,执行createcontrolfile命令重建控制文件,之后挂载数据库,恢复归档日志和数据文件,最后openresetlogs打开数据库。四、性能调优与故障排查1、数据库慢查询排查完整流程答案:一线实操排查步骤,层层定位问题:1、查看数据库整体负载:通过v$sysstat、v$system_event查看数据库等待事件、CPU、IO负载,确认是全局慢还是单SQL慢;2、定位慢SQL:查询v$sql、v$sqlarea,根据执行耗时、逻辑读、物理读排序,抓取高消耗SQL;3、分析执行计划:通过explainplan或dbms_xplan查看SQL执行计划,判断是否存在全表扫描、索引失效、笛卡尔积、排序溢出等问题;4、核查索引状态:确认缺失索引、索引失效、索引碎片化严重等问题;5、排查参数与资源:检查SGA、PGA分配是否合理,是否存在bufferbusywaits、rowcachelock等热点等待;6、优化SQL或调整索引,绑定执行计划,验证优化效果。2、常见数据库等待事件及解决方案答案:dbfilesequentialread:单块读取等待,多为索引查询、单行查询慢,大概率是索引不合理、数据倾斜,优化索引、优化SQL即可。dbfilescatteredread:多块离散读取,核心是全表扫描过多,大表无索引、SQL过滤条件差,需优化SQL、创建合适索引。bufferbusywaits:数据块热点竞争,多为并发频繁更新同一数据块(如自增主键、热点表),可拆分数据、优化业务、调整表结构。logfileparallelwrite:日志写入缓慢,大概率是磁盘IO性能不足,检查存储磁盘性能、优化日志文件存储路径。rowcachelock:数据字典缓存锁竞争,多为频繁创建删除对象、批量DDL操作,避免高峰期执行DDL,优化业务脚本。3、索引失效的常见场景答案:1、索引列使用函数运算,如substr、to_char、like%模糊前置匹配;2、索引列隐式类型转换,字段为字符型,查询传入数值型;3、or、in、notin、isnull等不当使用,导致优化器放弃索引;4、表数据量过小,全表扫描成本低于索引扫描,优化器自动选择全表扫描;5、索引碎片化严重、索引统计信息陈旧,优化器判断失误;6、并行查询开启、索引被禁用或标记无效。4、如何解决OracleORA-01555快照过旧错误答案:报错核心原因:长时间运行的查询,需要读取的undo数据被新事务覆盖,无法获取一致性快照。解决方案:1、优化长耗时SQL,缩短查询执行时间,从根源避免undo数据被覆盖;2、调整undo表空间参数,增大undo_retention参数值,延长undo数据保留时间;3、确保undo表空间足够,开启undo表空间自动扩展;4、拆分大事务、大查询,避免单SQL长时间占用一致性读。五、权限、用户与表空间管理1、Oracle普通权限、角色、系统权限的区别答案:系统权限:针对数据库级别操作的权限,如创建用户、创建表空间、重启数据库、查询数据字典等,权限级别最高,仅授予管理员。对象权限:针对具体表、视图、存储过程等对象的操作权限,如select、insert、update、delete,可精准分配给普通业务用户。角色:权限的集合,用于批量管理权限,避免逐个授权繁琐。系统预设DBA、CONNECT、RESOURCE等角色,也可自定义业务角色,统一授权、回收权限。2、表空间爆满的排查与解决流程答案:1、排查表空间使用率:查询dba_tablespaces、dba_data_files,查看各表空间总大小、已用、剩余空间;2、定位大对象:查询表空间内占用空间最大的表、分区表、索引,确认是业务数据增长还是垃圾数据堆积;3、临时处理:开启数据文件自动扩展,或手动新增数据文件,快速恢复业务写入;4、根治优化:清理无用历史数据、truncate垃圾表、重建碎片化索引;对超大表做分区拆分,归档冷数据;5、定期监控表空间使用率,设置阈值告警,提前扩容。3、临时表空间频繁暴涨的原因及处理答案:核心原因:SQL排序、分组、去重、关联查询产生大量临时数据,分区查询、批量数据导入导出也会占用大量临时空间;此外,SQL写法低效、缺少索引导致排序量激增。处理方案:优化低效SQL,避免不必要的排序;调整PGA内存大小,让排序在内存完成,减少磁盘临时空间占用;清理临时表空间碎片,重建临时文件;针对超大批量任务,拆分执行批次。六、RAC与日常运维1、简述OracleRAC核心原理及优势答案:RAC是Oracle集群架构,多台服务器节点同时挂载、打开同一个数据库,共享存储数据文件,节点间通过私有心跳网络同步数据、交互锁信息。核心优势:高可用,单节点故障不影响数据库整体运行,业务自动切换;负载均衡,读写请求可分发到多个节点,分担压力;可横向扩容节点,提升数据库并发能力。2、RAC心跳故障、节点宕机排查要点答案:1、检查公私网网络状态:心跳私网中断是节点驱逐最常见原因,排查网卡、交换机、网络延迟丢包;2、查看集群日志(alert、crs日志),定位节点驱逐时间和报错信息;3、检查存储挂载状态,确认共享存储是否离线、IO异常;4、排查节点服务器资源,CPU、内存、磁盘是否耗尽导致节点卡死;5、修复故障后,重启集群服务,验证节点加入、资源正常运行。七、高频实操面试问答题(进阶)1、如何定位数据库中阻塞的会话,如何解除锁阻塞?答案:通过v$lock、v$session视图查询阻塞会话和被阻塞会话,定位锁源SID、串行号、执行SQL。处理方式:优先等待阻塞会话事务执行完成自动释放锁;若会话卡死、长时间阻塞业务,可通过altersystemkillsession杀掉阻塞会话,释放锁资源。生产环境禁止随意杀核心事务,需提前核对业务影响。2、统计信息陈旧会带来什么问题,如何手动更新统计信息?答案:统计信息是Oracle优化器生成执行计划的依据,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论