### Oracle DBA 学习笔记知识点总结
#### 一、Oracle 数据库文件结构
Oracle 数据库的核心组成部分包括数据文件(datafiles)、重做日志文件(redolog files)以及控制文件(control files)。这些文件共同构成了数据库的基础架构,并且对于数据库的正常运行至关重要。
- **数据文件(Datafiles)**:存储实际用户数据的地方,每个表空间至少包含一个数据文件。数据文件是固定大小的,但是可以随着表空间的增长而扩展。
- **重做日志文件(Redo Log Files)**:记录所有对数据库进行更改的操作,用于恢复操作,在数据库崩溃时可以用来恢复未提交的数据修改。
- **控制文件(Control Files)**:包含有关数据库物理结构的信息,如数据文件的位置、重做日志文件的位置等,是数据库启动和运行所必需的文件。
#### 二、Oracle 数据库文件特性
1. **单个文件只能属于一个表空间**:这意味着每个数据文件只能被分配到一个特定的表空间中,不能跨表空间使用。
2. **数据文件增长**:当表空间中的数据增加时,其对应的数据文件会自动扩展到预定义的最大值。
3. **数据文件与表空间的关系**:一个表空间可以由多个数据文件组成,但是一个数据文件只能属于一个表空间。
#### 三、Oracle 实例管理
- **重做日志文件**:在每次修改数据库时,Oracle 都会将这些修改记录到重做日志文件中,以备不时之需。这些文件对于数据库的完整性和一致性至关重要。
- **数据库写入进程 (DBWn)**:负责将缓冲区内的数据写回到磁盘上的数据文件中,确保数据的一致性。
- **Oracle 实例**:包括系统全局区 (SGA) 和程序全局区 (PGA),是运行时的内存结构,用于缓存数据和执行各种操作。
#### 四、系统全局区 (SGA) 和程序全局区 (PGA)
- **系统全局区 (SGA)**:共享内存区域,所有的服务器进程都可以访问。它主要包括数据库缓冲区高速缓存、共享池、重做日志缓冲区等。
- **数据库缓冲区高速缓存**:用于缓存数据文件中的数据,提高数据读取速度。
- **共享池**:保存最近执行过的 SQL 语句及其解析树和执行计划,减少重新解析的时间。
- **重做日志缓冲区**:临时存储重做日志信息,直到它们被写入重做日志文件。
- **程序全局区 (PGA)**:为每个服务器进程分配的私有内存区域,存储了该进程的私有数据和控制信息。
#### 五、Oracle 用户和安全
- **认证 (Authentication)**:验证用户的身份,确保只有合法用户才能登录到系统中。
- **授权 (Authorization)**:定义用户能够访问哪些资源或执行哪些操作。
- **审计 (Auditing)**:记录用户的活动,以便于跟踪和审查操作行为。
- **角色 (Roles)**:一组权限的集合,可以方便地管理和分配给不同的用户。
- **策略 (Policies)**:定义了一组规则,用于控制数据库的安全策略。
#### 六、约束条件
- **非空 (Not Null)**:确保列中的值不能为空。
- **唯一 (Unique Key)**:确保列中的值具有唯一性,但允许有空值存在。
- **主键 (Primary Key)**:作为表的唯一标识符,确保列中的值具有唯一性并且不能为空。
- **外键 (Foreign Key)**:用于建立表之间的关系,必须引用另一个表的主键或唯一键。
- **检查 (Check)**:定义一个表达式来限制列的值。
#### 七、SQL 语言分类
- **数据定义语言 (DDL)**:用于创建、修改或删除数据库对象,例如创建表、索引等。
- **数据操纵语言 (DML)**:用于添加、修改或删除数据库中的数据。
- **事务控制语言 (TCL)**:用于管理事务的开始、提交或回滚。
- **会话控制语言 (Session Control)**:用于设置会话参数或切换角色等。
- **系统控制语言 (System Control)**:用于系统级的操作,例如调整系统参数等。
- **嵌入式 SQL (Embedded SQL)**:用于在其他编程语言中编写 SQL 语句。
#### 八、Oracle 的实例与数据库的关系
- **Oracle 实例**:包括后台进程和内存结构,是运行时的组件。
- **Oracle 数据库**:包括数据文件、重做日志文件、控制文件等,是存储数据的物理结构。
以上是对“Oracle DBA Study”文档标题和描述中所述知识点的详细说明。通过这些知识点的学习,我们能够更好地理解Oracle数据库的基本结构和管理工作,从而有效地管理和维护Oracle数据库系统。