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

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

やったこと↓

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

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

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

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

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


DODAの求人検索会に参加してみた

ぼちぼち転職でもしようかとDODAに登録したが、求人紹介のメールが鬼のようにくるばかりで一つ一つ読む気にならなかったが、1通気になるメールがあった→「普段は見られない”非公開求人”をご自身で探しませんか?求人検索会のご案内【DODA】」

DODAから大量に来ているメールを見るより全然効率よく求人が見れると思い参加してみました。

よかったところ
  • 時間はたっぷり2時間(早く終わったら帰ってよし)
  • 検索している最中は個室で一人。あれこれ言われながらではない
  • 検索して気にいった求人は後日DODAのサイトで「キャリアアドバイザー紹介求人」から確認できる。あとでじっくり見れる。
  • たしかに、DODAで普段検索しても出ない求人が多数見られた。非公開ではない通常の求人も検索結果にヒットするが、非公開の求人に絞って検索することも可能。
  • お水は出してくれる。
いまいちだったところ
  • 特になし!

とりあえず、現在の求人状況を見るには、とても良い機会でした!!

でも、この案内メールは誰にでも送られているかは不明。送られていても他のメールに埋もれてて気が付かない人が多そう。。。


Oracleで実行されたDDLをログ出力する(ENABLE_DDL_LOGGING)

Oracleで実行されたDDLをログ出力する方法です。

ENABLE_DDL_LOGGINGという設定をTRUEにすることで、実行されたDDLをOracleのログに出力することができます。

まずは、現在の設定の確認。

FALSEになっているので、TRUEに変更します。

再度、設定を確認する。

TRUEになっています。この状態でなんでもいいので、DDL文を実行します。

記録されるのは、以下のDDL文。

  • ALTER/CREATE/DROP/TRUNCATE CLUSTER
  • ALTER/CREATE/DROP FUNCTION
  • ALTER/CREATE/DROP INDEX
  • ALTER/CREATE/DROP OUTLINE
  • ALTER/CREATE/DROP PACKAGE
  • ALTER/CREATE/DROP PACKAGE BODY
  • ALTER/CREATE/DROP PROCEDURE
  • ALTER/CREATE/DROP PROFILE
  • ALTER/CREATE/DROP SEQUENCE
  • CREATE/DROP SYNONYM
  • ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE
  • ALTER/CREATE/DROP TRIGGER
  • ALTER/CREATE/DROP TYPE
  • ALTER/CREATE/DROP TYPE BODY
  • DROP USER
  • ALTER/CREATE/DROP VIEW

ログは以下のパスに出力されます。↓

例えば、ddl_orcl.logにはこんな感じでDDLがログ出力される。

余談だが、この機能を使った理由。。。。とある製品がDBを内包しており、製品のバージョンアップに伴い、テーブル定義を変更する処理を実行していた。バージョンアップの過程でどう変更しているのか、気になって仕込みました。


日々のSE業務で得たノウハウと趣味