【Oracle DBA 笔试题详解】
1. **pctused 和 pctfree**
pctused 和 pctfree 是Oracle数据库中用于控制数据块空间管理的两个重要参数。pctused 设定了一个阈值,当数据块中的自由空间小于这个百分比时,该数据块将从自由链表(freelist)中移除。而pctfree则规定了数据块应预留多少空间供后续的UPDATE操作使用。当数据块因DML操作导致自由空间超过pctused设置的值时,该块会被重新加入到freelist中。
2. **table/segment/extent/block 关系**
在Oracle数据库中,table(表)创建时会自动创建一个data segment(数据段)。数据段由一系列的extent(扩展区)组成,每个extent又包含了一定数量的block(数据块)。这种层次结构使得数据库能够高效地管理和存储数据。
3. **tablespace 和 datafile 关系**
表空间(tablespace)是逻辑存储单元,可以包含一个或多个数据文件(datafile)。数据文件是数据库实际存储数据的物理单位,它们只能属于一个表空间。表中的数据通过哈希算法分散在各个数据文件中,表空间提供了逻辑上的数据组织,而数据文件负责实际的存储。
4. **本地管理表空间和字典管理表空间**
- 本地管理表空间(LMT)自Oracle 8i开始引入,使用位图来管理空间,简化了空间分配和回收过程。
- 字典管理表空间(DMT)是传统的管理方式,依赖数据字典记录空间使用情况。LMT通常比DMT更高效,因为它减少了对数据字典的访问。
- 动态段空间管理(ASSM)是Oracle 9i引入的新特性,使用位图代替链接列表管理自由空间,提高了空间管理效率,创建的段被称为Bitmap Managed Segments(BMB段)。
5. **回滚段的作用**
回滚段(rollback segment)是Oracle用来实现事务回滚和读一致性的关键组件。它们保存了事务修改前的数据状态,以便在事务回滚时恢复原始数据,同时保证在并发环境中,其他会话不会看到未提交的修改,确保了读一致性。
6. **日志的作用**
日志是保证数据库一致性和安全性的核心组件,包括重做日志文件(redo log files)和归档日志文件(archive log files)。重做日志记录所有事务的更改,用于在故障发生后恢复数据。归档日志是重做日志的备份,对介质故障恢复至关重要。
7. **SGA(System Global Area)组件及其作用**
SGA是Oracle数据库中的一片共享内存区域,主要包括:
- 数据缓存(db_cache,Block Buffer):缓存最近访问的数据块,使用LRU算法,减少对磁盘的I/O,提升性能。
- 共享池(shared_pool):存储数据字典高速缓冲和已解析的SQL语句,减少解析开销,提高系统响应速度。
- 大型池(large_pool):主要用于RMAN备份、Oracle JServer和大对象(LOB)操作。
- Java池(java_pool):为Oracle的Java子系统提供内存,支持数据库内的Java应用程序运行。
以上是针对阿里巴巴校园招聘Oracle DBA笔试题的一些核心知识点详解,涵盖了Oracle数据库空间管理、事务处理、日志系统和内存架构等重要概念。这些知识对于理解Oracle数据库的工作原理以及DBA日常运维至关重要。