『壹』 sql2008的存儲過程怎麼遷移到另外一台sql2008資料庫來著
兩台電腦的ip肯定是不一樣的了,網站連接資料庫第一就要知道連接哪裡的,表示一個資料庫在哪裡,一般需要ip地址和通訊埠,你得修改網站的有關程序或配置,使原來連接舊資料庫的,改為連接新資料庫。
估計創建資料庫時,你用的就是sqlserver的預設埠,需要確認sql2000和sql2008的預設埠是否一致,如果不一致,在修改網站配置的時候,別落下它,好在兩個配置通常緊挨著,也不會輕易被忽略。
『貳』 如何把sql server資料庫遷移到oracle
前陣做了下資料庫遷移,從Sql Server2005遷移到Oracle
10g,這里說一下遷移的方法。
Sql
Server和Oracle區別比較大,包括語法,欄位類型,資料庫機制,配置管理方法等等,區別是全方位的,做遷移需要注意很多問題,在遷移過程中也會遇到問題,需要細細處理之。這里說一下資料庫結構的遷移,和遷移過程中注意的一些問題。(當然具體的資料庫遷移過程中可能問題是不一樣的,具體問題具體分析了)
遷移的方法是從Sql Server已有資料庫中生成出Oracle的建庫腳本,然後在Oracle資料庫上執行。用到的生成工具是Power
Designer。
1、打開PD(Power
Designer簡稱,以下均使用PD),新建一個PDM(物理數據模型),DBMS選擇Microsoft SQL
Server2005,Model name起名叫做mssdb。
2、通過逆向工程將現有Sql
Server資料庫生成PDM
(1)選擇Database->Reverse
Engineer Database,配置數據源,選擇要遷移的資料庫,輸入用戶名、密碼。
(2)選擇資料庫,選擇用戶dbo下的所有表、視圖、存儲過程、方法、觸發器、序列等(由於Sql Server與oracle,資料庫概念上的區別,這里不需選擇用戶、角色)。
點擊OK,生成PDM。已經建立過PDM的情況,這一步可以省略。
3、生成Oracle物理數據模型
選擇Tools->Generate Physical Data Model
(1)DBMS選擇Oracle
10g,輸入名稱:oradb。
(2)在Configure Model
Options配置中, Model Settings的Table&View界面中,勾選Ignore
identifying owner。Oracle中用戶的概念與Sql Server不同,這里忽略owner。
(3)Selection標簽,選擇需要生成的所有表、視圖、外鍵、存儲過程、方法、觸發器、序列等。
點擊確定,即生成了oracle 的PDM。
注意,在生成PDM的過程中可能不會一帆風順,有可能會報錯(比如提示對象長度超限),這會導致生成失敗。這時需要根據具體錯誤提示做相應修改(可能需要多次調整,沒有辦法,誰讓兩者差別這么大的呢)。
4、生成Oracle腳本
與Sql
Server不同的是,在Oracle里表名、欄位名全部為大寫,若要單獨處理為小寫,需加上雙引號。而PD生成的腳本默認是有雙引號的,這里需要修改默認配置,去掉雙引號。
然後選擇oradb,然後選擇Database->Generate
Database,進入資料庫生成界面
在Format標簽下,去掉勾選Owner prefix,它將省掉建表語句前「dbo.」所帶來的麻煩;
在Selection標簽下,選擇要生成腳本的各對象;
在Preview標簽下,可以預覽預生成的腳本(表較多時,切換會比較慢)。
點擊確定,即得到生成的腳本。
5、檢查與調整
腳本是PD自動生成的,因為表比較多,在oracle上直接去執行難免會有錯誤。所以在執行之前需要檢查下腳本的正確性。這里提幾點需要注意的地方。
(1)Oracle要求表名、欄位名等長度最多是30位,而Sql Server沒有這個限制,所以可能會有在Sql
Server創建正常的表而在Oracle下會創建失敗。
(2)檢查一下主鍵、外鍵的名稱,它們有可能是隨機生成的名稱。可根據相應規范進行修改。
(3)檢查欄位名是否用到了Oracle的關鍵字。比如Sql
Server命名「備注」欄位可能會用「comment」、標題用「title」,但comment、title在Oracle中是關鍵字,不可以做為欄位名稱。
(4)存儲過程、方法是否符合Oracle語法。
(5)Sql
Server有自增欄位,而Oracle沒有。要實現此功能,需要相應創建序列、觸發器。
(6)Sql
Server中欄位類型為text的情況,如果是存二進制數據需要在Oracle中選用Blob欄位類型。
(7)Sql
Server有外鍵的情況,主表記錄刪除,從表記錄也會跟著刪除;而Oracle默認情況是當從表有記錄時,所對應的主表記錄不允許刪除。所以這種情況下外鍵需要添加外鍵級聯刪除。
(8)生成的表、視圖等個數是否正確,缺失的情況可單獨生成腳本。
系統不一樣,出現問題的點可能也不一樣,具體問題具體分析。
6、建庫
在Oracle資料庫服務(當然要先安裝好Oracle服務端、並建立資料庫)orcl實例下,使用用戶sys登陸並創建用戶orauser,並將resource、connect角色賦給orauser(這里,orauser使用默認表空間、默認臨時表空間)。
用剛創建的用戶orauser登陸orcl資料庫服務,執行前面已經生成的腳本,若干分鍾後腳本執行完畢,觀察一下執行過程中有無錯誤產生,也可以記錄執行的日誌以便日後查看;檢查看錶、視圖等個數與Sql
Server資料庫中是否一致。如果都正確,那麼,資料庫結構從Sql
Server到Oracle的遷移到此結束。當然,遷移的是否正確還需要在之後的使用中檢查,發現錯誤及時修改即可。
『叄』 MySQL資料庫新特性之存儲過程入門教程
在MYSQL 中 終於引入了存儲過程這一新特性 這將大大增強MYSQL 的資料庫處理能力 在本文中 將指導讀者快速掌握MYSQL 的存儲過程的基本知識 帶領用戶入門
存儲過程介紹
存儲過程是一組為了完成特定功能的SQL語句集 經編譯後存儲在資料庫中 用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它 存儲過程可由應用程序通過一個調用來執行 而且允許用戶聲明變數 同時 存儲過程可以接收和輸出參數 返回執行存儲過程的狀態值 也可以嵌套調用
存儲過程的優點
作為存儲過程 有以下這些優點
( )減少網路通信量 調用一個行數不多的存儲過程與直接調用SQL語句的網路通信量可能不會有很大的差別 可是如果存儲過程包含上百行SQL語句 那麼其性能絕對比一條一條的調用SQL語句要高得多
( )執行速度更快 存儲過程創建的時候 資料庫已經對其進行了一次解析和優化 其次 存儲過程一旦執行 在內存中就會保留一份這個存儲過程 這樣下次再執行同樣的存儲過程時 可以從內存中直接中讀取
( )更強的安全性 存儲過程是通過向用戶授予許可權(而不是基於表) 它們可以提供對特定數據的訪問 提高代碼安全 比如防止 SQL注入
( ) 業務邏輯可以封裝存儲過程中 這樣不僅容易維護 而且執行效率也高
當然存儲過程也有一些缺點 比如
可移植性方面 當從一種資料庫遷移到另外一種資料庫時 不少的存儲過程的編寫要進行部分修改
存儲過程需要花費一定的學習時間去學習 比如學習其語法等
在MYSQL中 推薦使用MYSQL Query Browswer()這個工具去進行存儲過程的開發和管理 下面分步驟來學習MYSQL中的存儲過程
定義存儲過程的結束符
在存儲過程中 通常要輸入很多SQL語句 而SQL語句中每個語句以分號來結束 因此要告訴存儲過程 什麼位置是意味著整個存儲過程結束 所以我們在編寫存儲過程前 先定義分隔符 我們這里定義 // 為分隔符 我們使用DELIMITER //這樣的語法 就可以定義結束符了 當然你可以自己定義其他喜歡的符號
如何創建存儲過程
下面先看下一個簡單的例子 代碼如下
DELIMITER//CREATEPROCEDURE`p ` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERMENT A procere BEGINSELECT Hello World ! ;END//
下面講解下存儲過程的組成部分
)首先在定義好終結符後 使用CREATE PROCEDURE+存儲過程名的方法創建存儲過程 LANGUAGE選項指定了使用的語言 這里默認是使用SQL
)DETERMINISTIC關鍵詞的作用是 當確定每次的存儲過程的輸入和輸出都是相同的內容時 可以使用該關鍵詞 否則默認為NOT DETERMINISTIC
) SQL SECURITY關鍵詞 是表示調用時檢查用戶的許可權 當值為INVOKER時 表示是用戶調用該存儲過程時檢查 默認為DEFINER 即創建存儲過程時檢查
) MENT部分是存儲過程的注釋說明部分
lishixin/Article/program/MySQL/201404/30557
『肆』 oracle存儲過程向DB2遷移
資料庫遷移可以看作一個特殊的軟體開發項目,與其他開發項目不同的是這個項目的需求是確定的,技術障礙較低,主要工作是代碼編寫和測試。對資料庫管理人員來說,資料庫數據遷移極具挑戰性,一旦措施不當,珍貴的數據資源將面臨丟失的危險,要成功地實現資料庫數據平滑遷移,需要周密計劃和充分准備,並按照一定的步驟來完成。另一方面,資料庫遷移項目的成功也主要依賴於客戶與開發商的積極配合和有序組織。當然,企業資料庫通常數據量都比較大,結構也比較復雜,如果完全通過手工來完成,那是一個不可想像的大工程。所以正確的步驟加合適的遷移工具也能達到事半功倍的效果。
Oracle向DB2遷移的主要流程
Oracle向DB2遷移一般來說遵循3大流程:遷移評估、模擬遷移、正式遷移。
1、遷移評估
全面的評估是遷移成功的一個關鍵要素,評估的總體目標是發現可能影響遷移過程的問題以便分配足夠的資源來保證遷移取得成功。首先,是評估應用環境和應用程序,識別潛在的障礙;第二,您的 Oracle 資料庫將在多大程度上適應 DB2 的硬數據;最後,分析 Oracle 資料庫對象和過程,識別使用 DB2中不支持的那些特性的對象和過程。
2、模擬遷移
1)在進行模擬遷移前,我們必須先設計數據遷移的方案,一般設計數據遷移方案主要包括以下幾個方面工作:研究與數據遷移相關的資料,或在網站上查詢相關內容、選擇數據遷移的軟硬體平台、選擇數據遷移方法、選擇數據備份和恢復策略、設計數據遷移和測試方案等。
2)根據設計的數據遷移方案,建立一個模擬的數據遷移環境,它既能模擬實際環境又不影響實際數據,然後在數據模擬遷移環境中測試數據遷移的效果。數據模擬遷移前也應按備份策略備份模擬數據,以便數據遷移後能按恢復策略進行恢復測試。
3)根據設計的數據遷移測試方案測試數據模擬遷移,也就是檢查數據模擬遷移後數據和應用軟體是否正常,主要包括:數據一致性測試、應用軟體執行功能測試、性能測試、數據備份和恢復測試等。
3、正式遷移
數據模擬遷移測試成功後,可以正式實施數據的遷移了。在這里介紹一種簡單的測試方法,首先利用 DB2 兼容特性遷移 Oracle 應用,創建兼容模式 DB2 資料庫。在 DB2 V9.7 上啟用 Oracle 應用程序時,實例和資料庫必須處於兼容模式。還建議調整舍入行為以匹配 Oracle。通過把重新驗證語義(revalidation semantics)設置為 deferred_force,可以不按依賴次序部署對象。
在 UNIX 系統上:
$ db2set DB2_COMPATIBILITY_VECTOR=ORA
$ db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES$ db2stop force
$ db2start
$ db2 create db testdb automatic storage yes on /db2data1,/db2data2,/db2data3 DBPATH ON /db2system PAGESIZE 32 K$ db2 update db cfg for testdb using auto_reval deferred_enforce$ db2 update db cfg for testdb using decflt_rounding round_half_upC:\> db2 update db cfg for testdb using decflt_rounding round_half_up在Windows上:
C:\> db2set DB2_COMPATIBILITY_VECTOR=ORA
C:\> db2set DB2_DEFERRED_PREPARE_SEMANTICS=YESC:\> db2stop force
C:\> db2start
C:\> db2 create db testdb automatic storage yes on C:,D: DBPATH ON E: PAGESIZE 32 KC:\> db2 update db cfg for testdb using auto_reval deferred_enforceC:\> db2 update db cfg for testdb using decflt_rounding round_half_up然後是將 Oracle 資料庫對象和數據遷移到 DB2。DB2 9.7 提供的原生 Oracle PL/SQL 和 Oracle SQL 支持極大地簡化了這一過程。現在我們先來看一個簡單的示例,這個例子選自 Oracle 來演示 PL/SQL 中 CASE 語句的使用,例子如下:
set serveroutput on
Drop function Get_Grade3;
create or replace function Get_Grade3(score IN NUMBER) RETURN VARCHAR2 isbegin
use a Searched CASE Statement to find the Grade for thescore passed in as a parameter
CASE
WHEN score BETWEEN 80 AND 100 THEN return A;WHEN score BETWEEN 65 AND 79 THEN return B;WHEN score BETWEEN 50 AND 64 THEN return C;WHEN score BETWEEN 40 AND 49 THEN return D;WHEN score BETWEEN 0 AND 39 THEN return F;Comment the ELSE leg to generate the exceptionELSE return Invalid score;
END CASE;
exception
when CASE_NOT_FOUND then
return Exception - Case Not Found for score - || score;end Get_Grade3;
select Get_Grade3(-1) from al
C:\> db2 update db cfg for testdb using decflt_rounding round_half_up把這段代碼保存在本地計算機的 D 盤下面為 casetest.sql,在 DB2 的 CLP plus 中運行一下,居然一點都不需要修改就運行成功了,運行的結果如下:
Oracle 向 DB2遷移:主要的流程與工具
這說明 DB2 對 Oracle 的兼容性的支持已經達到了一個很好的程度了。但是並不是所有程序都可以這么幸運的無需要修改就能正確的運行的。為了能夠更好的完成遷移工作,還是需要了解兩者之間特性的范圍,以便我們能夠更好的進行修改工作。在這里就不做說明了,大家可以去網上找找。
Oracle 向 DB2遷移工具
1. IBM DB2 Migration Toolkit
利用免費的 IBM DB2 Universal Database(UDB)Migration Toolkit(MTK)簡化和改進向 DB2 UDB 的遷移工作。這個新的遷移實用程序提供了向導和易於使用的五步界面,這些有助於您快速地將現有的 Sybase、 Microsoft SQL Server和Oracle資料庫對象轉換到 DB2 通用資料庫。使用 MTK,可以將數據類型、表、列、視圖、索引、存儲過程和觸發器自動地轉換成等價的 DB2 資料庫對象。MTK 向資料庫管理員(DBA)和應用程序程序員提供了使遷移任務自動化所需要的工具,而以前這些任務不但效率低下而且開銷巨大。通過使用 MTK 中的以下特性,您可以減少停機時間、消除人為錯誤,以及降低人工和與傳統資料庫遷移相關聯的其它資源消耗。MTK 可運行於 AIX、Linux、Solaris 和 Windows 操作系統上。
2. IBM Data Movement Tool
利用 DB2 兼容特性和 IBM 提供的免費數據遷移工具 Data Movement Tool,快速地將現有的 Oracle 資料庫對象轉換到 DB2 通用資料庫。同時對應用中使用到的資料庫訪問語言以及介面進行轉換,最終實現整個應用系統的完整遷移。
3. IBM Optim Development Studio
IBM Optim Development Studio,它為 Oracle、DB2 和 Informix 提供一個集成的資料庫開發環境。Optim Development Studio 在開發和測試 SQL 和 XQuery 查詢、存儲過程、Web 服務和 Java 數據訪問層方面將生產力提高了 50%,而且允許在不同或者相同的數據伺服器中的數據對象包、存儲過程、表、用戶自定義函數、用戶自定義類型、視圖、模式等的復制粘貼。
這三款工具都是來自於IBM官方的,大家有需要可以進去官方下載。
總 結
以上只是簡單的介紹了下遷移的流程和常用的工具,總的來說,遷移過程是一個復雜的過程,中間可能出現很多意想不到的情況,遇到問題,先查資料尋求解決方法,要有細心和耐心!我們在做遷移時,一定要做好備份,測試工作。而遷移工具只是一個輔助作用,如果單靠遷移工具是遠遠不夠的。