熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle 數據庫向 MS SQL Server 7.0 的遷移(1)

2013-11-13 12:45:22  來源: Oracle 

  摘要本文是為希望將其應用程序轉為 Microsoft SQL Server 應用程序的 Oracle 應用程序開發人員所寫的文中講述了成功地進行轉換所需要的工具過程和技巧並突出強調了創建高性能高並發性 SQL Server 應用程序的基本設計原則
  
  本文的目標讀者應該具有
  
  堅實的 Oracle RDBMS 基礎知識背景
  全面的數據庫管理知識
  熟悉 Oracle SQL 和 PL/SQL 語言
  實際使用 C/C++ 編程語言的知識
  sysadmin 固定服務器角色的成員身份
  本文假定您熟悉與 Oracle RDBMS 有關的術語概念和工具有關 Oracle RDBMS 及其體系結構的詳細信息請參見 Oracle Server Concepts Manual(Oracle Server概念手冊)至於使用 Oracle 腳本和示例還假定您熟悉 Oracle Server Manager 和 Oracle SQL*Plus 工具有關這些工具的詳細信息請參見 Oracle 文檔
  
  目錄
  
  開發和應用程序平台
  概述
  本文組織結構
  體系結構和術語
  安裝和配置 Microsoft SQL Server
  定義數據庫對象
  實施數據完整性和業務規則
  事務鎖定和並發性
  死鎖
  SQL 語言支持
  游標的實現
  優化 SQL 語句
  使用 ODBC
  開發和管理數據庫復制
  遷移數據和應用程序
  數據庫示例
  
  開發和應用程序平台
  為了清楚和便於表述假定開發和應用程序平台是 Microsoft Visual Studio Microsoft Windows NT (Service Pack )SQL Server 和 Oracle Oracle 使用 Visigenic Software ODBC 驅動程序( 版)SQL Server 使用 Microsoft Corporation ODBC 驅動程序( 版)Microsoft SQL Server 包括用於 Oracle 的 OLE DB 驅動程序但在本章中不予詳細討論
  
  概述
  應用程序遷移過程似乎很復雜兩種 RDBMS 之間有很多體系結構方面的差異描述 Oracle 體系結構的詞匯和術語在 Microsoft SQL Server 中其含義常常完全不同此外Oracle 和 SQL Server 都有許多專有的 SQL 標准擴展
  
  從應用程序開發人員的角度來看Oracle 和 SQL Server 管理數據的方式是相似的但是Oracle 和 SQL Server 之間內部的差異是相當大的如果管理得當它對遷移應用程序造成的影響就會微乎其微
  
  開發人員面臨的最嚴峻遷移問題是SQL SQL 語言標准的實現和每種 RDBMS 提供的擴展一些開發人員只使用標准的 SQL 語言語句並傾向於使其程序代碼盡可能通用通常這意味著把程序代碼限定在初級 SQL 標准該標准在許多數據庫產品中均得到了一致的實現其中包括 Oracle 和 SQL Server
  
  這種方法可能給程序代碼帶來不必要的復雜性並顯著影響程序性能例如Oracle 的 DECODE 函數是 Oracle 特有的非標准 SQL 擴展Microsoft SQL Server 的 CASE 表達式已不止是初級 SQL 的擴展並未在所有的數據庫產品上實現
  
  如果不使用這兩個函數則可以編程方式實現其功能但可能需要從 RDBMS 檢索更多的數據
  
  此外SQL 語言的過程擴展也可能帶來困難Oracle PL/SQL 和 SQL Server TransactSQL 語言功能相似但語法不同各 RDBMS 及其過程擴展之間不存在精確的對等關系因此您可能會放棄使用存儲程序例如過程和觸發器這是令人遺憾的因為這些程序能夠提供極好的性能和安全性而這些用任何其它方式均無法實現
  
  使用專用的開發接口也會帶來其它的問題使用 Oracle OCI(Oracle 調用接口)轉換程序通常需要大量的資源投入當開發的應用程序可能使用多個 RDBMS 時應考慮使用開放式數據庫連接 (ODBC) 接口
  
  ODBC 是專為使用多種數據庫管理系統而設計的ODBC 提供一致的應用程序編程接口 (API)它通過數據庫特有驅動程序的服務與不同的數據庫一同工作
  
  一致的 API 是指不論程序與 Oracle 還是與 SQL Server 交互它在建立連接執行命令和檢索結果時所調用的函數是相同的
  
  ODBC 還定義了一個標准調用級接口並使用標准轉義序列指定執行公用任務的 SQL 函數但該函數在不同的數據庫中語法不同不需要修改任何程序代碼ODBC 驅動程序就可以自動地把 ODBC 語法轉換成原本的 Oracle 或 Microsoft SQL Server SQL 語法在某些情況中最好的方法是編寫一個程序使 ODBC 在運行時進行轉換
  
  ODBC 並不是一個神奇的解決方案不能對所有的數據庫均實現完全的數據庫獨立性完備的功能以及較高的性能不同的數據庫和第三方廠商提供不同級別的 ODBC 支持一些驅動程序只實現了映射在其它接口庫頂層的核心 API 函數其它驅動程序例如 Microsoft SQL Server 驅動程序在原本的高性能的驅動程序中提供全面的級別 支持
  
  如果程序只使用核心 ODBC API它可能放棄了一些數據庫帶有的功能和性能再者並不是所有原本的 SQL 擴展都可以用 ODBC 轉義序列表示例如 Oracle DECODE 和 SQL Server CASE 表達式就是這樣
  
  此外通過編寫 SQL 語句使用數據庫優化程序也是通常的做法在 Oracle 中用來提高性能的技巧和方法在 SQL Server 中並不一定最好ODBC 接口無法將技巧從一個 RDBMS 轉化到另一個 RDBMS 中
  
  ODBC 並不禁止應用程序使用數據庫特有的功能也不禁止優化性能但是應用程序需要一些數據庫特有的代碼部分有了 ODBC要使程序結構和絕大部分程序代碼在多個數據庫上保持一致就變得十分簡單
  
  OLE DB 是下一代的數據訪問技術Microsoft SQL Server 利用了 SQL Server 自身組件中的 OLE DB此外應用程序開發人員在 SQL Server 新的開發過程中應考慮使用 OLE DBMicrosoft 在 SQL Server 中加入了用於 Oracle 的 OLE DB 提供程序
  
  OLE DB 是 Microsoft 的一個戰略性系統級編程接口用於管理整個組織內的數據OLE DB 是建立在 ODBC 功能之上的一個開放規范ODBC 是為訪問關系型數據庫而專門開發的OLE DB 則用於訪問關系型和非關系型信息源例如主機 ISAM/VSAM 和層次數據庫電子郵件和文件系統存儲文本圖形和地理數據以及自定義業務對象
  
  OLE DB 定義了一組 COM 接口對各種數據庫管理系統服務進行封裝並允許創建軟件組件實現這些服務OLE DB 組件包括數據提供程序(包含和表現數據)數據使用者(使用數據)和服務組件(處理和傳送數據例如查詢處理器和游標引擎)
  
  OLE DB 接口有助於平滑地集成組件這樣OLE DB 組件廠商就可以快速地向市場提供高質量 OLE DB 組件此外OLE DB 包含了一個連接 ODBC 的橋梁對現用的各種 ODBC 關系型數據庫驅動程序提供一貫的支持
  
  本文組織結構
  為了幫助您實現從 Oracle 向 SQL Server 的逐步遷移每節都包括一個 Oracle 和 Microsoft SQL 之間相關差異的概述此外還包括轉換時要考慮的因素SQL Server 的優勢以及多個示例
  
  體系結構和術語
  要成功地遷移開始之前應該了解與 Microsoft SQL Server 有關的基礎體系結構和術語本節中的許多例子均取自 Oracle 和 SQL Server 應用程序示例(附在文中)
  
  在 Oracle 中數據庫指整個 Oracle RDBMS 環境並包括以下組件
  
  Oracle 數據庫進程和緩沖區(實例)
  包含一個集中系統編錄的 SYSTEM 表空間
  其它由 DBA 定義的表空間(可選)
  兩個或多個在線重做日志
  存檔的重做日志(可選)
  各種其它文件(控制文件Initora 等等)
  Microsoft SQL Server 數據庫從邏輯上將數據應用程序和安全機制分離這一點與表空間非常相似Oracle 支持多個表空間SQL Server 則支持多個數據庫表空間還可用於支持數據的物理存放SQL Server 使用文件組提供相同的功能
  
   
  
  Microsoft SQL Server 還默認安裝下列數據庫
  
  model 數據庫是所有新創建的用戶數據庫的模板
  tempdb 數據庫與 Oracle 臨時表空間相似它用於臨時工作存儲和排序操作與 Oracle 臨時表空間不同的是用戶可以創建臨時表並在用戶注銷時自動刪除
  msdb 支持 SQL Server 代理及其計劃的作業警報和復制信息
  pubs 和 Northwind 數據庫作為培訓示例數據庫提供
  有關默認數據庫的詳細信息請參見 SQL Server Books Online
  
  每個 Oracle 數據庫均在一個集中系統編錄或數據字典上運行它駐留在 SYSTEM 表空間中每個 Microsoft SQL Server 數據庫均維護其自身的系統編錄它包含下列信息
  
  數據庫對象(表索引存儲過程視圖觸發器等等)
  約束
  用戶和權限
  用戶定義的數據類型
  復制定義
  數據庫使用的文件
  在 master 數據庫中SQL Server 還加入了一個集中系統編錄它包括系統編錄以及有關每個數據庫的一些信息
  
  數據庫名稱和每個數據庫的主文件位置
  SQL Server 登錄帳戶
  系統消息
  數據庫配置值
  遠程和/或鏈接的服務器
  當前活動信息
  系統存儲過程
  與 Oracle 中的 SYSTEM 表空間一樣要訪問任何其它數據庫SQL Server master 數據庫必須可用因此當 master 數據庫做重大修
From:http://tw.wingwit.com/Article/program/Oracle/201311/16526.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.