整理Oracle面试题及答案

一下题目根据此表变换 1、表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。 select stu_class, max(stu_score) from core group by stu_class ; 2、有一个

    <img src="https://img.mryunwei.com/uploads/2023/04/20230416121856619.jpg"><p><img src="https://img.mryunwei.com/uploads/2023/04/20230416201859452.png" alt></p>

一下题目根据此表变换

1、表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。

要求的处数据 2005-01-01 4 2005-01-02 5 合计 9 试用一个Sql语句完成。

关系数据库设计之时是要遵守一定的规则的。尤其是数据库设计范式 简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式),第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。

例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成为1NF有三种方法:   一是重复存储职工号和姓名。这样,关键字只能是电话号码。   二是职工号为关键字,电话号码分为单位电话和住宅电话两个属性   三是职工号为关键字,但强制每条记录只能有一个电话号码。   以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。

 第二范式(2NF):如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。   例:选课关系 SCI(SNO,CNO,GRADE,CREDIT)其中SNO为学号, CNO为课程号,GRADEGE 为成绩,CREDIT 为学分。 由以上 条件,关键字为组合关键字(SNO,CNO)   在应用中使用以上关系模式有以下问题:

a.数据冗余,假设同一门课由40个学生选修,学分就 重复40次。 b.更新异常,若调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出现同一门课学分不同。 c.插入异常,如计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。 d.删除异常,若学生已经结业,从当前数据库删除选修记录。某些门课程新生尚未选修,则此门课程及学分记录无法保存。

  原因:非关键字属性CREDIT仅函数依赖于CNO,也就是CREDIT部分依赖组合关键字(SNO,CNO)而不是完全依赖。

  解决方法:分成两个关系模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新关系包括两个关系模式,它们之间通过SCN中的外关键字CNO相联系,需要时再进行自然联接,恢复了原来的关系  第三范式(3NF):如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。

例:如S1(SNO,SNAME,DNO,DNAME,LOCATION) 各属性分别代表学号, 姓名,所在系,系名称,系地址。 关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。 原因:关系中存在传递依赖造成的。即SNO -> DNO。 而DNO -> SNO却不存在,DNO -> LOCATION, 因此关键辽 SNO 对 LOCATIO

N 函数决定是通过传递依赖 SNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION。 解决目地:每个关系模式中不能留有传递依赖。 解决方法:分为两个关系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION) 注意:关系S中不能没有外关键字DNO。否则两个关系之间失去联系。

7,简述oracle行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制。

变化表mutating table被DML语句正在修改的表需要作为DELETE CASCADE参考完整性限制的结果进行更新的表也是变化的

限制:对于Session本身,不能读取正在变化的表

限制表constraining table需要对参考完整性限制执行读操作的表

限制:如果限制列正在被改变,那么读取或修改会触发错误,但是修改其它列是允许的。

8、oracle临时表有几种。 临时表和普通表的主要区别有哪些,使用临时表的主要原因是什么?

在Oracle中,可以创建以下两种临时表: a。会话特有的临时表

ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)

ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。

9,怎么实现:使一个会话里面执行的多个过程函数或触发器里面都可以访问的全局变量的效果,并且要实现会话间隔离?

11,简述SGA主要组成结构和用途?

SGA是Oracle为一个实例分配的一组共享内存缓冲区,它包含该实例的数据和控制信息。SGA在实例启动时被自动分配,当实例关闭时被收回。数据库的所有数据操作都要通过SGA来进行。 SGA中内存根据存放信息的不同,可以分为如下几个区域:a.Buffer Cache:存放数据库中数据库块的拷贝。它是由一组缓冲块所组成,这些缓冲块为所有与该实例相链接的用户进程所共享。缓冲块的数目由初始化参数DB_BLOCK_BUFFERS确定,缓冲块的大小由初始化参数DB_BLOCK_SIZE确定。大的数据块可提高查询速度。它由DBWR操作。 b. 日志缓冲区Redo Log Buffer:存放数据操作的更改信息。它们以日志项(redo entry)的形式存放在日志缓冲区中。当需要进行数据库恢复时,日志项用于重构或回滚对数据库所做的变更。日志缓冲区的大小由初始化参数LOG_BUFFER确定。大的日志缓冲区可减少日志文件I/O的次数。后台进程LGWR将日志缓冲区中的信息写入磁盘的日志文件中,可启动ARCH后台进程进行日志信息归档。 c. 共享池Shared Pool:包含用来处理的SQL语句信息。它包含共享SQL区和数据字典存储区。共享SQL区包含执行特定的SQL语句所用的信息。数据字典区用于存放数据字典,它为所有用户进程所共享。

12什么是分区表?简述范围分区和列表分区的区别,分区表的主要优势有哪些?

使用分区方式建立的表叫分区表

范围分区 每个分区都由一个分区键值范围指定(对于一个以日期列作为分区键的表,“2005 年 1 月”分区包含分区键值为从“2005 年 1 月 1 日” 到“2005 年 1 月 31 日”的行)。

列表分区 每个分区都由一个分区键值列表指定(对于一个地区列作为分区键的表,“北美”分区可能包含值“加拿大”“美国”和“墨西哥”)。

分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务。通过分区,数据库设计人员和管理员能够解决前沿应用程序带来的一些难题。分区是构建千兆字节数据系统或超高可用性系统的关键工具。

13,背景:某数据运行在archivelog,且用rman作过全备份和数据库的冷备份, 且所有的归档日志都有,现控制文件全部损坏,其他文件全部完好,请问该怎么恢复该数据库,说一两种方法。

回复的方法:一.使用冷备份,直接将冷备份的文件全部COPY到原先的目录下,在从新启动数据库就可以二.使用归档日志,

启动数据库NOMOUNT

创建控制文件,控制文件指定数据文件和重做日志文件的位置.

使用RECOVER DATABASE using backup controlfile until cancel 命令回复数据库,这时可以使用归档日志

ALETER DATABASE OPEN RESETLOGS;

重新备份数据库和控制文件

14,用rman写一个备份语句:备份表空间TSB,level 为2的增量备份。

15,有个表a(x number(20),y number(20))用最快速高效的SQL向该表插入从1开始的连续的1000万记录。

相关学习推荐:oracle数据库学习教程

【专题推荐】:2020年oracle面试题汇总(最新)

以上就是整理Oracle面试题及答案的详细内容,更多请关注每日运维其它相关文章!