Bequeathプロトコルを使用してローカルOracle 12.2データベース(Oracle.ManagedDataAccess.Clientを使用)に接続するVisual Studio C#Windowsアプリケーションを使用しようとしています。これは、ローカルのデータベース接続用であるため、Oracleリスナーを経由する必要はありません。Bequeathプロトコルを使用してManagedDataAccessを使用するC#WindowsアプリケーションでOracleデータベースに接続する
私は、接続文字列またはTNSエントリを指定しないときSQLPLUSがネイティブに遺すプロトコルを使用していることを知っている:
sqlplus scott/tiger
*connected*
SIDとのservice_namesは "mydbという共に":
select instance from v$thread;
-----
mydb
show parameter service_names;
VALUE
-----
mydb
私がすることができますまた、 SQL Developerを介して接続するときは、Bequeathプロトコルを使用します(接続タイプはLocal/Bequeathを使用します)。
しかし、(少なくとも私のために)動作する接続文字列でBequeathを使用する例は見つかりませんでした。
Oracle Net Servicesの12.1ドキュメントは、あまり役に立ちません。これはBequeathの概要を例なしで示しています。
のtnsnames.ora:(リスナーを経由)TCPを使用して
MYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SID = MYDB)
)
)
MYDB_BEQ =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = BEQ)(PROGRAM = oracle)(ARGV0 = oracleMYDB)
)
)
(CONNECT_DATA = (SID = MYDB)
)
)
次作品:
new OracleConnection(@"User Id=scott; Password=tiger
;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(
HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
(SERVICE_NAME=MYDB)))");
*connected*
またはTNSNAMESエントリを使用して:
new OracleConnection("User Id=scott;Password=tiger;Data Source=MYDB")
*connected*
私はTNSNAMESを通じて接続できますSQLPLUSを使用してBEQエントリ上INGの:
sqlplus scott/[email protected]_beq
*connected*
しかし、私はこれがOracle.ManagedDataAccessを介して動作するように見えることはできません。
new OracleConnection(@"User Id=scott; Password=tiger
;Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = BEQ)(PROGRAM = oracle)(ARGV0 = oracleMYDB)))(CONNECT_DATA = (SID = MYDB)))")
ORA-12533: Network Session: Connect transport address syntax error
はまた、上記働いTNSNAMESエントリを使用するためにこれを試してみました:
new OracleConnection("User Id=scott;Password=tiger;Data Source=MYDB_BEQ")
ORA-12533: Network Session: Connect transport address syntax error
私はおそらく、ここで基本的な何かが欠けていますが、私は他に何しようとしてわからないんだけど...