< March 2007 | April 2007 | November 2007 >

April 19, 2007

UNICODEの列と文字列リテラルとUNIONするSQL

NCHARやNVARCHAR2の列と文字列リテラルを返す列をUNIONするようなばあい、そのままではエラーになります。

SQL> DESC Table1;
名前             NULL?    型
---------------- -------- ---------------------------
COLUMN1                   NCHAR(10)
COLUMN2                   NVARCHAR2(30)

SQL> SELECT COLUMN1, COLUMN2
  2  FROM Table1
  3  UNION
  4  SELECT 'あああああ' AS COLUMN1,
  5  'いいいいい' AS COLUMN2
  6  FROM DUAL;
SELECT COLUMN1, COLUMN2
       *
行1でエラーが発生しました。:
ORA-12704: character set mismatch

文字列リテラルは、前に'N'をつけてやると、UNICODEとして記述できますので、同じケースなら以下のようにすると、うまくいきます。

SQL> SELECT COLUMN1, COLUMN2
  2  FROM Table1
  3  UNION
  4  SELECT N'あああああ' AS COLUMN1,
  5  N'いいいいい' AS COLUMN2
  6  FROM DUAL;

COLUMN1    COLUMN2
---------- ----------
えええええ くくくくく
あああああ いいいいい

April 11, 2007

Ethereal

パケットをみる

# /usr/sbin/tethereal -i eth0 -R ip.addr==192.168.0.125

HP-UXなら

# /usr/local/bin/tethereal -i lan0 -R ip.addr==192.168.0.125

なかんじ。フィルタ(-R で指定しているところ)は、

# /usr/sbin/tethereal -i eth0 -R "ip.addr==192.168.0.125&&tcp.port==10101"

のようにすれば、複雑な指定ができます。

パケットをログに落とす

# /usr/sbin/tethereal -w tcp10101.dmp -i lo -R tcp.port==10101

上のように、-wでファイル名を指定します。-i で、ループバックインターフェースを指定しているので、これだと 127.0.0.1:10101-127.0.0.1:* のTCPパケットがログにおちます。

ログをHEXダンプする

# /usr/sbin/tethereal -r tcp10101.dmp -x

-rでファイル名を指定します。-x が、HEXダンプの意味です。

ディレクトリごとのディスク占有状況をみる

# du -s /*