已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle教案 第一讲 主讲内容 Oracle系统结构Oracle数据库的物理结构Oracle数据库的逻辑结构STRUCTURE 内存结构 ORACLE数据库的后台进程 Oracle总体概括 实例由以下组成 SGA Sharedpool 共享池 Databasebuffercache 数据库高速缓存 Redologbuffercache 重做日志缓冲区 ORACLESERVER由两个部分组成 1 INSTANCE 由内存结构和后台进程2 DATABASE 由数据文件 日志文件和控制文件组成 广告 下载源码就到源码网 Oracle系统结构与其他数据库产品不同 Oracle有其自己独特的系统体系结构 Oracle系统体系结构是整个Oracle服务器系统的框架 是管理和应用Oracle数据服务器的基础和核心 Oracle系统体系结构由三部分组成 逻辑结构 物理结构和实例 其中 实例是维系物理结构和逻辑结构的核心 如图所示 数据库模式及其物理文件关系示意图 Oracle系统体系结构与功能不论是Oracle的应用开发还是数据库管理都是以实例作为切入点的 只不过Oracle的应用程序开发主要是以数据库的逻辑对象为主 如表 索引和视图等 而数据库管理则是针对数据库的全部内容 Oracle数据库由构成物理结构的各种文件组成 如数据文件 控制文件和重做日志文件等 实例是Oracle在内存中分配的一段区域SGA和服务器后台进程的集合 Oracle数据库服务器就是数据库和实例的组合 一 控制文件 ControlFiles 控制文件 ControlFiles 是一个很小的二进制文件 它用于描述数据库的物理结构 数据控制文件一般在安装Oracle系统时自动创建 并且其存放路径由服务器参数文件SPFILEsid ora的CONTROL FILES参数值来确定 由于控制文件存放有数据文件和日志文件等信息 因此Oracle数据库在启动时 数据库须访问控制文件 在数据库的使用过程中 Oracle将不断更新控制文件 如果由于某些原因导致控件文件被损坏 那么数据库也就不能正常工作了 由于控制文件的重要性 因此一个数据库至少应该包含一个以上的控制文件 Oracle10g默认包含了3个控制文件 每个控制文件都包含了相同的信息 这样可确保在数据库运行时 如果某个控制文件损坏 Oracle会自动使用另一个控制文件 不致于因某个控制文件损坏而无法启动数据库 为了获取控制文件的信息 可以通过查询V CONTROLFILE数据字典获知 查询数据字典V CONTROLFILE获取数据库的控制文件信息 如下图 Oracle 物理结构Oracle数据库由以下驻留在磁盘上的文件构成 控制文件 Controlfiles 数据文件 Datafiles 和重做日志文件 Redologs 与数据关联但不是数据构成部分的文件有 passwordfile 口令文件 ArchivedLog OracleNet等 控制文件的后缀是ctl 控制文件通常非常小 一般在1M在5M之间 可以修改参数文件中的参数 controlfile record keep time让控制文件更大些 控制文件在Oracle数据库管理系统中管理数据库的状态 是Oracle数据库中重为重要的一个文件 只有Oracle能向控制文件中写入信息 只有Oracle服务器进程在数据库操作时能刷新控制文件 一个数据库实例启动时 先找控制文件 然后由控制文件找到数据文件和日志文件 加载数据库和打开数据库 二 数据文件 Datafiles 数据文件是存储在磁盘上的插入到表中的数据 这些数据文件与数据库中表的数据相关 查询视图v datafile 如下图 通过查询视图v datafile可以看到数据库中的数据文件 它们是以dbf Databasefile 为后缀 数据文件 DataFile 用于存储数据库数据的文件 如表中的记录 索引 数据字典信息等都存储于数据文件中 在存取数据时 Oracle数据库系统首先从数据文件中读取数据 并存储在内存中的数据缓冲区中 当用户查询数据时 如果所要查询的数据不在数据缓冲区中 则这时Oracle数据库进行启动相应的进程从数据文件中读取数据 并保存到数据缓冲区中 当用户修改数据时 用户对数据的修改保存在数据缓冲区中 然后由Oracle的相应后台进程将数据写入到数据文件中 这样的存取方式减少了磁盘的I O操作 提高了系统的响应性能 一个Oracle数据库往往有多个数据文件 这里需要注意的是 当向Oracle数据库中某个表添加数据时 输入到表中的数据可能包含在一个数据文件中 也可能包含在多个数据文件中 换句说话 当在Oracle数据库为中创建一个表时 Oracle数据库系统不会为此在磁盘在上创建一个数据文件 要了解数据库中数据文件的信息 可以查询数据库字典DBA DATA FILES及数据字典V DATAFILE 数据字典DBA DATA FILES描述了数据文件的名称 标识 大小以及对应的表空间信息等 而数据字典V DATAFILE则描述了数据文件的同步信息 为了了解DBA DATA FILES数据字典的结构 可以使用命令DESC查询该数据字典的结构 通过DESC命令查询DBA DATA FILES数据字典的结构 其中FILE NAME为数据文件的名称及存放路径 FILE ID为该文件在数据库中的ID号 TABLESPACE NAME为该数据文件对应的表空间名 BYTES为该数据文件大小 BLOCKS为该数据文件所占用的数据块数 数据字V DATAFILE记录了数据文件的动态信息 在不同时间其查询结果是不相同的其中 FILE 列存放为数据文件的编号 STATUS列存放为数据文件所属的表空间 NAME列为数据文件的名称及存放路径 三 重做日志文件 RedoLogFiles 用来恢复数据用 记录数据库的改变 可以分为两类日志文件 在线重做日志文件 onlineredologfiles 记录数据库当前的改变 如当前的数据库有三个redolog文件 在数据库运行 先写入第一个文件 如果写满了 再写第二个 到第三个也写满了 就再回头写入到第一个日志文件 把原来的数据覆盖掉 归档日志文件 archivedredologs 把前面的日志文件另存储起来 就变成了归档日志文件 查询视图v logfile 如下图 当出现以下事件时 LGWR后台进程写入到当前日志文件组 每三秒钟 一个用户确定一个事务 重做日志缓存使用三分之一 重做日志缓存有1MB的重做信息 任何时候数据库检查点发生时 DBWN就开始写入数据 在Oracle中 日志文件也叫做重做日志文件或重演日志文件 RedoLogFiles 日志文件用于记录对数据库的修改信息 对数据库所作的修改信息都被记录在日志中 这包括用户对数据库中数据的修改和数据库管理员对数据库结构的修改 如果 只是对数据库中的信息进行查询操作 则不会产生日志信息 由于日志文件记录的对数据库的修改信息 如果用户对数据的操作由于出现的故障 而使修改的数据没有保存到数据文件中 那么就可以利用日志文件找到数据的修改 这样以前所做的工作就不会因为故障而丢失 注意 日志文件也是Oracle物理结构文件中最复杂的一类文件 同时也是保证数据库系统安全 以及备份与恢复的重要手段 日志文件的损坏造成的后果比损坏数据文件更严重 日志文件的损坏可能会导致整个数据库系统不能正常使用 如果用户对一个表中的数据进行了修改 则修改信息首先被记录在日志缓冲区中 当用户提交候改后 或日志缓冲区信息满1 3时或超时3生秒 由LGWR进程将日志信息从日志缓冲区中读出并写到日志文件中 这时数据文件中保存的数据时用户修改后的数据 但是在日志文件中且记录了两组数据 一组是用户修改后的数据 另一组是用记户修改前的数据 根据这些信息 当用户进行了误操作后就可进行恢复 在Oracle数据库中 日志文件是成组使用的 日志文件的组织单位叫日志文件组 日志文件组中的日志文件叫日志成员 每一个Oracle数据库系统都有多个日志文件组 每一组有一个或多个日志成员 即多个日志文件组成 为了防止日志文件被物理损坏 在同一个日志文件组中 允许对日志成员进行镜像 镜像的日志成员文件被存储在不同的物理磁盘中 数据库包含3个日志文件组 每组对应一个日志成员文件 且日志成员文件没有进行镱像 日志文件的镜像是保证数据库安全的一种方法 被镜像的日志文件应存储在不同的物理磁盘上 在日志工作过程中 多个日志文件组之间是循环使用的 当一日志文件组被填满后 将会发生日起切换 系统自动转换到另一个日志文件组 如果日志有镜像 则多个镜像文件中存储的信息是完全相同的 经过上面的分述可知 每个数据库包含多个日志文件组 每组日志文件包含一个或多个日志文件 同一组中的日志文件具有相同的信息 因为同一个日志文件组中的日志成员是镜像关系 同一组中的日志文件被保存最好保存在不同的物理磁盘中 为了确认系统当前正在使用的日志文件组 可以查询数据字典V LOG 该数据字典记录了当前日志的使用信息 其中 V LOG GROUP 为日志文件组的编号 BYTES为日志文件组的大小 MEMBERS为该组所包含的日志成员数 STATUS为日志文件组的状态 当其值为CURRENT时 表示该组为系统正在使用的日志文件组 由上面的查询结果可知 Oracle默认为每个日志文件组包含一个日志成员 也就是说 没有为日志文件进行镜像 同时 数据库管理员也可以使用ALTERSYSTEM命令进行强制的日志切换 使用ALTERSYSTEM命令进行日志切换的形式如下 ALTERSYSTEMSWITCHLOGFILE 如果所有的日志文件组都被填满后 则系统将日志信息写入到第一个日志文件组中 这时第一个日志文件组中的日志信息可能被覆盖掉 第一个日志文件组中的日志信息是否被覆盖取决于数据库的工作模式 在Oracle数据库中 数据库的运行模式有两种 一种是归档模式 ARCHIVELOG 另一种是非归档模式 NOARCHIVELOG 数据库运行在非归档模式时 如果发生日志切换 则日志信息直接被覆盖 而当数据库以归档模式运行时 如果发生日志切换 且需要覆盖已经存的日志信息 则系统将启用ARCH进程将被要覆盖的日志信息保存到磁盘或磁带上形成归档日志 因此 在非归档模式下运行的数据库 只包含历史日志 而没有归档日志 提示 在默认情况下 Oracle不采用归档模式 用户可以通过使用SELECTLOG MODEFROMV DATABASE命令查询当前数据库是否工作在归档模式 四 服务器参数文件参数文件对于Oracle数据库非常重要 当数据库实例启动时 先找到参数文件 根据参数文件内的初始化参数来初始化实例 如找到数据文件和控制文件等 Oracle允许DBA在数据库实例启动后修改参数的值 这些可以在启动被修改的值称为动态初始化参数 dynamicinitializationparameters SPFILE serverparametersfile 可以自动动态地记录动态参数的值 通过查看视图v parameter查询初始化参数的值 五 口令文件 ThenPasswordFile 口令文件是可选的 不是必需的 六 告警日志文件每一个Oracle数据库有一个告警文件 名字为alterdb name log db name是数据库的名字 这个日志文件存放位置由参数文件中的参数BACKGROUND DUMP DEST的值确定 如果没有设置这个参数 Oracle把它放置在默认的位置 oracle home rdbms log七 跟踪文件 TraceFiles Oracle需要DBA在初始化参数中建立三个不同的跟踪文件目录参数 backgrouddumpdirectory 参数 BACKGROUND DUMP DEST coredumpdirectory CORE DUMP DEST userdumpdirectory 参数 USER DUMP DEST oracle 逻辑结构Oracle的逻辑结构是一种层次结构 主要由 表空间 段 区和数据块等概念组成 逻辑结构是面向用户的 用户使用Oracle开发应用程序使用的就是逻辑结构 数据库存储层次结构及其构成关系 结构对象也从数据块到表空间形成了不同层次的粒度关系 1 数据块Oracle数据块 DataBlock 是一组连续的操作系统块 分配数据库块大小是在Oracle数据库创建时设置的 数据块是Oracle读写的基本单位 数据块的大小一般是操作系统块大小的整数倍 这样可以避免不必要的系统I O操作 从Oracle9i开始 在同一数据库中不同表空间的数据块大小可以不同 数据块是Oracle最基本的存储单位 而表空间 段 区间则是逻辑组织的构成成员 在数据库缓冲区中的每一个块都是一个数据块 一个数据块不能跨越多个文件 数据块的结构主要包括 标题 包括一般的块信息 如块地址 段类型等 表目录 包括有关表在该数据块中的行信息 Oracle体系结构的行目录 包括有关在该数据块中行地址等信息 行数据 包括表或索引数据 一行可跨越多个数据块 空闲空间 分配空闲空间是用于插入新的行和需要额外空间的行更新 通过空间管理参数pctfree可控制空间的使用 空闲空间的管理既可以是自动的也可以是手动的 在数据操作中 有两种语句可以增加数据库块的空闲空间 一个是Delete删除语句 另一个是Update更新现有行 释放的空闲空间可用于insert语句 如果insert语句是与产生空闲空间的语句在同一个事务之中 并在其后执行 则insert语句可直接使用生成的空闲空间 如果insert语句是在一个与产生空闲空间的语句相分离的事务中 则insert语句可在其他事务提交后 并在其需要空间时 使用之前产生的空闲空间 数据块中释放的空间可能是连续的 也可能不连续 Oracle只有在出现下列情况时 才会合并数据块的空闲空间 当insert或update语句要使用一个数据块 该数据块的空闲空间足以存储新的一行 而且空闲空间均是碎片 数据块中连续空间无法插入一行的时候 除此而外 Oracle在系统性能下降时也需要压缩数据块的空间 能够对空闲空间产生影响的参数有两个 pctfree和pctused 对于手工管理的表空间 在特定段中的所有数据块 可使用两个空间管理参数pctfree和pctused来控制insert和update对空闲空间的使用 当创建或修改表时可指定这两个参数 创建或修改一个拥有自己的索引段的索引时可指定pctfree参数 pctfree参数为块中行的更新预留了空闲空间的最小百分比 默认值为10 例如 假定在Createtable语句中指定了pctfree为20 则说明在该表的数据段内每个数据块的20 被作为可利用的空闲空间 用于更新已在数据块内存在的数据行 其余80 是用于插入新的数据行 直到达到80 为止 显然 pctfree值越小 则为现存行更新所预留的空间越少 因此 如果pctfree设置得太高 则在全表扫描期间增加I O 浪费磁盘空间 如果pctfree设置得太低 则会导致行迁移 pctused参数设置了数据块是否是空闲的界限 当数据块的使用空间低于pctused的值时 此数据块标志为空闲 该空闲空间仅用于插入新的行 如果数据块已经达到了由pctfree所确定的上边界时 Oracle就认为此数据块已经无法再插入新的行 例如 假定在Createtable语句中指定pctused为40 则当小于或等于39时 该数据块才是可用的 所以 可将数据块填得更满 这样可节省空间 但却增加了处理开销 因为数据块的空闲空间总是要被更新的行占据 所以对数据块需要频繁地进行重新组织 比较低的pctused增加了数据库的空闲空间 但减少了更新操作的处理开销 所以 如果pctused设置过高 则会降低磁盘的利用率导致行迁移 若pctused设置过低 则浪费磁盘空间 增加全表扫描时的I O输出 pctused是与pctfree相对的参数 那么 如何选择pctfree和pctused的值呢 有个公式可供参考 显然 pctfree和pctused的之和不能超过100 若两者之和低于100 则空间的利用与系统的I O之间的最佳平衡点是 pctfree与pctused之和等于100 减去一行的大小占块空间大小的百分比 例如 如果块大小为2048字节 则它需要100个字节的开销 而行大小是390字节 为可用块的20 为了充分利用空间 pctfree与pctused之和最好为80 那么 怎样确定数据块大小呢 有两个因素需要考虑 一是数据库环境类型 例如 是DSS环境还是OLTP环境 在数据仓库环境 OLAP或DSS 下 用户需要进行许多运行时间很长的查询 所以应当使用大的数据块 在OLTP系统中 用户处理大量的小型事务 采用较小数据块能够获得更好的效果 二是SGA的大小 数据库缓冲区的大小由数据块大小和初始化文件的db block buffers参数决定 最好设为操作系统I O的整数倍 2 区区 Extent 也称为数据区 是一组连续的数据块 当一个表 回滚段或临时段创建或需要附加空间时 系统总是为之分配一个新的数据区 一个数据区不能跨越多个文件 因为它包含连续的数据块 使用区的目的是用来保存特定数据类型的数据 也是表中数据增长的基本单位 在Oracle数据库中 分配空间就是以数据区为单位的 一个Oracle对象包含至少一个数据区 设置一个表或索引的存储参数包含设置它的数据区大小 3 段段 Segment 是由多个数据区构成的 它是为特定的数据库对象 如表段 索引段 回滚段 临时段 分配的一系列数据区 段内包含的数据区可以不连续 并且可以跨越多个文件 使用段的目的是用来保存特定对象 一个Oracle数据库有4种类型的段 数据段 数据段也称为表段 它包含数据并且与表和簇相关 当创建一个表时 系统自动创建一个以该表的名字命名的数据段 索引段 包含了用于提高系统性能的索引 一旦建立索引 系统自动创建一个以该索引的名字命名的索引段 回滚段 包含了回滚信息 并在数据库恢复期间使用 以便为数据库提供读入一致性和回滚未提交的事务 即用来回滚事务的数据空间 当一个事务开始处理时 系统为之分配回滚段 回滚段可以动态创建和撤销 系统有个默认的回滚段 其管理方式既可以是自动的 也可以是手工的 临时段 它是Oracle在运行过程中自行创建的段 当一个SQL语句需要临时工作区时 由Oracle建立临时段 一旦语句执行完毕 临时段的区间便退回给系统 4 表空间Oracle数据库 tablespace 是由若干个表空间构成的 任何数据库对象在存储时都必须存储在某个表空间中 表空间对应于若干个磁盘文件 即表空间是由一个或多个磁盘文件构成的 表空间相当于操作系统中的文件夹 也是数据库逻辑结构与物理文件之间的一个映射 每个数据库至少有一个表空间 表空间的大小等于所有从属于它的数据文件大小的总和 在Oracle10g中有以下几种比较特殊的表空间 1 系统表空间系统表空间 systemtablespace 是每个Oracle数据库都必须具备的 其功能是在系统表空间中存放诸如表空间名称 表空间所含数据文件等数据库管理所需的信息 系统表空间的名称是不可更改的 系统表空间必须在任何时候都可以用 也是数据库运行的必要条件 因此 系统表空间是不能脱机的 系统表空间包括数据字典 存储过程 触发器和系统回滚段 为避免系统表空间产生存储碎片以及争用系统资源的问题 应创建一个独立的表空间用来单独存储用户数据 2 SYSAUX表空间SYSAUX表空间是随着数据库的创建而创建的 它充当SYSTEM的辅助表空间 主要存储除数据字典以外的其他对象 SYSAUX也是许多Oracle数据库的默认表空间 它减少了由数据库和DBA管理的表空间数量 降低了SYSTEM表空间的负荷 3 临时表空间相对于其他表空间而言 临时表空间 temptablespace 主要用于存储Oracle数据库运行期间所产生的临时数据 数据库可以建立多个临时表空间 当数据库关闭后 临时表空间中所有数据将全部被清除 除临时表空间外 其他表空间都属于永久性表空间 表空间与数据库及数据文件之间的对应关系 管理表空间在管理表空间时应遵循以下原则 1 使用多重表空间 采用多重表空间可使数据库操作更灵活 主要体现在以下方面 将用户数据与数据字典数据相分离 并将不同表空间的数据文件分别存储在不同磁盘上可以降低I O竞争 将一个应用的数据与其他应用相分离 可以避免表空间脱机时多个应用受到影响 可根据需要将单个表空间脱机 从而获得较好的可用性 通过为不同类型的数据库预留表空间 以达到优化表空间的目的 如更新较高的或只读 或临时段存储等 备份单个表空间 2 为用户指定表空间限额 要创建 管理与使用表空间 必须首先以sys用户并以assysdba身份登录数据库 与Oracle9i不同 在Oracle10g中 启动SQL Plus时的帐户和口令不需加引号 命令格式是 sqlplussys assysdba在Oracle10g中 创建和管理表空间所使用的数据字典和权限及语句可归纳如下 1 与表空间有关的数据字典查询和使用与表空间有关的元数据均可从下列数据字典中获得 主要包括 dba tablespaces dba users dba ts quotas user tablespaces user ts quotas user extents user segments user free space dba data files dba extents dba free space dba segments dba temp files dba undo extents dba rollback segs dba data files v backup datafile v database block corruption v datafile v datafile copy v datafile header v rollstat v segment statistics v undostat等 以v 开头的数据字典均保存为动态信息 2 与使用表空间有关的系统权限与表空间有关的主要系统权限有 createtablespace altertablespace droptablespace managetablespace和unlimitedtablespace等 其中 unlimitedtablespace是允许用户无限制地访问所有表空间 出于安全考虑 在授予该权限给用户时应慎重 如果用户不需要该系统权限 最好撤销该权限 否则用户会利用该权限蓄意创建大量对象或复制数据 从而塞满表空间导致数据库服务器崩溃 3 创建永久性的表空间命令格式 SQL create undo tablespacetablespace datafilefilespec autoextend clause filespec autoextend clause minimumextentinteger k m blocksizeinteger k logging nologging defaultstorage clause online offline permanent temporary extent management clause segment management clause minimumextentinteger k m blocksizeinteger k logging nologging defaultstorage clause online offline permanent temporary extent management clause segment management clause 例2 1 创建一个名为dalianren的表空间SQL createtablespacedalianrennologgingdatafile D oracle product 10 2 0 oradata dalianren dalianren01 ora size50mblocksize8192extentmanagementlocaluniformsize256ksegmentspacemanagementauto 4 使一个表空间脱机命令格式 SQL altertablespaceoffline 例2 2 将表空间dalianren脱机SQL altertablespacedalianrenoffline 注意system表空间不能脱机 5 使一个表空间联机命令格式 SQL altertablespaceonline 例2 3 将表空间dalianren联机SQL altertablespacedalianrenonline 6 使表空间只读命令格式 SQL altertablespacereadonly 例2 4 将表空间dalianren更改为只读SQL altertablespacedalianrenreadonly 7 使表空间可读可写命令格式 SQL altertablespacereadwrite 例2 5 将表空间dalianren更改为可读写SQL altertablespacedalianrenreadwrite 8 创建临时表空间命令格式 SQL createtemporarytablespacetempfile sizemautoextendextentmanagementlocaluniformsize 例2 6 创建临时表空间tempSQL createtemporarytablespacetemptempfile D oracle product 10 2 0 oradatadalian temp01 ora size500mautoextendoffextentmanagementlocaluniformsize512k 注意虽然语句altertablespace中带有temporary关键字 但不能使用带有temporary关键字的altertablespace语句将一个本地管理的永久表空间转变为本地管理的临时表空间 必须使用createtemporarytablespace语句直接创建本地管理的临时表空间 9 添加临时表空间的数据文件命令格式 SQL altertablespaceaddtempfile sizem 例2 7 为临时表空间temp ren添加数据文件SQL altertablespacetemp renaddtempfile D oracle product 10 2 0 oradata dalian temp ren dbf size100m 10 调整临时表空间的数据文件命令格式 SQL alterdatabasetempfile resizem 例2 8 调整临时表空间的数据文件大小SQL alterdatabasetempfile D oracle product 10 2 0 oradata test temp ren ora resize20m 11 将表空间的数据文件或临时文件脱机命令格式 SQL alterdatabasedatafile offline 或SQL alterdatabasetempfile offline 例2 9 将表空间的数据文件或临时文件脱机SQL alterdatabasedatafile D oracle product 10 2 0 oradata dalian temp ren ora offline 或SQL alterdatabasetempfile D oracle product 10 2 0 oradata dalian temp ren ora offline 12 将临时表空间联机命令格式 SQL Alterdatabasetempfile online 例2 10 将临时表空间联机SQL Alterdatabasetempfile D oracle product 10 2 0 oradata dalian temp ren ora online 13 删除表空间 但不删除其文件命令格式 SQL droptablespace 例2 11 删除表空间dalianren 但不删除其文件SQL droptablespacedalianren 14 删除包含目录内容的表空间命令格式 SQL droptablespaceincludingcontents 例2 12 删除表空间dalianren及其包含的内容SQL droptablespacedalianrenincludingcontents 15 删除包含目录内容和数据文件在内的表空间命令格式 SQL droptablespaceincludingcontentsanddatafiles 例2 13 删除表空间dalianren及其包含的内容以及数据文件SQL droptablespacedalianrenincludingcontentsanddatafiles 16 当含有参照性约束时 删除包含目录内容和数据文件在内的表空间命令格式 SQL droptablespaceincludingcontentsanddatafilescascadeconstraints 例2 14 将表空间dalianren及其包含的内容 数据文件以及相关约束一同删除SQL droptablespacedalianrenincludingcontentsanddatafilescascadeconstraints 17 表空间更名Oracle9i中不能直接将表空间更名 在Oracle10g可直接更名永久表空间和临时表空间 但是 system和sysaux表空间不能更名 命令格式 SQL altertablespacerenameto 例2 15 将表空间users更改为newusersSQL altertablespaceusersrenametonewusers 在Oracle10g中 如果一个撤销表空间通过使用pfile的实例被更名 则警告日志文件中将写入一个信息 提醒用户更改undo tablespace的参数值 注意当使用droptablespace误删除了表空间之后 通过查看alert文件可以确定误操作的时间 该文件位于Oracle Home admin bdump目录下 名为alert log 如 D oracle product 10 2 0 admin test bdump目录下的alert test log文件 18 多重临时表空间在Oracle10g中增加了一个表空间组的概念 通过使用表空间组用户可以使用一个以上的表空间存储临时段 表空间组是在第一个表空间被指定给该组时 由系统自动隐式创建的 例如 通过添加现有的表空间创建表空间组 SQL altertablespacetemptablespacegrouptemp ts group 添加一个新的表空间给该已经创建的表空间组 SQL createtemporarytablespacetemp2tempfile D oracle product 10 2 0 oradata test temp201 dbf size20mtablespacegrouptemp ts group 被指定给组的表空间可在视图中查询得到 SQL select fromdba tablespace groups group nametablespace name temp ts grouptemptemp ts grouptemp22rowsselected SQL 一旦创建了表空间组 就可以将其指定给用户或作为默认的临时表空间 就像一个表空间一样 将表空间组指定给用户 作为临时表空间 SQL alteruserscotttemporarytablespacetemp ts group SQL alteruserscotttemporarytablespacetemp ts group 将表空间组作为默认的临时表空间 SQL alterdatabasedefaulttemporarytablespacetemp ts group 表空间也可以从表空间组中移出 SQL altertablespacetemp2tablespacegroup 查询表空间组 SQL select fromdba tablespace groups group nametablespace name temp ts grouptemp1rowselected SQL 理论上 一个表空间组包含多少表空间是没有最大限制的 但必须至少包含一个表空间 当最后一个表空间被删除后 该表空间组也被隐式地删除 若该表空间组仍然被指定做临时表空间 则不可以删除该组中的最后一个表空间成员 同时 表空间组不能与表空间同名 表空间的相关查询列出表空间 表空间的文件 分配的空间 空闲空间以及下一个空闲分区 如下所示 setlinesize132setpagesize60coltablespace nameformata12colfile nameformata38coltablespace kbheading TABLESPACE TOTALKB colkbytes freeheading TOTALFREE KBYTES selectddf tablespace nametablespace name ddf file namefile name ddf bytes 1024tablespace kb sum fs bytes 1024kbytes free max fs bytes 1024next freefromsys dba free spacefs sys dba data filesddfwhereddf tablespace name fs tablespace namegroupbyddf tablespace name ddf file name ddf bytes 1024orderbyddf tablespace name ddf file name 列出数据文件 表空间名以及大小 如下所示 colfile nameformata50coltablespace nameformata10selectfile name tablespace name round bytes 1024000 MBfromdba data filesorderbyfile name 列出表空间 大小 空闲空间以及空闲空间的百分比 如下所示 selectddf tablespace name sum ddf bytes total space sum dfs bytes free space round nvl sum dfs bytes 0 sum ddf bytes 100 2 pct freefromdba free spacedfs dba data filesddfwhereddf tablespace name dfs tablespace name groupbyddf tablespace nameorderbyddf tablespace name 计算表空间每个数据文件实际的最小空间以及对应的文件名 其大小与磁盘操作系统中显示的不同 如下所示 该语句运行需要较长时间 Selectsubstr df file name 1 70 filename max de block id de bytes de blocks de bytes 1024min sizefromdba extentsde dba data filesdfwherede file id df file idgroupbydf file name Oracle SGA概述 SGA SystemGlobalArea 是OracleInstance的基本组成部分 在实例启动时分配 是一组包含一个Oracle实例的数据和控制信息的共享内存结构 主要是用于存储数据库信息的内存区 该信息为数据库进程所共享 PGA不能共享的 它包含Oracle服务器的数据和控制信息 它是在Oracle服务器所驻留的计算机的实际内存中得以分配 如果实际内存不够再往虚拟内存中写 SGA几个很重要的特性 1 SGA的构成 数据和控制信息 我们下面会详细介绍 2 SGA是共享的 即当有多个用户同时登录了这个实例 SGA中的信息可以被它们同时访问 当涉及到互斥的问题时 由latch和enquence控制 3 一个SGA只服务于一个实例 也就是说 当一台机器上有多个实例运行时 每个实例都有一个自己的SGA尽管SGA来自于OS的共享内存区 但实例之间不能相互访问对方的SGA区 SGA组成部分 主要包括 1 数据库高速缓存 thedatabasebuffercache 2 重演日志缓存 theredologbuffer 3 共享池 thesharedpool 4 数据字典缓存 hedatadictionarycache 以及其它各方面的信息 1 数据高速缓冲区 DataBufferCache 在数据高速缓冲区中存放着Oracle系统最近使用过的数据块 即用户的高速缓冲区 当把数据写入数据库时 它以数据块为单位进行读写 当数据高速缓冲区填满时 则系统自动去掉一些不常被用访问的数据 如果用户要查的数据不在数据高速缓冲区时 Oracle自动从磁盘中去读取 数据高速缓冲区包括三个类型的区 1 脏的区 DirtyBuffers 包含有已经改变过并需要写回数据文件的数据块 2 自由区 FreeBuffers 没有包含任何数据并可以再写入的区 Oracle可以从数据文件读数据块区 3 保留区 PinnedBuffers 此区包含有正在处理的或者明确保留用作将来用的区 2 RedoLogBufferCache缓存对于数据块的所有修改 主要用于恢复其中的每一项修改记录都被称为redo条目 利用Redo条目的信息可以重做修改 3 SharedPool用于缓存最近被执行的SQL语句和最近被使用的数据定义 它主要由两个内存结构构成 Librarycache和Datadictionarycache修改共享池的大小 ALTERSYSTEMSETSHARED POOL SIZE 64M LibrayCache缓存最近被执行的SQL和PL SQL的相关信息 实现常用语句的共享 使用LRU算法进行管理 由以下两个结构构成 SharedSQLarea SharedPL SQLarea DataDictionaryCache Datadictionarycache缓存最近被使用的数据库定义 它包括关于数据库文件 表 索引 列 用户 权限以及其它数据库对象的信息 在语法分析阶段 ServerProcess访问数据字典中的信息以解析对象名和对存取操作进行验证 数据字典信息缓存在内存中有助于缩短响应时间 4 数据字典缓存 thedatadictionarycache 它包括的信息有 数据库文件 表 索引 列 用户 权限和其他数据对象 在解析间段 服务器进程查看数据字典来决定对象名称和有效的访问的信息 缓存数据字典信息来提高请求反应时间 大小是由共享池的大小来决定的 Oracle PGA PGA ProcessGlobalArea 是serverprocess一段私有内存区 它包含有全局变量 数据结构和一些控制信息 在Oracle8i中 PGA调整非常复杂 要调整SORT AREA SIZE HASH AREA SIZE BITMAP MERGE AREA SIZE CREATE BITMAP AREA SIZE等参数 在ORACLE9I中 只需要调整PGA AGGREGATE TARGET PGA AGGREGATE TARGET初始化设置PGA AGGREGATE TARGET的值应该基于Oracle实例可利用内存的总量来设置 这个参数可以被动态的修改 假设Oracle实例可分配4GB的物理内存 剩下的内存分配给操作系统和其它应用程序 你也许会分配80 的可用内存给Oracle实例 即3 2G 现在必须在内存中划分SGA和PGA区域 在OLTP系统中 典型PGA内存设置应该是总内存的较小部分 例如20 剩下80 分配给SGA OLTP PGA AGGREGATE TARGET total mem 80 20 在DSS系统中 由于会运行一些很大的查询 典型的PGA内存最多分配70 的内存 DSS PGA AGGREGATE TARGET total mem 80 50 在这个例子中 总内存4GB DSS系统 你可以设置PGA AGGREGATE TARGET为1600MB OLTP则为655MB 配置PGA自动管理不用重启DB 直接在线修改 SQL altersystemsetworkarea size policy autoscope both Systemaltered SQL altersystemsetpga aggregate target 512mscope both Systemaltered SQL showparameterworkareaNAMETYPEVALUE workarea size policystringAUTO 这个设置成AUTOSQL showparameterpgaNAMETYPEVALUE pga aggregate targetbiginteger536870912SQL 监控自动PGA内存管理的性能V PGASTAT 这个视图给出了一个实例级别的PGA内存使用和自动分配的统计 SQL setlines256SQL setpages42SQL SELECT FROMV PGASTAT NAMEVALUEUNIT aggregatePGAtargetparameter536870912bytes 当前PGA AGGREGATE TARGET的值aggregatePGAautotarget477379584bytes 当前可用于自动分配了的PGA大小 不应该比PGA AGGREGATE TARGET小globalmemorybound26843136bytes 自动模式下工作区域的最大大小 Oracle根据工作负载自动调整 totalPGAinuse6448128bytestotalPGAallocated11598848bytes PGA的最大分配maximumPGAallocated166175744bytestotalfreeablePGAmemory393216bytes PGA的最大空闲大小PGAmemoryfreedb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋季国家管网集团华南公司(广东省管网公司)高校毕业生招聘笔试参考题库(浓缩500题)及参考答案详解(精练)
- 2026国网江西省电力公司高校毕业生提前批招聘笔试模拟试题浓缩500题及答案详解(基础+提升)
- 国家管网集团山东分公司2026届秋季高校毕业生招聘考试备考试题(浓缩500题)及答案详解(基础+提升)
- 2026届国家管网集团高校毕业生招聘考试备考试题(浓缩500题)附参考答案详解(培优)
- 国家管网集团湖南公司2026届秋季高校毕业生招聘笔试参考题库(浓缩500题)附答案详解(完整版)
- 2026年新余市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(考试直接用)
- 2026秋季国家管网集团华南公司(广东省管网公司)高校毕业生招聘考试备考题库(浓缩500题)附参考答案详解(轻巧夺冠)
- 2026国网江西省电力校园招聘(提前批)笔试模拟试题浓缩500题含答案详解(a卷)
- 2026国网河北省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题附答案详解(培优a卷)
- 2026年大兴安岭地区农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)有答案详解
- 蒸汽管道安装施工方案
- 2024-2025学年北京市通州区五年级上学期期中数学试卷(含答案)
- 《课程理论-课程的基础、原理与问题》施良方
- 4.2.1指数函数及其图像与性质省公开课获奖课件说课比赛一等奖课件
- 全国一等奖人音版一年级音乐上册《口哨与小狗》课件
- Unit 1 Food for Thought 词汇教学设计-2023-2024学年高中外研版(2019)英语必修第二册
- JT∕T 1477-2023 系列2集装箱 角件
- 临床技术操作规范骨科分册
- 《9.1.2-不等式的性质》说课稿
- 国际音标发音口型图解
- (高清版)DZT 0426-2023 固体矿产地质调查规范(1:50000)
评论
0/150
提交评论