【Oracle面试500题解析】
1. **冷备份与热备份**:
- **冷备份**:在数据库关闭后进行,适用于所有模式,备份和恢复简单,无需归档日志,性能较好,但不能实现在线备份。
- **热备份**:在数据库运行时进行,仅适用于归档模式,允许数据库持续服务并能恢复到任意时间点,但可能增加I/O负载。
2. **无控制文件恢复**:当没有控制文件时,需重建控制文件,然后使用`RECOVER DATABASE USING BACKUP CONTROLFILE`命令恢复数据库。
3. **PFILE转SPFILE**:通过`CREATE SPFILE FROM PFILE`命令,将初始化参数文件(PFILE)转换为服务器参数文件(SPFILE)。
4. **数据存储单位**:
- **Data Block**:是最小的逻辑存储单位,包含实际的数据。
- **Extent**:一组连续的Data Blocks,用于扩展数据库对象的存储。
- **Segment**:一个数据库对象(如表、索引)的所有Extents的集合。
5. **检查表结构**:
- `DESCRIBE`:显示表的列名、数据类型等信息。
- `DBMS_METADATA.GET_DDL`:获取表的DDL语句,包括完整定义。
6. **查看错误日志**:通过Alert Log查看数据库引擎的错误信息。
7. **TRUNCATE与DELETE的区别**:
- `TRUNCATE`:删除所有记录,不记录回滚信息,速度快。
- `DELETE`:删除记录,记录在回滚段中,可回滚,速度较慢。
8. **使用索引的理由**:索引提供快速的数据访问,减少全表扫描,提升查询效率。
9. **STAR SCHEMA中的表类型**:
- **Fact Table**:包含核心业务数据,如销售记录。
- **Dimension Table**:存储描述性信息,如日期、产品、地区等。
10. **Fact Table上的索引**:通常使用位图索引,适用于低基数(非唯一值)的列。
11. **相关约束**:
- **主键**:确保表中记录的唯一性。
- **外键**:建立表间关联,确保数据完整性。
12. **重建母表**:临时禁用子表的外键约束,重建母表后再启用。
13. **归档与非归档模式**:
- **归档模式**:允许恢复到任意时间点,但需要归档日志,占用更多存储。
- **非归档模式**:无法恢复到任意时间点,但可能提高性能。
14. **创建备份控制文件**:执行`ALTER DATABASE BACKUP CONTROLFILE TO TRACE`。
15. **数据库启动状态**:
- **STARTUP NOMOUNT**:实例启动,未加载数据库。
- **STARTUP MOUNT**:数据库加载,但未打开。
- **STARTUP OPEN**:数据库完全打开,可读写。
16. **V$与GV$视图区别**:`INST_ID`字段区分,GV$包含集群环境中的所有实例信息。
17. **生成Explain Plan**:
- 运行`utlxplan.sql`创建计划表。
- 使用`EXPLAIN PLAN SET STATEMENT_ID = 'tst1' INTO plan_table`。
- 运行`utlxplp.sql`或`utlxpls.sql`查看计划。
18. **提高Buffer Cache命中率**:使用Buffer Cache Advisory,分析`V$DB_CACHE_ADVICE`,根据需要调整`DB_CACHE_SIZE`。
19. **处理ORA-01555**:通常是回滚段不足导致,可通过增大回滚段解决,同时检查引起错误的SQL。
20. **$ORACLE_HOME与$ORACLE_BASE**:
- `$ORACLE_BASE`:Oracle软件安装的基目录。
- `$ORACLE_HOME`:具体产品或版本的目录。
21. **确定数据库时区**:执行`SELECT DBTIMEZONE FROM DUAL;`查询。
22. **GLOBAL_NAMES**:用于强制分布式事务中数据库实例间的名称匹配,用于确定是否跨实例连接。
以上是对Oracle面试题中部分知识点的详细解释,涵盖了数据库备份、恢复、表结构、索引、性能优化等多个方面,有助于理解Oracle数据库的核心概念和技术。