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

OracleDG40DBCの微調整

    最近、お客様が、SQLServerODBCドライバーを使用してOracleをSQLServerに接続するときに発生した問題を解決する回避策を共有しました。お客様が受けていたエラーは次のとおりです。

    DELETE FROM mytable@MYLINKEDDATABASE
    WHERE MyCol = 'MyValue';
    
    17:01:01 [DELETE - 0 row(s), 0.000 secs] [Error Code: 2070, SQL State: 42000]
    ORA-02070: database MYLINKEDDATABASE does not support some function in this context

    これは次の方法で解決されました:

    SQL> select fds_class_name from HS_FDS_CLASS;
    ODBC11.2.0.2.0_0008
    exec dbms_hs.replace_class_caps('ODBC11.2.0.2.0_0008', 564,'ODBC11.2.0.2.0_0008',564,
    	                                                                 8191,NULL,1);
    
    PL/SQL procedure successfully completed.
    
    SQL> commit;
    
    Commit complete

    Oracleでは、「SELECT FDS_CLASS_NAME FROM HS_FDS_CLASS」は、DG4ODBCのバージョンを識別する文字列を返します。例:

    ODBC11.2.0.2.0_0008

    このクエリの実行:

    SELECT * FROM HS_CLASS_CAPS WHERE FDS_CLASS_NAME ='ODBC11.2.0.2.0_0008';

    DG4ODBCがどのように動作するように構成されているかを示すいくつかの「機能」を返します。

    前に示した例では、顧客の列はNVARCHARでした タイプ。 Oracleサポートの指示の下で、お客様はこのデータ型に関してDG4ODBCの動作を変更します。

    お客様は、HS_CLASS_CAPSで関連フィールドを見つけました :

    564 TO_NCHAR(op1) 0

    OracleパッケージDBMS_HS.ALTER_CLASS_CAPSで変更しました 。

    さまざまなDG4ODBC機能が行うことは、公開されている場所では文書化されていないようです。したがって、このブログでは、特定の問題を解決するためにそれらを使用する方法に関する具体的なガイダンスを提供することはできません。代わりに、ブログは、DG4ODBC構成ファイルのパラメーターを編集しても、init .oraがDG4ODBC接続で発生している問題を解決しない場合に、自由に使用できる別のツールがあることを知らせるために提供されています。

    >

    関連項目

    • TG4MSQL10.2またはDG4ODBC11.2を使用してステートメントを削除または更新します。Where句でNvarcharフィールドを参照するとORA-2070エラーが発生します
    • Re:ODBCおよびUnicode用のOracleDatabaseGatewayの問題

    1. AccessのDAOレコードセットの基礎としてのSQLServerパススルークエリ

    2. SQLServer2005からMySQLにデータをエクスポートする方法

    3. JSON_ARRAYAGG()–MySQLのクエリの行からJSON配列を作成します

    4. MySQL GaleraCluster4.0の新機能