成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

從Oracle數(shù)據(jù)庫向TimesTen內(nèi)存庫遷移數(shù)據(jù)

IT那活兒 / 805人閱讀
從Oracle數(shù)據(jù)庫向TimesTen內(nèi)存庫遷移數(shù)據(jù)

點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!??!

Oracle&TimesTen

TimesTen既可以作為獨立的關(guān)系型內(nèi)存數(shù)據(jù)庫,也可以作為Oracle數(shù)據(jù)庫的內(nèi)存緩存。無論是哪一種使用場景,大多數(shù)情況下都需要考慮如何將Oracle數(shù)據(jù)庫中的數(shù)據(jù)遷移到TimesTen,TimesTen提供一系列數(shù)據(jù)遷移工具,包括ttIsql命令、實用程序和內(nèi)置過程等,通過這些工具可以快速實現(xiàn)Oracle數(shù)據(jù)庫到TimesTen的數(shù)據(jù)遷移。

本文主要分享通過手工Oracle端導(dǎo)出TimesTen端導(dǎo)入執(zhí)行ttIsql內(nèi)置過程ttLoadFromOracle實現(xiàn)Oracle數(shù)據(jù)庫到TimesTen的數(shù)據(jù)遷移,對比兩種方法的實現(xiàn)步驟及遷移效率,在實際維護(hù)工作中根據(jù)操作場景靈活選擇適合的方法。

以下操作在測試環(huán)境中將Oracle數(shù)據(jù)庫中shsnc.data_ora2tt表數(shù)據(jù)遷移到TimesTen數(shù)據(jù)庫中,Oracle數(shù)據(jù)庫中shsnc.data_ora2tt表結(jié)構(gòu)如下:

-- Create table

create table SHSNC.DATA_ORA2TT

(

col_date DATE,

col_char CHAR(1),

col_varchar VARCHAR2(10),

col_int INTEGER,

col_number NUMBER(4,2)

)

手工TOracle端導(dǎo)出TimesTen端導(dǎo)入

1. 操作步驟

1.1 Oracle端手工導(dǎo)出

該操作使用Oracle的spool實現(xiàn),導(dǎo)出成文本文件shsnc.data_ora2tt.txt;

set line 1000

set pagesize 0

set feedback off

set heading off

set trimspool on

set trims on

set echo off;

set colsep |

set termout off

alter session set nls_date_format=yyyy-mm-dd hh24:mi:ss; -- 否則TimesTen導(dǎo)入報錯【Invalid date value -- date values must be in YYYY-MM-DD format.】

spool shsnc.data_ora2tt.txt

SELECT col_date,col_char,col_varchar,col_int,col_number FROM  shsnc.data_ora2tt;

spool off

1.2 在TimesTen中創(chuàng)建表

同Oracle數(shù)據(jù)庫建表語句:

-- Create table

create table SHSNC.DATA_ORA2TT

(

col_date DATE,

col_char CHAR(1),

col_varchar VARCHAR2(10),

col_int INTEGER,

col_number NUMBER(4,2)

)

1.3 格式化Oracle導(dǎo)出的文本文件

導(dǎo)入TimesTen內(nèi)存庫前,文本文件未經(jīng)過以下任一項格式化,導(dǎo)入TimesTen均會報錯:
  • - 刪除文本文件中SQL命令;

  • - 字符串字段前后增加雙引號;

  • - 時間列格式調(diào)整為yyyy-mm-dd hh24:mi:ss;

  • - 首行需要是指定格式內(nèi)容(可以從TimesTen內(nèi)存庫ttbulkcp導(dǎo)出個表查看內(nèi)容)。

-- 刪除文本文件中SQL命令行

sed -i /^SQL> /d shsnc.data_ora2tt.txt

-- 首行增加TimesTen導(dǎo)入文本格式說明內(nèi)容,指定列前后增加雙引號

awk -F"|" BEGIN{print
"##ttBulkCp:FSEP=|:CHARACTERSET=ZHS16GBK:DATEMODE=TIMESTAMP"
}{for(i=1;i<=NF;i++){if (i==2 || i==3) printf
"""$i""|";else if (iprint $i }}
 shsnc.data_ora2tt.txt > shsnc.data_ora2tt.unl

1.4 TimesTen端手工導(dǎo)入

執(zhí)行TimesTen導(dǎo)入工具ttbulkcp,成功將文本文件shsnc.data_ora2tt.unl導(dǎo)入TimesTen內(nèi)存庫:

ttbulkcp -i acct shsnc.data_ora2tt shsnc.data_ora2tt.unl

2. 總結(jié)該方法特點

  1. - 不需對TimesTen內(nèi)存庫做任務(wù)配置變更;

  2. - 需要對Oracle數(shù)據(jù)庫導(dǎo)出文本文件進(jìn)行格式化,效率低。

通過ttLoadFromOracle將數(shù)據(jù)從Oracle遷移到TimesTen

1. 操作步驟

1.1 設(shè)置TimesTen與Oracle數(shù)據(jù)庫的連通性

在TimesTen連接屬性中,OracleNetServiceName指定了后端Oracle數(shù)據(jù)庫的服務(wù)名,而實際的服務(wù)定義在文件tnsnames.ora中,格式與Oracle數(shù)據(jù)庫服務(wù)定義完全兼容。tnsnames.ora文件的位置由環(huán)境變量$TNS_ADMIN指定,此環(huán)境變量可以在安裝TimesTen實例時指定,也可以后續(xù)通過ttModInstall實用程序定義和修改。

在目錄$TT_HOME/network/admin/samples下有示例的tnsnames.ora文件。一般Oracle數(shù)據(jù)庫和TimesTen實例位于不同主機(jī)上。TimesTen主機(jī)上tnsnames.ora路徑及定義示例如下:

vi $TT_HOME/network/admin/tnsnames.ora

shsnc =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = xxx)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = shsnc)))

此時,TimesTen內(nèi)存庫還未配置環(huán)境變量$TNS_ADMIN,因此TimesTen主機(jī)上連Oracle報錯。

1.2 ttModInstall配置環(huán)境變量$TNS_ADMIN

執(zhí)行$TT_HOME/bin/ttmodinstall進(jìn)行配置(需要重啟TimesTen實例)。

> $TT_HOME/bin/ttmodinstall

The daemon for instance Billmdb_cbe is currently configured to use port 53396.

Would you like to change this port? [ no ] no

The server for instance Billmdb_cbe is currently configured to use port 53397.

Would you like to change this port? [ no ] no

TNS_ADMIN for the instance Billmdb_cbe is currently not set.

Would you like to change TNS_ADMIN for this instance? [ yes ] yes

Please enter a value for TNS_ADMIN (q=quit)? [ ] /ttadm/TimesTen/Billmdb_cbe/network/admin



Do you want to restart the daemon using the new configuration? [ yes ] yes

Restarting the daemon ...

TimesTen Daemon stopped.

TimesTen Daemon startup OK.

Instance Billmdb_cbe is now configured with TNS_ADMIN=/ttadm/TimesTen/Billmdb_cbe/network/admin

Would you like to configure TimesTen Replication with Oracle Clusterware? [ no ] no

Done ...

## 實例重啟后加載內(nèi)存庫

ttadmin -ramload acct

由于在TimesTen安裝中包含了Oracle client($TT_HOME/ttoracle_home/instantclient_11_2),因此可以用標(biāo)準(zhǔn)的sqlplus程序測試與Oracle數(shù)據(jù)庫的連通性。

經(jīng)測試,此時,TimesTen內(nèi)存庫主機(jī)上連接Oracle正常:

$TT_HOME/ttoracle_home/instantclient_11_2/sqlplus xxx/xxx@shsnc

利用TimesTen中特有的透傳(PassThrough)模式,也可以測試與Oracle數(shù)據(jù)庫的連通性。使用這種方式需要在TimesTen中和Oracle數(shù)據(jù)庫中存在相同的用戶,并且兩個數(shù)據(jù)庫字符集相同。

通過TimesTen客戶端ttisql連接正常:

$TT_HOME/bin/ttisql 
"DSN=acct;uid=shsnc;pwd=shsnc;OraclePwd=shsnc;OracleNetServiceName=shsnc"

1.3 在TimesTen中創(chuàng)建表

該操作要求在TimesTen中的表存在,如果不存在,可以借助于TimesTen內(nèi)置過程ttTableSchemaFromOraQueryGet獲得建表DDL,執(zhí)行后完成在TimesTen建表;

$TT_HOME/bin/ttisql "DSN=acct;uid=shsnc;pwd=shsnc;OraclePwd=shsnc;OracleNetServiceName=shsnc"

Command>
 call ttTableSchemaFromOraQueryGet(shsnc,data_ora2tt,select * from shsnc.data_ora2tt);

< CREATE TABLE "SHSNC"."DATA_ORA2TT" (

"COL_DATE" date,

"COL_CHAR" char(1 byte),

"COL_VARCHAR" varchar2(10 byte),

"COL_INT" number(38,0),

"COL_NUMBER" number(4,2)

) >

1 row found.

Command>
  CREATE TABLE "SHSNC"."DATA_ORA2TT" (

>
 "COL_DATE" date,

>
 "COL_CHAR" char(1 byte),

>
 "COL_VARCHAR" varchar2(10 byte),

>
 "COL_INT" number(38,0),

>
 "COL_NUMBER" number(4,2)

>
  );

Command>

1.4 執(zhí)行ttLoadFromOracle進(jìn)行數(shù)據(jù)遷移

ttLoadFromOracle命令的格式為:

ttLoadFromOracle([tblOwner], tblName, Query [,numThreads])
參數(shù)說明如下:
  • tblOwner,TT_CHAR (30),表用戶名(可選,默認(rèn)當(dāng)前連接用戶);

  • tblName,TT_CHAR (30) NOT NULL,表名;

  • Query,TT_VARCHAR (409600) NOT NULL,Oracle數(shù)據(jù)庫中執(zhí)行的SQL查詢語句;

  • numThreads,TT_INTEGER,并發(fā)線程數(shù)(默認(rèn)4個線程);

執(zhí)行如下,成功將Oracle數(shù)據(jù)庫shsnc.data_ora2tt表直接導(dǎo)入TimesTen內(nèi)存庫:

$TT_HOME/bin/ttisql "DSN=acct;uid=shsnc;pwd=shsnc;OraclePwd=shsnc;OracleNetServiceName=shsnc"

Command>
 call ttLoadFromOracle(shsnc, data_ora2tt, select * from shsnc.data_ora2tt);

< 3 >

1 row found.

Command>
 select count(*) from shsnc.data_ora2tt;

< 3 >

1 row found.

Command>

2. 總結(jié)該方法特點

  1. - 設(shè)置TimesTen與Oracle數(shù)據(jù)庫的連通性,配置環(huán)境變量$TNS_ADMIN指定tnsnames.ora文件位置,如果安裝TimesTen時未配置需要通過ttModInstall進(jìn)行配置(此時需要重啟TimesTen實例);
  2. - 數(shù)據(jù)追加模式;
  3. - 字符集必須一致;
  4. - 不要求Oracle端表有唯一索引;
  5. - 支持遷移DBLINK和其它Schema的數(shù)據(jù);
  6. - 要求TimesTen中的表已經(jīng)存在,如果不存在可以執(zhí)行ttTableSchemaFromOraQueryGet獲得建表DDL;
  7. - 需要在TimesTen中和Oracle數(shù)據(jù)庫中存在相同的用戶。

通過以上對兩種遷移方法的對比,可以看到:

方法一:手工Oracle端導(dǎo)出TimesTen端導(dǎo)入最大優(yōu)勢是不需調(diào)整現(xiàn)網(wǎng)TimesTen配置、最大劣勢是需要手工對文本文件進(jìn)行格式化效率越低;

方法二:ttLoadFromOracle最大優(yōu)勢是效率高、最大劣勢是對現(xiàn)網(wǎng)TimesTen配置有要求;實際維護(hù)可以結(jié)合這兩種方式各自優(yōu)勢,即在TimesTen測試環(huán)境使用方法二ttLoadFromOracle獲取建表DDL、并且將數(shù)據(jù)先遷移到TimesTen測試環(huán)境;然后再將數(shù)據(jù)從TimesTen測試環(huán)境同構(gòu)遷移到生產(chǎn)環(huán)境,這樣既能避免對生產(chǎn)環(huán)境做過多的配置變更,又能保證遷移效率。



本文作者:崔京夢(上海新炬王翦團(tuán)隊)

本文來源:“IT那活兒”公眾號

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129153.html

相關(guān)文章

  • 云而進(jìn),重構(gòu)數(shù)據(jù)新格局

    摘要:大勢所趨,云原生數(shù)據(jù)庫的崛起不過,在全球數(shù)據(jù)庫領(lǐng)域,目前恐怕還不止這兩股力量。在年數(shù)據(jù)庫系統(tǒng)的魔力象限中,阿里云數(shù)據(jù)庫被列入遠(yuǎn)見者象限,這是國產(chǎn)數(shù)據(jù)庫首次進(jìn)入魔力象限。從傳統(tǒng)數(shù)據(jù)庫到云原生數(shù)據(jù)庫,這50年來,數(shù)據(jù)庫行業(yè)到底都發(fā)生了怎樣的變化?以O(shè)racle為代表的傳統(tǒng)數(shù)據(jù)庫廠商,不斷邁向云化的過程,從中嘗到了甜頭。不僅可以讓用戶Oracle數(shù)據(jù)庫遷移到Oracle云上,順帶也把用戶業(yè)務(wù)帶上O...

    ctriptech 評論0 收藏0
  • PaaS大戰(zhàn)一觸即發(fā) Oracle劍拔弩張

    摘要:和聯(lián)合總裁及董事會成員將在下周宣布更多的戰(zhàn)略。曾在去年月的大會上宣布了公共云計劃,其中包含了和的相關(guān)功能,以及云服務(wù)和數(shù)據(jù)庫云服務(wù)。目前已經(jīng)表示將會把和整合進(jìn)自身的公有云之中。但截至到目前,這些組件仍然處在預(yù)覽階段。 在當(dāng)前的云計算時代,PaaS領(lǐng)域已經(jīng)成為各大巨頭必爭之地。PaaS提供應(yīng)用服務(wù)引擎,用戶基于該應(yīng)用服務(wù)引擎可構(gòu)建該類的應(yīng)用,典型的案例有Google App Engine、...

    劉永祥 評論0 收藏0
  • OceanBase遷移服務(wù):分布式架構(gòu)升級的直接路徑

    摘要:年月日,遷移服務(wù)解決方案在城市峰會中正式發(fā)布。遷移服務(wù)向分布式架構(gòu)升級的直接路徑基于上述問題和挑戰(zhàn),同時經(jīng)過螞蟻十年數(shù)據(jù)庫架構(gòu)升級的先進(jìn)經(jīng)驗,螞蟻金服為客戶打造了這款一站式數(shù)據(jù)遷移解決方案遷移服務(wù),簡稱。 2019年1月4日,OceanBase遷移服務(wù)解決方案在ATEC城市峰會中正式發(fā)布。螞蟻金服資深技術(shù)專家?guī)熚膮R和技術(shù)專家韓谷悅共同分享了OceanBase遷移服務(wù)的重要特性和業(yè)務(wù)實踐...

    KaltZK 評論0 收藏0
  • OceanBase遷移服務(wù):分布式架構(gòu)升級的直接路徑

    摘要:年月日,遷移服務(wù)解決方案在城市峰會中正式發(fā)布。遷移服務(wù)向分布式架構(gòu)升級的直接路徑基于上述問題和挑戰(zhàn),同時經(jīng)過螞蟻十年數(shù)據(jù)庫架構(gòu)升級的先進(jìn)經(jīng)驗,螞蟻金服為客戶打造了這款一站式數(shù)據(jù)遷移解決方案遷移服務(wù),簡稱。 2019年1月4日,OceanBase遷移服務(wù)解決方案在ATEC城市峰會中正式發(fā)布。螞蟻金服資深技術(shù)專家?guī)熚膮R和技術(shù)專家韓谷悅共同分享了OceanBase遷移服務(wù)的重要特性和業(yè)務(wù)實踐...

    gnehc 評論0 收藏0
  • Oracle發(fā)布Oracle Soar全面云遷移產(chǎn)品

    摘要:客戶可以通過一款移動應(yīng)用監(jiān)控其遷移狀態(tài)。表示,隨著產(chǎn)品在后續(xù)版本中不斷調(diào)整,將轉(zhuǎn)向自主交付。然而認(rèn)為,提供了更加全面的解決方案,包括咨詢和教育服務(wù)?,F(xiàn)在已經(jīng)支持向和遷移的以及客戶。最終將把產(chǎn)品擴(kuò)展到支持向轉(zhuǎn)移的和客戶,以及向轉(zhuǎn)移的客戶。Oracle Soar將一系列自動遷移工具與專業(yè)服務(wù)相結(jié)合,所有這些都由Oracle提供——這是一套完整的內(nèi)部遷移解決方案。這種半自動化的解決方案,也讓Ora...

    teren 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<