これは本当にBrad Rippeの回答へのコメントであるべきですが、残念ながら、十分な担当者ではありません。その答えは私にそこに行く道の90%を得ました。私の場合、データベースのインストールと構成により、実行中のデータベースのtnsnames.oraファイルにエントリーが配置されました。まず、環境変数を設定することでデータベースに接続できました(Windows)。
set ORACLE_SID=mydatabase
set ORACLE_HOME=C:\Oracle\product\11.2.0\dbhome_1
を使用して接続します
sqlplus / as sysdba
次に、Brad Rippeの回答からコマンドを実行します。
select value from v$parameter where name='service_names';
名前が完全に一致していないことを示した。OracleのDatabase Configuration Assistantを使用して作成されたエントリ。
MYDATABASE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mylaptop.mydomain.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydatabase.mydomain.com)
)
)
クエリのサービス名は mydatabase
ではなくものmydatabase.mydomain.com
でした。tnsnames.oraファイルを編集して、ドメイン部分のないベース名だけにしたので、次のようになります。
MYDATABASE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mylaptop.mydomain.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydatabase)
)
)
TNSリスナーサービスを再起動しました(サービスコントロールパネルの代わりに、管理者コマンドウィンドウ(またはWindows Powershell)を頻繁に使用lsnrctl stop
しlsnrctl start
ますが、どちらも機能します)。その後、接続できました。