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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 7

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

Oracle Database 11g

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

Windows Server

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

Q&A

解決済

2回答

23615閲覧

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

Alice0225

総合スコア206

Windows 7

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

Oracle Database 11g

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

Windows Server

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

0グッド

0クリップ

投稿2015/10/20 08:25

編集2015/10/22 05:00

先日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
をそれぞれ導入する必要があるのでしょうか。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

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

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

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

現在、ORACLE_HOMEを

(C:\app\hoge2;C:\app\hoge;)※hoge2が追加分です。

と設定しているということは12cが先に評価されます。

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

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

投稿2015/10/20 10:29

over

総合スコア4309

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alice0225

2015/10/21 00:08

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

2015/10/21 05:30

lsnrctlコマンドは恐らくORACLE_HOME\bin とかにあるのではないでしょうか? であれば、投稿者様が示されているパスをそのまま用いると、 11g C:\app\hoge\bin\lsnrctl.exe 12c C:\app\hoge2\bin\lsnrctl.exe がフルパスになると思います。 (提示したパスはあくまで推測なので、エクスプローラの検索機能に「lsnrctl」と入力し検索して正しいパスを確認してください) ちょっと、心配なのですが、リスナーをどうしようとしていますか? また、環境変数「ORACLE_HOME」で12cを先にしたりしていますが、運用中のシステムであれば影響があるのではないでしょうか?
Alice0225

2015/10/21 05:40 編集

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

2015/10/21 06: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;)にしたらどうなるでしょう? 念のため、検証環境ですよね...?
Alice0225

2015/10/21 07:09 編集

>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は変更不要ですか? >念のため、検証環境ですよね...? もちろん検証用環境です! 私が無知過ぎる為お手数おかけし申し訳ございません。 調べながらにも限界を感じていたのでアドバイス頂きとても助かります…
over

2015/10/21 07:28

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

2015/10/21 07:50 編集

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

2015/10/21 07:51

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

2015/10/21 08:11

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

2015/10/21 08:50

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

2015/10/21 08:59

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

2015/10/21 12:47

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

2015/10/22 04:57

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

2015/10/22 05:26

tnsnames.ora はPC2のものをコピーして使ったりしていませんよね? DBに接続する側のtnsnames.oraはネットワーク経由での接続になるため、ADDRESSを定義しないといけないのですが。 例) (ADDRESS = (PROTOCOL = TCP)(HOST = "ホスト名")(PORT = 1521)
Alice0225

2015/10/22 05:44

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

2015/10/22 06:28

一つずつ確認です。 エラー内容は、listenerに接続できていないみたいのなので、 1) サーバ側でリスナーサービスが停止していないか。 DBサービスが停止していないか? 管理ツール「サービス」から確認。 以下は、現在試行している環境の11gで接続できた実績があるのであれば確認する必要はないと思いますが... 2) tnsnames.ora listener.oraに記載してあるホスト名の名前解決ができているか pc1から ping "ホスト名"で応答があるか? 3)ポートは開放されているか PC1から telnet ホスト名 1521 上記で解決できなければ、根拠は薄いですがpc1のORACLE_HOMEも元に戻して試行してみるのも手だと思います。
Alice0225

2015/10/22 06:49

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

2015/10/22 07:04

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

2015/10/22 07:10

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

2015/10/22 07:20 編集

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

2015/10/22 07:20

Clientの共存であればDataBaseはインストールする必要はないと思います。 前述しましたが、以下で試してみては如何でしょう? >使用するバージョンを変更する際はUniversal Installer[インストールされた製品][環境>]で使用するバージョンを先頭にする必要があるとのこと。 実行後にPath、ORACLE_HOMEが変更されていれば期待した動作ではないでしょうか? ただし、心配なのはPC2側です。 ORACLE_HOME が変更された場合、データベースが正常に動作するか不安です。 すいませんが、ここら辺はあまり詳しくないので、検証環境で試してください。
Alice0225

2015/10/22 07:38 編集

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

2015/10/22 07:41

>使用するバージョンを変更する際はUniversal Installer[インストールされた製品][環境>]で使用するバージョンを先頭にする必要があるとのこと。 上記で動作確認取れましたか? であれば、Clientの共存については問題ないのではないでしょうか? で、補足ですが、 > 実行後にPath、ORACLE_HOMEが変更されていれば期待した動作ではないでしょうか? 上記を確認すれば、Oralceの動作もわかるのではないでしょうか?
Alice0225

2015/10/22 07:46

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

2015/10/22 09:09

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

2015/10/22 09:17

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

2015/10/22 09:33

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

0

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

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

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

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

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

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

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

投稿2015/10/20 09:19

pura90

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alice0225

2015/10/20 09:24

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

2015/10/20 10:42

整理すると下記の様な事になるのではないでしょうか? PC1とPC2にOracleClient12cを導入して、11g時に使用していたDBにアクセスするのは クライアントの共存 11g時に使用していたDBにアクセスまたは12cへデータを移行というのは サーバーの共存、又はバージョンアップ やりたい事を整理してひとつづつ解決した方が良いと思います。 方法としては難易度の高い方から解決する事をお勧めします。 1.Oracleサーバーは共存なのか?バージョンアップなのか 2.共存でも、バージョンアップでも、まずはサーバー側の環境を構築後   PC1から正常にアクセスできるか 3.PC2のクライアントを共存させてアクセスできるのか
Alice0225

2015/10/21 00:06

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

2015/10/21 04:21

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

2015/10/21 05: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 ここでエラーが出なければ共存環境構築終了!だと思うのですが… 既存のアプリケーションに関しましてもデータベースへ繋がらず、同様にエラーが発生しています。
pura90

2015/10/21 07:35

例えば、11gのsqlplusを使用した場合は繋がるのでしょうか? ORA-12154ということは定義している内容が間違っている可能性が高いと 思います
Alice0225

2015/10/22 04:59 編集

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

2015/10/22 07:04 編集

記載ミス削除
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問