国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從Oracle數據庫向TimesTen內存庫遷移數據

IT那活兒 / 789人閱讀
從Oracle數據庫向TimesTen內存庫遷移數據

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!

Oracle&TimesTen

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

本文主要分享通過手工Oracle端導出TimesTen端導入執行ttIsql內置過程ttLoadFromOracle實現Oracle數據庫到TimesTen的數據遷移,對比兩種方法的實現步驟及遷移效率,在實際維護工作中根據操作場景靈活選擇適合的方法。

以下操作在測試環境中將Oracle數據庫中shsnc.data_ora2tt表數據遷移到TimesTen數據庫中,Oracle數據庫中shsnc.data_ora2tt表結構如下:

-- 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端導出TimesTen端導入

1. 操作步驟

1.1 Oracle端手工導出

該操作使用Oracle的spool實現,導出成文本文件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導入報錯【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中創建表

同Oracle數據庫建表語句:

-- 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導出的文本文件

導入TimesTen內存庫前,文本文件未經過以下任一項格式化,導入TimesTen均會報錯:
  • - 刪除文本文件中SQL命令;

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

  • - 時間列格式調整為yyyy-mm-dd hh24:mi:ss;

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

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

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

-- 首行增加TimesTen導入文本格式說明內容,指定列前后增加雙引號

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端手工導入

執行TimesTen導入工具ttbulkcp,成功將文本文件shsnc.data_ora2tt.unl導入TimesTen內存庫:

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

2. 總結該方法特點

  1. - 不需對TimesTen內存庫做任務配置變更;

  2. - 需要對Oracle數據庫導出文本文件進行格式化,效率低。

通過ttLoadFromOracle將數據從Oracle遷移到TimesTen

1. 操作步驟

1.1 設置TimesTen與Oracle數據庫的連通性

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

在目錄$TT_HOME/network/admin/samples下有示例的tnsnames.ora文件。一般Oracle數據庫和TimesTen實例位于不同主機上。TimesTen主機上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內存庫還未配置環境變量$TNS_ADMIN,因此TimesTen主機上連Oracle報錯。

1.2 ttModInstall配置環境變量$TNS_ADMIN

執行$TT_HOME/bin/ttmodinstall進行配置(需要重啟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 ...

## 實例重啟后加載內存庫

ttadmin -ramload acct

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

經測試,此時,TimesTen內存庫主機上連接Oracle正常:

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

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

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

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

1.3 在TimesTen中創建表

該操作要求在TimesTen中的表存在,如果不存在,可以借助于TimesTen內置過程ttTableSchemaFromOraQueryGet獲得建表DDL,執行后完成在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 執行ttLoadFromOracle進行數據遷移

ttLoadFromOracle命令的格式為:

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

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

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

  • numThreads,TT_INTEGER,并發線程數(默認4個線程);

執行如下,成功將Oracle數據庫shsnc.data_ora2tt表直接導入TimesTen內存庫:

$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. 總結該方法特點

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

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

方法一:手工Oracle端導出TimesTen端導入最大優勢是不需調整現網TimesTen配置、最大劣勢是需要手工對文本文件進行格式化效率越低;

方法二:ttLoadFromOracle最大優勢是效率高、最大劣勢是對現網TimesTen配置有要求;實際維護可以結合這兩種方式各自優勢,即在TimesTen測試環境使用方法二ttLoadFromOracle獲取建表DDL、并且將數據先遷移到TimesTen測試環境;然后再將數據從TimesTen測試環境同構遷移到生產環境,這樣既能避免對生產環境做過多的配置變更,又能保證遷移效率。



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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129153.html

相關文章

  • 云而進,重構數據新格局

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

    ctriptech 評論0 收藏0
  • PaaS大戰一觸即發 Oracle劍拔弩張

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

    劉永祥 評論0 收藏0
  • OceanBase遷移服務:分布式架構升級的直接路徑

    摘要:年月日,遷移服務解決方案在城市峰會中正式發布。遷移服務向分布式架構升級的直接路徑基于上述問題和挑戰,同時經過螞蟻十年數據庫架構升級的先進經驗,螞蟻金服為客戶打造了這款一站式數據遷移解決方案遷移服務,簡稱。 2019年1月4日,OceanBase遷移服務解決方案在ATEC城市峰會中正式發布。螞蟻金服資深技術專家師文匯和技術專家韓谷悅共同分享了OceanBase遷移服務的重要特性和業務實踐...

    KaltZK 評論0 收藏0
  • OceanBase遷移服務:分布式架構升級的直接路徑

    摘要:年月日,遷移服務解決方案在城市峰會中正式發布。遷移服務向分布式架構升級的直接路徑基于上述問題和挑戰,同時經過螞蟻十年數據庫架構升級的先進經驗,螞蟻金服為客戶打造了這款一站式數據遷移解決方案遷移服務,簡稱。 2019年1月4日,OceanBase遷移服務解決方案在ATEC城市峰會中正式發布。螞蟻金服資深技術專家師文匯和技術專家韓谷悅共同分享了OceanBase遷移服務的重要特性和業務實踐...

    gnehc 評論0 收藏0
  • Oracle發布Oracle Soar全面云遷移產品

    摘要:客戶可以通過一款移動應用監控其遷移狀態。表示,隨著產品在后續版本中不斷調整,將轉向自主交付。然而認為,提供了更加全面的解決方案,包括咨詢和教育服務。現在已經支持向和遷移的以及客戶。最終將把產品擴展到支持向轉移的和客戶,以及向轉移的客戶。Oracle Soar將一系列自動遷移工具與專業服務相結合,所有這些都由Oracle提供——這是一套完整的內部遷移解決方案。這種半自動化的解決方案,也讓Ora...

    teren 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

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