1.认识oracle数据库
oracle database是一款数据类型数据库管理系统,从严格意义上来讲oracle database是由两部分组成:
instance +database = database server
oracle instance:一组后台进程和内存结构
oracledatabase :存放在操作系统上的物理文件
2.data file
1.oracle数据库中的表空间由一个或多个物理数据文件组成,数据文件只能与一个表空间和一个数据库相关联。
2.oracle 数据库通过指定数量的磁盘空间和文件头所需的开销,为表空间创建一个数据文件,如果文件太大,这个过程可能会花费大量的时间,任何数据库中的第一个表空间是system表空间,因此oracle数据库在创建数据库时自动为syst表空间分配,数据库的第一个数据文件。
3.conrol file
1.数据库控制文件是数据库启动和成功操作所必需的一个小型二进制文件。
2.每个控制文件只能与一个oracle数据库相关联
3.控制文件包含有相关实例访问所需的关联数据库的信息,这些信息在启动时和正常操作时都需要,控制信息只能通过oracle数据库进行修改,没有数据库管理员或用户可以编辑控制文件。
4.redo log file
1.redo条目记录sql语句本身
2.以及执行后对数据库中某个文件某个快的修改。包括DML,DDL操作。
5.instance的结构
instance=SGA+background processes
上面说instance是由一组后台进程和内存结构构成,
SGA:内存结构
background processes:后台进程
6.database structures(数据库结构)
1.memory structures
oraclememory=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 804M
memory_target big integer 804M
shared_memory_address integer 0
查看数据库中分配给sga 的大小
SQL> show parameter sga_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 804M
sga_target big integer 0
查看当前物理内存大小
SQL> !free -m
total used free shared buffers cached
Mem: 2006 450 1556 0 25 236
-/+ buffers/cache: 188 1818
Swap: 4031 260 3771
7.SGA Global Area 系统全局区
SGA是一组共享内存结构,称为SGA组件,他包含一个orcale数据库实例的数据和控制信息。sga由所有服务器和后台进程共享,存储在 SGA的数据示例包括缓存的数据块和共享的sql区域。
1.database buffer cache
2.database buffer cache 的作用
1).用于缓存磁盘数据文件中读入的数据块,为所有用户共享。服务进程负责将数据文件的数据从磁盘读入到数据缓冲区中,当后续请求需要这些数据时,如果在内存中找到,则不需要再从磁盘中读取。
2)对数据的修改在内存缓冲区进行,减少写磁盘的次数,提高i/o能力,数据缓冲区中被修改的数据块(脏块)由后台进程dbwr将其写入磁盘。
缓冲区的大小对数据库的读取速度有直接的影响。
3.database buffer cache 的组成
buffer cache 有两个列表:写列表和最近使用最少的列表(lru)
buffer cahe中的内存缓冲区分成是三个部分
1).free buffer 空闲缓冲区不包含任何数据,数据库用它们从磁盘读取新的数据
2).dirty buffer 脏缓冲区,包含已修改但尚未写到磁盘的数据
3).pinned buffer 钉住/保留缓冲区,是用户会话当前正在激活使用的数据缓冲区。
3.buffer cache ——default pool
default pool 是由default pool 和nodefault pool构成。
1),default pool 的参数:db_cache_size
• 一个标准块存放的内存空间大小
• SGA 自动管理时此参数 不用设置,使用
• LRU 算法清理空间
• 标准块大小(默认 8K)
2),nodefault pool
db_nk_cache_size
指定非标准块大小内存空间,2k.4k 16k 32k
db_keep_cache_size
keep pool 存放经常访问的小表或索引等
db_recycle_cache_size
使用后立即将数据从缓冲中删除,用来偶尔做全表扫描的大表数据。
3)如需使用非标准块那么需要进行以下配置
·在buffercache 中为需要使用的非标准块配置相应的非标准高速缓存
·创建非标准块尺寸的表空间。
·将相应数据保存在非标准块存储空间上 create table xxx tablespace tbs_32;
使用db_nk_cache_size
SQL> show parameter cache
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
client_result_cache_lag big integer 3000
client_result_cache_size big integer 0
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
db_cache_advice string ON
db_cache_size big integer 0
db_flash_cache_file string
db_flash_cache_size big integer 0
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_keep_cache_size big integer 0
db_recycle_cache_size big integer 0
object_cache_max_size_percent integer 10
object_cache_optimal_size integer 102400
result_cache_max_result integer 5
result_cache_max_size big integer 2080K
result_cache_mode string MANUAL
result_cache_remote_expiration integer 0
session_cached_cursors integer 50
8.命中率
1.缓冲区读取操作比磁盘读取的快的多
2.命中率是测量用户从buffer cache 中访问到所需数据的百分比,不包括请求冲磁盘读所需数据。
3.命中率=(1-(物理读)/(逻辑读))*100
物理读:从磁盘中读取数据
逻辑读:从内存中读取数据