zoukankan      html  css  js  c++  java
  • 逻辑dataguard同步同步表空间的建立失败 <转>

    Adding Tablespaces/Datafiles with Logical Standby DB present

    原文地址:http://uhesse.com/2009/04/16/adding-tablespacesdatafiles-with-logical-standby-db-present/

    Being in Norway this week, I have again the pleasure to teach an 11g Data Guard course. I always try to get a hotel close to the education center to be able to walk over there, but I didn’t get the right direction on the first day and had to use a taxi instead. Fortunately, the Norwegians are friendly and helpful and like to explain to a stranger where to find the next taxi stand :-)

    One of the student asked how we can handle the situation, if we have a Logical Standby Database and want to add datafiles to the primary, while the Logical Standby DB uses an other directory structure than the Primary. Putting the parameter standby_file_management to auto and also setting db_file_name_convert appropriately is not sufficient in this case, as it is for a Physical Standby Database. Well, I searched through the documentation and found the following remedy:

    Connect to the Logical Standby DB as sys and then

    create or replace procedure sys.handle_tbs_ddl
    (
      old_stmt  in  varchar2,
      stmt_typ  in  varchar2,
      schema    in  varchar2,
      name      in  varchar2,
      xidusn    in  number,
      xidslt    in  number,
      xidsqn    in  number,
      action    out number,
      new_stmt  out varchar2
    ) as
    begin
      new_stmt := replace(old_stmt,
                         '/home/oracle/prima',
                         '/home/oracle/logst');
    
      action := dbms_logstdby.skip_action_replace;
    
    exception
      when others then
        action := dbms_logstdby.skip_action_error;
        new_stmt := null;
    end;
    /
    
    --------------------------------------------------------------------
    
    -- LSP has to be stopped before we can do the next step
    
    --------------------------------------------------------------------
    
    alter database stop logical standby apply;
    
    begin
    dbms_logstdby.skip (stmt=>'tablespace',proc_name=>'sys.handle_tbs_ddl');
    end;
    /
    
    alter database start logical standby apply immediate;

    You can now create Tablespaces and/or add Datafiles on the Primary and they are automatically created on the Logical Standby as well.

    You could also take an reactive approach and let the create tablespace action on the Primary crash the SQl Apply on the Logical Standby and then skip that DDL and create the tablespace manually on the Logical SB. But this approach above seems to be more elegant and leaves you with less administrative tasks to do. Thanks to Cecilie Sander for asking that question!

  • 相关阅读:
    TabLayout + ViewPager
    分别用ToolBar和自定义导航栏实现沉浸式状态栏
    阶段一:用Handler和Message实现计时效果及其中一些疑问
    阶段一:为View设置阴影和弹出动画(天气应用)
    阶段一:通过网络请求,获得并解析JSON数据(天气应用)
    阶段一:解析JSON
    阶段一:AsyncTask的三个属性值和四个步骤
    Android Studio你不知道的快捷键(三)
    Android Studio你不知道的调试技巧
    Android Studio你不知道的快捷键(二)
  • 原文地址:https://www.cnblogs.com/landexia/p/2662756.html
Copyright © 2011-2022 走看看