ある意味では、実際には問題はありません。ORACLE_HOME
およびORACLE_SID
環境変数を使用してローカルに接続できますが、これで問題ありません。
connect user1/user1@orcl
バージョンを使用する場合、これはSIDでorcl
はありません。ドキュメントで説明されているように、これは「Oracle Net接続識別子」です。
connect_identifier
Oracle Net接続識別子。正確な構文は、Oracle Net 構成によって異なります。詳細は、Oracle Net のマニュアルを参照するか、DBA にお問い合わせください。SQL*Plus はサービス名を要求しませんが、接続識別子を含めない場合はデフォルトのデータベースを使用します。
したがって、IPC を内部的に使用するのではなく、同じホストに接続していても、ネットワーク接続を介して接続しています。ORACLE_SID
これは IPC に使用され、ネットワーク接続の一部ではないため、設定する必要さえありません。
ここで、接続識別子は実際には SID と同じ文字列である可能性がありますが、そうである必要はありません。通常、ファイルorcl
で定義されている「ネット サービス名」を使用しているように、単一の用語を使用している場合。tnsnames.ora
(接続識別子がどのように解決されるかを決定する、でネーミングメソッドがどのように構成されているsqlnet.ora
かによって異なりますが、これはまだ私が考える最も一般的な構成です)。
Oracle Net構成は、netca
構成アシスタントをoracle
ユーザーとして使用して構成できますが、プライベートを作成してtnsnames.ora
それをオーバーライドできます。
接続の仕組みと構成の詳細については、Oracle Net 管理者ガイドを参照してください。短いバージョンについては、 SQL*Plus ユーザー ガイドを参照してください。
接続が機能するには、次のようなエントリuser1/user1@orcl
が必要です。tnsnames.ora
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=tcp)(HOST=my_host)(PORT=1521))
(CONNECT_DATA = (SERVICE_NAME = orcl)))
... ここmy_host
で、 は Oracle サーバーの DNS 名または IP アドレスであり、1521
はリスナーが実行するように構成されているポートです。(この方法でも接続できるようにするには、リスナーが実行されている必要があります)。これSERVICE_NAME
は必ずしも SID と同じであるとは限りませんが、データベースの構成によって異なります。このlsnrctl status
コマンドは、利用可能なサービス名を表示します。
ORA-12154 エラーは、tnsnames.ora
ファイルがまったくないか、エイリアスのエントリが含まれていないことを示していますorcl
。
@a_horse_with_no_name が指摘しているように、接続識別子には他の形式がありtnsnames.ora
、ネットワーク接続用のファイルは必ずしも必要ではありません。オプションについては、こちらで説明しています。私はあなたが使おうとしていたものに集中しました。ただし、ローカルで接続できるため、必ずしもそれらを使用する必要はありません。