質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Windows Server

    467questions

    Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

  • Windows 7

    413questions

    Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

  • Oracle Database 11g

    220questions

    Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

【お助け下さい】oracle database について

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 13K+

Alice0225

score 158

先日oracleClientの移行について質問したものです。
前質問
【使用環境】
OracleClient Express Edition 11g
Windows7 64bit (Client側)
WindowsServer2008 R2 Standard 64bit (Server側)

11gから12cへの移行方法がわからず困っていたところ「移行じゃなくて共存にしてほしい」といわれました。
11g環境では正常に動作していた為、
とりあえずOracleClient12cをODACにて現存クライアントとは別ディレクトリへインストール(Client側,Server側共に)、listener.ora,tnsnames.ora,sqlnet.oraを11gと同様に変更し、ORACLE_HOMEを追加
(C:\app\hoge2;C:\app\hoge;)※hoge2が追加分です。
pathは自動で追記されているようだったのでそのままにしてあります。

WindowsServer側からコマンドプロンプトにて「lsnrctlコマンド」を使用したところ、
Message 850 not found;No message file for product=network,facility=NL
と表示され動かず。
各フォルダに存在するはず(?)のmesgフォルダがほぼ存在しない為とわかりましたが、どのようにすればよいのかわからず…で詰まってしまっています。

【質問】
①mesgファイルはどのようにすれば生成されるのでしょうか。(むしろここまでの手順は
 合っているのでしょうか…)
②上記が解決した場合、リスナー等はつながると思う(思い込んでる)のですが、
 11gで作成したデータベースをそのまま12cで使用するにはどのようにすれば良いのでしょうか。
 (エクスポートとインポートを行う?)
③上記以外で不足している設定などはありますでしょうか。

現状(進捗状況、私のDB関係知識が乏しい件、有識者の支援要請)を上長に伝えましたが
「なんとかしろ」の一点張りでどうにもなりません…

皆様のお力をお貸し頂けませんでしょうか。

2015/10/20 18:45追記
12cダウンロードの為使用したURLと選択項目
ダウンロード時使用URL
64-bit ODAC 12c Release 4 (12.1.0.2.4) for Windows x64

2015/10/21 10:28追記
現状でPC2(サーバ側)にてコマンドプロンプトよりリスナーを起動させると、
LSNRCTL for 64-bit Windows: Version 11.2.0.2.0
Copyright(以下略
Message 850 not found;No message file for product=network,facility=NL
と表示されています。
確認したところ、サービスにも12cのものと思われるリスナーは存在していませんでした。
ますます混乱しています…

2015/10/21 14:03追記
確認したところ、TNSListener.exeがインストールしたOracleClient12c内に存在していないようで、デフォルトで11g時のリスナーを使用しようとしていました。
これはなんらかの方法で12c版のTNSListener.exeをインストールしなければならないのでしょうか?
または11gのリスナーがそのまま使えたりするのでしょうか?

2015/10/22 13:35追記
PC1へOracleClient
PC2へOracleDatabaseClient
をそれぞれ導入する必要があるのでしょうか。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

確認できる環境がないので推測です。
的外れだった場合はすいません。

使用するバージョンを変更する際はUniversal Installer[インストールされた製品][環境]で使用するバージョンを先頭にする必要があるとのこと。

これを実施すると、環境変数を書き換えるようです。
環境変数は先頭から評価することを考えると、
Pathが参照している順番と、ORACLE_HOMEが参照している順番に矛盾が発生しているのではないでしょうか?

現在、ORACLE_HOMEを
(C:\app\hoge2;C:\app\hoge;)※hoge2が追加分です。 
と設定しているということは12cが先に評価されます。

Pathの参照順が11g,12cの順だった場合、
コマンドプロンプトからワンワード(今回でいうと「lsnrctlコマンド」)で実施した場合、
11gの実行ファイルが実行されたということになると思います。

試しに、今の状態で、12c側ホームにある「lsnrctlコマンド」をフルパスで指定して実行したらどうなるでしょう?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/10/21 09:08

    無知で申し訳ございません。
    lsnrctlコマンドをフルパスで実行とはどのようにすればよろしいのでしょうか。。。
    普段は
    cmdを管理者権限実行
    lsnrctl 実行
    で行っていますがこれとは違うということですよね?

    キャンセル

  • 2015/10/21 14:30

    lsnrctlコマンドは恐らくORACLE_HOME\bin とかにあるのではないでしょうか?
    であれば、投稿者様が示されているパスをそのまま用いると、
    11g C:\app\hoge\bin\lsnrctl.exe
    12c C:\app\hoge2\bin\lsnrctl.exe
    がフルパスになると思います。
    (提示したパスはあくまで推測なので、エクスプローラの検索機能に「lsnrctl」と入力し検索して正しいパスを確認してください)

    ちょっと、心配なのですが、リスナーをどうしようとしていますか?
    また、環境変数「ORACLE_HOME」で12cを先にしたりしていますが、運用中のシステムであれば影響があるのではないでしょうか?

    キャンセル

  • 2015/10/21 14:39 編集

    試行したい内容と致しましては、
    OracleClient 12cをインストール(11gと共存させる)
    上記共存環境にて12cを優先動作にし、既存アプリが正常に実行可能か検証
    のため、
    OracleClient12cを使用する際にはリスナーも12cのものを使用する
    と思って作業を行っております。
    まず、上記考えが違っているのでしょうか…?
    追加情報と致しまして、ご提示頂いた
    >11g C:\app\hoge\bin\lsnrctl.exe
    >12c C:\app\hoge2\bin\lsnrctl.exe
    に関しまして、11g分については存在しますが、
    12c分に関してはどこにも存在していないようです…

    キャンセル

  • 2015/10/21 15:50

    少し状況が見えてきました。
    > とりあえずOracleClient12cをODACにて現存クライアントとは別ディレクトリへインストール(Client側,Server側共に)
    投稿文では、OracleDB 12cもインストールしているように取れますが、
    > OracleClient 12cをインストール(11gと共存させる)
    OracleDB 12cはインストールしていないということでしょうか?
    lsnrctl.exeはDBソフトウェア側のコマンドです。
    となると、lsnrctlを実行した際、ORACLE_HOMEが(C:\app\hoge2;C:\app\hoge;)を参照していることが問題ではないでしょうか?
    試しにORACLE_HOMEを(C:\app\hoge;)にしたらどうなるでしょう?

    念のため、検証環境ですよね...?

    キャンセル

  • 2015/10/21 16:02 編集

    >OracleDB 12cはインストールしていないということでしょうか?
    >lsnrctl.exeはDBソフトウェア側のコマンドです。
    おっしゃる通りでDBについてはインストールを行っていない状態です。
    (11gのDBをそのまま使えるつもりでいた為。)
    インストールが必要かと思い、念の為ダウンロードだけは済ませてある状態です。
    (サーバ側PCの容量がギリなので、インストールできるかちょっと怪しいです…)

    >試しにORACLE_HOMEを(C:\app\hoge;)にしたらどうなるでしょう?
    今現在PC1,PC2共に『ORACLE_HOME = C:\app\hoge2;C:\app\hoge;』状態ですが、
    ORACLE_HOMEの設定を変更するのはPC2(サーバ側)だけでいいんですかね…?
    pathは変更不要ですか?

    >念のため、検証環境ですよね...?
    もちろん検証用環境です!

    私が無知過ぎる為お手数おかけし申し訳ございません。
    調べながらにも限界を感じていたのでアドバイス頂きとても助かります…

    キャンセル

  • 2015/10/21 16:28

    とりあえずDBが単体で動くことを確認すべきだと思うので、PC2ですかね。
    でも変更しただけでは動かない気がします。
    OSの再起動が必要かもしれません。
    pathは変更する必要はないのかもしれませんが、不用意に12cのバイナリを使用されるのを避けるためには、12c Client側のparhを削除しておいたほうが無難です。

    キャンセル

  • 2015/10/21 16:41 編集

    PC2(サーバ側)のORACLE_HOMEの12c追記分削除、OSを再起動しリスナー起動
    →Message 850 not found;No message file for product=network,facility=NL
    overさんのおっしゃる通り、pathの中の12c追記分も削除したところリスナーは起動しました。(変更前の11gのもの)

    キャンセル

  • 2015/10/21 16:51

    enter prise manager からDBが起動していることは確認できますか?
    起動できていることが確認できたら、それぞれのClient(11g,12c)のSQL Plusで接続できることを確認です(前述したとおり、フルパスで指定すれば意図したバージョンのバイナリを使用することができます)。

    キャンセル

  • 2015/10/21 17:11

    申し訳ありません、EnterpriseManagerに関しましては調べながら操作を行ったところ、
    can't locate(以下略 と表示され、上手く動かすことが出来ません。。。
    sqlplusからは11gのsqlplus(11.2.0.0.1)、12cのsqlplus(12.2.0.0.0)共にDB接続が出来ました。

    キャンセル

  • 2015/10/21 17:50

    最後にpathに12cのバイナリのパスを追加する!です。
    この作業を行って正常に動作しているようであれば、
    使用するバージョンの切り替えは...
    > 使用するバージョンを変更する際はUniversal Installer[インストールされた製品][環境]で使用するバージョンを先頭にする必要があるとのこと。
    で行えば、clientの共存は満たすのではないでしょうか?

    キャンセル

  • 2015/10/21 17:59

    すみません、PC2(サーバ側)に関しては確認が出来ていましたが、PC1(クライアント側)については確認をしておりませんでした。
    PC1に関してもPC2と同様にORACLE_HOME,pathから12c分の記述を削除し、sqlplus(11g,12c)を試行すればよいのでしょうか?

    キャンセル

  • 2015/10/21 21:47

    今回問題になっていたのは、DBサーバの環境変数 ORACLE_HOMEの設定が間違っていたため、DB、リスナーが起動していなかったところにあると思います。
    DBが起動しているのであれば、PC1側は設定変更しなくても接続できると思いますが。

    キャンセル

  • 2015/10/22 13:57

    お返事遅れましてすみません。
    先ほどPC1で試行しましたところ、11g,12cのsqlplus共に
    >ORA-12154: TNS:could not resolve the connect identifier specified
    と表示され、PC2(サーバ側)のDBへ接続できませんでした。
    ためしにPC1のアプリケーションも実行しましたが、同様の結果でした。

    キャンセル

  • 2015/10/22 14:26

    tnsnames.ora はPC2のものをコピーして使ったりしていませんよね?
    DBに接続する側のtnsnames.oraはネットワーク経由での接続になるため、ADDRESSを定義しないといけないのですが。

    例)
    (ADDRESS = (PROTOCOL = TCP)(HOST = "ホスト名")(PORT = 1521)

    キャンセル

  • 2015/10/22 14:44

    元々使用していたPC1内の11gのものに設定を合わせています。
    同じドメインを使用していて、
    (ADDRESS = (PROTOCOL = TCP)(HOST = "PC2マシン名.ドメイン名")(PORT = 1521)
    という構成になっています。
    試しにアドレス指定で行いましたが特に変化は見られませんでした

    キャンセル

  • 2015/10/22 15:28

    一つずつ確認です。

    エラー内容は、listenerに接続できていないみたいのなので、

    1) サーバ側でリスナーサービスが停止していないか。
    DBサービスが停止していないか?
    管理ツール「サービス」から確認。

    以下は、現在試行している環境の11gで接続できた実績があるのであれば確認する必要はないと思いますが...
    2) tnsnames.ora listener.oraに記載してあるホスト名の名前解決ができているか
    pc1から
    ping "ホスト名"で応答があるか?

    3)ポートは開放されているか
    PC1から
    telnet ホスト名 1521

    上記で解決できなければ、根拠は薄いですがpc1のORACLE_HOMEも元に戻して試行してみるのも手だと思います。

    キャンセル

  • 2015/10/22 15:49

    ご回答ありがとうございます。
    1.リスナーサービス、DBサービスは起動しているのを確認。
    2.ホスト名についてはマシン名.ドメイン名でpingを試したところ応答あり。
    3.ポート開放は11g設定に行っていたようで、開放されていることを確認。
    上記で解決に至らないため、最後にアドバイス頂いたPC1のORACLE_HOMEのみ、12c分記述を削除しコマンドプロンプトより試行したところ、
    sqlplus
    で12cのバージョンであるsqlplusが起動し、DBへの接続の確認も行えました。

    キャンセル

  • 2015/10/22 16:04

    現在OracleDatabaseClientは11gのままなのですが、OracleClient11g,12cが共存した状態でORACLE_HOMEやpathを12cのものを優先(一番先頭に追記)にして動作させるにはOracleDatabaseClient12cをインストールしなければならないのでしょうか?
    また、インストールした場合、11gのDBには引き続き12cからアクセスできるのでしょうか…?

    キャンセル

  • 2015/10/22 16:10

    その状態だと、ORACLE_HOME(11g)\network\admin 以下にあるtnsname.ora,listener.oraを参照していますね。
    冷静に考えると、ORACLE_HOME を「;」で区切って併記するのがそもそも間違いということですね。

    キャンセル

  • 2015/10/22 16:18 編集

    ORACLE_HOMEはひとつしか記述できないのですね、勉強になります…。
    試しにORACLE_HOMEを12c分のみの記述にし、pathは12cを先頭、その後ろに11gを記載した状態でアプリケーションを起動したところ動作が確認できました。
    この状態はOracleClient12cで動作させているという解釈であってますでしょうか?
    また、上記解釈であっている場合、11gで動作させたい!という際には
    ORACLE_HOMEを11gのみの記述にし、pathを11gが前にくるように書き換えれば11gで動作することになるのでしょうか…?

    キャンセル

  • 2015/10/22 16:20

    Clientの共存であればDataBaseはインストールする必要はないと思います。
    前述しましたが、以下で試してみては如何でしょう?
    >使用するバージョンを変更する際はUniversal Installer[インストールされた製品][環境>]で使用するバージョンを先頭にする必要があるとのこと。

    実行後にPath、ORACLE_HOMEが変更されていれば期待した動作ではないでしょうか?

    ただし、心配なのはPC2側です。
    ORACLE_HOME が変更された場合、データベースが正常に動作するか不安です。
    すいませんが、ここら辺はあまり詳しくないので、検証環境で試してください。


    キャンセル

  • 2015/10/22 16:34 編集

    UniversalInstallerにつきましてはORACLE_HOMEをひとつのみの記述にしてから試行していなかったので試してみたいと思います!

    しつこいようで申し訳ありませんが不安なので再確認させてください。
    OracleClientの共存についての動作確認は上記までの操作で問題ないという認識でよいのでしょうか…?
    問題ないようであればようやくアプリケーションの動作検証作業に移れます;w;
    データベース周りに関しては検証環境で差異等発生しないか確認を行ってまいります。

    キャンセル

  • 2015/10/22 16:41

    >使用するバージョンを変更する際はUniversal Installer[インストールされた製品][環境>]で使用するバージョンを先頭にする必要があるとのこと。
    上記で動作確認取れましたか?

    であれば、Clientの共存については問題ないのではないでしょうか?

    で、補足ですが、
    > 実行後にPath、ORACLE_HOMEが変更されていれば期待した動作ではないでしょうか?
    上記を確認すれば、Oralceの動作もわかるのではないでしょうか?

    キャンセル

  • 2015/10/22 16:46

    pathについては変更されていますが、ORACLE_HOMEについては変更がありませんでした。
    インストールの際にもpathだけ自動追記されていたと思うので、ORACLE_HOMEについては変更が必要な際は毎回手動で変更する必要がありそうです。

    キャンセル

  • 2015/10/22 18:09

    overさん
    とりあえず現状ご教授頂いた内容で上長より指示のあった環境にはすることが出来ました。
    (OracleClient12cにはlsnrctl.exeが無い等の未解決部分もありますが…)
    ここで一度当質問を解決とさせて頂きます。
    近日中(早ければ明日とか…)に続きについての質問を投稿することとなりそうなので、その際はまたお力をお借りできれば幸いです。
    この度は3日間に渡りご協力頂きまして本当にありがとうございました!

    キャンセル

  • 2015/10/22 18:17

    一つだけツッコミを。
    lsnrctl.exe はDatabase側のコマンドなので、Client 11gにも当該コマンドはないのではないかと?
    実際私の環境の11gClientには当該コマンドは御座いません。

    がんばってください。

    キャンセル

  • 2015/10/22 18:33

    サーバ側にはOracleDatabaseClient11gが入ってるのでlsnrctl.exeが存在するのです。
    大事なところが説明不測でした…すいません…。

    キャンセル

0

質問の内容ですが、OracleサーバーとOracleクライアントそれぞれ複数バージョンを
共存させたいという事でしょうか?

サーバーと、クライアントでは、共存と行っても方法や知識等が全く違うと思います。

1.クライアントの共存方法
それぞれ、別のフォルダにインストールして、環境を変更する事で対応可能かと思います。

具体的には
スタートメニューからUniversal Installer を起動する。
「インストールされた製品」→「環境」にて、使用するバージョンを一番上に移動する。

Oracleクライアントはバージョンによって接続できるサーバーがありますので、
両方に接続できるクライアントを使用していれば、普段は切り替える必要はないと思います。

2.サーバーの共存方法
サーバーを共存させる場合は、ポートとサービスを別々に設定しないといけません。

バージョンは違いますが、参考になるページがありましたので、アドレスを張っておきます。
リンク内容

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/10/20 18:24

    質問内容がわかりにくくて申し訳ありません。
    PC1(Windows7)とPC2(WindowsServer2008)にそれぞれOracleClient11gが導入されています。
    今回両PCにおいてOracleClient12cを導入し、11g時に使用していたDBにアクセスまたは12cへデータを移行させてアクセス(この辺の仕様もよくわかっておりません…)できるようにしたいのです。

    キャンセル

  • 2015/10/20 19:42

    整理すると下記の様な事になるのではないでしょうか?

    PC1とPC2にOracleClient12cを導入して、11g時に使用していたDBにアクセスするのは
    クライアントの共存

    11g時に使用していたDBにアクセスまたは12cへデータを移行というのは
    サーバーの共存、又はバージョンアップ

    やりたい事を整理してひとつづつ解決した方が良いと思います。

    方法としては難易度の高い方から解決する事をお勧めします。
    1.Oracleサーバーは共存なのか?バージョンアップなのか
    2.共存でも、バージョンアップでも、まずはサーバー側の環境を構築後
      PC1から正常にアクセスできるか
    3.PC2のクライアントを共存させてアクセスできるのか

    キャンセル

  • 2015/10/21 09:06

    今回の場合はクライアントの共存に当たるかと思います。
    共存の場合はOracleClient12cをインストール後、ORACLE_HOMEとpathの設定をし、
    listener.ora,tnsnames.ora,sqlnet.oraを11gで使用していた設定に合わせればそのまま11gで使用していたデータベースにアクセスできるのでしょうか?

    キャンセル

  • 2015/10/21 13:21

    クライアントの共存であれば、OracleClient12cをインストール後、環境設定を変更する
    事でアクセス可能かと思います。
    環境の変更は手動で行った場合、漏れがある可能性がありますので、
    Universal Installer を使用して変更した方が良いと思います。


    キャンセル

  • 2015/10/21 14:49

    OracleClient12cに関しましてはPC1,PC2ともに質問欄に記述させて頂いたURLからダウンロード、インストールを完了させています。(11g,12c両方インストールされている状態)
    後に手動にてOracleHomeを追加(12cを前にすることで優先に指定)
    sqlplus(12.1.0.2.0)を使用し、既存の11gで使用していたデータベースへアクセスを試行したところ繋がらず、下記エラーが出ています。(Universal Installerを使用しても同様)
    ORA-12154: TNS:could not resolve the connect identifier specified
    ここでエラーが出なければ共存環境構築終了!だと思うのですが…
    既存のアプリケーションに関しましてもデータベースへ繋がらず、同様にエラーが発生しています。

    キャンセル

  • 2015/10/21 16:35

    例えば、11gのsqlplusを使用した場合は繋がるのでしょうか?

    ORA-12154ということは定義している内容が間違っている可能性が高いと
    思います

    キャンセル

  • 2015/10/21 17:16 編集

    overさんのご回答を元に操作を行ったところ(ORACLE_HOME,pathから12c分の記述削除)
    とりあえず11g,12cのsqlplusでPC2に関してはDB接続は確認できました。

    キャンセル

  • 2015/10/22 16:04 編集

    記載ミス削除

    キャンセル

同じタグがついた質問を見る

  • Windows Server

    467questions

    Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

  • Windows 7

    413questions

    Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

  • Oracle Database 11g

    220questions

    Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。