人に聞けない痔の悩み、これでスッキリ >>

ローカルにオラクルをインストールして開発をしていました。
しばらく時間があいた後、開発を再開しようとするとDBへの
接続ができなくなっていました。

sqlplusではDB操作可能なので、DBそのものは落ちていないと
思うのですが…
リスナーのステータスを確認すると(lsnrctl status SID)下記のエラーが出ます。

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MY-PC)(PORT=1521))(CONNECT_DATA=(
SERVER=DEDICATED)(SERVICE_NAME=SID)))に接続中
TNS-12535: TNS: 操作はタイム・アウトしました。
TNS-12560: TNS: プロトコル・アダプタ・エラー
TNS-00505: 操作タイムアウトです。
32-bit Windows Error: 60: Unknown error

何が問題でどうすればよいのかわからないのですが、何か対応策があれば教えてください。
DBを再構築することも考えたのですが、原因がわからなければ同じ事が起こる(起こす?)
ような気がするので。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

DBの起動/停止とサービスの起動/停止は別物です。


サービスの「OracleServiceSID」と「OracleOraDb11g_home1TNSListener」は、それぞれDBとリスナーのためのもので、DBやリスナーそのものではありません。
サービスの「OracleServiceSID」と「OracleOraDb11g_home1TNSListener」を起動状態にした後で
DBやリスナを起動します。

以下を参考にしてください。
http://www.shift-the-oracle.com/config/startup-o …
http://otndnld.oracle.co.jp/beginner/oracle10g/1 …
    • good
    • 1
この回答へのお礼

お返事遅くなり、すみません!!

ご指摘ありがとうございます!
いただいた情報でいろいろしてみたのですが、解決せず…
ふとPCのセキュリティ設定が気になり、確認しセキュリテ
ィソフトのファイヤーウォール機能をOFFにしたところ接続
できました(-_-;)

先日ソフトをアップデートした際に、勝手に設定が更新されて
いたようで…

今回の件はいろいろ勉強になりました。
ありがとうございました。

お礼日時:2010/12/01 23:03

DBの方にはなにかエラーメッセージは記録されてませんか?


Javaからの接続タイプはJDBC-OCIですかJDBC-THINですか?
SQL*PlusはORACLE_SIDを指定してのローカル接続ですよね。
LANケーブルや無線LANが未接続になってませんか?
PCの再起動、DBの再起動で状態は変わりますか?
    • good
    • 0
この回答へのお礼

エラーチェックしてみました。
sqlnet.logに以下のようなエラーを見つけましたが、何か関係がある
でしょうか?
現時点では自分ではまだエラー内容を調べてません(^^ゞ
この後、少し調べてみようとは思いますが…
------------------------------
Fatal NI connect error 12170.

VERSION INFORMATION:
TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 11.1.0.6.0 - Production
Time: 28-11月-2010 14:57:40
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: TNS: 操作はタイム・アウトしました。
ns secondary err code: 12560
nt main err code: 505
TNS-00505: 操作タイムアウトです。
nt secondary err code: 60
nt OS err code: 0
Client address: <unknown>
---------------------------
接続タイプはThinです。
sqlpluseはローカル接続です。
LANは大丈夫です…というか、同じPC内での接続でもLANは
関係してきますか?
PCの再起動は状態変わりません。
DBの再起動はサービスから「OracleServiceSID」と
「OracleOraDb11g_home1TNSListener」を再起動をした
ところ、問題なく再起動された(たぶん?)ようです。
ただ、「OracleDBConsoleSID」を再起動したら、
「ローカルコンピュータのOracleDBConsoleSIDサービスを
停止できません。
エラー1053:そのサービスは指定時間内に開始要求または制御
要求に応答しませんでした。」
というエラーが出てサービスが停止しました。
PCを再起動すると、このサービスは立ち上がってきます。

この状況はDBに接続できないということと関係あるのでしょうか?

リスナーがおかしいということで、リスナーの削除&再作成を
したほうがよいでしょうか?

お礼日時:2010/11/28 19:49

DBをインストールしているPCのTCP/IP設定のIPアドレスはDHCPによる自動設定ですか、固定ですか?


DHCPの場合IPアドレスが変わることがあるので接続不能になることがあります。
環境としてDBのあるPCと接続しようとしているPCは別ですか、同じですか?
DBのあるPCのコンピュータ名を変更してませんか?
    • good
    • 2
この回答へのお礼

回答ありがとうございます。

PCはDHCPによる自動設定です。
環境としては、DBのあるPCと接続しようとしているPCは同じです。
ノートPCにOracleとJavaをインストールし、開発環境も同PCに
インストールして使っています。
コンピュータ名を変更していません。

>DHCPの場合IPアドレスが変わることがあるので接続不能になることがあります。

とのことですが、以前開発をしていた際も同じ環境で、開発途中では何度かIPが
変わっていたと思います。
設定でも特にIP固定の設定は無いような気がするのですが…
一度設定等をさらってみます。
取り急ぎお礼まで。

他にチェックすべきポイントがあれば教えていただけると助かります。

お礼日時:2010/11/28 14:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QOracleが突然接続不可に!

環境:Oracle9i 9.2.0.1.0
言語:VB6
ネットワーク:VPN
DBサーバは本社に1つしかなくクライアントは全国数社から動作している受注システムですが突然DBサーバが接続できなくなってしまいました。
そのとき行ったイベントとしては1つの支社にVPNを接続しようとしていたらしくルータの変更等をしていた模様です。限りなくネットワークの設定で障害が発生したんじゃないかと思われるのですが障害中のとき、社内でDBサーバのIPは接続できており、クライアントからSQLPLUSで接続しようとしても接続できない状態でした。ということでORACLEの問題じゃないのかと疑われています。
しかし、そのときORACLEでは何もしていないため、誤解を説明したいのですがORACLEではないと証明するためにはどうすればよいでしょうか?
SQLNET等の設定を変更していないからORACLEの問題ではないと言えばいいのかどう説明したら理解してもらえるか悩んでいます。
情報不足で申し訳ありませんがアドバイスお願い致します。

Aベストアンサー

とりあえず、DBの問題ではないことを事後に証明するなら
・アラートログにその時間帯にエラーが出ていないこと
・DBサーバのシスログ(イベントログ)にOracle、ネットワークに関するエラーが出ていないこと
くらいでしょうか?
それと、その時間帯にsqlplusを起動して繋がらないのを確認したのであれば、sqlplusを実行したフォルダにsqlnet.logがあるはずなので、その内容を調べてみるのが良いかと。
もしlistenerのログを出力しているのであれば障害が発生した時間帯にリスナーまで届いているかを調べることもできそうです。24時間稼動DBならリスナーの状態を確認すれば、listenerが停止してないことも証明できそうです。

Qリスナーが起動しません

こんばんは、オラクル初心者です。
Oracle10gR1を削除後にR2をインストールするとリスナーが起動しない不具合が起こります。
発生手順については以下になります。


(1)Oracle10g-Release1(トライアル版)をインストール
(2)Oracle10g-Release1(トライアル版)をアンインストール
 1. DBCAで作成したデータベースを削除
 2.Oracle Universal Installerで「製品の削除」
 3.フォルダの削除(C:\oracle, C:\Program Files\Oracle)
 4.レジストリの削除(HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE)
 5.再起動
(3)Oracle10g-Release2(トライアル版)をインストール
 インストール後にコマンドプロンプトで lsnrctl  start でリスナーを起動すると

Failed to start service, error 3.
TNS-12560: TNS: プロトコル・アダプタ・エラー
TNS-00530: プロトコル・アダプタ・エラーです。

というメッセージが表示されます。
同環境ですが初めてOracleをインストールしたPCでは正常に動作しました。
前バージョンのアンインストール手順に不備があったのでしょうか?

説明不足のところがあるとは思いますが、どなたか答えていただけると助かります。

よろしくお願い致します。

こんばんは、オラクル初心者です。
Oracle10gR1を削除後にR2をインストールするとリスナーが起動しない不具合が起こります。
発生手順については以下になります。


(1)Oracle10g-Release1(トライアル版)をインストール
(2)Oracle10g-Release1(トライアル版)をアンインストール
 1. DBCAで作成したデータベースを削除
 2.Oracle Universal Installerで「製品の削除」
 3.フォルダの削除(C:\oracle, C:\Program Files\Oracle)
 4.レジストリの削除(HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE)
 5.再起動
...続きを読む

Aベストアンサー

回答というわけじゃありませんが、
アンインストール方法に関してはオラクルマニュアルのインストレーション・ガイドに記載されているので、その手順で削除してください。
リスナーが開始できないということですが
%ORACLE_HOME\network\adminにlistener.oraファイルがありますか?
そのファイルに記載されているORACLE_HOMEやSIDはRelease2のORACLE_HOMEやSIDですか?
もし違う場合は直接編集するかNetManager等で編集し再度リスナーを起動してみてください。

QOracleDB接続エラー(ORA-12541: TNS:no listener)が出ます。

OracleDBで以前までは普通に繋がっていたインスタンスに接続できなくなってしまいました。
Net8 Configration Assistantでテストしたところ、以下のようなエラーが発生しました。

-------------------------
接続しています...ORA-12541: TNS:no listener
テストは成功しませんでした。

指定した情報が間違っている可能性があります。
指定したネット・サービス名情報を確認するには、「戻る」をクリックします。ユーザー名を変更するには「ログインの変更」をクリックします。
-------------------------
特に設定を変えた記憶は無いのですが・・・

情報が少ないかも知れませんが、何か原因が考えられる方、よろしくお願い致しますm(_ _)m
これだけだと厳しいでしょうか・・・
Oracleはかなり初心者ですので、どのような情報が必要かもちょっと分かりかねてます。
こういう情報があればわかるかも、というものがあれば提示致しますので、何卒よろしくお願いします。

なお、OSはWin2000、Oracleのバージョンは8.1.7です。

OracleDBで以前までは普通に繋がっていたインスタンスに接続できなくなってしまいました。
Net8 Configration Assistantでテストしたところ、以下のようなエラーが発生しました。

-------------------------
接続しています...ORA-12541: TNS:no listener
テストは成功しませんでした。

指定した情報が間違っている可能性があります。
指定したネット・サービス名情報を確認するには、「戻る」をクリックします。ユーザー名を変更するには「ログインの変更」をクリックします。
---------------------...続きを読む

Aベストアンサー

>サーバ側のTNSリスナーとはどのように起動すれば良いのでしょうか?

MS-DOSプロンプトで
  「lsnrctl start」
と打つと起動します。

ちなみに
  「lsnrctl status」
でTNSListenerの状態が確認できますよ

Qlistener.logが肥大化

Oracle11gでlistener.logが肥大化し、4GBまでいってしまい、
停止しました。
ログをスイッチし、Oracleは動作したのですが、
アプリケーションサーバからアプリケーションが動作しません。
例えば、SQLPLUSでSQLを発行すると正常ですが、
dllからは動作しません。
なんとなくですが、with句を用いたものが失敗しているようです。
やっぱりアプリケーションサーバを再起動でしょうか?
日曜日まで再起動ができないため、何か方法があればご教示ください。

Aベストアンサー

お疲れ様です。
tmnktmnkさんの言われていることで十分わかりますよ。
きっとそんなにOracle詳しくないので、言葉足らずかもしれませんが、
十分わかります。

>ログをスイッチし、Oracleは動作したのですが
確かに、listener.logをリネームすることをスイッチするって言われる方いますよね。
正しくはリネームというと思いますが、スイッチでわかります。

>dllからは動作しません。
固まるんじゃないんですか?応答がない感じで、ぐるぐる回ってるんじゃ?
エラーは特に表示されないんじゃ?

>なんとなくですが、with句を用いたものが失敗しているようです。
with句はSQLが複雑になっているんで、with句だけじゃなく複雑なものだと失敗すると思いますよ。

結論としてですが、
そのアプリケーションサーバからdll経由で接続したセッションが、DB側に残ってないでしょうか?
質問されてからですので、20時間くらいセッションをはったものがないでしょうか?
それを切断すれば大丈夫です。

切断できない場合は、Oracleを再起動しかありませんが…

こういった現象をなんとなく聞いてわかるようになるのには、経験しかありません。
エラーから調べることも大切ですが、現象である程度わかるようになれるといいですね。
tmnktmnkさんの今後のご活躍を期待します。

エラそうですみません。

お疲れ様です。
tmnktmnkさんの言われていることで十分わかりますよ。
きっとそんなにOracle詳しくないので、言葉足らずかもしれませんが、
十分わかります。

>ログをスイッチし、Oracleは動作したのですが
確かに、listener.logをリネームすることをスイッチするって言われる方いますよね。
正しくはリネームというと思いますが、スイッチでわかります。

>dllからは動作しません。
固まるんじゃないんですか?応答がない感じで、ぐるぐる回ってるんじゃ?
エラーは特に表示されないんじゃ?

>なんとなくですが...続きを読む

QSYSユーザーでログインしたい

SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
お願いします。

Aベストアンサー

>SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
特別なことする必要がないと思います。
ログインできない場合いろいろな原因が考えられます。
一番可能な原因は設定によってSYSユーザーNOMAL権限でログインできない場合あります。
この場合
sqlplus sys/パスワード@接続文字列 as sysdba
で試してください。


>SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
conn sys/パスワード@接続文字列 as sysdba

QSIDとSERVICE_NAMEの違いとは?

tnsnames.oraの中の(CONNECT_DATA=に SIDだったりSERVICE_NAMEだったりしますが、どのような違いがあるのでしょうか?
どちらでもつながるのでいいかとは思いますが、何かメリット・デメリットでもあるのでしょうか?
それとも過去の遺物が未だ共存しているだけでしょうか?
SIDはインスタンスにつけられた名前だと知っていますが、SERVICE_NAMEってなんですか?

Aベストアンサー

SIDはインスタンスの識別子、service_nameはサービス名。
インスタンスとサービスの違いはRAC を勉強されるとよくわかると思います。

サービス名は初期化パラメータのservice_namesで設定します。
設定されていない場合は先述のとおりdb_unuque_name.db_domainになります。
(これが同義と誤解されやすい原因となっているわけですが)

ところで、service_namesパラメータですが、複数形になっていることからもわかるように、複数のサービス名をコンマ区切りで指定できるようになっています。

これをこのように使います。

2ノードRAC環境で、インスタンス1(SID=hoge1)、インスタンス2(SID=hoge2)があったとします。
ノードを意識することなく接続できるようにするためにクライアント側のtnsnames.oraにはこんな設定を追加します。

HOGE.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = hoge.example.com))
)

インスタンス1とインスタンス2のservice_namesパラメータにhoge.example.comを追加します。すると、インスタンス1とインスタンス2にラウンドロビンで接続できるようになります。

ここで、もしtnsnames.oraのservice_name=...がSID=hoge1だったらどうなるでしょう?
インスタンス2のSIDはhoge2ですから一致せず、インスタンス2には接続できず、いつもインスタンス1に繋がってしまいます。

次に、一時的にメンテナンスのためにインスタンス2にアクセスしてほしくないケースを考えます。service_nameであれば、インスタンス2のservice_namesパラメータからhoge.example.comを削除することで(動的に変更できます)直ちにインスタンス1にのみ接続されるようにできます。

ここで、もしORACLE_SIDだったら・・・変更のためにインスタンスの再起動が必要になってしまいますね?

最後にservice_namesは複数登録できます。3ノードRAC環境において、オンライン処理(service_name=ONLINE)、バッチ処理(service_name=BATCH)があったとします。
バッチ処理は1つのノード(インスタンス1)でのみ処理したいとします。オンライン処理は3つのノードでしたいとします。

そんなとき、service_nameであれば、

<<サーバ側の初期化パラメータ>>
1:service_names = online, batch
2:service_names = online
3.service_names = online

<<クライアント側のtnsnames.ora>>

オンライン処理
ONLINE.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = online.example.com))
)

BATCH.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = batch.example.com))
)

と、クライアント側では接続先サーバを気にすることなく構成できますね?
BATCHのノードを1から2にしたい場合の変更はサーバ側のみでできますよね?
serivce_namesの"batch"設定をノード2に移すだけです。

SIDはインスタンスの識別子、service_nameはサービス名。
インスタンスとサービスの違いはRAC を勉強されるとよくわかると思います。

サービス名は初期化パラメータのservice_namesで設定します。
設定されていない場合は先述のとおりdb_unuque_name.db_domainになります。
(これが同義と誤解されやすい原因となっているわけですが)

ところで、service_namesパラメータですが、複数形になっていることからもわかるように、複数のサービス名をコンマ区切りで指定できるようになっています。

これをこのように...続きを読む

QOracle12cでユーザのSQLPLUSログイン

基本的な質問ですみません。Oracle 12cを初めて使うのですが、すごく単純に、ユーザを作成し、そのユーザでデータベースオブジェクト(テーブルなど)を作成する拡張子が.sqlのスクリプトを流したいです。

11gまでの場合、システムユーザでCREATE USERしたのちに、コマンドプロンプトを立ち上げて
C:\Scripts> SQLPLUS <USER>/<PASSWORD> @createtables.sql
とするだけで良かったと思います。

今回、12cではユーザの考え方が変わっており、CDBとPDBを作成しました。
> SQLPLUS /NOLOG
SQL> CONN SYS AS SYSDBA
(上記のようにローカル接続するとCDBに接続される)

SQL> ALTER SESSION SET CONTAINER=PDB1; // PDBへ移動
SQL> SHOW CON_NAME // 念のため現在接続中のPDBの名前確認
SQL> STARTUP;
(これでマウント状態だったPDB1がOPENしてREAD WRITEになる)

この状態でCREATE USER文を実行してPDB1上でユーザを作成。

ここからなんですが、PDBやCDBへのログイン方法はわかたのですが、PDB上で作成したユーザにはどのようにしてログインするのでしょうか? ログインしてテーブル作成をしたいです。また、テーブル作成のスクリプト文(.sql)があるのでそれを流したい場合は、コマンドプロンプトからどのように実行すればよいでしょうか?

基本的な質問で恐縮ですが、宜しくお願いします。

基本的な質問ですみません。Oracle 12cを初めて使うのですが、すごく単純に、ユーザを作成し、そのユーザでデータベースオブジェクト(テーブルなど)を作成する拡張子が.sqlのスクリプトを流したいです。

11gまでの場合、システムユーザでCREATE USERしたのちに、コマンドプロンプトを立ち上げて
C:\Scripts> SQLPLUS <USER>/<PASSWORD> @createtables.sql
とするだけで良かったと思います。

今回、12cではユーザの考え方が変わっており、CDBとPDBを作成しました。
> SQLPLUS /NOLOG
SQL> CONN SYS AS SYSDBA
...続きを読む

Aベストアンサー

こんにちわ。

> ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
上のtnsnames.ora の設定は、CDB に接続するためのものです。
新しい接続文字列で、SERVICE_NAME にPDB名を指定したものを作成して
試してみて下さい。

Qsqlplusで表示が変なので、出力を整形したい。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------

上記のように意味不明な形式で出てきます。

例えばこんな風に

select カラム1,カラム2,カラム3 from hoge;

カラム1 1の値
---------------------------
カラム2 2の値
---------------------------
カラム3 3の値

等のように分かりやすく表示できないでしょうか?

ちなみにOracle9iR2を使用しています。
sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。

分かりづらくですいませんが、皆さま、ご教授お願いします。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
-----------------------...続きを読む

Aベストアンサー

SQLPLUSを起動して、

SQL>set linesize 列数

でどうだ。

SQL>show linesize

で確認ができる。

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

Qbatファイルからsql文実行

クライアントOS:WIN2000
Oracle:9i(サーバ(UNIX)上にあります)

現在、クライアントからbatを起動し、SQL文を投げ、結果を取得したいと思っております。
(SQL文は単純にTBLをカウントしているだけです)

・batの中身
sqlplus %UID%/%PASS%@%SID% @test.sql > output

結果は取得出来るのですが、余分な情報も結果に出力されてしまいます。結果のみを出力させるにはどうすればよろしいでしょうか?

・余分な情報
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
に接続されました。

Aベストアンサー

sqlplus に -S オプションを追加してみればどうでしょうか。

参考URL:http://biz.rivus.jp/sqlplus_overview.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング