「AIX」タグアーカイブ

AIX上でシェルで文字列結合すると、文字列が上書きされてしまった

AIXでシェルで単に文字列結合して、標準出力したら、結合されずに上書きされてしまった。

やったこと↓

ファイルから読み取った文字列str1(12345)に、文字列ABCDを結合するので、結果は当然「12345ABCD」となるはず。。。

しかし、実際に動かしてみると、「ABCD5」となり、文字列が結合されず、str1に対して、str2が上書きされる結果となった。

最初はさっぱりわからなかったが、結局はstr1の末尾にCR(キャリッジリターン)が含まれていたからであった。

str1を読み取るファイルの改行コードがCRLFなっていたが、AIXの改行コードはLFのため、文字列を読み取った際に「12345」ではなく「12345<CR>」となっていたのである。CR(キャリッジリターン)はつまり、”カーソルを先頭に戻して”を意味するため、後続の文字列str2(ABCD)は一旦カーソルを先頭に戻した上で、結合されていたのであった。。。

わかってしまえば、大したことではないが一瞬何が起きてるのかさっぱりだった。改行コードはとても大事。


AIX上のOracle Database Configuration Assistantでデータベースの作成に失敗する

AIXにインストールしたOracle12cでDatabase Configuration Assistant(以下DBCA)でデータベースを作成すると、エラーが発生してしまった。

DBCAで表示されたエラー
  • ORA-00445:background process PMON did not start
  • ORA-01034: ORACLE not available
    →どうやらOracleのバックグラウンドプロセスであるPMONの起動ができず、結果Oracleが利用できない状態になっているみたい。
Oracleのトレースログ
  • ORA-27300:OSシステム操作:forkがステータス:2で失敗しました
  • ORA-27301:OS障害メッセージ No such file or directory
  • ORA-27302:skgpspawn5で障害が発生しました
    →やはりプロセスのforkで失敗している。
原因&対策

AIXではユーザごとのプロセス数が制限されているため、デフォルト値以上のプロセスをforkしようとしてエラーになっていた。
↓のサイトに記載の方法(ulimit,smitコマンド)でプロセス数の上限を上げることで解決しました。
https://docs.oracle.com/cd/E49329_01/install.121/e49833/app_manual.htm

ちゃんとOracleの公式サイトに書いてあった。。。Oracleのインストール時点でちゃんとマニュアルを読んでいれば。。。 (ノ_-。)