SQL Serverのデータ移行[64]機械:ORACLEでのSQL Serverのクエリデータ

SQL ServerからORACLEクエリデータは、OracleにSQL Serverで作成することができ、達成するためにサーバーをリンクされますが、32ビット、64ビットマシンやソフトウェアに応じて

私たちは、別のドライバを実装する必要があります。 

64ビットマシン上で、アクセス・インターフェースを介して:OLE DBのOracleProvide、達成されます。 

 

1、機械およびソフトウェア環境

オペレーティングシステムは、次のとおりです。Windows 7の究極の64ビット版、SQ​​L Serverの20008R2 64魏、Oracle 11gの11.2.0.1.0 64ビット。

 

2、ORACLEの環境設定 

パスワードは、ユーザーがスコットの虎で、変更、および、サインインしようとすると、ルックアップテーブルをアカウントのロックを解除するために、オラクルを接続します。

1 C:\ Users \ユーザー管理> SQLPLUS / としてSYSDBA
 2   
3 SQL * Plusを:リリース11.20.10星期四3月に生産13  161103  2014年
4   
5著作権(C)19822010 、Oracleの。全著作権所有。
6   
7   
8  连接到:
 9 Oracle Database 11gのEnterprise Editionのリリース11.20.10 - 64生産
 10 ザ・パーティショニングでは、OLAP、アプリケーションのテストデータマイニングとRealオプションで
 11   
12 SQL> ALTERタイガーで識別されるユーザーのscott;
 13   
14  ユーザーが変更されました。
15   
16 SQL> ALTERスコットアカウントユーザUNLOCK;
 17   
18  ユーザーが変更されました。
19   
20 SQL>接続スコット/ タイガー
 21が 接続されています。
22で SQL> SELECT COUNT(*)からEMP;
 23は、    COUNT(* 24 ----------
 25     12れています

 ビューのlistener.oraは正しいです。

1ネットワーク設定ファイルのlistener.ora#:D:\アプリの\管理者\製品\ 11.20 \ dbhome_1 \ネットワーク\管理者\ listener.oraに
 2  Oracle設定ツールによって生成#。
3   
4   
5 SID_LIST_LISTENER =
 6    (SID_LIST =
 7      (SID_DESC =
 8        (SID_NAME = CLRExtProc)
 9        (ORACLE_HOME = D:\ \アプリ\ Administratorの\物11.20 \ dbhome_1)
 10        (PROGRAM = EXTPROC)
 11        (ENVS = "EXTPROC_DLLS = ONLY:D:\アプリ\管理\製品11.2.0 \ dbhome_1 \ビン\のoraclr11.dll \ 12  13   
14      (SID_DESC =
 15        (GLOBAL_DBNAME = ORCL)
 16        (ORACLE_HOME = D:\アプリ\管理\ \製品11.20 \ dbhome_1)
 17        (SID_NAME = ORCL)
 18  19  20   
21   
22   
23 LISTENER =
 24    (DESCRIPTION_LIST =
 25      (DESCRIPTION =
 26        (ADDRESS =(PROTOCOL = TCP)(HOST =ローカルホスト)(PORT = 1521))
 27  28

内側には特に注意してください:

 (SID_DESC =

      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = D:\アプリ\ Administratorの\製品11.2.0 \ dbhome_1 \)
      (SID_NAME = ORCL)


また、tnsnames.oraファイルが正しいことを参照してください。

1#のtnsnames.oraネットワーク設定ファイル:D:\ \アプリケーション\管理者\製品11.20 \ dbhome_1の\ NETWORK \ ADMINののの\のtnsnames.ora
 2  Oracle設定ツールによって生成#。
3   
4 ORACLR_CONNECTION_DATA =
 5    (DESCRIPTION =
 6      (ADDRESS_LIST =
 7        (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521))
 8  9      (CONNECT_DATA =
 10        (SID = CLRExtProc)
 11        (PRESENTATION = RO)
 12  13  14   
15LISTENER_orcl =
 16    (ADDRESS =(PROTOCOL = TCP)(HOST =ローカルホスト)(PORT = 1521 ))
 17   
18 ORCL =
 19    (DESCRIPTION =
 20      (ADDRESS =(PROTOCOL = TCP)(HOST =ローカルホスト)(PORT = 1521 ))
 21      (CONNECT_DATA =
 22        (SID = ORCL)
 23        (SERVER = DEDICATED)
 24        (SERVICE_NAME = ORCL)
 25  26

具体的には:

ORCL =
  (DESCRIPTION =
    (ADDRESS =(PROTOCOL = TCP)(HOST =ローカルホスト)(PORT = 1521))
    (CONNECT_DATA =
      (SID = ORCL)
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL) )  )
   


リスナーが正常であれば参照してください。

1つの SQL> ホストLSNRCTLステータス
 2   
3 LSNRCTL ための 64ビットのWindows:バージョン11.20.10 -オンの製造13 3月- - 2014  161621 
4   
5著作権(C)19912010 、オラクル。全著作権所有。
6   
7正在连接到(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST =ローカルホスト)(PORT = 1521 )))
 8  リスナーの的ステータス
 9 ----------------- -------
 10 別名LISTENER
 11バージョンTNSLSNR のための 64ビットのWindows:バージョン11.20.10 - 生産の
 12開始日                   13 -月- 2014年 131727 
13アップタイム               0ティエン2 Xiaoshi 5858 ミャオ族
 14  トレースレベルOFF
 15  安全ON:ローカル認証OS
 16  SNMP OFF
 17。リスナーパラメータファイルをD:\アプリケーション\管理者\製品\ 11.20 \ \ネットワーク\のADMIN dbhome_1のlistener.ora \
 18リスナー・ログ・ファイルd:\アプリケーション\管理者\ DIAG \ TNSLSNR \ GGG- PC \リスナー\アラート\たlog.xml
 。19  エンドポイントの要約をリスニング...
 20である    (DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 127.00.1)(PORT = 1521 )))
 21は 、サービスの抽象..
 22サービス" CLRExtProc "を含む。1つのインスタンス。
23基    の例としては、「CLRExtProc 、UNKNOWN状態、このサービスを備える。1 中...ハンドラ
 24サービス" ORCL "を含む。1つのインスタンス。
25基    の例はORCL 、ステータスUNKNOWN、このサービスは、1つのにハンドラを...
 26コマンドが正常に完了します

 

図3は、リンクサーバーをセットアップします。

tnsnames.oraファイルORCLサービス名:特に注目すべきなのは、データソースORCLが参照していることです。 

最初のステップは、「新しいリンクサーバー」を選択します

 

 第二段階は、OracleがOLE DBを提供する選択してください

 第三段階、製品を入力してください:オラクル、データソース:ORCL

 

 第四ステップは、実際の状況に応じて、この設定をoracleユーザー名とパスワードを入力し、入力がうまく決定するために、ポイントを終えました。

 

 

 4、試験クエリ

 

1  選択 * から OPENQUERY(xxxは、' EMP SELECT * FROM '

リターンの結果:

 

図5に示すように、コードで実装。

 1 /****** Object:  LinkedServer [ORCL_SCOTT]    Script Date: 03/13/2014 16:25:21 ******/
 2 EXEC master.dbo.sp_addlinkedserver 
 3        @server = N'ORCL_SCOTT', 
 4        @srvproduct=N'oracle', 
 5        @provider=N'OraOLEDB.Oracle', 
 6        @datasrc=N'orcl'
 7 GO
 8        
 9  /* For security reasons the linked server remote logins password is changed with ######## */
10 EXEC master.dbo.sp_addlinkedsrvlogin 
11        @rmtsrvname=N'ORCL_SCOTT',
12        @useself=N'False',
13        @locallogin=NULL,
14        @rmtuser=N'scott',
15        @rmtpassword='tiger'
16 go
17  
18  
19 select * from openquery(ORCL_SCOTT, 'SELECT * FROM scott.emp')

还可以用?表示绑定变量:

1 EXEC ( 'SELECT * FROM scott.emp') AT ORCL_SCOTT;
2 GO
3 EXEC ( 'SELECT * FROM scott.emp WHERE MGR = ?', 7902) AT ORCL_SCOTT;
4 GO
5 DECLARE @v INT; 
6 SET @v = 7902;
7 EXEC ( 'SELECT * FROM scott.emp WHERE MGR = ?', @v) AT ORCL_SCOTT;
8 GO 

 

6、通过openrowset函数来实现,更简单。

1 select *  from openrowset('OraOLEDB.Oracle','orcl';'scott';'tiger','select * from SCOTT.EMP')

返回结果:

 

おすすめ

転載: www.cnblogs.com/lgx5/p/11365016.html