この記事は、批判の対象となる可能性がある場合を除き、Oracleの達人にとって興味深いものではないでしょう。 LinuxでのLinuxサーバー管理の経験は1年強です。 Oracleデータベースサーバー(10gと11gの両方)をインストールするプロセスは、多くのソース、たとえば
here 、
here 、
here 、またはロシアの
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の招待に感謝します!