1台のLinuxマシンに2つの個別のOracleデータベースサーバーをインストール

この記事は、批判の対象となる可能性がある場合を除き、Oracleの達人にとって興味深いものではないでしょう。 LinuxでのLinuxサーバー管理の経験は1年強です。 Oracleデータベースサーバー(10gと11gの両方)をインストールするプロセスは、多くのソース、たとえばhereherehere 、またはロシアのhereで非常によく説明されているため、この問題については触れません。



2つの独立したOracleデータベースサーバー、たとえばOracle 10gR2とOracle11gR1を同じLinuxサーバーにインストールするタスクがあるとします(異なる仮想化オプションは考慮せず、ボードにLinuxシステムがインストールされた最も一般的なサーバーが1つあるとします)。 私の時代に直面したのはこのような問題であり、解決策はすぐには見つかりませんでした。 CentOS 5.4をLinuxシステムと見なします(RedHat、Fedoraなどの他のバリアントも適しています)。 これには何が必要ですか? まず、Oracleをインストールし、それぞれを個別のディレクトリに配置します。 経済全体の/ optパーティションがあります。 その中にoracleディレクトリを作成し、そこにOracleサーバーをインストールします。 不要な問題と競合を回避するために、2人のシステムユーザーoracle10とoracle11を作成し、それぞれ10gサーバーと11gサーバーの操作に使用します。 グループ(dba、oinstall)は共通のままにしておきます。つまり、両方のユーザーを両方のグループに追加します。

したがって、上記のインストール手順に従って、適切なシステムアカウント(oracle10をインストールするために、oracle10gR2を/opt/oracle/product/10.2.0ディレクトリに、Oracle 11gR1を/opt/oracle/product/11.2.0にインストールします。 10gR2、Oracle11gR1をインストールするoracle11)。 インストールが完了したら、oracle10およびoracle11ユーザーのホームディレクトリにある.bash_profile構成ファイルを編集します(デフォルトでは、システム上のユーザーにbashシェルが使用されます)。 oracle10の場合、次のように編集します。



#.bash_profile



#エイリアスと関数を取得する

if [-f〜/ .bashrc]; それから

〜/ .bashrc

fi



#ユーザー固有の環境とスタートアッププログラム



ORACLE_BASE = / opt / oracle

ORACLE_HOME = $ ORACLE_BASE / product / 10.2.0 / db_1

ORACLE_SID = orcl

ORACLE_HOME_LISTNER = $ ORACLE_HOME



LD_LIBRARY_PATH = $ ORACLE_HOME / lib



PATH = $ PATH:$ HOME / bin:/ $ ORACLE_HOME / bin



エクスポートパスORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH



およびoracle11の場合:



#.bash_profile



#エイリアスと関数を取得する

if [-f〜/ .bashrc]; それから

〜/ .bashrc

fi



#ユーザー固有の環境とスタートアッププログラム



ORACLE_BASE = / opt / oracle

ORACLE_HOME = $ ORACLE_BASE / product / 11.2.0 / db_1

ORACLE_SID = orcl2

ORACLE_HOME_LISTNER = $ ORACLE_HOME



LD_LIBRARY_PATH = $ ORACLE_HOME / lib



PATH = $ PATH:$ HOME / bin:/ $ ORACLE_HOME / bin



エクスポートパスORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH



最後に、両方のサーバーに適切な起動スクリプトを作成します。 これを行うには、/ etc / rc.d / init.dディレクトリにoradb10およびoradb11ファイルを作成します。

コンテンツoradb10:



ケース「$ 1」

start)echo「Oracleデータベースの起動」

su-oracle10 -c "lsnrctl start; dbstart $ ORACLE_HOME; emctl start dbconsole»

touch / var / lock / subsys / oracle10

;;

stop)echo "Oracleデータベースのシャットダウン"

rm -f / var / lock / subsys / oracle10

su-oracle10 -c "emctl stop dbconsole; dbshut $ ORACLE_HOME; lsnrctl stop»

;;

*)

echo $ "使用法:$ 0 {start | stop}"

エサック



コンテンツoradb11:



ケース「$ 1」

start)echo「Oracleデータベースの起動」

su-oracle11 -c "lsnrctl start; dbstart $ ORACLE_HOME; emctl start dbconsole»

touch / var / lock / subsys / oracle11

;;

stop)echo "Oracleデータベースのシャットダウン"

rm -f / var / lock / subsys / oracle11

su-oracle11 -c "emctl stop dbconsole; dbshut $ ORACLE_HOME; lsnrctl stop»

;;

*)

echo $ "使用法:$ 0 {start | stop}"

エサック



次に、コマンドを使用して適切なサービスを追加します。

chkconfig – oradb10を追加します

chkconfig – oradb11を追加します



最後に、構成ファイル/ etc / oratabを次のように編集します。



orcl:/opt/oracle/product/10.2.0/db_1:Y

orcl2:/opt/oracle/product/11.2.0/db_1:Y



ご想像のとおり、結果として、システムを起動すると、各サーバーは自動的に独自のデータベース、サーバー10gのorclおよびサーバー11gのorcl2を起動します。

サーバーの1つで何らかのアクションを実行する必要がある場合、Oracle 10gサーバーが必要な場合は適切なユーザー、たとえばoracle10(またはsu-oracle10コマンドを実行)としてログインし、対応するOracleサーバーで作業する必要があるコマンドを実行します例:sqlplusまたはその他。



基本的にこれですべてです。複雑なことは何もありません。 あなたが何かを見逃したか、どこかでミスをした場合、私は教祖がそれを修正すると思います:)



UPD:小さな修正:Enterprise Managerコンソール間の競合を回避するには、サーバーの1つのポートをデフォルト値の1158から他のポートに調整する必要があります。たとえば、次のようになります。

emca -reconfig ports -DBCONTROL_HTTP_PORT <port_number>



Z.Y. Habrに関する私の最初の投稿。 habrachelovekナンバー1の招待に感謝します!



All Articles