2014年12月18日木曜日

オラクル ロック解除


データをテーブルにインサートするとき、反応がない。

SQL自体は問題ないことを確認したあと、もしかしてロックのせいかなと思っている。

ロックとは、ある処理がコミットされずに、その後に続く処理が待ち状態になってしまっていること。

対応手順は下記となります。

SQL> SELECT SID, SERIAL# FROM V$SESSION
  2  WHERE SID IN (
  3  SELECT SID FROM V$LOCK
  4  WHERE TYPE IN ('TM','TX')
  5  );

       SID    SERIAL#
---------- ----------
        30      49247
        74      47697

SQL> alter system kill session '30,49247';

システムが変更されました。

SQL>
SQL> alter system kill session '74,47697';

システムが変更されました。

SQL> SELECT SID, SERIAL# FROM V$SESSION
  2  WHERE SID IN (
  3  SELECT SID FROM V$LOCK
  4  WHERE TYPE IN ('TM','TX')
  5  );

レコードが選択されませんでした。

SQL>

PL/SQLプロシージャのコンパイル時フリーズになる

PL/SQLプロシージャのコンパイル時フリーズになる

フリーズしたセッションが応答待ちのままになっているためです。

停止するセッションを識別するには、フリーズしてしまったセッションの索引番号とシリアル番号を指定します。
セッションのシステム識別子(SID)とシリアル番号を識別するには、V$SESSION動的パフォーマンス・ビューを問い合せます。

SELECT
    SID ,SERIAL# ,STATUS
FROM
    V$SESSION
WHERE
    USERNAME = 'LEON_TENANT';



       SID    SERIAL# STATUS
---------- ---------- --------
        40          1 INACTIVE
        42       2493 ACTIVE


ALTER SYSTEM KILL SESSION '42,2493';

再度コンパイルを実施すると、無事にコンパイルことはできました。

2014年12月3日水曜日

resin deploy timeout 解消

問題:

>resin deploy imart.war
java.lang.IllegalStateException: QueryFutureCallback[] future timeout: 120000ms


解決方法:
%resin_home%/resin.properties のdependency_check_interval を-1に変更する。

# dependency_check_interval : 5m
dependency_check_interval : -1


resinを再起動する。

resin deploy を実施する。

2014年12月2日火曜日

Oracleスキーマ単位にExport


1.準備

C:\verup>sqlplus system/password@127.0.0.1:8521/orcl

SQL*Plus: Release 11.2.0.1.0 Production on 火 12月 2 10:00:58 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
に接続されました。
SQL>
SQL>

ダンプファイル(Exportしたファイルのこと)とログを格納するディレクトリを作成。

SQL> create directory dumpdir as 'c:\verup\dump';

ディレクトリが作成されました。

SQL> create directory logdir as 'c:\verup\log';
ディレクトリが作成されました。

Oracleのユーザにディレクトリに読み書き権限を与える。
SQL>grant read,write on directory dumpdir to biz_one;
権限付与が成功しました。

※上記のコマンドを実行しないと、ORA-39070が発生しますよ。
ORA-39070: ログ・ファイルをオープンできません。

ディレクトリ・オブジェクトの確認
SQL>set pagesize 0;
SQL>select * from dba_directories;

2.Exportコマンドを投入

expdp dbuser/password@orcl schemas=biz_one directory=dumpdir dumpfile=biz_one_20141202.DMP

3.Import コマンドで導入

impdp new_user/password@orcl directory=dumpdir remap_schema=biz_one:biz_two dumpfile=biz_one_20141202.DMP

4.export 時と異なるスキーマ、異なる表領域に import
impdp user/password@orcl directory=dumpdir remap_schema=old_schema:new_schema dumpfile=xxxx.DMP remap_tablespace=old_tablespace:new_tablespace