• 締切済み

Windowsサービスを別のサービスに依存させるには?

OracleにアクセスするWindowsサービスプログラムを作ったのですが、Windowsの起動時にOracleインスタンスが起動する前に自作サービスが起動してDB接続エラーとなってしまします。 次の条件の元で、これを解決するにはどうしたらよいでしょうか。(Oracleに限った話ではないと思います) 1.自作サービスを書き換えたくない 2.管理ツールの「サービス」画面で、自作サービスの起動を「自動」にしたい。 3.環境はWindows Server 2003, Oracle Database 9i, 10g

  • qutto
  • お礼率48% (40/83)

みんなの回答

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.2

ANo.#1の回答欄のURLに余計なゴミが付いてしまいました。参考URL欄のURLが正しいものです。

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

サービスの依存関係の設定は、レジストリの HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\サービス名 (←この場合だと、自作サービス名) DependOnService   REG_EXPAND_SZ   依存させるサービス名  (←Oracleのレジストリに登録されているサービス名) を設定するだけです。詳しくは下記参考URLをご覧ください。 『MONYO-COM: たかはしもとのぶの個人ページ  Windows起動時に読み込むサービスの順序を制御したい』 ​http://www.monyo.com/technical/windows/33.html

参考URL:
http://www.monyo.com/technical/windows/33.html
qutto
質問者

補足

deadlineさん 早速の回答ありがとうございます。 「自作サービスをOracleインスタンスサービスに依存するさせる」 ことはやってみました。参照URLの方法ではないですが、scコマンドで > sc config [SERVICE_NAME] depend= [DEPEND_SERVICE] のようにしました。 レジストリを見ると、参照URLと同じ設定になっていました。 これによって、手動でサービスを開始・停止したときに依存するようになりましたが、問題は相変わらすです。 そもそもOracleインスタンスサービスを手動で開始すると、次のエラーが発生することがあります。 「ローカル コンピュータ の [サービス名] サービスを開始できません。  サービスはエラーを返しませんでした。Windows の内部エラーまたはサービスの内部エラーであった可能性があります。」 しかしその後DBは正常に起動します。 つまり、サービスの開始にはタイムアウトがあって、タイムアウト直後に自作サービスが起動してるから状況はかわらないのではないかと見ています。 そこでレジストリでタイムアウト値を次のように変えてみました。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServicesPipeTimeout=3000000(5分) これでも問題は相変わらす発生します。 この設定をしてもOracleインスタンスサービスを手動で開始するとエラーが発生することがあるので、設定方法が違っているのかもしれません。

関連するQ&A

  • Windows2000でのサービスの起動と、スタートアップ

    Windows2000サーバにOracleをインストールしています。 同サーバにVB6でDBをアクセスするプログラムを作成しています。 サーバを自動ログインするように設定して、スタートアップにVBで作成したプログラムを起動する様に競ってしました。 実際に起動した場合、エラーが発生して起動できません (Oracleのサービスが起動し終わるまでにVBのプログラムが起動している模様) WindowsNTの時はこのようなことがなかったのですが Windows2000にサーバを替えたら発生しました。 何か、エラーが発生せず、自動ログインをして、プログラムが自動に起動するできる方法を教えてください。 (サービス起動後、ログインする方法や、サービス起動後、プログラムを起動する方法等) よろしくお願いいたします。

  • Oracle10gのデータベースの移行について

    Oracle10gのデータベースの移行について質問です。 Oracle10g が稼動しているサーバ機があります。 老朽化の為、新しいハードウェアへ入れ替える事になりました。 OSは、入れ替え前も入れ替え後もWindows Server 2003です。  DB: Oracle10g → Oracle10g  OS: Windows Server 2003 → Windows Server 2003 現行のサーバ上では4つのインスタンスが稼動しています。 新しいサーバ上に、同じ構成でそのまま移行する方法を検討していますが、下記のような方法で大丈夫なものでしょうか? (1)新しいサーバ上にOracle10gを初期データベースなしでインストールする (2)新しいサーバ上で新規のOracleインスタンスを4つ作成する (ORADIMツールを使用) (3)現行のサーバ上の各インスタンス・Oracle関連サービスを停止し、オフラインでデータベース関連のファイルのバックアップを取得する (4)現行のサーバから、新しいサーバへ、オフラインで取得したバックアップファイルを転送する (5)新しいサーバ上の各インスタンス・Oracle関連サービスを停止する (6)新しいサーバ上から、(3)で取得したファイルと同じファイルを削除する (7)新しいサーバ上で、バックアップしたファイルを現行のサーバと同じ位置に配置する (8)新しいサーバ上のOracle関連サービスと各インスタンスを起動し、動作を確認する どなたか、回答宜しくお願い致します。

  • OracleDBConsoleorclのサービスが起動しません。

    いつもお世話になっております。 下記、ご教示願います。 Oracle Master SQL基礎Iを受験しようと、Oracle DataBaseトライアル版をインストールしました。 最初はいろいろできたのですが、いつのまにかOracle Enterprise ManagerやiSQL*Plusへのログインができなくなりました。 OracleDBConsoleorclが起動していないことが原因とわかりましたが、 起動しません。 コントロールパネル>管理ツール>サービスにて起動を試みていますが、 「ローカルコンピュータでOracleDBConsoleorclを開始できません。詳細についてはイベントログを確認してください。これがMicrosoft以外のサービスである場合は、サービスの製造元に問い合わせて参照してください。」 というエラーメッセージが出ます。 いろいろサイトを検索してみましたが、わかりません。 何卒よろしくお願いします。

  • ORACLE XEでインスタンスが自動起動しない

    【環境】 ・WindowsServer2012 R2 Standard ・Oracle Database 11g R2 Express Edition お世話になります。 上記環境にて、OracleXEのインストールを行ったのですが、 Windows起動時にインスタンスが自動起動してくれずに困っています。 XEとリスナーのサービスはどちらもスタートアップの種類を"自動"としており、 実際に、Windowsが起動するとサービス自体は問題なく開始状態になっています。 ただ、その状態でsqlplusなどでOracleに接続する際、 SYSDBA権限を持ったユーザであれば接続可能なのですが、 ※「アイドル・インスタンスに接続しました」というメッセージが表示されます。 一般ユーザで接続しようとすると ORA-01034:Oracle not available ORA-27101:shard memory realm dose not exist となり、接続できません。 インスタンスが起動していないからということはわかりましたが、 自動でインスタンスを起動させるにはどのようなことを行えばよいのでしょうか。 ※手動であればSYSDBAユーザでstartupをかければいいということはわかっております。 自動起動させるようなバッチファイルを作成する方法や、 最悪レジストリをイジったりといった手段もアレコレ探してみましたが これといった情報は得られませんでした。 何かお分かりになる方いらっしゃいましたらご教示の程宜しくお願い致します。

  • Oracleのバックアップについて

    Oracleのバックアップについてお教えください。 現在サーバとバックアップサーバを用意して、VBのアプリケーションがサーバのDBを更新したら、リアルタイムでバックアップサーバのDBを更新するという仕組みを作ろうと考えています。 もちろん、サーバとバックアップサーバには両方同じ環境を用意しようと思います。 環境は、サーバ、バックアップサーバとも、 Windows2000Server(sp2) Oracle8.1.7 です。 伺いたいのは以下の4点です。 1.リアルタイムにバックアップサーバのDBを更新することは可能でしょうか? 2.もしできるとするならば、それはOracleの設定でしょうか?それともサーバ(Windows2000)の設定でしょうか? 3.もしOracleの設定でしたら、それは標準のOracleWorkGroupServerで実現できるのでしょうか? 4.バックアップツールにARCserve2000を使用する予定です(Backup Agent for Oracle Japaneseは使用しない予定です)。もしかしてARCserveで実現できますか? すみません。サーバの管理は初めてなので。 Oracleのマニュアルのどこを見たらいいかも分からない状況です。 環境等補足するところがございましたらその旨をお書きください。

  • 64bitサーバにOracleが作成できない!?

    ご存知のかたいらっしゃいましたら教えて下さい。 現在、Windows Server 2003 standard X64 Edition に Oracle 10g Release 10.1.0(32bit)をインストールし、 Database Configuration Assistant に於いてDBを 作成しようとしていますが、「Ora-12546:TNS:アクセス権が拒否されました」が表示され、以降の処理が行えなく なります。 確認したところ32bit Oracle で32bitサーバには問題な くインストールできました。 32bit Oracle では64bitサーバにインストールできない のでしょうか?対処方法(パッチなど)がございましたら ご教示願いたいと思います。 宜しくお願い致します。

  • オラクルに詳しい方、教えてください

    Windows2000サーバにOracle8iをインストールしています。 クライアントからサーバに対して オラクルのインスタンスとリスナーが起動していることを確認したい場合、 oracle.exe と listener.exe が起動していることを確認できれば 「OK」と言えますか? 「データベースに接続できる状態」と言えるでしょうか? 毎日の定例作業として行う予定です。 あまりオラクルに詳しくないので、 知識のある方、ぜひ教えてください。

  • Windows 32BitOS上で稼動するOracleのメモリの上限に

    Windows 32BitOS上で稼動するOracleのメモリの上限についての質問です。 現在、2台のクラスタで構成されたWindowsServerのOracleデータベースの移行を検討しております。 移行するサーバのスペックは以下の通りです。 OS:Windows2000 AdvancedServer(32Bit) 2台のOFSを使用したクラスタリング構成(アクティブ・スタンバイ) DB:Oracle 9i 搭載CPU:Xeon2.80GHz ×2 搭載メモリ:2.6GB 新規に構築するサーバは以下の構成を検討しています。 OS:Windows2003Server EnterPriseEdition(32Bit) 2台のOFSを使用したクラスタリング構成(アクティブ・スタンバイ) DB:Oracle 9i 搭載CPU:Xeon2.93GHz(4Core) 搭載メモリ:4.0GB 要件として、OracleのVersionUp、64Bitへの変更の検証が出来ないとなった為、上記構成になりました。 現在、複数のDBインスタンスをクラスタグループ化して稼動させています。 移行にあたって、DBインスタンスを増やしたいという要件が出た為、合わせて新規構築するサーバのメモリの増強を検討しております。 そこで、32BitOS上での4GB以上のメモリの搭載について質問させて下さい。 Windows2003Server EnterPriseEdition(32Bit)では、最大64GBまでメモリを搭載できますが、32Bitで作成されたアプリケーションでは、1プロセスあたり最大2GBまでしか使用出来ないという点までは認識しております。 この、最大2GBという制約はOS上のプロセス一つ一つが2GB以上メモリを使用出来ないという認識であっていますでしょうか。 Oracleサーバ上で複数のDBインスタンスを稼動させた場合、プロセス:Oracle.exeが複数起動することになりそれぞれのメモリの使用量が2GBまでと考えております。 その為、1インスタンスで2GB以上のメモリを消費するようなアプリケーションの構築は32Bitのアプリケーションという時点で不可能だと思いますが、複数のインスタンスを稼動させる(=複数のOracleプロセスを立ち上げる)場合、4GBを超えて大量のメモリを搭載することは意味があると考えています。 ※この場合、4GBという数字自体は意味が無いと思います。 CPU、DiskI/O等、Networkその他が、システムのボトルネックにはならないという前提で考えた場合、この観点で32BitOSでメモリの増強を検討するという認識は合っていますでしょうか。 以上、宜しくお願いいたします。

  • Oracle9iのTNSListenerサービスをインストールする方法

    お世話になります。 Oracle9iのTNSListenerというサービスがありますが (Net8経由でSQLプラス等でDBに接続するサービス) これは 「Oracle Database9.0.1.1.1」→ 「Standard Edition」→「ソフトウェアのみ」 のインストールでインストールされるのでしょうか? 一度試してみたのですが、TNSListenerはサービスに存在しなくてSQL等に接続できない状態となっております。 後からTNSListenerのみをインストールする方法をご存知でしたら宜しくお願いします。

  • Oracleのアクセス権制御について教えてください

    Oracleのアクセス権について教えてください。 下図にあるようにTEST1というユーザがSERVE1というORACLEインスタンスにアクセスできるがTEST2というユーザはSERVE2にアクセスできないようにしたいです。 ユーザ   ソフト   サーバ  インスタンス test1    A     SERVE1    ADB test2         SERVE2     BDB Oracleでtest1はアクセスできないという制限を設けることはできました。 しかし、あるORACLE検索ソフトはサーバで動くので、全てサーバのユーザ名でアクセスされるため制限ができません。 お手数ですが解決策を教えてください。