sql面试题\oracle面试题目
### SQL与Oracle面试知识点解析 #### 1. 冷备份与热备份的不同点及各自的优点 - **冷备份**:通常在数据库完全关闭的情况下进行,适用于全盘备份。其主要优点在于备份速度快、数据一致性高,恢复过程简单快速。缺点是在备份过程中数据库不可用。 - **热备份**:可以在数据库正常运行时进行,适用于增量备份或部分备份。优点是可以实现在线备份,无需中断业务,且备份数据可以包含事务的最新状态。缺点是备份过程复杂,恢复过程相对冷备份更为繁琐。 #### 2. 如何在没有控制文件的情况下恢复数据库 - 在没有控制文件的情况下恢复数据库是一项挑战性任务。需要尝试重建控制文件。可以通过以下几种方法: - 使用`CREATE CONTROLFILE`命令重建控制文件。 - 如果有备份的控制文件,可以从备份中恢复。 - 使用`ALTER DATABASE ... SET CONTROLFILE`命令指定新的控制文件位置。 - 恢复数据库后,可能还需要进行其他操作来确保数据的一致性和完整性,比如使用`RECOVER DATABASE USING BACKUP CONTROLFILE`命令。 #### 3. 如何转换init.ora到spfile - 使用`ALTER SYSTEM SET <parameter>=<value> SCOPE=BOTH`命令来将参数设置到内存中,并保存到init.ora文件中。 - 然后使用`ALTER SYSTEM SET <parameter>=<value> SCOPE=SPFILE`来将参数写入spfile。 - 重启数据库实例使更改生效。 #### 4. 数据块、段与扩展的区别 - **Data Block**: 数据库存储数据的基本单位,每个块对应一定数量的数据行。 - **Extent**: 由连续的数据块组成,用于存储特定类型的数据库对象,如表或索引。 - **Segment**: 由一个或多个extent组成,代表数据库对象的物理存储结构。 #### 5. 检查表结构的方法 - 使用`DESCRIBE table_name`命令查看表的基本结构。 - 使用`DBMS_METADATA.GET_DDL('TABLE', 'table_name')`获取更详细的DDL信息。 #### 6. 查看数据库引擎的报错 - 使用`SELECT * FROM v$diag_info`查看诊断信息的位置。 - 使用`SELECT * FROM v$database`和`v$instance`查看实例级的错误信息。 - 使用`DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)`和`DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_STACK)`获取当前错误堆栈和回溯信息。 #### 7. Truncate与Delete命令的区别 - **Truncate**:删除表的所有数据但不保留任何事务记录,速度更快,不可回滚。 - **Delete**:逐行删除并记录每行的删除动作,可用于事务处理,支持回滚。 #### 8. 使用索引的理由 - 加快查询速度。 - 提高数据检索效率。 - 支持高效的排序和分组操作。 #### 9. STAR SCHEMA中的两种表及其数据 - **Fact Table**:存储度量值和其他数值型数据。 - **Dimension Table**:存储描述性数据,用于提供上下文信息。 #### 10. FACT Table上的索引类型 - 通常在事实表上建立非聚集索引以优化查询性能。 - 对于频繁使用的维度键,可能会建立聚集索引。 #### 11. 相关约束 - **Primary Key**:定义表的唯一标识符。 - **Foreign Key**:定义与其他表之间的关系。 #### 12. 重建母表而不影响子表 - 创建新表,并复制所有数据。 - 更新所有引用原表的外键约束。 - 删除旧表,重命名新表为原表名。 #### 13. 归档与非归档模式的区别 - **归档模式**:允许数据库进行归档,可进行完整恢复。 - **非归档模式**:不允许归档,只能恢复到最近一次完整备份的状态。 #### 14. 建立备份控制文件 - 使用`ALTER DATABASE BACKUP CONTROLFILE TO TRACE`创建控制文件的跟踪文件。 - 使用`ALTER DATABASE BACKUP CONTROLFILE TO '<filename>'`创建控制文件的物理备份。 #### 15. 数据库正常启动所经历的状态 - **Nomount**:仅实例启动。 - **Mount**:实例启动并加载控制文件。 - **Open**:数据库完全可用。 #### 16. V$视图与GV$视图的区别 - `V$`视图显示当前实例的信息。 - `GV$`视图显示集群环境中所有实例的信息。 #### 17. 生成Explain Plan - 使用`EXPLAIN PLAN FOR`命令生成执行计划。 - 使用`SELECT * FROM TABLE(dbms_xplan.display)`查看执行计划。 #### 18. 增加Buffer Cache的命中率 - 调整`DB_CACHE_SIZE`初始化参数。 - 使用`DBMS_SHARED_POOL.PURGE`清除未使用的共享池内容。 - 使用`DBMS_BUFFER_CACHE`管理缓存策略。 #### 19. ORA-01555的应对方法 - 增加`UNDO_TABLESPACE`的数量。 - 扩大`UNDO_RETENTION`时间。 - 减少长时间运行的查询。 #### 20. $ORACLE_HOME与$ORACLE_BASE的区别 - `$ORACLE_HOME`:指向Oracle产品安装目录。 - `$ORACLE_BASE`:指向Oracle产品的根目录。 #### 21. 判断数据库的时区 - 使用`SELECT SESSIONTIMEZONE, SYSTIMESTAMP FROM DUAL`查询。 #### 22. GLOBAL_NAMES设为TRUE的用途 - 当`GLOBAL_NAMES`设置为TRUE时,Oracle会解析带有双冒号(::)的全局对象名,以便跨数据库进行引用。 #### 23. 加密PL/SQL程序 - 使用`DBMS_CRYPTO`包提供的加密功能。 - 使用`UTL_ENCODE`包提供的编码功能。 #### 24. FUNCTION, PROCEDURE与PACKAGE的区别 - **FUNCTION**:返回一个值。 - **PROCEDURE**:执行一系列操作,无返回值。 - **PACKAGE**:封装一组相关的函数和过程,提供命名空间管理和安全性。 #### 25. TABLE Function的用途 - 提供了一种灵活的方式来处理表格数据。 - 可以用于模拟多行插入或多行处理。 #### 26. 收集Advisorystatistics - 使用`DBMS_STATS`包收集统计信息。 - 使用`DBMS_ADVISOR`包分析数据库性能。 #### 27. Audit Trace的存放位置 - Audit trace记录通常存放在`$ORACLE_HOME/diag/audit/`目录下。 #### 28. Materialized View的作用 - 存储预先计算好的结果,提高查询性能。 - 可以使用`REFRESH`命令定期更新。 #### 29. 清理出错的用户进程 - **SMON**(System Monitor Process):负责清理异常终止的进程。 #### 30. 刷新Materialized View的后台进程 - **MMON**(Materialized View Monitor):负责刷新Materialized View。 #### 31. 判断正在连接的Session及其等待的资源 - 使用`V$SESSION`视图查看活动会话信息。 - 使用`V$WAITSTAT`视图查看等待统计信息。 #### 32. 描述Redo Logs - Redo logs记录了所有修改数据库内容的事务。 - 用于故障恢复和一致性检查。 #### 33. 进行强制Log Switch - 使用`ALTER SYSTEM SWITCH LOGFILE`命令进行强制日志切换。 #### 34. 判断DDL改动的方法 - 使用`V$DATABASE`视图查看数据库状态。 - 使用`DBMS_DB_VERSION`包查看版本信息。 #### 35. Coalescing的作用 - 合并相邻的空闲空间块,减少碎片。 #### 36. TEMPORARY Tablespace与PERMANENT Tablespace的区别 - **TEMPORARY Tablespace**:用于临时表和中间结果,数据在事务结束时自动删除。 - **PERMANENT Tablespace**:用于永久存储数据。 #### 37. 创建数据库时自动建立的Tablespace名称 - `SYSTEM`:默认的系统表空间。 - `SYSAUX`:辅助系统表空间。 #### 38. 创建用户时,需要赋予新用户的权限 - `CONNECT`权限允许用户连接到数据库。 #### 39. 在Tablespace中增加数据文件 - 使用`ALTER DATABASE ADD DATAFILE ... TO TABLESPACE ...`命令。 #### 40. 变动数据文件的大小 - 使用`ALTER DATABASE DATAFILE ... RESIZE ...`命令。 #### 41. 查看数据文件大小的View - 使用`DBA_DATA_FILES`或`V$DATAFILE`视图。 #### 42. 判断Tablespace剩余空间的View - 使用`DBA_FREE_SPACE`或`V$TABLESPACE`视图。 #### 43. 判断谁往表里增加了一条记录 - 使用`DBMS_AUDIT_TRAIL`包审计表的更改。 #### 44. 重构索引 - 使用`ALTER INDEX ... REBUILD`命令。 #### 45. Partitioning(分区)及其优点 - 分区可以提高查询性能。 - 便于管理大数据量。 #### 46. 显示PL/SQL Package编译错误 - 使用`DBMS_OUTPUT`包显示错误信息。 - 使用`DBMS_SERVEROUTPUT.ENABLE`启用输出。 #### 47. 搜集表的各种状态数据 - 使用`DBMS_STATS.GATHER_TABLE_STATS`命令。 #### 48. 启动Session级别的TRACE - 使用`ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12'`命令。 #### 49. IMPORT与SQL*LOADER的区别 - **IMPORT**:用于导入整个数据库或模式。 - **SQL*LOADER**:用于加载数据到现有的表中。 #### 50. 用于网络连接的文件 - `tnsnames.ora`:定义连接信息。 - `listener.ora`:配置监听器。 #### 51. 数据库切换日志时检查点的意义 - 检查点确保所有未提交的事务被写入到磁盘。 - 有助于提高故障恢复的速度。 #### 52. 表空间管理方式及其优劣 - **自动扩展**:自动调整数据文件大小,易于管理。 - **手动管理**:手动分配空间,更加灵活但需要更多管理。 #### 53. 本地索引与全局索引的差别 - **本地索引**:与表关联紧密,适用于分区表。 - **全局索引**:独立于表,适用于非分区表。 #### 54. B-Tree索引与表的大小比较 - 由于索引只包含键值和指向数据行的指针,因此通常比表小。 - 但如果索引列的基数较低,则索引可能更大。 #### 55. 9i DataGuard的模式及其差别 - **Physical Standby**:实时复制主数据库的所有变化。 - **Logical Standby**:可以应用SQL语句而不是物理变化。 #### 56. 执行计划及其查看方式 - 执行计划展示了查询如何被执行。 - 使用`EXPLAIN PLAN`或`DBMS_XPLAN.DISPLAY`查看执行计划。 #### 57. Nest Loop与Hash Join的差别 - **Nest Loop**:通过嵌套循环的方式进行连接。 - **Hash Join**:通过构建哈希表进行连接。 #### 58. DB File Sequential Read与DB File Scattered Read的区别 - **DB File Sequential Read**:顺序读取文件中的数据块。 - **DB File Scattered Read**:随机读取文件中的数据块。 #### 59. Library Cache Pin与Library Cache Lock等待事件 - 表示共享池中对象被锁定或挂起的状态。 - 可能指示并发问题或资源竞争。 #### 60. 修改普通索引为唯一约束的具体步骤 - 创建一个新的唯一索引。 - 禁用旧索引。 - 删除旧索引。 - 将新索引重命名为旧索引名。 - 启用新索引。 #### 61. Linux上Oracle数据库系统变慢的原因查找 - 使用`top`、`vmstat`等工具监控系统资源。 - 使用`AWR`报告分析性能瓶颈。 #### 62. RAID5与RAID01/10的理解 - **RAID5**:提供数据冗余和读取性能提升。 - **RAID01**:先条带化再镜像,提供更高的性能和冗余。 - **RAID10**:先镜像再条带化,适合读写密集型应用。 #### 63. Oracle 10g的新特性 - **Automatic Storage Management (ASM)**:自动存储管理。 - **Data Guard Broker**:简化Data Guard管理。 - **Database Resource Manager**:资源管理。 - **Database Replay**:性能诊断工具。 - **Real Application Clusters (RAC)**:高可用性。 #### 64. 查询表中一个FID对应多个不同的FNO的记录 - 使用`GROUP BY FID`和`HAVING COUNT(DISTINCT FNO) > 1`进行筛选。 这些知识点涵盖了从基础概念到高级特性的广泛内容,对于准备SQL和Oracle面试的人来说非常有用。
剩余10页未读,继续阅读
- szluojie2013-07-31还可以,找些有用的
- 青岛欢迎您2013-01-17还可以,找出自己有用的就行了
- DataGPT2014-02-25非常不错的资料
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip