當前位置:首頁 » 編程軟體 » oracle數據遷移腳本

oracle數據遷移腳本

發布時間: 2022-05-14 20:09:13

『壹』 sqlserver整個資料庫怎麼轉移到oracle資料庫

遷移主要有兩個工作:
1.
根據Sql
Server資料庫生成創建Oracle資料庫的腳本
2.
修改代碼中的SQL語句
根據Sql
Server資料庫生成創建Oracle資料庫的腳本
1.
用PowerDesiner將Sql
Server資料庫反向工程生成物理數據模型
2.
根據反向工程生成的物理數據模型創建邏輯模型
3.
再根據邏輯模型生成Oracle資料庫版本的物理模型
4.
根據Oracle資料庫版本的物理模型生成Oracle資料庫創建腳本
5.
按照Oracle命名規則和數據類型定義修改Oracle資料庫創建腳本
6.
在PL/SQL
Developer中執行以檢驗其正確性
修改代碼中的SQL語句
1.
Sql
Server中經常用方括弧把表名和欄位名括起來,
到Oracle中要把這些方括弧都去掉
2.
將參數變更前的"@"符號改為":"符號
3.
將Sql
Server專有的方法和函數替換成Oracle相應的方法和函數
4.
在PL/SQL
Developer中執行SQL語句以檢驗其正確性
轉換過程中的常見問題
1.
表名和欄位名使用了Oracle中的關鍵字
2.
Sql
Server中的NVARCHAR數據類型可存4000個漢字,
Oracle中的NVARCHAR/NVARCHAR2數據類型只能存2000個漢字
3.
索引名稱和外鍵名稱超過了30個字元

『貳』 怎樣用最簡單的方法復制或遷移Oracle資料庫

在DBA的日常工作中,經常需要重裝或在新機器上安裝Oracle,但每次安裝所浪費的時間、精力以及失敗的挫折都在考驗著DBA的承受能力,本文著重介紹了一個簡單的復制和遷移Oracle資料庫的方法,詳細內容請參考下文。

復制遷移的步驟如下:

◆1、首先,復制原Oracle資料庫的安裝目錄到新機器或系統中的安裝目錄,注意目錄要一致,盤符也要一致。

◆2、假如Oracle的安裝目錄不在Program Files系統文件夾下,我們需要把原系統中的Program Files文件夾下的Oracle目錄也復制到新系統的Program Files文件夾中去。

◆3、導出原系統中的Oracle注冊表信息,主要注冊信息如下:
A. HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE
B. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services 下有關Oracle的所有鍵,通常包括以下9個:
/OracleMTSRecoveryService
/OracleOraHome92Agent
/OracleOraHome92ClientCache
/OracleOraHome92HTTPServer
/OracleOraHome92PagingServer
/
/
/OracleOraHome92TNSListener
/OracleServiceORA8

◆4、注意:有多少個資料庫,注冊表服務鍵下的OracleServiceXXX就會有多個。其中最主要的有監聽服務和資料庫服務,即OracleOraHome92TNSListenerXXX和OracleServiceXXX。

◆5、將導出的所有注冊表的信息在新的系統中導入(注冊)。

◆6、設置系統環境變數,打開"我的電腦"的"屬性"界面,在"高級"而點擊"環境變數"進入設置,找到[Path]系統變數項目,點"編輯",在變數值的輸入框的最後,加入";ORACLE的安裝目錄"。

◆7、最後我們需要進入 C:/Documents and Settings/All Users/Start Menu/Programs下把 Oracle - OraHome92 和 Oracle Installation Procts 兩個菜單文件夾也復制到新系統中,此時,就和新安裝的一樣了。重啟系統後,成功完成。

『叄』 oracle數據遷移有幾種方法

數據量小的話一般直接用數據泵或者exp/imp就ok了,也可以用rman備份,這些都是比較常規的,偏門點的可以用傳輸表空間,dblink直接復制等,反正看情況。

『肆』 怎麼將oracle資料庫的數據遷移

遷移的話,直接導出一個庫的dmp文件,之後導入到另外一個庫裡面就可以了(導出和導入資料庫版本必須一直,否則導入可能會報錯)。
遷移數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:\chu.dmp中
exp system/manager@TEST file=d:\chu.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:\chu.dmp owner=(system,sys)
3 將資料庫中的表table1 、table2導出
exp system/manager@TEST file=d:\chu.dmp tables=(table1,table2)
4 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出

『伍』 一段Oracle資料庫腳本轉成sql server腳本怎麼轉換

這個一般應該用資料庫的遷移工具,直接對資料庫進行轉換;而不是對 資料庫腳本進行轉換。
對於你的情況,給一個建議:
先在Oracle中執行腳本,還原 Oracle資料庫。
用powerdesigner生成資料庫的物理模型(此處也可以直接用遷移工具)
在將資料庫類型換成sqlserver,生成適合sqlserver的腳本。
上面的過程,只適合於表結構(主要是欄位類型)。
對於視圖、存儲過程、觸發器 等,應該還是需要自己修改。

『陸』 如何將正在運行的 Oracle 資料庫遷移到另一個系統

1、安裝 Oracle Solaris 操作系統

新的 SPARC 伺服器上預先安裝了 Oracle Solaris。對於這些系統,應確保安裝了相應的 Oracle Solaris 版本,並驗證打了所需的補丁。

2、安裝 Oracle VM Server for SPARC 軟體

新的 SPARC 伺服器上也預先安裝了 Oracle VM Server for SPARC 軟體。對於這些系統,應確保安裝了相應的 Oracle VM Server for SPARC 版本,並驗證打了所有需要的補丁。

3、配置存儲陣列

Sun Storage 2540-M2 存儲陣列連接到控制域,控制域將兩個 LUN(LUN 0 和 LUN 1)作為虛擬磁碟導出到來賓域。

4、配置控制域

安裝 Oracle VM Server for SPARC 軟體之後,重新配置當前系統使其成為控制域。

5、配置來賓域

配置控制域之後,創建來賓域以用作 Oracle 資料庫節點。在作為源計算機的物理伺服器上,僅創建一個來賓域。另一台物理伺服器最終將成為目標計算機。

6、准備目標伺服器

按如下方式准備目標伺服器。

  • 執行以下各節中所述的步驟來准備目標計算機:

  • 安裝 Oracle VM Server for SPARC 軟體

  • 配置控制域

  • 確保在目標伺服器上提供了供待遷移域使用的所有虛擬 I/O 服務。

  • 確保目標伺服器有權訪問同一存儲中的 LUN 0 和 LUN 1。

  • 確保待遷移域中的每個虛擬網路設備在目標計算機上都有一個對應的虛擬網路交換機。

『柒』 oracle數據遷移怎麼做

簡單到不能再簡單。
1先弄個DBLINK
2.通關select into from 直接創建並寫入表到要遷移的資料庫中

『捌』 如何把 DB2 數據遷移到 oracle 中

數據遷移:
1、在DB2資料庫中通過以下表查詢出表的結構
SELECT
TABNAME TAB, --表英文名稱
COLNAME COL, --列名稱
CASE
WHEN TYPENAME='VARCHAR' THEN 'VARCHAR2'
WHEN TYPENAME LIKE 'SMALLINT' OR TYPENAME LIKE 'BIGINT' THEN 'INTEGER'
WHEN TYPENAME ='CHARACTER' THEN 'CHAR'
WHEN TYPENAME='DECFLOAT' OR TYPENAME ='DECIMAL' THEN 'NUMBER'
ELSE TYPENAME
END TY
, --數據類型
LENGTH LEN , --列長度
scale S, --精度
CASE
WHEN NULLS='N' THEN '否'
WHEN NULLS='Y' THEN '是'
END N --是否為空
--TY||'('||LEN||')'
FROM
SYSCAT.COLUMNS S
WHERE
LEFT( TABSCHEMA, 3 ) <> 'SYS'
/* and s.SCALE <>0*/
ORDER BY
S.TABNAME,
S.COLNO

2、根據表的結構在oracle資料庫中建表(腳本見《create_tab_onOracle.sql》)

3、通過編寫java程序把數據從DB2導入到oracle資料庫中(以下代碼思想僅供參考)
3.1、 導入db2jcc_license_cu.jar 、db2jcc.jar 、ojdbc14.jar 三個jar包即可
3.2、 編寫三個工具類

此類鏈接DB2資料庫工具類
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionDB2 {
private static final String URL="jdbc:db2://192.168.0.98:50000/sem"; //DB2資料庫url
private static final String USER="db2admin"; //DB2資料庫賬號
private static final String PASSWORD="dnhc9988"; //DB2資料庫密碼
static{
try {
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance(); //利用反射注冊驅動
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public Connection getConnection(){
Connection conn=null;
try {
conn=DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}

此類鏈接oracle資料庫工具類
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionDB2 {
private static final String URL="jdbc:db2://192.168.0.98:50000/sem"; //DB2資料庫url
private static final String USER="db2admin"; //DB2資料庫賬號
private static final String PASSWORD="dnhc9988"; //DB2資料庫密碼
static{
try {
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance(); //利用反射注冊驅動
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public Connection getConnection(){
Connection conn=null;
try {
conn=DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}

此類用來關閉資料庫連接工具類
package com.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CloseFunction {
//關閉連接方法,釋放資源
public static void closeConnection(Connection conn){
if (conn !=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

//關閉執行sql,釋放資源
public static void closeExecuteSQL(Statement preparedStatement){
if (preparedStatement !=null){
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

//關閉查詢SQL結果,釋放資源
public static void closeResultSet(ResultSet resultSet){
if(resultSet !=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

關鍵在此類:需要從DB2資料庫查詢語句放在db2SQL變數中,往oracle插入數據的語句放在oracleSQL變數中。注意,查詢和插入的語句中欄位順序要一致,在while循環里要對日期時間處理(用setDate),然後執行junit測試類就可以了。
package com.;
import java.security.interfaces.RSAKey;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.util.CloseFunction;
import com.util.ConnectionDB2;
import com.util.ConnectionOracle;

public class FromDB2ToOracle {
@Test
public void test1() throws SQLException{
long startTime=System.currentTimeMillis(); //記錄開始時間
Connection connDB2=null; //鏈接DB2資料庫
Connection connOracle=null; //鏈接oracle資料庫
Statement statement=null;
ResultSet resultSet=null;
PreparedStatement preparedStatement=null;
try {
ConnectionOracle connectionOracle=new ConnectionOracle();
// System.out.println(connectionOracle+"鏈接oracle成功!");
ConnectionDB2 connectionDB2=new ConnectionDB2();
// System.out.println(connectionDB2+"-->>>鏈接DB2資料庫成功!");
connDB2=connectionDB2.getConnection();
//執行DB2資料庫sql語句,此處並非固定代碼
String
db2SQL="SELECT ID,SENDNO,SENDTYPE,BRNUMBER
,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID from
DB2ADMIN.ET_SENDMESSAGEINFO";
//執行oracle資料庫sql語句,此處並非固定代碼
//String oracleSQL="INSERT INTO EPC.SYS_LOG(ID,REMARK) values(?,?)";
String
oracleSQL="INSERT INTO
EPC.ET_SENDMESSAGEINFO(ID,SENDNO,SENDTYPE,BRNUMBER
,SENDTIME,ALARMTIME,SENDCONTENT,ISSEND ,ELEALARMID )"
+ "VALUES(?,?,?,?,?,?,?,?,?)";
statement=connDB2.createStatement();
statement.execute(db2SQL); //執行sql語句
resultSet=statement.getResultSet(); //獲取DB2資料庫的結果集
connOracle=connectionOracle.getConnection(); //獲取oracle資料庫連接
connOracle.setAutoCommit(false); //把oracle資料庫設置為非自動提交,以免在再循環里每次都提交,減低效率
preparedStatement=connOracle.prepareStatement(oracleSQL); //執行oracle語句,預編譯
int num=0;
while (resultSet.next()) {
num ++;
preparedStatement.setString(1,resultSet.getString("ID"));
preparedStatement.setString(2, resultSet.getString("SENDNO"));
preparedStatement.setString(3, resultSet.getString("SENDTYPE"));
preparedStatement.setString(4, resultSet.getString("BRNUMBER"));
preparedStatement.setDate(5, resultSet.getDate("SENDTIME"));
preparedStatement.setDate(6, resultSet.getDate("ALARMTIME"));
preparedStatement.setString(7, resultSet.getString("SENDCONTENT"));
preparedStatement.setString(8, resultSet.getString("ISSEND"));
preparedStatement.setString(9, resultSet.getString("ELEALARMID"));/*
preparedStatement.setString(10, resultSet.getString("CONSUMETIME"));
preparedStatement.setString(11, resultSet.getString("TASKID"));
preparedStatement.setString(12, resultSet.getString("ISSYNCHRO"));
preparedStatement.setString(13,resultSet.getString("LOGTYPE"));
preparedStatement.setString(14, resultSet.getString("ISCACHE"));
preparedStatement.setString(15, resultSet.getString("LAST_RPORT_TIME"));
preparedStatement.setString(16, resultSet.getString("AUTO_REMEMBER"));
preparedStatement.setString(17, resultSet.getString("REMARK"));*/
preparedStatement.addBatch();
//每一萬次在oracle資料庫里提交事務
if(num>10000){
preparedStatement.executeBatch();
connOracle.commit();
num=0;
}
}
preparedStatement.executeBatch();
connOracle.commit();
} catch (Exception e) {
connOracle.rollback(); //oracle資料庫事務回滾
e.printStackTrace();
}finally{
new CloseFunction().closeConnection(connOracle); //關閉oracle資料庫,釋放資源
new CloseFunction().closeConnection(connDB2); //關閉DB2資料庫,釋放資源
long endTime=System.currentTimeMillis(); //記錄程序結束時間
System.out.println("總的時間:"+(endTime-startTime)/1000+"秒");
}
}
}

熱點內容
open函數c語言 發布:2024-04-25 21:47:42 瀏覽:405
簡訊刪除後怎麼找伺服器 發布:2024-04-25 21:15:06 瀏覽:387
查ip地址伺服器數量 發布:2024-04-25 20:49:48 瀏覽:620
安卓手機單核性能為什麼不高 發布:2024-04-25 20:48:07 瀏覽:56
群暉php 發布:2024-04-25 20:00:35 瀏覽:884
怎麼查看我的wifi密碼 發布:2024-04-25 18:54:43 瀏覽:757
fckeditorforjava 發布:2024-04-25 18:50:27 瀏覽:624
優酷上傳視頻需要多久 發布:2024-04-25 18:33:05 瀏覽:675
inf12編譯器 發布:2024-04-25 18:15:39 瀏覽:99
撲克總督3安卓哪裡下載 發布:2024-04-25 18:10:02 瀏覽:395