Oracle如何配置逻辑备用数据库_第1页
Oracle如何配置逻辑备用数据库_第2页
Oracle如何配置逻辑备用数据库_第3页
Oracle如何配置逻辑备用数据库_第4页
Oracle如何配置逻辑备用数据库_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle 如何配置逻辑备用数据库 添加时间 2007 4 22 1 逻辑备用数据库介绍 逻辑备用数据库使用主数据库的拷贝创建出来 但是创建出来以后 该备用数据库的 物理结构就与主数据库不同了 逻辑备用数据库通过应用 SQL 语句进行更新 这样就允许 用户在任何时候都可以在备用数据库上运行查询和报表了 因为逻辑备用数据库使用 SQL 语句进行与主数据库的同步 所以逻辑备用数据库必须 打开 而且 在逻辑备用数据库上 还可以创建其他的索引和物化视图来提高效率 不过 逻辑备用数据库在数据类型 表的类型和 DDL 以及 DML 上有些限制 逻辑备用数据库的优点 a 更加有效利用了备用数据库的硬件资源 b 减小了主数据库的负载 例如将非实时性的查询转移到备用数据库等 c 可以作为主数据库的备份 2 创建逻辑备用数据库前对主数据库的准备 在创建逻辑备用数据库的过程中 必须确保在主数据库上做配置所用的用户帐号具有 以下数据库角色 a logstdby administrator 角色 用来使用逻辑备用功能 b select catalog role 角色 能够访问所有数据字典视图 下面详细说明了创建一个逻辑备用数据库前 必须在主数据库上进行的准备工作 2 1 启用 forced logging 将主数据库设置为 force logging 模式 SQL alter database force logging 2 2 启用归档 并在本地定义一个归档路径 确保主数据库设置成归档模式 启用自动归档 并且必须有一个本地的归档路径 SQL alter system set log archive dest 1 location D oradata rmantgt archive mandatory scope both 2 3 确认 log parallelism 初始化参数 在主数据库上 使用 show parameter 的命令显示当前 log parallelism 初始化参数的值 逻辑备用数据库要求你将该初始化参数设置为 1 同时这也是该参数的缺省值 如果该参 数已经是 1 了 则跳到 2 4 步骤 否则 设置 log parallelism 1 如下 SQL alter system set log parallelism 1 scope spfile 设置完以后 需要重启数据库以使设置生效 2 4 确定所能支持的数据类型和表类型 在建立逻辑备用数据库前 确保在当前主数据库中的数据类型和表类型都是逻辑备用 数据库所能支持的 逻辑备用数据库所支持的数据类型有 char nchar varchar2 和 varchar nvarchar2 number date timestamp timestamp with time zone timestamp with local time zone interval year to month interval year to second raw clob blob 逻辑备用数据库不支持的数据类型有 nclob long long raw bfile rowid urowid user defined types object types refs varrays nested tables 逻辑备用数据库不支持的表 sequences 和视图有 用户在 sys schema 里定义的表和 sequences 那些含有不支持的数据类型的表 使用了 segment compression 的表 索引组 织表 index organized tables 确定主数据库是否含有不支持的对象 查看 dba logstdby unsupported 视图 该视图 列出了逻辑备用数据库所不支持的对象 SQL select distinct owner table name from dba logstdby unsupported order by owner table name 如果主数据库含有不支持的对象 则日志应用服务在逻辑备用数据库上运用重做日志会自 动剔除那些不支持的对象 如果以下 SQL 语句在主数据库上运行了的话 那么传到逻辑备用数据库以后 也不会 在逻辑备用数据库上运行 ALTER DATABASE ALTER SESSION ALTER SNAPSHOT ALTER SNAPSHOT LOG ALTER SYSTEM SWITCH LOG CREATE CONTROL FILE CREATE DATABASE CREATE DATABASE LINK CREATE PFILE FROM SPFILE CREATE SCHEMA AUTHORIZATION CREATE SNAPSHOT CREATE SNAPSHOT LOG CREATE SPFILE FROM PFILE CREATE TABLE AS SELECT FROM A CLUSTER TABLE DROP DATABASE LINK DROP SNAPSHOT DROP SNAPSHOT LOG EXPLAIN LOCK TABLE RENAME SET CONSTRAINTS SET ROLE SET TRANSACTION 那些在主数据库上修改元数据的 pl sql 存储过程也不会在逻辑备用数据库上运行 比 如在主数据库上运行了 dbms mview refresh 但是传到备用数据库后并不会被应用 唯一 的例外是 dbms job 包 job 元数据会应用到逻辑备用数据库上 但是 jobs 本身不会执行 2 5 确认主数据库里表的行都可以唯一标识 由于在逻辑备用数据库里 rowid 可能不等于主数据库里的 rowid 所以必须采取一些机 制来保证在主数据库里所更新的行能够对应到备用数据库里相应的行 可以采用以下对应方法 主键或唯一索引 在主数据库里 无论合适与否 每个表都添加主键或唯一索引 这样就能确保应用 SQL 操作时可以有效的更新逻辑备用数据库里的数据了 采用以下的方法来确保日志应用服务可以唯一的标识表里的行 2 5 1 在主数据库里找到那些没有唯一标识的表 查询 dba logstdbby not unique 视图 来确定主数据库里那些还没有主键或唯一索引 的表 SQL select owner table name bad column from dba logstdby not unique where table name not in select table name from dba logstdby unsupported 该语句找出的表仍然能够支持 因为 supplemental logging 在重做日志里添加了唯一标 识行的信息 主键或唯一索引的存在与否 能够影响追加的日志 supplemental logging a 如果表有主键或唯一索引 则在 supplemental logging 的时候 向重做日志添加的 信息是最少的 b 如果表没有主键或唯一索引 supplemental logging 会自动在重做日志里记录所有字 段的值 2 5 2 添加一个 disabled 的主键类型的 rely 的限制 disabled primary key rely constraint 如果应用程序确保表里的行是唯一标识的 你可以在表上创建一个 disabled 主键类型 的 rely 的限制 SQL alter table mytab add primary key id name rely disable rely constraint 告诉系统确保了所有的行都是唯一的 如果 rely constraint 所指定的列没 有唯一 则在逻辑备用数据库应用 SQL 时将会失败 最好添加主键或唯一索引 这样在逻 辑备用数据库应用 SQL 语句时也会速度快些 2 6 确保启用追加的日志 supplemental logging 在创建逻辑备用数据库前 在主数据库上 必须启用 supplemental logging 因为 oracle 只会对那些修改的列生成日志 这对唯一标识那些被修改的行时并不总是足够的 额外的信息 supplemental 必须被加到重做日志里 这些被加到联机日志里的 supplemental 信息能够帮助日志应用服务正确的标识逻辑备用数据库里的表和表里的行 确定在主数据库上 supplemental logging 是否被启用 可以查询 v database 如下 SQL select supplemental log data pk supplemental log data ui from v database 如果为 NO 则说明 supplemental logging 没有被启用 如果被启用 则转到 2 7 否则 如果没有被启用 则采用下面的方法来启用 2 6 1 启用 supplemental logging 在主数据库上 执行下面语句以便将主键和唯一索引信息添加到归档日志里 SQL alter database add supplemental log data primary key unique index columns 该语句在主数据库中向重做日志添加了唯一标识行的信息 从而日志应用服务可以在 备用数据库里正确的标识相同的行了 2 6 2 切换到一个新的重做日志 在主数据库上 执行以下语句 SQL alter system archive log current 通过切换到一个新的日志文件 这样 你就可以保证当前重做日志既不含有 supplemental 日志数据也不含有 nonsupplemental 日志数据 逻辑备用数据库不能使用那些 既含有 supplemental 日志数据又含有 nonsupplemental 日志数据的重做日志 2 6 3 确保启用 supplemental logging SQL select supplemental log data pk as primaryKey supplemental log data ui as uniqueIndex from v database 如果都为 yes 则说明启动了 如果在一个已经含有物理备用数据库的 data guard 配置中启用了 supplemental logging 的话 那么必须在每个物理备用数据库中分别执行 alter database add supplemental log data 以便将来在 switchover 的时候能够正常工作 2 7 创建一个可替代的表空间 如果希望在主数据库和逻辑备用数据库之间进行 switchover 你必须在主数据库上创 建一个替代表空间 并且将逻辑备用数据库里 system 表转移到这个替代表空间里 逻辑备用数据库使用一组在 sys 和 system schema 下的表 这些表缺省创建在 system 表空间下 这些表可能会增长非常快 通过预先准备一个单独的表空间 然后将这些逻辑 备用系统表转移到这个单独的表空间下 从而避免了这些表将整个 system 表空间都填满的 情况出现 在逻辑备用数据库创建时 会向这些逻辑备用系统表填数据 这样 应该在创建逻辑 备用数据库前 就将这些表转移到独立的表空间里去 创建表空间 SQL create tablespace logmnrts datafile D oradata rmantgt logmnrts dbf size 25m autoextend on maxsize unlimited 转移表 SQL execute dbms logmnr d set tablespace logmnrts 如果在备用数据库里的初始化参数 standby file management 设置为 true 则前面创建 表空间的命令会自动应用到备用数据库上 否则如果没有设置为 true 则需要手工在备用 数据库上执行 3 创建逻辑备用数据库 3 1 确认主数据库的数据文件和联机日志文件 在主数据库上 查询 v datafile 列出所有的逻辑备用数据库所需要的数据文件 SQL select name from v datafile NAME D ORADATA RMANTGT SYSTEM01 DBFD ORADATA RMANTGT USERS02 DBFD ORADATA RM ANTGT USERS01 DBFD ORADATA RMANTGT UNDO02 DBF 在主数据库上 查询 v logfile 列出所有的逻辑备用数据库所需要的日志文件 SQL select group type member from v logfile GROUP TYPE MEMBER 1 ONLINE D ORADATA RMANTGT REDO01 LOG 2 ONLINE D ORADATA RMANTGT REDO02 LOG 3 ONLINE D ORADATA RMANTGT REDO03 LOG 3 2 对主数据库生成一份拷贝 在主数据库上 进行以下步骤 以生成一份主数据库文件的冷拷贝备份 第一步 关闭主数据库 SQL shutdown 第二步 拷贝数据文件到临时目录 使用操作系统命令将 3 1 所找出来的数据文件拷贝到一个临时目录 拷贝到临时目录 是因为主数据库后面还会再次被关闭 第三步 重启主数据库 SQL startup 第四步 为备用数据库创建一个控制文件的备份拷贝在主数据库上 为备用数据库创建 一个控制文件的备份 SQL alter database backup controlfile to D oradata dataguard logic tmp logicdg ctl 第五步 在主数据库上启用限制登录 restrict session 模式 在主数据库上 启用限制登录模式 这样就不允许其他用户登录进行 DDL 或 DML 操作 SQL alter system enable restricted session 第六步 创建 logminer 目录 为了创建逻辑备用数据库 你必须为逻辑备用数据库手工创建目录结构 在主数据库 上 采用以下命令创建 logminer 目录 SQL execute dbms logstdby build 第七步 在主数据库上禁用限制登录 restrict session 模式 SQL alter system disable restricted session 第八步 确定最后归档的日志文件 为了获得创建逻辑备用数据库的起点 查询 v archived log 视图 确定最后的归档日 志 并且在后面创建的过程中 输入该归档日志的名字 SQL alter system archive log current SQL select name from v archived log where sequence select max sequence from v archived log where dictionary begin YES and standby dest NO NAME D ORADATA RMANTGT ARCHIVE ARC00315 001 3 3 为备用数据库准备一个初始化参数文件 在主数据库上通过 spfile 创建一个传统的文本格式的初始化参数文件 该文本格式的 初始化参数文件可以拷贝到备用数据库所在的系统并且可以被手工修改 SQL create pfile D oradata dataguard logic tmp initLogic ora from spfile 在后面的 3 11 的时候 还需要修改该文件的参数以对应备用数据库 然后还要将其转 换为 spfile 3 4 从主数据库所在系统向备用数据库所在系统拷贝文件 在主数据库所在的系统上 使用操作系统命令拷贝以下二进制文件到备用数据库所在 的系统 a 备份的数据文件 在 4 2 2 处创建 b 备份的日志文件 在 4 2 2 处创建 c 初始化参数文件 在 4 2 3 处创建 3 5 为备用数据库设置初始化参数 尽管从主数据库处拷贝的初始化参数文件里的参数设置大部分都适用于逻辑备用数据 库 但是有些还是需要修改 下面的例子显示了为逻辑备用数据库所作的初始化参数修改 被修改的部分用黑体表 示 1 aq tm processes 1 2 background dump dest C oracle92 ora92 admin logicdg bdump 3 compatible 9 2 0 0 0 4 control files D oradata logicdg LOGICDG CTL 5 core dump dest C oracle92 ora92 admin logicdg cdump 6 standby archive dest D oradata logicdg standby 7 parallel max servers 9 8 db block size 8192 9 db cache size 2516582410 db domain 11 db file multiblock read count 1612 db na me rmantgt 13 dispatchers PROTOCOL TCP SERVICE ora920XDB 14 fast start mttr target 30015 global names TRUE16 hash join en abled TRUE17 instance name logicdg 18 java pool size 3355443219 job queue processe s 1020 large pool size 838860821 log archive dest 22 log archive dest 1 location D oradata logicdg archive mandatory 23 log archive start TRUE24 log parallelism 125 open cursors 30026 pga ag gregate target 2516582427 processes 15028 query rewrite enabled FALSE 29 remote lo gin passwordfile EXCLUSIVE 30 shared pool size 5033164831 sort area size 52428832 st ar transformation enabled FALSE 33 timed statistics TRUE34 undo management AUTO 35 undo retention 1080036 undo tablespace UNDOTBS2 37 user dump dest C oracle92 o ra92 admin logicdg udump 38 如果主数据库和备用数据库在同一台机器上 就需要做以下 参数配置 39 lock name space logicdg 这里 对上面的设置做一个简单解释 a db name 不需要修改 与主数据库保持一致 b compatible 不需要修改 与主数据库保持一致 c control files 说明了备用数据库的控制文件所在的路径 d log archive start 不需要修改 与主数据库保持一致 e standby archive dest 说明了主数据库向备用数据库传递归档日志的路径 需要主 数据库上配置归档路径为备用数据库 这样 主数据库在归档时 会将归档日志文件发送 到备用数据库上该参数指定的位置 f log archive dest 1 说明备用数据库的归档日志所存放的路径 一旦出现 switchover 那么该备用数据库成为主数据库 则该参数指定了联机日志文件的归档路径 g log parallelism 不需要修改 与主数据库保持一致 h instance name 如果主数据库和备用数据库在同一台机器上的话 就需要定义该 参数并且与主数据库不同 i lock name space 指定备用数据库所在的实例名称 该参数与 instance name 相同 记住 可能还需要修改一些参数 比如 background dump dest user dump dest 等 3 6 创建一个 windows 服务 如果备用数据库所在机器为 windows 系统 则需要使用 oradim 创建 windows 服务 C oradim new sid logicdg startmode manual 3 7 为主数据库和备用数据库配置监听 在主数据库和备用数据库上 分别为彼此配置监听器 如果使用了 data guard broker 则必须使用 TCP IP 协议配置监听器 如果数据库在安装 oracle 介质的时候就自动创建了数据库的话 则不用配置 3 8 在备用数据库所在系统启用死亡连接检测 通过在 sqlnet ora 文件里设置 sqlnet expire time 参数来检测死亡连接 比如 sqlnet expire time 2 3 9 创建 Oracle Net 连接名 在主数据库和备用数据库里 分别创建连接到主数据库和备用数据库的 tnsnames 名称 3 10 启动并 mount 备用数据库 在备用数据库上 启动并 mount 备用数据库 注意 如果是 windows 系统 则还需要创建密码文件 C orapwd file C oracle92 ora92 DATABASE PWDlogicdg ORA password hanson entries 5SQL startup mount pfile C oracle92 ora92 admin logicdg pfile initLogic ora 3 11 在逻辑备用数据库上重命名数据文件 在逻辑备用数据库上 需要将从主数据库拷贝来的数据文件所在的路径重新命名 因 为要告诉控制文件 现在的数据文件所在的路径已经与主数据库中的路径不一致了 需要 更改为当前最新的路径 C orapwd file C oracle92 ora92 DATABASE PWDlogicdg ORA password hanson entries 5SQL startup mount pfile C oracle92 ora92 admin logicdg pfile initLogic ora 3 12 在逻辑备用数据库上重命名联机日志文件 SQL select member from v logfile MEMBER D ORADATA RMANTGT REDO01 LOGD ORADATA RMANTGT REDO02 LOGD ORADATA RMAN TGT REDO03 LOGSQL alter database rename file D ORADATA RMANTGT REDO01 LOG to D oradata logicdg redo01 log Database altered SQL alter database rename file D ORADATA RMANTGT REDO02 LOG to D oradata logicdg redo02 log Database altered SQL alter database rename file D ORADATA RMANTGT REDO03 LOG to D oradata logicdg redo03 log Database altered SQL select member from v logfile MEMBER D ORADATA LOGICDG REDO01 LOGD ORADATA LOGICDG REDO02 LOGD ORADATA LOGICD G REDO03 LOG 3 13 打开 database guard 为了防止其他用户在逻辑备用数据库上进行 DML 操作 在逻辑备用数据库上打开 database guard SQL alter database guard all 由于使用的控制文件比数据文件要新 所以直接 open 时会报错 需要进行恢复 SQL recover database using backup controlfile until cancel 然后 直接输入 cancel 结束恢复 SQL alter database open resetlogs 3 14 重新设置逻辑备用数据库名 通过运行 oracle 的 DBNEWID nid 实用程序 来改变逻辑备用数据库的名称 改变逻辑 备用数据库的名称可以防止该逻辑备用数据库与主数据库之间进行交互作用 在运行 nid 的时候 必须关闭数据库 并启动到 mount 状态 然后 现在可以运行 nid 来改变数据库名了 C nid target sys hanson dataguard dbname logicdgDBNEWID Release 9 2 0 1 0 ProductionCopyright c 1995 2002 Oracle Corporation All rights reserved Connected to database RMANTGT DBID 2455129425 Control Files in database D ORADATA LOGICDG LOGICDG CTLChange database ID and database name RMANTGT to LOGICDG Y N yProceeding with operationChanging database ID from 2455129425 to 2205596403Changing database name from RMANTGT to LOGICDG Control File D ORADATA LOGICDG LOGICDG CTL modified Datafile D ORADATA LOGICDG SYSTEM01 DBF dbid changed wrote new name Datafile D ORADATA LOGICDG LOGMNRTS DBF dbid changed wrote new name Datafile D ORADATA LOGICDG USERS01 DBF dbid changed wrote new name Datafile D ORADATA LOGICDG UNDO02 DBF dbid changed wrote new name Control File D ORADATA LOGICDG LOGICDG CTL dbid changed wrote new nameDatabase name changed to LOGICDG Modify parameter file and generate a new password file before restarting Database ID for database LOGICDG changed to 2205596403 All previous backups and archived redo logs for this database are unusable Shut down database and open with RESETLOGS option Succesfully changed database name and ID DBNEWID Completed succesfully 3 15 在初始化参数文件中修改数据库名 第一步 修改初始化参数文件中的 db name 为 logicdg 第二步 关闭逻辑备用数据库 SQL shutdown immediate 第三步 根据 pfile 创建 spfile SQL create spfile from pfile C oracle92 ora92 admin logicdg pfile initLogic ora 第四步 重启逻辑备用数据库 SQL startup mount SQL alter database open resetlogs 3 16 为逻辑备用数据库创建一个新的临时表空间 临时数据文件不需要从主数据库拷贝到逻辑备用数据库上 第一步 确定当前临时数据文件 在逻辑备用数据库上 执行如下 SQL SQL select from v tempfile 如果没有记录 则跳到第三步 第二步 在逻辑备用数据库上删除临时数据文件 SQL alter database tempfile tempfilename drop 第三步 在逻辑备用数据库上 添加一个新的临时数据文件 1 确定临时表空间 SQL select tablespace name from dba tablespaces where contents TEMPORARY 2 添加一个临时文件 SQL alter tablespace temp add tempfile D ORADATA LOGICDG temp01 dbf size 50m reuse 注意 这里的 temp 表空间空间必须足够 否则逻辑备用数据库在运用主数据库传来 的归档日志时会出错 3 17 注册归档的日志 并启动 SQL 应用操作 注册最新的归档日志文件 并应用重做日志里的数据 第一步 注册最新的归档日志文件 将 3 2 的第八步查到的归档日志文件注册到逻辑备用数据库 SQL alter database register logical logfile D oradata logicdg ARC00290 001 第二步 在逻辑备用数据库里开始应用重做日志 SQL alter database start logical standby apply initial 只有在逻辑备用数据库第一次启动应用重做日志时 指定 initial 选项 以后启动 SQL 应用按照以下方法 SQL alter database stop logical standby apply SQL alter database start logical standby apply 3 18 使主数据库向备用数据库进行归档 必须在主数据库上设置 以使得主数据库能够向备用数据库归档 第一步 设置定义归档的初始化参数 在主数据库的 log archive dest n 和 lo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论