oracle服务器由数据库和实例组成,实例由内存和一组进程组成。数据库则由一系列屋里文件组成,用户通过实例访问数据库,一般情况下一个实例对应一个数据库,但在特殊情况下并非一一对应,如实时应用集群的并行系统中,一个数据库对应多个实例。
实例又称为数据库服务器,由sga系统全局区和一组后台进程组成,并被所有用户共享
sga用于存放最近常从数据库中查询的数据和一些数据库控制信息,sga主要包括共享池,数据缓冲区和日志缓冲区。
进程时指在系统中能独立运行并作为资源分配的基本单位。实例时oracle数据库的核心,数据库的存取和控制都由实例来完成。
数据库即存在磁盘上的屋里文件,包括数据文件,日志文件,控制文件,数据库安装完后,通过文件系统可访问到这些屋里文件。这些物理文件时数据库的载体,数据库中的所有数据都在这些物理文件中。
事务:是包含一个或多个sql语句的逻辑工作单元。事务中的sql语句可以全部提交或全部回滚。可以将事务理解为与oracle服务器的一次交互。可分为:读写事务,只读事务,离散事务(改进数据库性能,在离散事务中将一些耗时的操作集中起来一起执行)
dml语句用于对表数据的操作(select,insert,update,delete)。ddl语句指一些创建,修改,删除,数据库对象的语言(create,alter,drop)。dcl语句:用于控制用户对数据库的访问(grant,revoke,setrole).
oracle的结构规划:内部存储结构,进程结构,物理结构,逻辑结构。
oracle的内存结构:sga,pga(程序全局区)重做日志缓冲区,大池,java池等。
sga是数据库所有用户共享的存储区,它在实例启动时分配,关闭时收回。在调整sga各缓冲大小时,必须低于sga_max_size的值。数据库实例一直会监视sga内存的使用。实例会用内部视图和一些统计数据来决定如何给各个组件分配最优内存。当sga内存需求变化时,数据库会根据一定的算法,考虑当前和长远的需求来重新分配内存。
sga区有一部分需要手动调整,有keep/recycle缓冲区db_keep_cache_size,db_recycle_cache_size.
数据库缓冲区是sga中的一个高速缓冲区域,db_block_buffers=db_block_size*db_block_buffer
有3种类型dirty buffer已经被修改需要写回的数据块,pinned buffers正在被访问的数据块,free buffers空闲数据块。