質問: oracle database初学者です。 oracle database 19cをwindows環境にインストールし、コマンドプロンプトを起動して初めてSQL*Plusで「SYS」や「SYSTEM」アカウントからログインを試みた際に、以下のエラーが出ました。 ``` ERROR: ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました ``` SQL*Plusでユーザ名とパスワードを同時に指定しても、別々に指定しても上記エラーが出ました。 原因を調べてみてもピンとくるようなものがよくわからず、途方に暮れております。 初歩的な質問かもしれませんが、ログインできるようにするための解決方法をアドバイスしていただけませんでしょうか。 --- 追記 サービスの状態を確認したところ、Oracleと名のつくものは「OracleRemExecServiceV2」のみで状態が「実行中」です。 OracleサービスとOracleリスナーは見当たりませんでした。
回答: OracleDB自体が起動していない場合もこのエラーが出るようです。 【1:インストールの確認】 例えばWindows10にOracle19cをインストールした場合、以下のサービスが存在するはずです。 (コントロールパネル > 管理ツール > サービス) !画像の説明をここに入力 このうち、以下のサービスが重要で、起動している必要があります。 存在しない場合、OracleDBではなくOracleClientだけをインストールした可能性があります。 OracleService○○ :Oracle DBMS そのもの Oracle○○TNSListener :TNSListener(接続に必要な窓口) なお、TNSListenerはインストール方法によっては初期設定されないため、 ない場合はOracleと一緒にインストールされたはずの Net Configuration Assistant > リスナーの構成で追加してください。 【2:PDBの場合、PDBの起動確認】 初期設定のインストールでインスタンスの自動起動までWindowsサービスに設定されます。 Oracle11g以前のPDBを使用しない旧来のモードであれば、これで問題ありません。 しかし、Oracle12c以降のPDB対応モードとしてOracleをインストールした場合、 OracleService○○やOracle○○TNSListenerは起動しているものの、 PDBがオープンしていない状態になります。 補足:PDBとは(語彙にはやや不正確な部分を含みますが、わかりやすさを優先) 旧来のOracleは、SQL Serverやmariadbなどと異なり、DBMSとDBが実質分かれておらず、1:1だった。 DBMS部分とDB部分を分けて1:Nの関係にできるようにしたのがPDBモード これにより1つのOracleサーバ(DBMS)に複数のDBを用意することが出来るようになった。 DBMS部分をCDB、DB部分をPDBと呼ぶ。 従来の様々なSQLPlus上のコマンドは、DBMS相当に対して行っていたものはCDBに、DB相当に行っていたものはPDBにコマンドすればよい。 ので、PCを再起動した後などには、PDBをSTARTUPする必要があります。 典型的な方法は以下の通り sqlplus system/manager as sysdba show pdbs alter session set container = <起動したいPDB名> STARTUP