### Oracle学习笔记知识点详解
#### 一、Oracle内存结构
Oracle数据库在运行时会占用大量内存,这些内存被划分为不同的区域,每种区域都服务于特定的目的。
##### 1. SGA (System Global Area)
SGA是Oracle实例共享的所有用户进程和服务器进程之间共享的一组内存结构。它包括以下主要组成部分:
- **Shared Pool**:存储共享SQL区和PL/SQL区。
- **Library Cache**:
- **Share SQL**:SQL语句及其执行计划。
- **Share PL/SQL**:PL/SQL代码块及其执行计划。
- **Data Dictionary Cache**:数据库对象定义和系统信息的缓存。
- **Database Buffer Cache**:用于缓存数据块,提高读取效率。
- **IMMUTABLE BLOCKS**:不可更改的数据块。
- **MODIFIED BLOCKS**:已修改但未写回磁盘的数据块。
- **DEFAULT BLOCK SIZE**:默认数据块大小(例如8KB)。
- **Redo Log Buffer Cache**:用于缓存重做日志记录,当事务提交时,将缓冲区中的重做日志写入重做日志文件。
- **Large Pool**:用于存放大型内存分配,如RMAN备份和恢复操作。
- **Java Pool**:用于存放Java应用程序的内存。
##### 2. PGA (Program Global Area)
PGA是为每个服务器进程分配的私有内存空间,用于存储特定于会话的数据和控制信息。
#### 二、Oracle进程结构
Oracle实例由多个进程组成,这些进程负责处理各种任务。
##### 1. User Process
用户进程是由客户端发起的应用程序进程,通过网络连接到Oracle服务器。
##### 2. Server Process
服务器进程是与用户进程通信的Oracle后台进程,负责执行SQL语句并返回结果集。
##### 3. Background Processes
后台进程执行关键的系统任务,包括但不限于:
- **DBWR (Database Writer)**:将脏数据块从数据库缓冲区高速缓存写入数据文件。
- **PMON (Process Monitor)**:清理失败的进程资源。
- **CKPT (Checkpoint)**:执行检查点操作,确保重做日志文件与数据文件同步。
- **LGWR (Log Writer)**:将重做日志缓冲区中的内容写入重做日志文件。
- **SMON (System Monitor)**:执行定期维护任务,如合并表空间碎片。
- **ARCN (Archiver)**:归档已满的重做日志文件。
#### 三、Oracle逻辑结构
Oracle数据库具有层次化的逻辑结构,从最高级别的数据库到具体的物理数据块。
1. **一个Oracle Server对应一个Database**:每个Oracle服务器实例对应一个数据库实例。
2. **Database包含Tablespaces**:数据库由一个或多个表空间组成。
3. **Tablespaces包含Segments**:表空间由一个或多个段组成,如数据段、索引段等。
4. **Segments包含Extents**:段由一个或多个扩展区组成。
5. **Extents包含Blocks**:扩展区由一个或多个数据块组成,默认大小通常是8KB。
#### 四、SQL语言
SQL语言是Oracle数据库的核心,用于管理数据和执行查询。了解基本的SQL语句和概念对于使用Oracle至关重要。
#### 五、Oracle工具
Oracle提供了多种工具来帮助管理和维护数据库环境。
1. **OUI (Oracle Universal Installer)**:用于安装Oracle软件的统一安装程序。
2. **DBCA (Database Configuration Assistant)**:配置新数据库或修改现有数据库的向导式工具。
3. **SQL\*Plus**:Oracle的标准命令行工具,用于执行SQL语句。
4. **Oracle Enterprise Manager (OEM)**:图形化管理工具,用于监控和管理Oracle环境。
5. **Oracle Net Manager**:用于配置网络连接参数。
6. **Database Upgrade Assistant**:帮助升级旧版本数据库到新版本。
7. **Recovery Manager (RMAN)**:用于备份和恢复数据库。
8. **Oracle Secure Backup**:提供安全的数据备份和恢复解决方案。
9. **Data Pump**:用于快速导入和导出数据。
10. **SQL\*Loader**:批量加载数据到数据库。
#### 六、初始化参数文件
初始化参数文件用于控制Oracle实例的启动和运行方式。
1. **PFILE (Parameter File)**:
- **静态参数文件**:文本格式,不可在运行时修改。
- 存储位置:`$ORACLE_HOME/databases/`
- 文件名格式:`init<SID>.ora`,其中`<SID>`是Oracle SID。
- 参数示例:`ORACLE_BASE`、`ORACLE_HOME`、`ORACLE_SID`等。
- 通过`DBCA`自动创建SPFILE后,PFILE通常不再使用。
2. **SPFILE (Server Parameter File)**:
- **持久性服务器参数文件**:二进制格式,允许动态修改部分参数。
- 可以通过`ALTER SYSTEM`命令进行修改,并立即生效。
- 创建SPFILE的命令示例:`create spfile='.../spfileDBA01.ora' from pfile='.../initDBA01.ora';`
#### 七、Oracle权限管理
Oracle的安全模型包括了用户账号、角色和权限等多个方面。
1. **SYS**和**SYSTEM**账户:默认管理员账户,拥有最高的权限。
- **SYS**:具有完整的DBA权限,可进行所有数据库管理任务。
- **SYSTEM**:通常没有DBA权限,可用于日常管理操作。
2. **SQL\*Plus**:强大的命令行工具,支持执行复杂的SQL命令和脚本。
#### 八、Oracle企业管理器 (OEM)
OEM是Oracle提供的一种图形化管理工具,可以远程监控和管理Oracle数据库集群。
1. **功能**:
- 监控数据库性能和健康状况。
- 配置和管理数据库。
- 执行备份和恢复操作。
2. **架构**:
- **Oracle Management Repository**:存储管理元数据的数据库。
- **Oracle Management Service**:提供管理服务的中间层。
- **Agent**:部署在目标系统上,收集和发送数据。
#### 九、总结
以上概述了Oracle数据库的一些基础概念和技术要点。Oracle的学习之路漫长而复杂,掌握这些基础知识只是开始。深入理解这些概念并结合实际应用经验,才能更好地利用Oracle的强大功能。