oracle的体系结构
一、11g “g” :stands for Grid
Oracle 8i 9i (internet) – Oracle 10g 11g (grid) – Oracle 12c 13c 18c (cloud);
i – 就是internet了;
grid – 格子,放在计算机专业词汇里面就是网格计算
–网格计算就是统一的把网络上各计算机的各种资源整合起来,虚拟成一个大的资源池,根据各种的请求动态的分配计算机资源,消除资源的冗余以及资源利用程度不够的现象,达到申请与分配的均衡点;
c – 就是cloud的云计算;
oracle ’ s grid infrastructure:
-low cost :低成本
-high quality of service :高素质的服务
-Easy to manage :易于管理
connecting to a server(链接到服务器)
客户(Client)-----中间层(Middle tier)--------服务器(Server)
Connecting to the Databace Instance(链接到datebace实例):
–链接: 用户进程和实例之间的通信;
–会话: 用户通过用户进程与实例的特定连接;
二、什么是oracle数据库:
1.Oracle DataBase是一款关系型数据库管理系统(RDBMS),同类的产品还有Mysql,SQLServer等。
2.我们会把那个承载我们核心数据的系统笼统地成为数据库服务器。
3.严格意义上来讲Oracle DataBase是由两个部分组成;
instance + database = database server
三、什么是oracle server:
Oracle 服务器:
1.Oracle服务器:是一个数据库管理系统,为信息管理提供一个开放、全面、集成的方法。
2.由Oracle实例和Oracle数据库组成
实例 + 数据库 = oracle database server
oracle instance:一组后台进程和内存结构
oracle database:存放在操作系统上的物理文件
主要组件概述:
oracle instance:一组后台进程和内存结构;
oracle database:存放在操作系统上的物理文件;
四、Database:
oracle 数据库:
– 作为一个单数处理的数据集合
– 由三种文件类型组成
Control files(控制文件) Data file(数据文件) Online redo log files(日志文件)
五、data file:
– Oracle数据库中的表空间有一个或多个物理数据文件组成。数据文件只能与一个表空间和一个数据库相关联;
– Oracle数据库通过分配指定的数量的磁盘空间和文件头所需的开销,为表空间创建一个数据文件。如果文件很大,这个过程可能会花费大量的时间。任何数据库中的第一个表空间总是system表空间,因此Oracle数据库在创建数据时自动为sysytem表空间分配,数据库的第一个数据文件。
六、Control File
– 数据库控制文件是数据库启动和成功操作所必须的一个小型二进制文件。在数据库使用过程中,Oracle数据库会不断更新控制文件,因此无论何时打开数据库,它都必须能够用于编写。如果由于某种原因控制文件不可访问,那么数据库就不能正常运行;
– 每个控制文件只能与一个oracle数据库相关联;
– 控制文件包含有关实例访问所需的关联数据库的信息,这些信息在启动时和正常操作时都需要。控制文件信息只能通过oracle数据库修改;没有数据库管理员或用户可以编辑控件文件。
alter database backup controlfile to trace as ‘/u01/ctl01.bak’;
七、Redo Log File
– REDO条目(redo entries)记录sql语句本身
– 以及执行后对数据库中某个文件某个块做的修改。包括DML、DDL操作;
查看数据文件、控制文件、日志文件
col name for a50 修改字段显示长度
select name from vcontrolfile
union all
SELECT member FROM v$logfile;
[aaa@qq.com ~]$ cd /u01/app/oracle/oradata/oradb/
[aaa@qq.com ~]$ ls -l
total 2164612
-rw-r----- 1 oracle oinstall 9748480 Nov 30 06:55 control01.ctl
-rw-r----- 1 oracle oinstall 9748480 Nov 30 06:55 control02.ctl
-rw-r----- 1 oracle oinstall 52429312 Nov 30 06:55 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Nov 28 23:00 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Nov 29 22:00 redo03.log
-rw-r----- 1 oracle oinstall 629153792 Nov 30 06:50 sysaux01.dbf
-rw-r----- 1 oracle oinstall 734011392 Nov 30 06:51 system01.dbf
-rw-r----- 1 oracle oinstall 61874176 Nov 29 22:00 temp01.dbf
-rw-r----- 1 oracle oinstall 655368192 Nov 30 06:51 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Nov 29 22:10 users01.dbf
后面带dbf的都是数据库文件
八、instance
instance = SGA + background processes
[aaa@qq.com oradb]$ ps -ef | grep ora_
oracle 3195 1 0 06:51 ? 00:00:00 ora_w000_oradb
oracle 18511 1 0 Nov28 ? 00:00:16 ora_pmon_oradb
oracle 18515 1 0 Nov28 ? 00:00:26 ora_psp0_oradb
oracle 18519 1 1 Nov28 ? 00:36:55 ora_vktm_oradb
oracle 18525 1 0 Nov28 ? 00:00:04 ora_gen0_oradb
oracle 18529 1 0 Nov28 ? 00:00:07 ora_diag_oradb
oracle 18533 1 0 Nov28 ? 00:00:06 ora_dbrm_oradb
oracle 18537 1 0 Nov28 ? 00:00:47 ora_dia0_oradb
oracle 18541 1 0 Nov28 ? 00:00:03 ora_mman_oradb
oracle 18545 1 0 Nov28 ? 00:00:07 ora_dbw0_oradb
oracle 18549 1 0 Nov28 ? 00:00:07 ora_lgwr_oradb
oracle 18553 1 0 Nov28 ? 00:00:24 ora_ckpt_oradb
oracle 18557 1 0 Nov28 ? 00:00:06 ora_smon_oradb
oracle 18561 1 0 Nov28 ? 00:00:02 ora_reco_oradb
oracle 18565 1 0 Nov28 ? 00:00:24 ora_mmon_oradb
oracle 18569 1 0 Nov28 ? 00:00:43 ora_mmnl_oradb
oracle 18573 1 0 Nov28 ? 00:00:01 ora_d000_oradb
oracle 18577 1 0 Nov28 ? 00:00:01 ora_s000_oradb
oracle 18596 1 0 Nov28 ? 00:00:01 ora_qmnc_oradb
oracle 18621 1 0 Nov28 ? 00:00:18 ora_cjq0_oradb
oracle 18645 1 0 Nov28 ? 00:00:01 ora_q000_oradb
oracle 18649 1 0 Nov28 ? 00:00:01 ora_q001_oradb
oracle 18676 1 0 Nov28 ? 00:00:04 ora_smco_oradb
九、Database Structures
Memory:内存
Process:过程
Storage:存储
十、Memory Structures
– oracle memory= SGA + PGA
– SGA:system global area 系统全局区
共享的:所有server process 和 background process共享
– PGA:program global area 程序全局区
私有的:每一个server process 和background process拥有自己
的pga;
SQL> show parameter memory —- 查看分配给数据库的内存⼤⼩
NAME TYPE VALUE
hi_shared_memory_address integer 0
memory_max_target big integer 800M
memory_target big integer 800M
shared_memory_address integer 0
SQL> show parameter sga_ —- 查看数据库中分配给SGA的⼤⼩
NAME TYPE VALUE
sga_max_size big integer 800M
sga_target big integer 0
SQL> !free -m —-查看当前系统物理内存⼤⼩
total used free shared buffers cached
Mem: 2002 1936 65 0 177 1344
-/+ buffers/cache: 414 1587
Swap: 3999 81 3918
--10g sga_target 设置具体值,开启共享内存⾃动管理 ASMM(SGA)
sga_target : SGA 可动态调整的尺⼨
sga_max_size : SGA 最⼤值
pga_aggregate_target : PGA 累计的最⼤值
-- 11g memory_target:设置具体值,开启内存⾃动管理 AMM(SGA 和 PGA ⾃动管
理)。
memory_target : 内存可动态调整的尺⼨ sga_target + pga_aggregate_target
memory_max_target :oracle 服务器可使⽤最⼤内存⼤⼩(SGA+PGA)
十一、SGA Global Area 系统全局区
SGA 6 个基本组件:
– shared pool
– database buffer cahe
– redo log buffer
– large pool
– java pool
– streams pool
十二、SGA
SGA是一组共享内存结构,称为SGA组件,它包含一个oracle数据库实例的数据和控制信息、SGA由所有服务器和后台进程共享。存储在SGA中的数据示例包括缓存的数据块和共享的sql区域。
十三、Database buffer cache
– 存储从数据填充中检索到的数据块的副本
– 当您获取和更新数据时,可以获得巨大的性能收益
– 通过LRU算法管理
– DB块大小决定主块大小
缓存数据:
用于缓存从磁盘数据文件中读入的数据块,为所有用户共享。
服务器进程(server process)负责将数据文件的数据从磁盘读入到数据缓冲区中,当后续的请求需要这些数据时,如果内存中找到,则不需要再从磁盘读取。
延迟写数据文件:
对数据的修改在内存缓冲区中进行,减少写磁盘的次数,提高I/O能力。数据缓冲区中被修改的数据块(脏块 dirty block)由后台进程 DBWR 将其写入磁盘。
数据缓冲区的大小对数据库的读取速度有直接的影响。
LRU list least recently used LRU-W list(write lise / dirty list)
十四、Database Buffer Cache的组成
– Buffer Cache有两个管理列表:写列表和最近最少使用的(LRU)列表。
– Buffer Cache 中的内存缓冲区分成三部分:
1.free buffer 空闲缓冲区不包含任何有用的数据,数据库可以重用他们保存从磁盘读取新的数据
2.dirty buffer 脏缓冲区,包含已修改但是尚未写到磁盘的数据;
3.pinner buffer 钉住/保留缓冲区,是用户会话当前正在**使用的数据缓冲区;
十五、数据缓冲区缓冲默认值
Buffer pool = default pool + nodefault pool
default pool 参数:db_cache_size :
– 一个标准块存放的内存空间大小
– SGA 自动管理时此参数 不用设置 使用
– LRU 算法清理空间
– 标准块大小( 默认 8k)
十六、数据缓冲区非缓冲默认值:
nodefault pool:参数
– db_nk_cache_size
指定非标准块大小内存空间,2k、4k、16k、32k
–db_keep_cache_size
keep pool 存放经常访问的⼩表或索引等
– db_recycle_cache_size
使⽤后⽴即将数据从缓存中删除。⽤来存放偶尔做全表扫描的大表的数据。
没有分配keep和recycle 那么,任何数据库对象都将分配给默认缓
冲区,该值的size根据DB_CACHE_SIZE初始化参数的值⽽定。