网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

oracle创建逻辑standby数据库

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了oracle创建逻辑standby数据库的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!


    1
    第一步:确定主数据库中是否包含逻辑standby数据库不支持的数据类型和表。
    以下是逻辑standby数据库支持的类型:
    CHAR
    NCHAR
    VARCHAR2andVARCHAR
    NVARCHAR2
    NUMBER
    DATE
    TIMESTAMP
    TIMESTAMPWITHTIMEZONE
    TIMESTAMPWITHLOCALTIMEZONE
    INTERVALYEARTOMONTH
    INTERVALDAYTOSECOND
    RAW
    CLOB
    BLOB
    
    逻辑standby数据库不支持的类型包括:
    NCLOB,LONG,LONGRAW,BFILE,ROWID和UROWID,以及用户自定义的类型,包括对象类型,REF类型,varray和嵌套表。如果存在表含有这些类型的字段,当逻辑standby数据库对这张表应用DML操作时就会报错。
    
    逻辑standby数据库不支持的表和序列:
    SYS用户的表和序列;
    含有不支持数据类型的表;
    建有函数索引的表;
    建有物化视图的表;
    全局临时表(GlobalTemporaryTable)。
    
    可以通过查询视图DBA_LOGSTDBY_UNSUPPORTED来确定主数据库中是否含有不支持的对象:
    SQL>SELECT*FROMDBA_LOGSTDBY_UNSUPPORTED;
    
    如果主数据库中含有不支持的对象,日志实施服务进程(LogApplyService)在向standby数据库实施redolog时会自动排除这些对象。
    
    1.2第二步:确定主数据库中表的所有数据记录是否都能被唯一定位
    
    为了维护standby数据库,SQL实施操作进程必须能够为一定位到主数据库上更新的每一条记录。为了能使主数据库上的变化数据能高效和正确的实施到standby数据库上,Oracle建议对每张表都建立主键。
    大多数表都必须有了主键或者没有空值的唯一约束,否则,补充日志(supplementallogging在第四步会激活)会自动收集定位在主数据库上更新的记录的信息。通过补充日志,那些能够唯一定位记录的信息会加到归档redo日志中的每一个更新事务中,这样,日志实施服务进程就能维护standby数据库了。
    可以通过以下步骤来确保SQL实施操作进程能唯一定位表的记录:
    1、查询视图DBA_LOGSTDBY_NOT_UNIQUE来定位哪些表没有主键货无空值的唯一约束:
    SQL>SELECTOWNER,TABLE_NAME,BAD_COLUMNFROMDBA_LOGSTDBY_NOT_UNIQUE;
    
    以上查询会返回用户名、表名以及通过Y和N来标识的字段BAD_COLUMN:
    ?如果BAD_COLUMN的值为Y,表示这张表的字段使用一个极大的数据类型,如LONG。如果有两条这样的记录存在表中(除LOB字段外),这张表就无法被正确维护。
    ?值为N表示表含有足够的信息来维护standby数据库上的表(但是却没有主键或无空值约束)。然而,如果你增加了主键,日志传输服务进程(LogTransportService)和SQL实施操作进程将会更高效。
    2、在必要的情况下增加主键以提高效率
    为了维护standby数据库上的表,补充日志功能会自动为redo日志中的每一个更新表操作增加字段数据,具体如下
    :
    ?如果表已经有主键或者无空值的唯一索引,向redo日志中添加的信息将最少。
    ?如果表没有主键或无空值的唯一索引,补充日志功能会通过向redo日志中的所有行都添加相应的值为它增加唯一健值。然而,这个自动增加的键值会增加写入到redo日志中的信息。
    3、在必要的情况下,在表上创建非激活依赖的约束。
    如果表在视图DBA_LOGSTDBY_NOT_UNIQUE中可以查到,它又是一张会被频繁更新的表。可以通过创建一个非激活依赖的约束在表上来避免通过主键维护表,以提高redo日志的性能。一个非激活依赖的约束可以为SQL实施操作进程提供更多的信息,而不会增加在主数据库上的索引成本。
    确保主数据库是运行在归档模式并且归档已经激活,可以通archiveloglist命令确认归档是否激活:
    SQL>ARCHIVELOGLIST;
    DatabaselogmodeNoArchiveMode
    AutomaticarchivalDisabled
    Archivedestination/oracle/dbs/arch
    Oldestonlinelogsequence0
    Currentlogsequence1
    NoArchiveMode表示当前不是归档模式。
    
    如果数据库没有运行在归档模式下,可以通过以下步骤修改到归档模式。
    1、关闭数据库,以MOUNT方式启动
    SQL>SHUTDOWN
    SQL>STARTUPMOUNT
    2、打开归档模式,打开数据库
    SQL>ALTERDATABASEARCHIVELOG;
    SQL>ALTERDATABASEOPEN;
    3、检查是否已经在归档模式下:
    SQL>ARCHIVELOGLIST;
    DatabaselogmodeArchiveMode
    AutomaticarchivalDisabled
    Archivedestination/oracle/dbs/arch
    Oldestonlinelogsequence0
    Nextlogsequencetoarchive1
    Currentlogsequence1
    1.4第四步:在主数据库上激活补充日志进程
    补充信息帮助SQL实施操作进程在standby数据库上能正确的维护表。可以通过查询视图V$DATABASE检查补充日志进程是否激活:
    SQL>SELECTSUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UIFROMV$DATABASE;
    
    SUPSUP
    ------
    NONO
    如果没有激活,通过执行以下语句向归档redo日志添加主键和唯一索引信息,然后切换redo日志:
    SQL>ALTERDATABASEADDSUPPLEMENTALLOGDATA(PRIMARYKEY,UNIQUEINDEX)COLUMN
    S;
    Databasealtered.
    SQL>ALTERSYSTEMSWITCHLOGFILE;
    Systemaltered.
    SQL>SELECTSUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UIFROMV$DATABASE;
    SUPSUP
    ------
    YESYES
    注意:在创建逻辑standby数据之前,一定要激活补充日志进程。因为逻辑standby数据库无法使用既包含补充日志数据又包含非补充日志数据的归档redo日志。
    此外,如果你在主数据库上激活补充日志进程之前已经创建了物理standby数据库,就必须在所有物理standby数据库上做同样的操作。
    
    除了补充日志进程外,还必须保证参数LOG_PARALLELISM的值设为1:
    SQL>ALTERSYS
    TEMSETLOG_PARALLELISM=1SCOPE=BOTH;
    
    1.5第五步:如果打算进行热备,就需要启动资源管理器
    要启动资源管理器,需要定义参数RESOURCE_MANAGER_PLAN使用资源计划,并重启数据库。
    如果没有资源计划,可以使用SYSTEM_PLAN属性:
    SQL>ALTERSYSTEMSETRESOURCE_MANAGER_PLAN=SYSTEM_PLANSCOPE=BOTH;
    SQL>SHUTDOWN
    SQL>STARTUP
    1.6第六步:在主数据库上为standby数据库的系统表创建备选表空间
    如果打算在祝节点进行切换操作,这一步就是必须的。
    逻辑standby数据库使用很多定义在SYS和SYSTEM中的表。默认情况下,这些表是创建在SYSTEM表空间上。
    注意:这些表中的某些表可能很快就会变得很大。为了防止这些标占满整个SYSTEM表空间,你必须建这些表转移到一个分开的表空间上去。在这些表被创建逻辑standby数据库时频繁使用之前转移这些表。
    
    在主数据库上,使用CREATETABLESPACE语句为standby数据库创建新的表空间,并使用存储过程DBMS_LOGMNR_D.SET_TABLESPACE将这些表转移到新的表空间上去。
    SQL>CREATETABLESPACElogmnrts$DATAFILE'C:\ORACLE\ORADATA\EDGAR\LOGMNRTS.DBF'SIZE25MAUTOEXTENDONMAXSIZEUNLIMITED;
    SQL>EXECUTEDBMS_LOGMNR_D.SET_TABLESPACE('logmnrts
  • 上一篇资讯: oracle初级学习资料
  • 下一篇资讯: ORACLE分页查询SQL语法
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师
    );
        2创建逻辑standby数据库
        2.1第一步:检查主数据库上的数据文件
        确认需要创建道逻辑standby数据库上的文件:
        SQL>SELECTNAMEFROMV$DATAFILE;
        NAME
        ---------------------------------------------------
        C:\ORACLE\ORADATA\EDGAR\SYSTEM01.DBF
        C:\ORACLE\ORADATA\EDGAR\UNDOTBS01.DBF
        C:\ORACLE\ORADATA\EDGAR\EXAMPLE01.DBF
        C:\ORACLE\ORADATA\EDGAR\INDX01.DBF
        C:\ORACLE\ORADATA\EDGAR\TOOLS01.DBF
        C:\ORACLE\ORADATA\EDGAR\USERS01.DBF
        C:\ORACLE\ORADATA\EDGAR\XDB01.DBF
        C:\ORACLE\ORADATA\EDGAR\USERDATA\RMAN_TS.DBF
        C:\ORACLE\ORADATA\EDGAR\TESTTM2.DBF
        C:\ORACLE\ORADATA\EDGAR\USERDATA\ASSMIDX.DBF
        C:\ORACLE\ORADATA\EDGAR\USERDATA\BAK_TEST.DBF
        C:\ORACLE\ORADATA\EDGAR\LOGMNRTS.DBF
        C:\ORACLE\ORADATA\EDGAR\USERDATA\TEST_TEMP.DBF
        C:\ORACLE\ORADATA\EDGAR\USERDATA\ASSMDEMO.DBF
        2.2第二步:对主数据库做一个拷贝
        采用冷备方式下按照以下步骤对主数据库做拷贝:
        1、关闭主数据库
        SQL>SHUTDOWNIMMEDIATE;
        2、将第一步中查询出来的数据文件考到一个临时目录去
        C:\>xcopyC:\ORACLE\ORADATA\EDGAR\*C:\ORACLE\ORADATA\TEMP\
        3、以mount模式启动主数据库
        SQL>STARTUPMOUNT;
        4、创建控制文件的备份
        SQL>ALTERDATABASEBACKUPCONTROLFILETO'C:\oracle\oradata\edgar\backup\ctlbckup01.ctl';
        5、查询出主数据库中的SCN
        SQL>SELECTCHECKPOINT_CHANGE#FROMV$DATABASE;
        CHECKPOINT_CHANGE#
        ------------------
        2696167892
        6、打开主数据库,并切换日志文件
        SQL>ALTERDATABASEOPEN;
        SQL>ALTERSYSTEMSWITCHLOGFILE;
        7、通过操作系统拷贝工具讲以下文件拷贝到standby节点上去
        将前
        面拷贝到临时目录中的文件拷贝到standby节点相应目录中去。
        将数据库初始化文件和密码文件拷贝到standby节点相应目录中去。
        将上一步中日志切换操作产生的归档日志文件拷贝到standby节点的归档日志目录中去。要保持归档日志格式一致。
        8、进入下一步:给standby节点修改初始化参数文件
        采用热备方式下按照以下步骤对主数据库做拷贝:
        1、分别将每个表空间修改成备份模式:
        SQL>ALTERTABLESPACESYSTEMBEGINBACKUP;
        2、将表空间的数据文件拷贝到standby节点的相应目录
        3、关闭表空间的备份模式:
        SQL>ALTERTABLESPACESYSTEMENDBACKUP;
        4、创建控制文件的备份。
        SQL>ALTERDATABASEBACKUPCONTROLFILETO'C:\oracle\oradata\edgar\backup\ctlbckup01.ctl';
        5、拷贝控制文件的备份、数据库初始化文件和密码文件到standby节点上的相应目录。
        6、保持主数据库为静止状态,以便为建立standby数据库获取到一个起始点。获取到SCN,并记录下来。
        SQL>ALTERSYSTEMQUIESCE;
        SQL>SELECTCHECKPOINT_CHANGE#FROMV$DATABASE;
        CHECKPOINT_CHANGE#
        ------------------
        443582
        SQL>ALTERSYSTEMUNQUIESCE;
        SQL>ALTERSYSTEMSWITCHLOGFILE;除了所有数据文件需要拷贝外,还需要将热备过程中产生的归档日志拷贝到standby节点相应目录。
        7、进入下一步:给standby节点修改初始化参数文件
        2.3第三步:修改standby数据库的初始化参数文件
        如果采用的是spfile,可以先用以下语句创建出pfile文件:
        SQL>createpfile='C:\oracle\admin\edgarstd\pfile\initedgarstd.ora'fromspfile;
        需要修改数据库的初始化参数中的一下参数:
        1、修改控制文件的目录,对应到standby数据库的控制文件;
        2、修改或增加参数STANDBY_ARCHIVE_DEST,设置为standby数据库对应的归档日志目录。并保持参数LOG_ARCHIVE_FORMAT与主数据库一致。
        3、修改相应的数据库信息参数,如DB_NAME、INSTANCE_NAME.
        
  • 上一篇资讯: oracle初级学习资料
  • 下一篇资讯: ORACLE分页查询SQL语法
  • 相关资讯

    网学推荐

    原创论文

    文章排行榜

    设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师