Oracle 面试问题

2025年4月26日 | 阅读 9 分钟
Oracle Interview Questions

Oracle 是一个安全且被跨国公司广泛使用的数据库。以下是 Oracle 数据库中经常被问到的问题。

1) Oracle 数据库的物理数据库结构包含哪些组件?

物理数据库结构包含以下组件。

  • 一个或多个数据文件。
  • 两个或多个重做日志文件。
  • 一个或多个控制文件。

2) Oracle 数据库的逻辑数据库结构包含哪些组件?

逻辑数据库结构包含以下组件。

  • 表空间
  • 数据库的模式对象

3) 什么是表空间?

数据库包含称为表空间的逻辑存储单元。表空间是一组相关的逻辑结构。实际上,表空间将相关的逻辑结构分组在一起。


4) 什么是 SYSTEM 表空间,它何时被创建?

当数据库在 Oracle 数据库系统中创建时,它会自动生成一个名为 SYSTEM 的 SYSTEM 表空间。SYSTEM 表空间包含整个数据库的数据字典表。


5) 什么是 Oracle 表?

表是 Oracle 数据库中数据的基本存储单元。表包含用户所有可访问的信息,以行和列的形式存储。


6) 在 Oracle 版本 9.3.0.5.0 中,每个数字代表什么?

Oracle 版本号表示

  • 9 - 主要数据库发布号
  • 3 - 数据库维护发布号
  • 0 - 应用程序服务器发布号
  • 5 - 组件特定发布号
  • 0 - 平台特定发布号

7) Oracle 中的批量复制或 BCP 是什么?

Oracle 中的批量复制或 BCP 用于导入或导出表和视图中的数据,但不复制相同数据的结构。

BCP 的主要优势在于其快速的数据复制机制,并且可以轻松备份数据。


8) 数据库、表空间和数据文件之间的关系是什么?

Oracle 数据库包含一个或多个称为表空间的逻辑存储单元。这些表空间共同存储数据库的全部数据,并且 Oracle 数据库中的每个表空间由一个或多个称为数据文件的文件组成。这些数据文件是与 Oracle 运行的操作系统相对应的物理结构。


9) Oracle 数据库中的快照是什么?

快照是从单个时间点复制的目标主表的副本。简单来说,快照是远程数据库中表的副本。


10) Oracle 中的热备份和冷备份有什么区别?请也说明它们的优点。

热备份(在线备份):热备份也称为在线备份,因为它是在数据库运行时进行的。有些站点在制作备份副本时无法关闭其数据库,它们每天 24 小时、每周 7 天都在运行。

冷备份(离线备份):冷备份也称为离线备份,因为它是在使用 SHUTDOWN normal 命令关闭数据库后进行的。如果数据库因不确定的情况而突然关闭,应在 RESTRICT 模式下重新启动,然后以 NORMAL 选项关闭。

要进行完整的冷备份,必须备份以下文件:

所有数据文件、所有控制文件、所有在线重做日志文件(可选)以及 init.ora 文件(您可以手动重新创建)。


11) Oracle 共享池中有多少内存层?

Oracle 共享池包含两个层:

  1. 库缓存
  2. 数据字典缓存

12) Oracle 数据库中的保存点是什么?

保存点用于将事务划分为更小的部分。它允许回滚事务。最多允许五个保存点。它用于保存我们的数据,每当遇到错误时,您都可以从保存保存点的地方回滚。


13) Oracle 中的哈希集群是什么?

哈希集群是一种将数据存储在哈希表中并提高数据检索性能的技术。对表行的集群键值应用哈希函数并将其存储在哈希集群中。


14) 有哪些不同的 Oracle 数据库对象?

表:这是以垂直和水平方式组织的一组元素。

表空间:这是 Oracle 中的逻辑存储单元。

视图:它是从一个或多个表中派生的虚拟表。

索引:这是处理记录的性能调优方法。

同义词:这是表的名称。


15) pre-select 和 pre-query 有什么区别?

pre-query 触发器在查询执行之前触发,并在您尝试查询时触发一次。借助此触发器,您可以动态修改 where 子句部分。

Pre-select 查询在 Oracle Forms 构建要发出的 SELECT 语句以及 COUNT 查询处理期间执行,但在语句实际发出之前。

Pre-query 触发器在 Pre-select 触发器之前触发。


16) Oracle Forms 中有哪些不同类型的模块?

以下是 Oracle Forms 中的不同模块:

  • Form 模块
  • Menu 模块
  • Pl/SQL 库模块
  • Object Library 模块

17) ANALYZE 命令在 Oracle 中有什么用途?

ANALYZE 命令用于对索引、表或集群执行各种功能。以下列表说明了 ANALYZE 命令在 Oracle 中的用法:

  • 它用于识别表的迁移行和链式行或集群。
  • 它用于验证对象的结构。
  • 它有助于收集关于对象统计信息,供优化器使用。然后将这些统计信息存储在数据字典中。
  • 它有助于从数据字典中删除对象使用的统计信息。

18) 可以创建没有表的同义词吗?

是的。我们可以创建没有基表的同义词。


19) 在编写子查询时使用哪些类型的连接?

  • 自连接
  • Outer Join
  • 等值连接

20) 控制文件在 Oracle 中有什么用途?

在 Oracle 中,控制文件用于数据库恢复。控制文件还用于标识数据库和重做日志文件,当 ORACLE 数据库的实例启动时,必须打开这些文件才能继续进行数据库操作。


21) 什么是同义词?

同义词也称为表、视图、序列或程序单元的别名。


22) 有哪些不同类型的同义词?

有两种类型的同义词或别名:

私有:只有所有者才能访问。

公共:任何数据库用户都可以访问。


23) 同义词有什么用途?

  • 同义词可用于隐藏对象的真实名称和所有者。
  • 它提供对对象的公共访问。
  • 它还为远程数据库的表、视图或程序单元提供位置透明性。
  • 它简化了数据库用户的 SQL 语句。

24) 如何将图片存储在数据库中?

是的,您可以使用 Long Raw 数据类型将图片存储在数据库中。此数据类型用于存储长达 2GB 的二进制数据。但是,表只能有一个 Long Raw 数据类型。


25) Oracle 中的 BLOB 数据类型是什么?

BLOB 数据类型是一种变长二进制字符串数据类型。它用于存储 2GB 的内存。对于 BLOB 数据类型,长度需要以字节为单位指定。


26) Oracle 中的 TRANSLATE 和 REPLACE 有什么区别?

Translate 用于逐个字符替换,而 Replace 用于用单词替换单个字符。


27) 有哪些不同类型的数据库对象?

不同类型数据库对象的列表:

  • 表:这是以垂直和水平方式组织的一组元素。
  • 表空间:这是 Oracle 中的逻辑存储单元。
  • 视图:它是从一个或多个表中派生的虚拟表。
  • 索引:这是处理记录的性能调优方法。
  • 同义词:这是表的名称。

28) Oracle 数据库中保存点的用途是什么?

保存点用于将事务划分为更小的阶段。它能够回滚事务的一部分。Oracle 数据库最多允许 5 个保存点。每当遇到错误时,都可以从保存 SAVEPOINT 的点回滚。


29) post-database commit 和 post-form commit 有什么区别?

post-database commit 触发器在 Oracle Forms 发出提交以完成事务后执行,而 post-form commit 在提交事务过程中,在数据库提交之后触发。


30) Oracle 中的逻辑备份是什么?

逻辑备份用于读取一组数据库记录并将其写入文件。Export 工具用于进行备份,而 Import 工具用于从备份中恢复。


31) 您如何理解重做日志文件镜像?

镜像是一种拥有重做日志文件副本的过程。这是通过将日志文件分组来完成的。这样可以确保 LGWR 自动将它们写入当前在线重做日志组的所有成员。如果组失败,数据库会自动切换到下一个组。它会降低性能。


32) Oracle 中的递归提示是什么意思?

字典表被各种进程重复调用的次数称为递归提示。由于数据字典缓存的大小较小,因此会发生递归提示。


33) CHECK 约束有哪些限制?

CHECK 约束的主要限制是条件必须是一个布尔表达式,该表达式使用正在插入或更新的行中的值进行评估,并且不能包含子查询。


34) IMP 命令中的 GRANT 选项有什么用?

GRANT 用于导入对象权限。


35) IMP 命令中的 ROWS 选项有什么用?

ROWS 选项指示是否应导入表行。


36) IMP 命令中的 INDEXES 选项有什么用?

INDEXES 选项用于确定是否导入索引。


37) IMP 命令中的 IGNORE 选项有什么用?

IGNORE 选项用于指定如何处理对象创建错误。


38) IMP 命令中的 SHOW 选项有什么用?

SHOW 选项指定当 show=y 时,导出文件中的 DDL 会被显示。


39) IMP 命令中的 FILE 参数有什么用?

FILE 参数用于指定要导入的导出文件名。可以列出多个文件,用逗号分隔。


40) 如何在 Oracle 中将日期转换为字符?举例说明。

to_char() 函数用于将日期转换为字符。您还可以指定输出格式。

或者,


41) 实际参数和形式参数是什么?

实际参数:实际参数是在子程序参数列表中引用的变量或表达式。

让我们看一个包含 empno 和 amt 两个实际参数的过程调用:

形式参数:形式参数是在子程序规范中声明并在子程序主体中引用的变量。

以下过程声明了 empid 和 amt 两个形式参数:


42) Oracle Reports 使用哪些扩展名?

Oracle Reports 用于使企业能够安全地提供内部或外部各级信息。Oracle Reports 使用 **REP** 文件和 **RDF** 文件扩展名。


43) 如何在 Oracle 数据库中将字符串转换为日期?

语法:to_date (string , format)

我们来看一个例子:

它将返回 2012 年 12 月 12 日


44) 如何在 Oracle 中查找当前日期和时间?

Oracle 中使用 **SYSDATE() 函数**来查找数据库正在运行的操作系统当前的日期和时间。


45) 查找当前日期和时间的 "YYYY-MM-DD" 格式的语法是什么?