sql >> データベース >  >> RDS >> Oracle

GI12.1.0.2とセグメンテーション違反をコンパイルできません

    ですから、私は最近、もっとよく知っておくべきことについて苦労しています。私たちは皆、以前にそこにいました。

    ラップトップで2ノードのRACテストベッドを再作成しようとしています。これは、VirtualBox5.0を搭載したOracleLinux6.5上のOracle12.1.0.2になります。かなりシンプルなはずですよね?私は今年の4月にこれをどのように行ったかについての指示さえ書きました。同じラップトップでドキュメントの同じ手順を実行していますが、それでも問題が発生します。変更されたのは、12.1.0.2に直接移動すること(私のドキュメントは12.1.0.1だったと思います)と、ラップトップにVB5.0がインストールされていることだけです。

    2つの仮想ノードを作成し、準備ができました。 OUIを起動して、グリッドインフラストラクチャのインストールを開始します。 OUIがリンクフェーズに入ると、エラーメッセージが表示されます。

    makefileのターゲット「irmanioracle」の呼び出し中にエラーが発生しました。

    私たちは皆、人生の岐路に立ってきました。あなたには選択の余地があります。左に行くのですか、それとも右に行くのですか?残念ながら、私は間違った方向に向きを変え、暇な時間を数週間無駄にしました。この時点で、私は決断を下しました。エラーが言ったとおりに実行しますか、それとも自分の経験に依存しますか?私はやみくもにエラーを無視し、私の経験に頼りました。愚かな私。

    ちょうど2か月前、テストベッドでGI 12.1.0.2をコンパイルできなかったときに、まったく同じエラーが発生しました。そのテストベッドはVMWareESXホストで実行されていました。 OracleサポートにSRを提出しましたが、コンパイルの問題は、各仮想マシン専用のRAMが不足していることが原因であるとのことでした。仮想環境であるため、これは簡単に修正できました。 SysAdminに仮想マシンのRAMとスワップスペースを増やしてもらい、GI12.1.0.2を約束どおりにコンパイルしました。ですから、私は当然、ここで同じ問題に遭遇していると思いました。私のラップトップでは、RAMを増やし続けました。スワップスペースを拡張しました。ノードを最初から再構築するところまで行った。私はこの2週間を経験の道で過ごしましたが、でこぼこで、引っかき傷があり、ほこりっぽく、非常に不快であることがわかりました。

    ポップアップボックスに表示されているように、私がとるべき道は明示的に行うことでした…詳細については、ログファイルを参照してください。やっと答えがわかったと思って頑固さを乗り越えたとき、ログファイルを読みました。最後に次のメッセージが見つかりました。

    INFO: - Linking Oracle
    INFO: rm -f /u01/app/crs12.1.0.2/rdbms/lib/oracle
    INFO: /usr/bin/ld: cannot find -ljavavm12
    collect2: ld returned 1 exit status
    INFO: make: *** [/u01/app/crs12.1.0.2/rdbms/lib/oracle] Error 1

    さて、今では完全に明白です!ライブラリファイルがありません。インターネットで簡単にチェックすると、簡単に解決策にたどり着きました。この問題は私だけではありませんが、何らかの理由でOUIがlibjavavm12.aを$ GRID_HOME/libにコピーしていません。そのポップアップボックスがまだそこにある状態で、ノードで次を発行します。

    [oracle@host01 ~]$ export GRID_HOME=/u01/app/crs12.1.0.2
    [oracle@host01 ~]$ cp $GRID_HOME/javavm/jdk/jdk7/lib/libjavavm12.a $GRID_HOME/lib

    次に、ポップアップボックスに戻り、[再試行]ボタンを押しました。案の定、いまいましいものがコンパイルされ、OUIが作業を終了しました。

    更新:RDBMS12.1.0.2ソフトウェアをクラスターにインストールするときに同じ問題が発生しました。まったく同じ修正を使用して、データベースソフトウェアでもOracleを正しくコンパイルしました。

    しかし、私は終わっていませんでした。グリッドインフラストラクチャをインストールした人なら誰でも知っているように、プロセスの後半ですべてのノードで$ GRID_HOME/root.shスクリプトを実行する必要があります。最初のノードでこれを試みたときに、「セグメンテーション違反」エラーが発生しました。結局のところ、GI 12.1.0.2のインストールではperlに問題があります(ここでも私だけではありません)。以下でもセグメンテーション違反が発生します:

    cd $GRID_HOME/perl/bin
    ./perl -v

    解決策は、Perlを$GRID_HOMEに再インストールすることです。これがどのように行われるかを正確に説明しているLaurentLeturgezによるブログエントリを見つけました。私はこれを自分で理解することはなかったでしょう。すべてのノードにPerlを再インストールした後、root.shスクリプトは問題なく実行されました。

    更新:RDBMS12.1.0.2ソフトウェアをクラスターにインストールするときに同じ問題が発生しました。セグメンテーション違反なしでperlを実行するために、まったく同じ修正を使用しました。

    私たち全員のように、私は多くの時間を節約するために私の経験に依存しています。 1か月または1年前に学んだことを今日適用します。時々、経験が邪魔になり、私たちが旅をしないことを望んでいた道を私たちに連れて行ってくれます。


    1. SisenseでのJavaデータの操作

    2. MariaDBでのRAND()のしくみ

    3. 再帰クエリを使用したテーブル依存グラフの作成

    4. Oracle:条件付きの全文検索