web-dev-qa-db-ja.com

接続文字列を使用してコマンドラインからSQL Plusに接続する

Oracleデータベースがあるとします。ユーザー名= x、パスワード= y、データベース= zです。また、ポート= a、SID = b、ホスト名= cも知っています。

それでは、どうやって正しく接続する必要がありますか?私は次のような多くのオプションを使用しました:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=c)(PORT=a))(CONNECT_DATA=(SID=b)))

これらのコマンドラインを送信すると、通常、次のようなエラーメッセージが返されます。

ORA-12560:TNS:プロトコルアダプタエラー
ORA-12514:TNS:リスナーは現在サービスを認識していません

よろしくお願いします!!

46
Edvinas

試しましたか

sqlplus username/password@Host:port/service
sqlplus x/y@c:a/b

sqlplusの最新バージョン(バージョン11以降)はこの構文を理解しているため、tnsnames.oraファイルは必要ありません。

83

最も簡単なのは、tnsnames.oraファイルを使用してデータベースに接続することです。そのためには、それを編集して新しいエントリを追加します。通常、このファイルは$ Oracle HOME\NETWORK\ADMINディレクトリにあります。

myDb  =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = c)(Port =a))
   )
 (CONNECT_DATA =
   (SERVICE_NAME =b)
 )
)

次に、dbに接続できます。

sqlplus x/y @ myDb

12
eliatou

元のポスターに...最初のオプションでは、閉じ括弧がありませんでした

不正解:(あなたの文字列)

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

正しい:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED))))'
8
O. Godoy

Sqlplus行が正しいように見えます。以下を確認してください。

  1. データベースサーバー自体にsysdbaとして接続できます。
  2. データベースサーバー自体に接続しようとしているユーザーとして接続できます。
  3. 接続しようとしているコンピューターからデータベースサーバーにpingを実行できます。
  4. 接続しようとしているコンピューターからリスナーにtnspingを実行できます。

これらすべてがチェックアウトされている場合、タイプミスがないことを確認するために、新しい接続線を作成することができます。

2
Leigh Riffel

多分あなたのデータベースは稼働していません。マシンが再起動され、インスタンスが自動起動に設定されていない(そして手動で起動されていない)場合は、サービスを自分で起動する必要がある場合があります。

サービス画面にアクセスできる場合は、そこから実行できます。または、コマンドラインから実行することもできます。

コマンドプロンプトに移動し、次のコマンドを入力します。

set Oracle_sid=ORCL

net start oracleserviceORCL

最初はOracle SIDを設定します。 2番目は実際にサービスを開始します。

1
Karthick

sqlplusヘルプから抽出:

ネットサービス名またはEasy Connectの形式にすることができます。

  @[<net_service_name> | [//]Host[:Port]/<service_name>]
0
user82219