Oracle — SQL 与查询
📋 本文节选自《Oracle 面试题》,返回 查看全部章节
1.解释冷备份和热备份的不同点以及各自的优点
冷备份
发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法。适用于所有模式的数据库。
优点
- 是非常快速的备份方法(只需拷贝文件)
- 容易归档(简单拷贝即可)
- 容易恢复到某个时间点上(只需将文件再拷贝回去)
- 能与归档方法相结合,作数据库“最新状态”的恢复
- 低度维护,高度安全。
缺点
- 单独使用时,只能提供到“某一时间点上”的恢复。
- 在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
- 若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
- 不能按表或按用户恢复。
热备份
是在数据库仍旧处于工作状态时进行备份,采用的是归档方式备份数据的方法。
优点
- 可在表空间或数据库文件级备份,备份的时间短。
- 备份时数据库仍可使用。
- 可达到秒级恢复(恢复到某一时间点上)。
- 可对几乎所有数据库实体做恢复。
- 恢复是快速的,在大多数情况下在数据库仍工作时恢复。
缺点
- 不能出错,否则后果严重。
- 若热备份不成功,所得结果不可用于时间点的恢复。
- 因难于维护,所以要非凡仔细小心,不答应“以失败告终”。
不同点
热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。
2.你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?
重建控制文件,用带 backup control file 子句的 recover 命令恢复数据库。
3.如何转换 init.ora 到 spfile ?
使用 create spfile from pfile 命令
4.解释 data block ,extend 和 segment 的区别(这里建议用英文术语)
data block 是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的 data block 就组成了 extend. 一个数据库对象拥有的所有 extents 被称为该对象的 segment
5.给出两个查询表结构的方法
- DESCRIBE 命令
- DBMS_METADATA.GET_DDL 包
6.怎样查看数据库引擎的报错
alert log.
7.比较 truncate 和 delete 命令
两者都可以用来删除表中所有的记录。区别在于:truncate 是 DDL 操作,它移动 HWK ,不需要 rollback segment 而 Delete 是 DML 操作,需要 rollback segment 且花费较长时间
8.使用索引的理由
快速访问表中的 data block
9.给出在 STAR SCHEMA 中的两种表及他们分别含有的数据
Fact tables 和 dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放对 fact table 某些属性描述的信息
10.FACT Table 上需要建立何种索引?
位图索引(bitmap index)
11.给出两种相关约束?
主键和外键
12.如何在不影响子表的前提下,重建一个母表
子表的外键强制实效,重建母表,激活外键
13.解释归档和非归档模式之间的不同和他们的各自的优缺点
归档模式是指你可以备份所有的数据库 transactions 并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。
但是非归档模式可以带来数据库性能上的少许提高
14.如何建立一个备份控制文件?
Alter database backup control file to trace.
15.给出数据库正常启动所经历的几种状态?
STARTUP NOMOUNT ?C 数据库实例启动
STARTUP MOUNT - 数据库装载
STARTUP OPEN ?C 数据库打开
16.哪个 column 可以用来区别 V 视图?
INST_ID 指明集群环境中具体的某个 instance
17.如何生成 explain plan
运行 utlxplan.sql 建立 plan 表
针对特定 SQL 语句,使用 explain plan set statement_id = 'tst1' into plan_table 运行 utlxplp.sql 或 utlxpls.sql 查看 explain plan
18.如何增加 buffer cache 的命中率?
在数据库较繁忙时,适用 buffer cache advisory 工具,查询 v$db_cache_advice 如果有必要更改,可以使用 alter system set db_cache_size 命令
19.ORA-01555 的应对方法?
具体的出错信息是 snapshot too old within rollback seg , 通常可以通过增大 rollback seg 来解决问题。当然也需要查看一下具体造成错误的 SQL 文本
20.解释 ORACLE_BASE 和 ORACLE_HOME 的区别
ORACLE_BASE 是 oracle 的根目录,ORACLE_HOME 是 oracle 产品的目录。
21.说一下什么是 Oracle 分区
分区的实质是把一张大表的数据按照某种规则使用多张子表来存储。
然后这多张子表使用统一的表名对外提供服务,子表实际对用户不可见。类似于在多张子表上简历一个视图,然后用户直接使用该视图来访问数据。