服务器由数据库、数据库实例管理和数据库的各种软件工具(比如sqlplus 、OEM 等)
(1)数据库实例——内存结构与后台进程的集合

SGA与PGA可以理解为不同权限的文件夹,SGA理解为共享文件夹,在同一局域网下用户均可访问修改;PGA可以理解为私有文件夹,为某个用户所私有而不能被其他用户所使用
共享池——存储最近执行的SQL语句与最近使用的数据字典的数据
数据缓冲区——用来存储最近从数据文件中读写过的数据
日志缓冲区——记录服务或后台对数据库的操作
java池——用来存储java代码(非普通java代码而是可以转换为sql语句的JAVA代码)
stream池——流技术
large池——用来存储不与SQL直接相关的大型内存结构。备份、恢复使用
进程结构

--登录sys用户或 /
select * from v$process where program like '%DBW%';
(2)数据库——存储数据的集合(“有什么东西[数据文件]、干了什么事等[日志文件等]、其他两个文件信息以及状态等[控制文件]”)

(1)表空间——最大逻辑单位
(2)段——构成表空间的逻辑存储结构,段由一组区组成
(3)区——段分配空间,由连续数据块组成
(4)数据块——Oracle服务器所能分配、读取或写入的最小存储空间
(5)模式——用户所创建的数据库对象的总称呼,可简单将一个用户理解为一个模式
(1)数据文件——存储数据库数据
(2)控制文件——记录数据库物理结构的二进制文件
(3)在线日志文件——对数据库的所有修改信息,用于故障恢复
上述3条为主要物理文件,丢失后不能继续运行,需要介质恢复即运行必须文件
(4)参数文件
(5)密码文件
(6)告警和跟踪文件
(7)归档日志文件
(8)备份文件
上述5条为非主要物理文件,丢失后仍可以运行即非必须运行文件

启动 Oracle 数据库服务器实际上是在服务器的内存中创建一个 Oracle 实例,然后用这个实例来访问和控制磁盘中的数据文件。当用户连接到数据库时,实际上连接的是数据库的实例,然后由实例负责与数据库进行通信,最后将处理结果返回给用户。
举个例子吧:
编写sql命令(select * from emp;),服务器进程进行响应,在内存区域中进行是否存在该语句,语法分析,执行等,拿出查询到的数据,将查询信息写入日志文件,将执行sql结果返回客户端;
当第二次运行该命令时,共享池中存在该条sql语句相关命令,其会直接从内存取数据而不会从硬盘拿数据,提高性能
oracle11g中的新的内存管理特性自动化内存管理(automatic memory management即AMM)。在该新特性之下SGA与PGA将会根据需要自动的扩展与收缩。
首先确保初始化参数statistics_level为typical或all,才能使用该功能
--确保sga_target和pga_aggregate_target的值应该设置成0。(管理员账户登录)
SHOW PARAMETERS target

修改命令如下图所示(具体大小设置不再详细解释):
