oracle数据库笔试题(附答案)_oracle 笔试题目,2024年最新字节面试官_数据库笔试题目及答案-爱代码爱编程
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
- 数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义?答:触发dbwr的执行,dbwr会把和这个日志相关的所有脏队列写到数据文件里,缩短实例恢复所需要的时间。
- 表空间管理方式有哪几种,各有什么优劣。答:字典管理方式和本地管理方式,本地管理方式采用位图管理extent,减少字典之间的竞争,同时避免了碎片。
本地管理表空间与字典管理表空间相比,其优点如下: 1).减少了递归空间管理;2).系统自动管理extents大小或采用统一extents大小;3).减少了数据字典之间的竞争;4).不产生回退信息;5).不需合并相邻的剩余空间;6).减少了空间碎片;7).对临时表空间提供了更好的管理。 - 本地索引与全局索引的差别与适用情况。答:对于local索引,每一个表分区对应一个索引分区,当表的分区发生变化时,索引的维护由Oracle自动进行。对于global索引,可以选择是否分区,而且索引的分区可以不与表分区相对应。当对分区进行维护操作时,通常会导致全局索引的INVALDED,必须在执行完操作后REBUILD。Oracle9i提供了UPDATE GLOBAL INDEXES语句,可以使在进行分区维护的同时重建全局索引。
- 一个表a varchar2(1),b number(1),c char(2),有100000条记录,创建B-Tree索引在字段a上,那么表与索引谁大?为什么?答:这个要考虑到rowid所占的字节数,假设char总是占用2字节的情况,比较rowid,另外,table和index在segment free block的管理也有差别。
- Oracle9i的data guard有几种模式,各有什么差别。答:三种模式:最大性能(maximize performance):这是data guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息。该模式在primary故障时可能丢失数据,但standby对primary的性能影响最小。最大可用(maximize availability):在正常情况下,最大可用模式和最大保护模式一样;在standby不可用时,最大可用模式自动最大性能模式,所以standby故障不会导致primay不可用。只要至少有一个standby可用的情况下,即使primarydown机,也能保证不丢失数据。最大保护(maximize protection):最高级别的保护模式。primay上的事务在commit前必须确认redo已经传递到至少一个standby上,如果所有standby不可用,则primary会挂起。该模式能保证零数据丢失。
- 执行计划是什么,查看执行计划一般有哪几种方式。答:执行计划是数据库内部的执行步骤:set autotrace onselect * from tablealter session set event '10046 trace name context forever,level 12 ';SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION=(SID,SERIAL#,TRUE);一般采用pl/sql developer,再加个explain plan , v$sql_plan.
- 简单描述一下nest loop与hash join的差别。答:nest loop适用于返回结果比较小的情况。for in 1…n loop对小表进行遍历根据小表的结果遍历大表(大表需要索引)end loophash join适用在返回大结果集的情况。
- db file sequential read与db file scattered read等待的差别,如果以上等待比较多,证明了什么问题?答:db file sequential read-DB文件顺序读取,这一事件通常显示与单个数据块相关的读取操作(如索引读取)。如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,可能没有正确的使用驱动表;或者可能说明不加选择地进行索引。在大多数情况下我们说,通过索引可以更为快速的获取记录,所以对于一个编码规范、调整良好的数据库,这个等待很大是很正常的。但是在很多情况下,使用索引并不是最佳的选择,比如读取较大表中大量的数据,全表扫描可能会明显快于索引扫描,所以在开发中我们就应该注意,对于这样的查询应该进行避免使用索引扫描。 db file sequential read-DB檔分散读取,这种情况通常显示与全表扫描相关的等待。当数据库进行全表扫时,基于性能的考虑,数据会分散(scattered)读入Buffer Cache。如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置。然而这个等待事件不一定意味着性能低下,在某些条件下Oracle 会主动使用全表扫描来替换索引扫描以提高性能,这和访问的数据量有关,在CBO 下Oracle 会进行更为智能的选择,在RBO 下Oracle 更倾向于使用索引。当这个等待事件比较显著时,可以结合v$session_longops 动态性能视图来进行诊断,该视图中记录了长时间(运行时间超过6 秒的)运行的事物,可能很多是全表扫描操作(不管怎样,这部分信息都是值得我们注意的)。
- library cache pin与library cache lock是什么地方的等待事件,一般说明什么问题?答:"LIBRARY CACHE PIN"通常是发生在编译或重新编译PL/SQL,VIEW,TYPES等object时.
- 在一个24*7的应用上,需要把一个访问量很大的1000万以上数据级别的表的普通索引(a,b)修改成唯一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句。答:不能确定,是否可以采用先建索引后建约束:create index idx_w1 on w_1 (a,b,c) online ;alter table w_1 add constraint uni_w1 unique (a,b,c) novalidate;
- 如果一个linux上的oracle数据库系统突然变慢,你一般从哪里去查找原因。答:1).用vmstat,iostat命令查看系统的负载(I/O读写是否严重,CPU是否空闲). 2).用top工具查看有哪些进程CPU占用率高; 3). 查询v s e s s i o n _ w a i t 和 v session\_wait和v session_wait和vsystem_event数据字典,找出当前比较严重的等待事件,并试图优化影响性能的SQL语句。
- 说明一下对raid5与raid01/10的认识。答:raid5采用校验信息,硬盘的利用率n-1/n, 以RAID5(4D+P)为例子来讲,使用4块磁盘存放数据位,使用1块磁盘存放校验位。其基本原理是这样的:根据条带化的数据4D(使用四位数据)生成一位的校验信息,存放在第五块磁盘中。raid10先采用先镜像在进行条带化,是最高效的硬盘利用方式,硬盘的利用率50%,是一个Raid 0与Raid1的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了Raid0的快速和Raid1的安全。
- 列举5个10g的新特性.答:1).自动共享内存(SGA)管理2).自动存储管理(ASM)3).ADDM和查询优化器4).闪回表(flashback table)5).Data Pump(expdp、impdp)
|
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**