sql >> データベース >  >> RDS >> Oracle

OracleをPostgreSQLに接続する

    次の手順は、Linux上のOracleをPostgreSQLに接続する方法を示しています。 DG4ODBCの詳細については、DG4ODBCチュートリアルを参照してください。

    1. Linux用の64ビットPostgreSQLODBCドライバーをダウンロードします。
    2. OracleがインストールされているマシンにPostgreSQLODBCドライバーをインストールしてライセンスを取得します。

      インストール手順については、ODBCドライバーのドキュメントを参照してください。

      マシンにunixODBCDriverManagerがインストールされている必要があります。 Easysoftディストリビューションには、EasysoftPostgreSQLODBCドライバーがテストされたバージョンのunixODBCドライバーマネージャーが含まれています。 Easysoftドライバセットアッププログラムには、unixODBCをインストールするオプションがあります。

    3. OracleからアクセスするPostgreSQLデータベースに接続するODBCデータソースを/etc/odbc.iniに作成します。例:
      [POSTGRES_SAMPLE]
      Driver=Easysoft ODBC-Postgres Server
      Description=Easysoft ODBC-Postgres Server
      Server=192.0.2.1
      Port=5432
      Database=employees
      User=postgres
      Password=p4550rd
      Logging=No
      LogFile=
      Encrypt=No
      
    4. isqlを使用して新しいデータソースをテストします。例:
      cd /usr/local/easysoft/unixODBC/bin
      ./isql.sh -v POSTGRESQL_SAMPLE
      

      プロンプトで「help」と入力して、テーブルのリストを表示します。終了するには、空のプロンプト行でReturnキーを押します。

      接続できない場合は、この記事を参照してください。

    5. DG4ODBC初期化ファイルを作成します。これを行うには、hs/adminに変更します サブディレクトリ。例:
      cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
      

      ファイルinitdg4odbc.oraのコピーを作成します 。新しいファイルにinitpostgresql.oraという名前を付けます 。

    6. これらのパラメータと値がinitファイルに存在することを確認してください:
      HS_FDS_CONNECT_INFO = my_postgresql_odbc_dsn
      

      my_postgresql_odbc_dsnを置き換えます ターゲットPostgreSQLサーバーに接続するPostgreSQLODBCドライバーデータソースの名前を使用します。例

      HS_FDS_CONNECT_INFO = "POSTGRES_SAMPLE"
      
    7. DG4ODBCトレースを有効にする行をコメントアウトします。例:
      #HS_FDS_TRACE_LEVEL = <trace_level>
      
    8. listener.oraにエントリを追加します これにより、DG4ODBCのSID_NAMEが作成されます。例:
      SID_LIST_LISTENER =
       (SID_LIST =
         (SID_DESC=
           (SID_NAME=postgresql)
           (ORACLE_HOME=$ORACLE_HOME)
           (PROGRAM=dg4odbc)
         )
       )
      
    9. DG4ODBCエントリをtnsnames.oraに追加します これは、前の手順で作成したSID_NAMEを指定します。例:
      POSTGRESQL =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521))
          (CONNECT_DATA =
            (SID = postgresql)
          )
          (HS = OK)
        )
      

      oracle_hostを置き換えます Oracleマシンのホスト名を使用します。

    10. Oracleリスナーを起動(または再起動)します。例:
      lsnrctl stop
      lsnrctl start
      
    11. SQL*PlusでOracleデータベースに接続します。
    12. SQL * Plusで、ターゲットPostgreSQLサーバーのデータベースリンクを作成します。例:
      CREATE PUBLIC DATABASE LINK postgresqllink CONNECT TO
      "my_postgresql_user" IDENTIFIED by "my_postgresql_password" USING 'postgresql';
      SELECT * from employees@postgresqllink
      
    メモ
    • OracleからPostgreSQLへの接続に問題がある場合は、DG4ODBCトレースを有効にして、hs/logに書き込まれたトレースファイルを確認してください。 ディレクトリ。 DG4ODBCトレースを有効にするには、HS_FDS_TRACE_LEVEL = DEBUGという行を追加します。 initpostgresql.oraへ 次に、Oracleリスナーを起動/再起動します。 logの場合 ディレクトリが存在しない場合は作成してください。例:
      mkdir log
      chmod +w log
      
    • エラー「ORA-00997:LONGデータ型の不正使用」が発生した場合は、次のいずれかのエントリをODBCデータソースに追加します。
      DisguiseLong=1 # For non-Wide PostgreSQL long columns
      LimitLong=size in bytes # If this value is too big you will get ORA-00997

      –または–

      DisguiseWlong=1
      LimitLong=size in bytes# If this value is too big you will get ORA-00997
    • 「ORA-28562:異種サービスデータ切り捨てエラー」が発生した場合、OracleでPostgreSQLデータを操作するときに回避策がある可能性がありますが、それを使用することの意味を理解する必要があります。詳細については、Easysoftサポートチーム()にお問い合わせください。

    1. PL / SQLで関数を作成する方法は?

    2. 'GO'の近くの構文が正しくありません

    3. Postgresのテーブル列のデフォルト値を取得しますか?

    4. ArrayField内のDjangoJSONField