《Oracle实例、归档模式与数据库介绍》由会员分享,可在线阅读,更多相关《Oracle实例、归档模式与数据库介绍(67页珍藏版)》请在金锄头文库上搜索。
1、第一课体系结构 作者 吴进 深圳ITjob就业培训中心 长期开设java C net 嵌入式 手游开发 数据库 软件测试等课程 为深圳计算机行业协会培养和输送人才 数据库资料索取方式 QQ 6052708440755 25630755 学习目标 数据库简介 实现数据库管理的软件叫DBMS 1 RDBMS 关系型数据库 2 ORDBMS 对象型关系数据库 在原来的RDBMS的基础上加入了对象的概念 如现在的Oracles10g Oracle10g不是一个简单的数据库软件 它是一个平台 如 JAVA开发和 NET开发 1 对内存的最低要求是256M 推荐为512M2 选择基本安装进行傻瓜式安装 O
2、racle10g安装 Oracle10g的服务 启动Server 几个主要的服务 OracleServicexxx SID 必开 Oracle服务器服务进程的开启 关闭 OracleOraDb10g home1TNSListener 必开 Oracle网络服务监听程序服务 当需通过网络连接Oracle服务器或访问OracleEnterpriseManager10g时需启动 OracleServer的启动 启动Server 几个主要的服务 OracleOraDb10g home1iSQL Plus运行iSQL Plus工具时需开启的服务OracleDBConsoleorcl1访问OracleEn
3、terpriseManager时需开启的服务 OracleServer的启动 EntepriseManager10gDatabaseControlURL http computer 5500 emiSQL PlusURL http computer 5560 isqlplus Oracle10g的B S工具 SQL Plus在Oracle安装的路径下可以找到该工具登陆界面如下 客户端连接工具 单机版 iSQL Plus首先要启动服务然后在浏览器里输入http localhost 5560 isqlplus进入登陆页面 客户端连接工具 浏览器版 Dos窗口操作Oracle从开始 点击运行 客户端
4、连接工具 DOS版 在Dos窗口里输入sqlplusname pass 如下图所示 客户端连接工具 DOS版 该工具的登陆界面如下 客户端连接工具 第三方版 Oracle实例 在启动数据库时 Oracle首先要在内存中获取 划分 保留各种用途的区域 运行各种用途的后台进程 即创建一个例程 instance 然后再由该例程装载 mount 打开 open 数据库 最后由这个例程来访问和控制数据库的各种物理结构 当用户连接到数据库并使用数据库时 实际上是连接到该数据库的例程 通过例程来连接 使用数据库 所以 例程是用户和数据库之间的中间层 一台计算机上可以创建多个Oracle数据库 当同时要使用这
5、些数据库时 就要创建多个例程 为了不使这些例程相混淆 每个例程都要用称为SID SystemIDentify 系统标识符 的符号来区分 即创建这些数据库时填写的数据库SID 内存结构 内存结构是Oracle数据库体系结构中最为重要的一部分 内存也是影响数据库性能的第一因素 内存的大小 速度直接影响数据库的运行速度 特别是当用户数增加时 如果内存不足 例程分配不到足够的内存 就会使有些用户连接不到数据库 或连接 查询的速度明显下降 内存结构 1 SGA 系统全局区 随着数据库实例的启动向操作系统申请分配一块内存结构 又会随着数据库实例的关闭而释放 每一个ORACLE数据库实例有且仅有一个SGA
6、2 PGA 程序全局区 用于保存每一个用户连接到数据库的信息 SGA 主要由五部分组成 1 共享池 SharedPool 2 数据库高速缓存 DatabaseBufferCache 3 重做日志缓存 RedoLogBufferCache 4 Java池 JavaPool 5 大池 LagerPool 共享池是SGA中最关键的内存片段 特别是在性能和可伸缩性上 一个太小的共享池会扼杀性能 使系统停止 太大的共享池也会有同样的效果 将会消耗大量的CPU来管理这个共享池 不正确的使用共享池只会带来灾难 共享池主要又可以分为以下两个部分 SQL语句缓冲 LibraryCache 数据字典缓冲区 Dat
7、aDictionaryCache 共享池 当一个用户提交一个SQL语句 Oracle会将这句SQL进行分析 parse 这个过程类似于编译 会耗费相对较多的时间 在分析完这个SQL Oracle会把他的分析结果给保存在Sharedpool的LibraryCache中 当数据库第二次执行该SQL时 Oracle自动跳过这个分析过程 从而减少了系统运行的时间 这也是为什么第一次运行的SQL比第二次运行的SQL要慢一点的原因 SQL语句缓冲 LibraryCache 数据字典缓冲区是ORACLE特地为数据字典准备的一块缓冲池 供ORACLE内部使用 数据字典缓冲区 DataDictionaryCac
8、he 数据库高速缓存 这些缓冲是对应所有数据文件中的一些被使用到的数据块 让他们能够在内存中进行操作 任何文件的数据块都有可能被缓冲 数据库的任何修改都在该缓冲里完成 并由DBWR进程将修改后的数据写入磁盘 重做日志缓存 重做日志文件的缓冲区 对数据库的任何修改都按顺序被记录在该缓冲 然后由LGWR进程将它写入磁盘 这些修改信息可能是DML语句 如 Insert Update Delete 或DDL语句 如 Create Alter Drop等 重做日志缓冲区的存在是因为内存到内存的操作比较内存到硬盘的速度快很多 所以重作日志缓冲区可以加快数据库的操作速度 但是考虑的数据库的一致性与可恢复性
9、数据在重做日志缓冲区中的滞留时间不会很长 所以重作日志缓冲区一般都很小 大于3M之后的重作日志缓冲区已经没有太大的实际意义 JAVA池 Java的程序区 Oracle8I以后 Oracle在内核中加入了对Java的支持 该程序缓冲区就是为Java程序保留的 如果不用Java程序没有必要改变该缓冲区的默认大小 大池 需要大内存的操作 1 数据库备份和恢复2 具有大量排序操作的SQL语句 PGA 保存每一个用户连接到数据库的信息 包括 会话信息 排序信息和游标信息 分为 排序区 会话区 游标区 堆栈区 进程结构 用户进程启动客户端连接创建一个用户进程Oracle进程服务进程解析并执行用户所提交的S
10、QL语句搜索SGA区的数据库缓存 决定何时读取数据文件将查询或执行后形成的数据返回给用户后台进程 后台进程 1 写数据DatabaseWriter DBWR 2 写日志LogWriter LGWR 3 检查点Checkpoint CKPT 4 系统监视SystemMonitor SMON 5 进程监视ProcessesMonitor PMON 6 归档Archive ARCn 7 恢复Recover RECO 8 锁管理服务LockManagerServer LMS 9 队列监视QueueMonitor QMNn 10 调度Dispatcher Dnnn 11 服务Server Snnn 写数
11、据 DBWR 将修改过的数据缓冲区的数据写入对应数据文件DBWR是一个很底层的工作进程 它批量的把缓冲区的数据写入磁盘 DBWR工作的主要条件如下超时系统中没有多的空缓冲区用来存放数据CKPT进程触发DBWR等 写日志 LGWR 将重做日志缓冲区的数据写入重做日志文件 LGWR是一个必须和前台用户进程通信的进程 当数据被修改的时候 系统会产生一个重做日志并记录在重做日志缓冲区内 LGWR工作的主要条件如下用户提交有1 3重做日志缓冲区未被写入磁盘有大于1M重做日志缓冲区未被写入磁盘超时等 检查点进程 CKPT 同步数据文件 日志文件和控制文件 由于DBWR LGWR的工作原理 造成了数据文件
12、日志文件 控制文件的不一至 这就需要CKPT进程来同步 CKPT工作的主要条件如下在日志切换的时候数据库用immediate transaction normal选项shutdown数据库的时候根据初始化文件的LOG CHECKPOINT INTERVAL LOG CHECKPOINT TIMEOUT FAST START IO TARGET的设置的数值来确定用户触发 系统监视进程 SMON 工作主要包含清除临时空间在系统启动时 完成系统实例恢复聚结空闲空间从不可用的文件中恢复事务的活动等 进程监视进程 PMON 主要用于清除失效的用户进程 释放用户进程所用的资源 如PMON将回滚未提交的工作
13、 释放锁 释放分配给失败进程的SGA资源 归档进程 ARCH 在归档模式下才生效当数据库以归档方式运行的时候 Oracle会启动ARCH进程 当重做日志文件被写满时 日志文件进行切换 旧的重做日志文件就被ARCH进程复制到db recovery file dest指定的目录下 这些被复制的重做日志文件被叫做归档日志文件 可以使用ARCHIVELOGLIST和showparameterDB RECOVERY FILE DEST查看归档位置 恢复进程 RECO 在分布式运行时生效 数据复制 一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中 RECO自动地解决所有的悬而不
14、决的事务 任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去 当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信 如果远程服务器是不可用或者网络连接不能建立时 RECO自动地在一个时间间隔之后再次连接 Oracle实例的总体结构 什么是Oracle归档模式 如果数据库处于非归档模式 联机日志在切换时就会丢弃 而在归档模式下 当发生日志切换的时候 被切换的日志会进行归档 比如 当前在使用联机重做日志1 当1写满的时候 发生日志切换 开始写联机重做日志2 这时联机重做日志1的内容会被拷贝到另外一个指定的目录下 这个目录叫做归档目录 拷贝的文件叫归档重做日志 只有在归
15、档模式下才能进行重做日志的备份 1 进入DOS 启动sqlplus assysdba 2 shutdownimmediate关闭数据库3 startupmount启动数据库到装载状态4 alterdatabasearchivelog 进入归档模式5 alterdatabaseopen 打开数据库也可以修改初始化参数实现归档模式log archive start true去除归档模式 要先关闭数据库 再用指令alterdatabasenoarchivelog 进入非归档模式selectstatusfromv instance 查数据库状态selectlog modefromv database
16、查看数据库模式 如何进入归档模式 存储结构 1 逻辑结构数据库 表空间 段 区 块2 物理结构 包括数据文件 控制文件 日志文件 参数文件 数据字典 存储结构 逻辑存储结构 表空间 tablespace 表空间是最大的逻辑单位 一个数据库可以有多个表空间 一个表空间可以包含多个数据文件 一个数据文件只能属于一个表空间 任何方案对象都被存储在表空间的数据文件中 虽然不能被存储在多个表空间中 但可以被存储在多个数据文件中 表空间分系统表空间和非系统表空间两类 系统表空间包括SYSTEM表空间和SYSAUX表空间 其余的表空间就是非系统表空间 系统表空间 SYSTEM表空间是数据库创建时自动创建的系统表空间 用于存放数据字典 SYSAUX表空间时系统表空间的辅助表空间 什么叫数据字典 数据字典是一些系统表或视图 他存放系统的信息 他包括数据库版本 数据文件信息 表与索引等段信息 系统的运行状态等各种和系统有关的信息和用户脚本信息 数据库管理员可以通过对数据字典的查询 就可以了解到Oracle的运行状态 数据字典包括 各种对象的定义信息 包括表 视图 索引 同义词 序列 存储过程 函数 包 触