JPAのトランザクションについて
- エンティティマネージャの種類
- コンテナ管理
- EJBコンテナがライフサイクルを管理
- DI or JNDI lookupにより取得
- アプリケーション管理
- アプリケーションのコード上で生成・破棄
- EntityManagerFacutory # createEntityManager() により生成
- EntityManager # close() で破棄
- コンテナ管理
- エンティティマネージャが利用できるトランザクションマネージャの種類
- エンティティマネージャとトランザクションの組み合わせパターン
エンティティマネージャのタイプ | トランザクションのタイプ | 環境 |
---|---|---|
コンテナ管理 | JTA | EJBコンテナ |
アプリケーション管理 | JTA | EJBコンテナ, Webコンテナ |
アプリケーション | リソースローカル | EJBコンテナ, Webコンテナ, Java SE |
Apacheを非rootユーザで起動する
httpd.confに指定したapacheユーザ(非root)で、Apacheのリスンポートを81番で起動しようとしたところ、以下のエラー。
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:81
1023番以下の特権ポートはrootユーザ以外はリスンさせられないということなので、httpd.confを編集し、リスンポートを7777に変更。
再度起動しようとすると、以下のエラー。
(13)Permissin denied: httpd: could not open error log file /
/logs/error_log.
Unable to open logs
logs以下のオーナーがrootになっているため、ログファイルが開けず、起動できないようです。
chown -R hoge:hoge logs してリトライすると、無事動かせました。
ARCHIVELOG/NOARCHIVELOG 確認方法
以下のコマンドで、確認できます。
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 19
Next log sequence to archive 21
Current log sequence 21
または、V$DATABASEビューのLOG_MODE列。
SQL> select LOG_MODE from V$DATABASE
ARCHIVELOG/NOARCHIVELOGの切り替えは、オンラインREDOログが読み込まれているmount状態で、
SQL> alter database archivelog(/noarchivelog);
SQL> archive log start
Statement processed.
SQL> alter database open;
TRUNCATE, DROP, DELETEの違い
DROPは、セグメント(≒表)構造ごとデータを消し去る。
TRUNCATEは、High Water Markをセグメントの頭に移動させることによる、領域(エクステント)の開放がメイン。表構造は残るが、行データ自体は消える。ROLLBACKできない。
内部的には"HWMの移動"以外の何も行っていないので、DBA_SEGMENTS表のBLOCKSもBYTESも変化なし!
DELETEは、ブロック内の行データを削除するだけ。なので、領域は開放されない。ROLLBACKできる。
ログアウトしても、コマンドを実行し続けるnohup
以下の形でうたれたコマンドは、ハングアップを無視する。コンソール上で実行され続けるコマンドを、teratermなどでリモートから起動するときなどに便利です。
nohup コマンド [引数] &
あるコマンドの出力結果を引数として別コマンドを起動するxargs
対象ファイルが複数あるようなコマンドを実行するシェルを書くときなど、forで回す必要がないので便利!
あるコマンド | xargs 別のコマンド
タイトルに"txt"を含む全ファイルから"hogehoge"をグレップする例。
find . -name txt | xargs grep hogehoge