1

ユーザーは、名前に特殊文字が含まれる別のユーザーを介して、プロキシによる接続を許可されます。

CREATE USER "A-USER" IDENTIFIED BY "a";
CREATE USER foo IDENTIFIED BY "random-trash";
ALTER USER foo GRANT CONNECT THROUGH "A-USER";

今、これへのデータベースリンクを作成するのに苦労しています:

CREATE PUBLIC DATABASE LINK dbl CONNECT TO A-USER[FOO] IDENTIFIED BY "a";
-- ... but it complains about '-'

CREATE PUBLIC DATABASE LINK dbl CONNECT TO "A-USER[FOO]" IDENTIFIED BY "a";
-- ... but it treats whole "A-USER[FOO]" as a username

CREATE PUBLIC DATABASE LINK dbl CONNECT TO "A-USER"[FOO] IDENTIFIED BY "a";
-- ... but it expects IDENTIFIED right after closing quote

ユーザー名の特殊文字を明らかに取り除く以外に、そのために使用できる表記法はありますか?

4

1 に答える 1

2

これは、特殊文字の有無にかかわらず機能するはずです。これは 11.2.0.3 のもので、最初は次のものがありません。

CREATE USER "AUSER" IDENTIFIED BY "a";
CREATE USER bar IDENTIFIED BY "random-trash";
ALTER USER bar GRANT CONNECT THROUGH "AUSER";
GRANT CREATE SESSION TO "AUSER";
GRANT CREATE SESSION TO "BAR";

CREATE PUBLIC DATABASE LINK dbl CONNECT TO "AUSER[BAR]" IDENTIFIED BY "a" using 'MYDB';
SELECT * FROM dual@dbl;

D
-
X

そして:

CREATE USER "A-USER" IDENTIFIED BY "a";
CREATE USER foo IDENTIFIED BY "random-trash";
ALTER USER foo GRANT CONNECT THROUGH "A-USER";
GRANT CREATE SESSION TO "A-USER";
GRANT CREATE SESSION TO "FOO";

DROP PUBLIC DATABASE LINK dbl;
CREATE PUBLIC DATABASE LINK dbl CONNECT TO "A-USER[FOO]" IDENTIFIED BY "a" using 'MYDB';
SELECT * FROM dual@dbl;

D
-
X

どちらも 11.2.0.4 では機能しません。特殊文字の有無にかかわらず、エラーになります:

select * from dual@dbl
                   *
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from DBL

11.2.0.4 以降を使用している場合、バグ 19191702 が発生している可能性があります。これは、データベース リンクを介したプロキシ機能が壊れているようです。詳細については、MOS ノート 19191702.8 を参照してください。ただし、これはバグではなく意図的な新しい動作のようであり、これが機能していた古い動作は正しくないと説明されています。

動作を元に戻す特定のイベントを設定できるようにするためのパッチが利用可能である可能性があります (これはおそらく 12.2 で利用可能です)。仕事"。お使いのプラットフォームとバージョンのパッチがない場合、またはイベントが役に立たない場合は、サービス リクエストを発行する必要があります。もちろん、とにかく育てる価値があるかもしれません。

于 2015-11-09T17:26:01.373 に答える