日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Streams全库复制

發布時間:2024/4/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Streams全库复制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、設置標識

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六9月 1 09:36:23 2012

Copyright (c) 1982, 2005, Oracle.? All rights reserved.

連接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> set sqlprompt 'JSSWEB> ';

JSSWEB>

二、創建輔助實例

1. 創建輔助實例

?? C:\WINDOWS\system32>oradim –new –sid jssstr

?? 實例創建。

2. 創建輔助實例的密碼文件

?? C:\WINDOWS\system32>orapwd file=c:\oracle\database\PWDjssstr.ora password=oracle entries=30

3. 創建助實例的初始化參數文件

1). 創建相應的目錄

?

?

2). 創建并修改本地初始化參數

從源庫創建初始華文件:

JSSWEB> create pfile='c:\admin\jssstr\pfile\20120901.ora' from spfile;

用記事打開并更改相應的參數。并添加以下兩參數:

db_file_name_convert='oradata\jssweb','oradata\jssstr'
log_file_name_convert='oradata\jssweb','oradata\jssstr'

接著:

JSSSTR> create spfile from pfile='c:\admin\jssstr\pfile\20120901.ora';

?

文件已創建。

JSSSTR> startup force nomount;

例程已經啟動。

Total System Global Area? 612368384 bytes

Fixed Size????????????????? 1250428 bytes

Variable Size???????????? 339741572 bytes

Database Buffers????????? 264241152 bytes

Redo Buffers??????????????? 7135232 bytes

JSSSTR>

?三、查看初始化參數

使用 pfile的修改init<SID>.ora 文件,使用spfile的通過alter system命令修改spile文件,主要包括以下幾項(源和目標數據庫都需要設置):

  • COMPATIBLE:數據庫的兼容版本不能低于10.2.0.1
  • GLOBAL_NAMES:必需設置為true
  • JOB_QUEUE_PROCESSES:設置實例最大同時啟用的job里程數不能小于2
  • STREAMS_POOL_SIZE:為streams分配適當的緩存區。參數值不能為0

sql> alter system set global_names=true scope=both;

sql> alter system set aq_tm_processes=10 scope=both;

sql> alter system set streams_pool_size=200m scope=spfile;

執行完成后重啟數據庫

四、檢查歸檔模式

c:> sqlplus ‘/ as sysdba’

?

sql> alter system set log_archive_dest_1=’location=c:/jssweb/arch’ scope=spfile;

sql> alter system set log_archive_start=TRUE scope=spfile;

sql> alter system set log_archive_format=’ arch%t_%s_%r.arc’ scope=spfile;

sql> shutdown immediate;

sql> startup mount;

sql> alter database archivelog;

sql> alter database open;

?

數據庫置為歸檔模式后,可以按如下方式檢驗一下

?

sql> archive log list;

?

五、創建表空間及管理員帳戶(源庫操作)

sql> create tablespace stream_tbs datafile '/data/oradata/jssweb/stream01.dbf' size 200m;

將logminer 的數據字典從system表空間轉移到新建的表空間,防止撐滿system表空間

sql> execute dbms_logmnr_d.set_tablespace('stream_tbs');

創建管理員

sql> create user strmadmin identified by strmadmin default tablespace stream_tbs quota unlimited on stream_tbs;

?

分配權限

sql> grant connect,resource,dba,aq_administrator_role to strmadmin;

sql> begin

    dbms_streams_auth.grant_admin_privilege( grantee => 'strmadmin', grant_privileges =>true);

   end;

六、 創建數據庫鏈接(源庫操作)

以strmadmin身份登錄創建:

sql> create database link jssstr connect to strmadmin identified by strmadmin using 'jssstr';

--查看db links

sql> select owner,db_link,host from all_db_links;

?

七、源庫執行初始化過程

JSSWEB> declare

? 2?? empty_tbs dbms_streams_tablespace_adm.tablespace_set;

? 3? begin

? 4??? dbms_streams_adm.pre_instantiation_setup(

? 5? maintain_mode => 'global',

? 6? tablespace_names => empty_tbs,

? 7? source_database => 'jssweb.jss.cn',

? 8? destination_database => 'jssstr.jss.cn',

? 9? perform_actions => true,

?10? bi_directional => false,

?11? include_ddl => true,

?12? start_processes => true,

?13? exclude_schemas => 'strmadmin',

?14? exclude_flags => dbms_streams_adm.exclude_flags_full +

?15????? dbms_streams_adm.exclude_flags_dml +

?16????? dbms_streams_adm.exclude_flags_ddl);

?17? end;

?18? /

?

PL/SQL 過程已成功完成。

maintain_mode 只有兩個值:GLOBAL,表示數據庫級的復制;TRANSPORTABLE?TABLESPACES,表示表空間級的復制,需要同時指定 tablespace_names參數,表空間可以是多個PRE_INSTANTIATION_SETUP/POST_INSTANTIATION_SETUP創建表空間級的復制環境。

tablespace_names :要復制的表空間,此處為數據庫級的復制,因此此參數為空,不過該參數不能直接指定為null,因為該參數類型為 DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET,因此我們在執行過程前先declare了一個 empty_tbs的變量。

source_datebase :連接到源端數據庫的數據庫鏈 。

destination_database :連接到目標端數據庫的數據庫鏈 。

perform_actions :如果為true,則過程直接執行。如果為false,則過程并不直接生成復制環境,而是創建復制環境的配置腳本,由dba手動執行(或修改編輯后執 行),因此必須同時設置script_name和script_directory_object兩參數,指定腳本輸出路徑和腳本文件名,不然過程執行將 直接報錯。

bi_directional :true時表示啟用雙向復制。false表示源庫向目錄庫單向復制。

include_ddl :是否同步ddl語句 。

start_processes :是否啟用捕獲和應用進程 。

exclude_schemas :指定不包含在復制環境中的schemas。*表示全不包括,null表示全部包括(一個bu字,意義千差萬別,漢字太奇妙啦),注意,由于源端的捕獲進 程不會捕獲SYS/SYSTEM/CTXSYS這三個schema,因此即使此處指定null,這三個schema也不會被同步。另外,此參數僅在 MAINTAIN_MODE=>¨GLOBAL¨時有效。

exclude_flags : 這個要好好說說,這個選項是與exclude_schemas組合使用,同時由于該參數值具有多個組合屬性,因此設置時也特別需要注意。

有如下可選值:

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL :排除指定schemas中所有對象操作。

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTED :排除指定schemas中不支持的對象操作。

上述兩值僅能同時選一個,如果兩個同時選擇在配置時會拋出異常。同時還有下列兩個附加選項:

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DML :排除對不支持對象的DML操作。

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL :排除對不支持對象的DDL操作。

上述四個屬性值可以通過"+"號連接來達到同時支持的目的。

比如,對于exclude_schemas參數中指定的schemas對象,復制其DML操作但不復制DDL操作,則設置exclude_flags參數值如下可滿足要求:

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL?+?

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL

八、源庫創建RMAN備份

RMAN>?run{

2>?allocate?channel?c1?device?type?disk;

3>?backup?database?plus?archivelog?delete?input;

4>?}

然后馬上查看一下當前系統的scn,并且歸檔當前的redo

JSSWEB>?select?dbms_flashback.get_system_change_number?from?dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

??????????????????687812

JSSWEB>?alter?system?archive?log?current;

System?altered.

九、 執行RMAN Duplicate復制數據庫

C:\WINDOWS\system32>rman?target?sys/oracle@jssweb?auxiliary/

RMAN>?run{

2>? set?until?scn?687812;

3>?duplicate?target?database?to?jssstr? open?restricted;

9>?}

十、連接目標數據庫檢查global_name

十一、創建目標數據庫到源數據庫的鏈接

JSSSTR>?conn?strmadmin/strmadmin

已連接。

JSSSTR>?create?database?link?jssweb?connect?to?strmadmin?identified?by?strmadmin?using?‘jssweb’;

不過由于jssstr數據庫是由jssweb復制過來的,因此strmadmin用戶下也存在一個jssstr.jss.cn的dblink, 如果看其不爽可以將它刪除,不過直接刪除是不行的,肯定會報ORA-02082錯誤,因為不能刪除與global_name同名的dblink。如果確實 想刪除該dblink,方法有二:

A>. 先修改global_name,再刪除dblink

JSSSTR>?alter?database?rename?global_name?to?test.jss.cn;

數據庫已更改。

JSSSTR>?drop?database?link?jssstr.jss.cn;

數據庫鏈接已刪除。

JSSSTR>?alter?database?rename?global_name?to?jssstr.jss.cn;

數據庫已更改。

B>. 直接刪除字典表

JSSSTR>?conn?/?as?sysdba

已連接。

JSSSTR>?delete?link$?where?name=¨JSSSTR.JSS.CN¨;

已刪除?1?行。

JSSSTR>?commit;

提交完成。

十二、在源數據庫執行Post_INSTANTIATION_SETUP過程

JSSWEB> declare

? 2?? empty_tbs dbms_streams_tablespace_adm.tablespace_set;

? 3??? begin

? 4???? dbms_streams_adm.post_instantiation_setup(

? 5???? maintain_mode =>'GLOBAL',

? 6???? tablespace_names=>empty_tbs,

? 7???? source_database => 'jssweb.jss.cn',

? 8???? destination_database =>'jssstr.jss.cn',

? 9???? perform_actions => true,

?10???? bi_directional => false,

?11???? include_ddl => true,

?12???? start_processes => true,

?13???? instantiation_scn => 687811,

?14????? exclude_schemas => 'strmadmin',

?15?? exclude_flags=>dbms_streams_adm.exclude_flags_full +

?16???? dbms_streams_adm.exclude_flags_dml +

?17???? dbms_streams_adm.exclude_flags_ddl);

?18? end;

?19? /

?

PL/SQL 過程已成功完成。

十三、 在目標端執行,取消受限連接:

JSSSTR>?conn?/?as?sysdba

已連接。

JSSSTR>?ALTER?SYSTEM?DISABLE?RESTRICTED?SESSION;

系統已更改。

至此,單向同步的streams整庫復制環境就算完成了

?

十四、文件路徑轉換

JSSSTR>?conn?strmadmin/strmadmin

已連接。

JSSSTR>?create?or?replace?procedure?file_convert?(in_any?IN?ANYDATA)?authid?current_user?is?

??2????ddl_lcr??SYS.LCR$_DDL_RECORD;

??3????ddl_text?CLOB;

??4????rc?PLS_INTEGER;

??5??begin

??6????rc?:=?in_any.GETOBJECT(ddl_lcr);

??7????DBMS_LOB.CREATETEMPORARY(ddl_text,?true);

??8????ddl_lcr.GET_DDL_TEXT(ddl_text);

??9????ddl_text?:=?replace(ddl_text,’oradata\jssweb’,’oradata\jssstr’);

?10????execute?immediate?to_char(ddl_text);

?11????DBMS_LOB.FREETEMPORARY(ddl_text);

?12??end;

?13??/

過程已創建。

設置ddl?handler:

JSSSTR>?select?apply_name?from?dba_apply;

APPLY_NAME ????????????????????

------------------------------

APPLY$_JSSWEB_44

JSSSTR>?exec?DBMS_APPLY_ADM.ALTER_APPLY(apply_name=>‘APPLY$_JSSWEB_44,,ddl_handler=>’strmadmin.file_convert’);

PL/SQL? 過程已成功完成。

?

?

?

?

轉載于:https://www.cnblogs.com/landexia/archive/2012/09/01/2667021.html

總結

以上是生活随笔為你收集整理的Streams全库复制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。