點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!
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)
)
該操作使用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
同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)
)
- 刪除文本文件中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 (i print $i }} shsnc.data_ora2tt.txt > shsnc.data_ora2tt.unl
執行TimesTen導入工具ttbulkcp,成功將文本文件shsnc.data_ora2tt.unl導入TimesTen內存庫:
ttbulkcp -i acct shsnc.data_ora2tt shsnc.data_ora2tt.unl
- 不需對TimesTen內存庫做任務配置變更;
在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報錯。
執行$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"
該操作要求在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>
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>
通過以上對兩種遷移方法的對比,可以看到:
方法一:手工Oracle端導出TimesTen端導入最大優勢是不需調整現網TimesTen配置、最大劣勢是需要手工對文本文件進行格式化效率越低;
方法二:ttLoadFromOracle最大優勢是效率高、最大劣勢是對現網TimesTen配置有要求;實際維護可以結合這兩種方式各自優勢,即在TimesTen測試環境使用方法二ttLoadFromOracle獲取建表DDL、并且將數據先遷移到TimesTen測試環境;然后再將數據從TimesTen測試環境同構遷移到生產環境,這樣既能避免對生產環境做過多的配置變更,又能保證遷移效率。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129153.html
摘要:大勢所趨,云原生數據庫的崛起不過,在全球數據庫領域,目前恐怕還不止這兩股力量。在年數據庫系統的魔力象限中,阿里云數據庫被列入遠見者象限,這是國產數據庫首次進入魔力象限。從傳統數據庫到云原生數據庫,這50年來,數據庫行業到底都發生了怎樣的變化?以Oracle為代表的傳統數據庫廠商,不斷邁向云化的過程,從中嘗到了甜頭。不僅可以讓用戶Oracle數據庫遷移到Oracle云上,順帶也把用戶業務帶上O...
摘要:和聯合總裁及董事會成員將在下周宣布更多的戰略。曾在去年月的大會上宣布了公共云計劃,其中包含了和的相關功能,以及云服務和數據庫云服務。目前已經表示將會把和整合進自身的公有云之中。但截至到目前,這些組件仍然處在預覽階段。 在當前的云計算時代,PaaS領域已經成為各大巨頭必爭之地。PaaS提供應用服務引擎,用戶基于該應用服務引擎可構建該類的應用,典型的案例有Google App Engine、...
摘要:年月日,遷移服務解決方案在城市峰會中正式發布。遷移服務向分布式架構升級的直接路徑基于上述問題和挑戰,同時經過螞蟻十年數據庫架構升級的先進經驗,螞蟻金服為客戶打造了這款一站式數據遷移解決方案遷移服務,簡稱。 2019年1月4日,OceanBase遷移服務解決方案在ATEC城市峰會中正式發布。螞蟻金服資深技術專家師文匯和技術專家韓谷悅共同分享了OceanBase遷移服務的重要特性和業務實踐...
摘要:年月日,遷移服務解決方案在城市峰會中正式發布。遷移服務向分布式架構升級的直接路徑基于上述問題和挑戰,同時經過螞蟻十年數據庫架構升級的先進經驗,螞蟻金服為客戶打造了這款一站式數據遷移解決方案遷移服務,簡稱。 2019年1月4日,OceanBase遷移服務解決方案在ATEC城市峰會中正式發布。螞蟻金服資深技術專家師文匯和技術專家韓谷悅共同分享了OceanBase遷移服務的重要特性和業務實踐...
摘要:客戶可以通過一款移動應用監控其遷移狀態。表示,隨著產品在后續版本中不斷調整,將轉向自主交付。然而認為,提供了更加全面的解決方案,包括咨詢和教育服務。現在已經支持向和遷移的以及客戶。最終將把產品擴展到支持向轉移的和客戶,以及向轉移的客戶。Oracle Soar將一系列自動遷移工具與專業服務相結合,所有這些都由Oracle提供——這是一套完整的內部遷移解決方案。這種半自動化的解決方案,也讓Ora...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20