2007/08/29

renameall utitlity

renameall.bat

@echo off

verify errors 2>nul
setlocal enableextensions
if errorlevel 1 echo unable to enable extensions

set USR_LOCAL_BIN=F:\usr\local\bin
perl %USR_LOCAL_BIN%\renameall2.pl %*

endlocal
echo on


renameall.pl

#!/bin/perl

#
#renameall.pl
#
# Syntax: renameall -uls ([*][0-9A-Za-z]+){1,3} ([*][0-9A-Za-z]+){1,3}
# Example: renameall *.* *.*

use strict;
use warnings;

#---------------------------------
# constant
my $TRUE = -1;
my $FALSE = 0;
my $SYNTAX = "Syntax: renameall ([*][0-9A-Za-z]+){1,3} ([*][0-9A-Za-z]+){1,3}";
my $OPT_UPPER = 1 << 2;
my $OPT_LOWER = 1 << 1;
my $OPT_SEMULATE = 1;

#---------------------------------
# parameter

#my $opt_semulate = $FALSE;
my $options = 0;
my $searchstr = '';
my $replacestr = '';
my @replacestrarr = {};
my $replacestrarrcnt = 0;

my $i;
my $j;
my $paramcnt;
for ($i = 0, $paramcnt = 0; $i < $#ARGV + 1; $i ++) {
#printf ("\$ARGV[$i]=$ARGV[$i]\n");
if (substr($ARGV[$i], 0, 1) eq '-') {
#printf ("option $ARGV[$i]\n");
for ($j = 1; $j < length($ARGV[$i]); $j ++) {
my $opt_char = substr($ARGV[$i], $j, 1);
if ($opt_char eq 's' || $ARGV[$i] eq '--semulate') {
#$opt_semulate = $TRUE;
$options |= $OPT_SEMULATE;
} elsif ($opt_char eq 'l' || $ARGV[$i] eq '--lower') {
$options |= $OPT_LOWER;
} elsif ($opt_char eq 'u' || $ARGV[$i] eq '--upper') {
$options |= $OPT_UPPER;
}
}
} else {
if ($paramcnt == 0) {
$searchstr = $ARGV[$i];
#printf ("\$searchstr = $ARGV[$i]\n");

$searchstr =~ s/([\.\[\]\(\)\/])/\\$1/g;
$searchstr =~ s/\*/(.*)/g;

#my @searcharr = split(/\*/,$searchstr);
#my $replacestrarrcnt = $#searcharr;# - 1;

} elsif ($paramcnt == 1) {
$replacestr = $ARGV[$i];
#printf ("\$replacestr = $ARGV[$i]\n");

#$replacestr =~ s/\./\\\./g;
#$replacestr =~ s/\*//;

@replacestrarr = split (/\*/, $replacestr);
$replacestrarrcnt = $#replacestrarr;
$replacestr =~ m/.$/;

if ($& eq '*') {
$replacestrarrcnt++;
}

$i = 1;

#while ($replacestr =~ m/\*/) {
# $replacestr =~ s/\*/\\$i/;
#}
}
$paramcnt ++;
}
}
printf ("\$options: %08.0b ---- -ULS\n", $options);

if ($paramcnt < 2) {
die "insufficient parameters.\n$SYNTAX\n";
}

# deal with the pattern that search arr > replace arr
for ($i = 0; $i < 10; $i ++) {
push (@replacestrarr, '');
}

#print (join ('*',@replacestrarr)."\n");
print ("internal pattern: \$searchstr=$searchstr;\$replacestr=$replacestr;\n");

#----------------------------------
# ls dir
opendir(THEDIR, ".");
my @selected=grep(/^$searchstr$/, readdir THEDIR);
closedir(THEDIR);
#print (join("\n",@selected)."\n");
if ($#selected == -1) {
die "nothing found.\n";
}

#----------------------------------
# rename the file one by one
foreach my $oldfilename (@selected) {
# convert old filename to new filename
my $newfilename = $oldfilename;
#print ($replacestrarrcnt);
if ($replacestrarrcnt == 0) {
$newfilename =~ s/$searchstr/$replacestrarr[0]/g;
} elsif ($replacestrarrcnt == 1) {
$newfilename =~ s/$searchstr/$replacestrarr[0]$1$replacestrarr[1]/g;
} elsif ($replacestrarrcnt == 2) {
$newfilename =~ s/$searchstr/$replacestrarr[0]$1$replacestrarr[1]$2$replacestrarr[2]/g;
} elsif ($replacestrarrcnt == 3) {
$newfilename =~ s/$searchstr/$replacestrarr[0]$1$replacestrarr[1]$2$replacestrarr[2]$3$replacestrarr[3]/g;
} else {
die "unsupported pattern $replacestr : too much '*' .\n";
}

if ($options & $OPT_LOWER) {
#printf ("lower");
$newfilename = lc ($newfilename);
} elsif ($options & $OPT_UPPER) {
#printf ("upper");
$newfilename = uc ($newfilename);
}

#$oldfilename =~ s/([\.\[\]\(\)\/])/\\$1/g;

printf ("$oldfilename\t-> $newfilename\n");
if (!($options & $OPT_SEMULATE)) {
#printf ("rename ($oldfilename, $newfilename) || die");
if (-e $newfilename) {
printf ("the file rename to '$newfilename' is already exists. overwrite it (Y/N) ");
while (<>) {
if (m/^[Yy]/) {
rename ($oldfilename, $newfilename) || die;
}
}
}
}
}

2007/08/27

Dealwith Oracle Enterprise Manager Database Control (dbconsole) Japanese Font

just download a font from other successfully oracle-installed machine.

cd $ORACLE_HOME/jdk/jre/lib/fonts/

ftp ...
cd $ORACLE_HOME/jdk/jre/lib/fonts/
bin
prompt
mget ALBANWTJ.TTF
quit

emctl stop dbconsole
emctl start dbconsole

Oracle 10g Backup / Recovery Setup

ALTER SYSTEM SET db_flashback_retention_target = 2160 SCOPE=BOTH SID='*';

Initialize Oracle Security (revoke)

Oracle keeping waring you in Enterprise Manager DBControl.

revoke execute on utl_file from public;
revoke execute on utl_http from public;
revoke execute on utl_smtp from public;
revoke execute on utl_tcp from public;
revoke execute on dbms_random from public;

grant execute on utl_tcp to sysman;
grant execute on utl_smtp to sysman;
grant execute on utl_http to sysman;
grant execute on utl_file to sysman;
grant execute on dbms_random to sysman;

2007/08/22

cast, convert - mysql type conversion

CAST(expr AS type), CONVERT(expr,type), CONVERT(expr USING transcoding_name)

The CAST() and CONVERT() functions take a value of one type and produce a value of another type.

The type can be one of the following values:

BINARY[(N)]

CHAR[(N)]

DATE

DATETIME

DECIMAL

SIGNED [INTEGER]

TIME

UNSIGNED [INTEGER]

Hibernate Tools (Eclipse Plug-in) document

hiberante package summary

Twelve Best Practices For Spring XML Configurations

MD5 Encryption with JavaScript

Hibernate Tools Tutorial from MyEclipse

2007/08/20

Red Hat Enterprise Linux 4.0 環境で Java アプリケーションの文字化けが発生

内容:
[概要]
Red Hat Enterprise Linux AS/ES 4 (Update2以降は除く)上でJDK/JRE1.4.2_9以
前を利用するJavaアプリケーションは、OS(ディストリビューション)の問題、
font.properties.jaの問題により日本語が正しく表示されません。

* 本件は、OS(ディストリビューション)の問題のため、あらゆる製品に影響
があります。


[対象リリース]
Red Hat Enterprise Linux AS/ES 4上での動作をサポートしているシステム製品の
全てのリリース


[対象プラットフォーム]
Red Hat Enterprise Linux AS/ES 4 (Update2以降は除く)


[起こりうる条件]
次の条件のすべてを満たす場合に発生します。
- [対象プラットフォーム]を使用している。
- JDK1.4.2_09以前を利用するアプリケーションを使用している。


[原因]
JDK 1.4.2_09以前には、Red Hat Enterprise Linux AS/ES 4に対応した
font.properties.ja ファイルが含まれていません。このため、JDKはwatanabe
フォントを使用するfont.properties.jaを使用し、watanabeフォントを使用しようと
します。しかし、版権の問題によりRed Hat Enterprise Linux AS/ES 3 以降は
watanabeフォントが削除されているためwatanabeフォントが使用できません。

また、Red Hat Enterprise Linux AS/ES 4、Update1 には X フォントサーバー
に使用されるfonts.dirファイルに日本語フォントに関する設定が含まれていま
せん。


[回避策]
OSからの観点での回避策が2つあります。

1) OSから準備する場合は、Red Hat Enterprise Enterprise Linux AS/ES Update2
以上のメディアを使用してOSをインストールします。
この場合、正しく日本語フォントが設定されたfonts.dirが提供されるため、
フォントのワーニングは表示されますが、Javaアプリケーションでは日本語
が表示されます。

2) Red Hat Enterprise Enterprise Linux AS/ES または Update1 の環境に対し
てUpdate2を適用する場合には、fonts.dirを作成しなおしてく
ださい。

* fonts.dirの作成方法はOSのマニュアル等を参照してください。
一般にはttmkfdirコマンド(3.0.9-14.1.EL)を利用します。


[BUG番号]
BUG:4609183
* Metalinkで内容を公開していない場合があります


[更新履歴]
2006/01/11 公開区分を変更
2005/11/28 本文書を公開

キーワード:
RHEL REDHAT RED HAT 文字化け 豆腐 ? ? 文字 化ける OUI ブラウザ アプリ JAVA JRE JDK 1.4.2

2007/08/12

10gR2 RAC : CRS インストール時に VIP が構成されない

10gR2 RAC : CRS インストール時に VIP が構成されない
内容:
[起こりうる現象]
CRS インストール時に VIP が構成されない

1.root.sh 実行時に以下のようなメッセージが表示される
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
The given interface(s), "eth0" is not public. Public interfaces should
be used to configure virtual IPs.

<日本語環境では以下のようなメッセージとなります>

指定のインタフェース"eth0"はパブリックではありません。パブリック・インタフェースを
使用して仮想IPを構成する必要があります。

2.上記メッセージを無視して継続した場合にも、インストール最後のコンフィグレーション・
アシスタント中で実行される Oracle Cluster Verification Utility で失敗する

なお、Windows プラットフォームでは、root.sh の実行時ではなく、Oracle Cluster
Verification Utility 中で、VIP の設定が行われるため、2. のエラーのみが顕在化します。


[対象リリース]
問題が発生するリリース : Oracle Database 10g Release 2(10.2.0)
問題を修正したリリース : なし
問題を修正予定のリリース: 未定
問題を修正したPSR : なし
問題を修正予定のPSR : 未定


[対象プラットフォーム]
すべてのプラットフォーム


[起こりうる条件]
VIP を構成するパブリック LAN として、以下の ネットワークセグメント中の
プライベート IP アドレスを指定している

- クラスA : 10.0.0.0
- クラスB : 172.16.0.0 - 172.31.0.0
- クラスC : 192.168.0.0 - 192.168.255.0


[原因]
弊社製品の仕様上の動作となります。
Oracle Clusterware 10gR2 では、インストール時に VIP を自動で構成しますが、
その際に IP アドレスの検査を行い、上記 IP アドレス を プライベート用の IP
アドレスと判断してしまいエラーになります。
以下の回避策にて、VIP に対して、プライベート IP アドレスを設定いただくことは
問題ございません。(ただし CSS がインターコネクトとして使用する ネットワーク
IP アドレスには VIP は設定できません。)


[回避策]
以下のいずれかを行ってください
1. VIPCA を手動で起動し、設定を行う
Oracle Cluster Verification Utility がエラーとなった場合でも一旦そのまま
無視して終了させ、以下の手順にて VIPCA を起動し、VIP を設定します。
(UNIX プラットフォームでは、root.sh 実行直後でも実行できます。また、その
場合に、root.sh の再実行は必要ありません)


$ cd $ORA_CRS_HOME/bin
su
# export DISPLAY=XXX.XXX.XXX.XXX:0.0 [VIPCAを表示させるコンソールを指定します]
# vipca


> cd %ORA_CRS_HOME%\bin
> vipca

2. srvctl add nodeapps コマンドにて手動で設定を行う
Oracle Cluster Verification Utility がエラーとなった場合でも一旦そのまま
無視して終了させ、以下の手順にて VIPCA を起動し、VIP を設定します。

# srvctl add nodeapps -n -o -A //< I/F NAME>


[BUG番号]
BUG:4437727
* Metalinkで内容を公開していない場合があります


[補足情報]
VIP 設定後に、再度 Oracle Cluster Verification Utility 相当のチェックを行うためには
以下のコマンドを実行します。

$ cd $ORA_CRS_HOME/bin [Windows プラットフォームでは cd %ORA_CRS_HOME%\bin]
$ ./cluvfy stage -post crsinst -n


[更新履歴]
2007/06/21 原因欄を補足
2007/06/04 原因欄を補足
2007/05/29 原因欄を補足
2006/06/05 原因欄を補足
2006/05/12 より、具体的なエラー例・手順を掲載いたしました
2005/08/29 本文書を公開
キーワード:
VIP ローカルアドレス
内容:
[起こりうる現象]
CRS インストール時に VIP が構成されない

1.root.sh 実行時に以下のようなメッセージが表示される
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
The given interface(s), "eth0" is not public. Public interfaces should
be used to configure virtual IPs.

<日本語環境では以下のようなメッセージとなります>

指定のインタフェース"eth0"はパブリックではありません。パブリック・インタフェースを
使用して仮想IPを構成する必要があります。

2.上記メッセージを無視して継続した場合にも、インストール最後のコンフィグレーション・
アシスタント中で実行される Oracle Cluster Verification Utility で失敗する

なお、Windows プラットフォームでは、root.sh の実行時ではなく、Oracle Cluster
Verification Utility 中で、VIP の設定が行われるため、2. のエラーのみが顕在化します。


[対象リリース]
問題が発生するリリース : Oracle Database 10g Release 2(10.2.0)
問題を修正したリリース : なし
問題を修正予定のリリース: 未定
問題を修正したPSR : なし
問題を修正予定のPSR : 未定


[対象プラットフォーム]
すべてのプラットフォーム


[起こりうる条件]
VIP を構成するパブリック LAN として、以下の ネットワークセグメント中の
プライベート IP アドレスを指定している

- クラスA : 10.0.0.0
- クラスB : 172.16.0.0 - 172.31.0.0
- クラスC : 192.168.0.0 - 192.168.255.0


[原因]
弊社製品の仕様上の動作となります。
Oracle Clusterware 10gR2 では、インストール時に VIP を自動で構成しますが、
その際に IP アドレスの検査を行い、上記 IP アドレス を プライベート用の IP
アドレスと判断してしまいエラーになります。
以下の回避策にて、VIP に対して、プライベート IP アドレスを設定いただくことは
問題ございません。(ただし CSS がインターコネクトとして使用する ネットワーク
IP アドレスには VIP は設定できません。)


[回避策]
以下のいずれかを行ってください
1. VIPCA を手動で起動し、設定を行う
Oracle Cluster Verification Utility がエラーとなった場合でも一旦そのまま
無視して終了させ、以下の手順にて VIPCA を起動し、VIP を設定します。
(UNIX プラットフォームでは、root.sh 実行直後でも実行できます。また、その
場合に、root.sh の再実行は必要ありません)


$ cd $ORA_CRS_HOME/bin
su
# export DISPLAY=XXX.XXX.XXX.XXX:0.0 [VIPCAを表示させるコンソールを指定します]
# vipca


> cd %ORA_CRS_HOME%\bin
> vipca

2. srvctl add nodeapps コマンドにて手動で設定を行う
Oracle Cluster Verification Utility がエラーとなった場合でも一旦そのまま
無視して終了させ、以下の手順にて VIPCA を起動し、VIP を設定します。

# srvctl add nodeapps -n -o -A //< I/F NAME>


[BUG番号]
BUG:4437727
* Metalinkで内容を公開していない場合があります


[補足情報]
VIP 設定後に、再度 Oracle Cluster Verification Utility 相当のチェックを行うためには
以下のコマンドを実行します。

$ cd $ORA_CRS_HOME/bin [Windows プラットフォームでは cd %ORA_CRS_HOME%\bin]
$ ./cluvfy stage -post crsinst -n


[更新履歴]
2007/06/21 原因欄を補足
2007/06/04 原因欄を補足
2007/05/29 原因欄を補足
2006/06/05 原因欄を補足
2006/05/12 より、具体的なエラー例・手順を掲載いたしました
2005/08/29 本文書を公開
キーワード:
VIP ローカルアドレス

2007/08/11

rac log


[root@oracle01 ~]# fdisk -l

Disk /dev/hda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 1566 12474472+ 8e Linux LVM

Disk /dev/sda: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes

ディスク /dev/sda は正常な領域テーブルを含んでいません

Disk /dev/sdb: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes

ディスク /dev/sdb は正常な領域テーブルを含んでいません

Disk /dev/sdc: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

ディスク /dev/sdc は正常な領域テーブルを含んでいません

Disk /dev/sdd: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

ディスク /dev/sdd は正常な領域テーブルを含んでいません
[root@oracle01 ~]# fdisk /dev/sda
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-204, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-204, default 204):
Using default value 204

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。



[root@oracle01 ~]#
[root@oracle01 ~]#
[root@oracle01 ~]#
[root@oracle01 ~]# fdisk /dev/sdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-204, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-204, default 204):
Using default value 204

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
[root@oracle01 ~]# fdisk /dev/sdc
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-391, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-391, default 391):
Using default value 391

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
[root@oracle01 ~]# fdisk /dev/sdd
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-391, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-391, default 391):
Using default value 391

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
[root@oracle01 ~]# shutdown -r now

Broadcast message from root (pts/0) (Sat Aug 11 12:23:51 2007):

The system is going down for reboot NOW!

install oracle real application cluster (rac) on laptop with 1g memory

VMWare

# Red Hat Enterprise Linux 4.vmx
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize
diskLib.dataCacheMinReadAheadSize
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"


Root


cat >> ntpsetdate.sh << EOF
#!/bin/sh

/etc/init.d/ntpd stop
# replace it to your time server
/usr/sbin/ntpdate -b 172.16.253.1
/sbin/hwclock --systohc
/etc/init.d/ntpd start
EOF

chmod 755 ntpsetdate.sh

$HOME/ntpsetdate.sh
ntpq -p

crontab -l > /tmp/crontab.new
echo '0 */6 * * * $HOME/ntpsetdate.sh 2>&1 $HOME/ntpsetdate.log' >> /tmp/crontab.new
crontab /tmp/crontab.new

mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bkp
cat >> /etc/ssh/sshd_config << __EOF__
RSAAuthentication no
PubkeyAuthentication no
IgnoreRhosts no
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
ListenAddress 0.0.0.0
__EOF__

echo DISPLAY=console.jp.oracle.com:1.0 >> .bash_profile

cat >> /etc/sysctl.conf << __EOF__
# f.yang for RAC system
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144
__EOF__

groupadd -g 500 oinstall
groupadd -g 501 dba
grep 50 /etc/group

useradd -u 500 -g oinstall -G dba -d /home/oracle oracle
passwd oracle

cat >> /etc/hosts << EOF
172.16.13.27 oracle01-vip.jp.oracle.com oracle01-vip
172.16.13.28 oracle02-vip.jp.oracle.com oracle02-vip
10.0.10.1 oracle01-priv.jp.oracle.com oracle01-priv
10.0.10.2 oracle02-priv.jp.oracle.com oracle02-priv
EOF

cat >> ~/.shosts << EOF
oracle01.jp.oracle.com
oracle02.jp.oracle.com
console.jp.oracle.com
localhost.localdomain
m027702.dm-hikari.hikari.co.jp
EOF





su - oracle

pwd
id
cat >> ~/rac.env << EOF
export LANG=ja_JP
export NLS_LANG=Japanese_Japan.JA16EUC
export ORACLE_BASE=/home/oracle/oracle
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs
EOF

echo DISPLAY=console.jp.oracle.com:1.0 >> .bash_profile

echo . ~/rac.env >> .bash_profile

cat >> ~/.shosts << EOF
oracle01.jp.oracle.com
oracle02.jp.oracle.com
console.jp.oracle.com
localhost.localdomain
m027702.dm-hikari.hikari.co.jp
EOF


Root part 2

cat >> /etc/sysconfig/rawdevices << EOF
/dev/raw/raw1 /dev/sda1
/dev/raw/raw2 /dev/sdb1
/dev/raw/raw3 /dev/sdc1
/dev/raw/raw4 /dev/sdd1
EOF
/etc/init.d/rawdevices restart
raw -qa
chown oracle:oinstall /dev/raw/raw[1-4]
dd if=/dev/zero of=/dev/raw/raw1 bs=1024k count=100
dd if=/dev/zero of=/dev/raw/raw2 bs=1024k count=100
dd if=/dev/zero of=/dev/raw/raw3 bs=1024k count=100
dd if=/dev/zero of=/dev/raw/raw4 bs=1024k count=100
mount -t auto /dev/cdrom /mnt/cdrom/


su - oracle

/mnt/cdrom/clusterware/runInstaller


Reinstall cleaning run with root

rm -rf /home/oracle/oracle
rm -rf /etc/ora*
rm -rf /etc/crs*
rm -rf /etc/emv*
rm -rf /etc/ORCL*
chown oracle:oinstall /dev/raw/raw*
chown 660 /dev/raw/raw*
vi /etc/inittab

2007/08/09

The difference of Process, Thread and Fiber

Process = All resources
Thread = Stack + OS Schedual
Fiber = Usermode Schedual

2007/08/08

XBabylon Translator

Natural Language Translator

Bulk Querying with the BULK COLLECT Clause

resolve lack aio library problem


rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' | grep binutils

ORBit-0.5.17-14.i386.rpm
ORBit-0.5.17-14.x86_64.rpm
binutils-2.15.92.0.2-21.x86_64.rpm
compat-db-4.1.25-9.i386.rpm
compat-db-4.1.25-9.x86_64.rpm
compat-libstdc++-33-3.2.3-47.3.x86_64.rpm
compat-libstdc++-296-2.96-132.7.2.i386.rpm
compat-libstdc++-33-3.2.3-47.3.i386.rpm
control-center-2.8.0-12.rhel4.5.x86_64.rpm
gcc-3.4.6-3.x86_64.rpm
gcc-c++-3.4.6-3.x86_64.rpm
glibc-2.3.4-2.25.x86_64.rpm
glibc-2.3.4-2.25.i686.rpm
glibc-common-2.3.4-2.25.x86_64.rpm
glibc-devel-2.3.4-2.25.i386.rpm
glibc-devel-2.3.4-2.25.x86_64.rpm
glibc-headers-2.3.4-2.25.x86_64.rpm
glibc-kernheaders-2.4-9.1.98.EL.x86_64.rpm
gnome-libs-1.4.1.2.90-44.1.x86_64.rpm
gnome-libs-1.4.1.2.90-44.1.i386.rpm
libaio-0.3.105-2.i386.rpm
libaio-0.3.105-2.i386.rpm
lack libaio-0.3.105-2.x86_64.rpm
libaio-devel-0.3.105-2.x86_64.rpm
libgcc-3.4.6-3.i386.rpm
libgcc-3.4.6-3.x86_64.rpm
libstdc++-3.4.6-3.x86_64.rpm
libstdc++-3.4.6-3.i386.rpm
libstdc++-devel-3.4.6-3.i386.rpm
libstdc++-devel-3.4.6-3.x86_64.rpm
make-3.80-6.EL4.x86_64.rpm
pdksh-5.2.14-30.3.x86_64.rpm
sysstat-5.0.5-11.rhel4.x86_64.rpm
xorg-x11-deprecated-libs-6.8.2-1.EL.13.36.x86_64.rpm
xorg-x11-deprecated-libs-6.8.2-1.EL.13.36.i386.rpm
xorg-x11-deprecated-libs-devel-6.8.2-1.EL.13.36.x86_64.rpm
xscreensaver-4.18-5.rhel4.11.x86_64.rpm

# run with root
rpm -ivh libaio-0.3.105-2.x86_64.rpm
rpm -ivh libaio-devel-0.3.105-2.x86_64.rpm

# run with oracle
$ORACLE_HOME/bin/relink all
$ORACLE_HOME/bin/ldd oracle

2007/08/06

perl CPAM install ReadLine::Gnu

[root@test pkg]# perl pmlist.pl
IO::Tty -- 1.07
Perl -- 5.8.0
pmlist.pl
#!/usr/bin/perl

use ExtUtils::Installed;
my $instmod = ExtUtils::Installed->new();
foreach my $module ($instmod->modules()) {
my $version = $instmod->version($module) || "???";
print "$module -- $version\n";
}



[root@test pkg]# perl -MCPAN -e shell

cpan shell -- CPAN exploration and modules installation (v1.61)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Term::ReadLine::Gnu
Running install for module Term::ReadLine::Gnu
Running make for H/HA/HAYASHI/Term-ReadLine-Gnu-1.16.tar.gz
CPAN: Digest::MD5 loaded ok
Checksum for /root/.cpan/sources/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.16.tar.gz ok
Scanning cache /root/.cpan/build for sizes
Term-ReadLine-Gnu-1.16/
Term-ReadLine-Gnu-1.16/eg/
Term-ReadLine-Gnu-1.16/eg/fileman
Term-ReadLine-Gnu-1.16/eg/perlsh
Term-ReadLine-Gnu-1.16/eg/pftp
Term-ReadLine-Gnu-1.16/eg/ptksh+
Term-ReadLine-Gnu-1.16/Gnu/
Term-ReadLine-Gnu-1.16/Gnu/euc_jp.pm
Term-ReadLine-Gnu-1.16/Gnu/XS.pm
Term-ReadLine-Gnu-1.16/Gnu.pm
Term-ReadLine-Gnu-1.16/Gnu.xs
Term-ReadLine-Gnu-1.16/INSTALL
Term-ReadLine-Gnu-1.16/Makefile.PL
Term-ReadLine-Gnu-1.16/MANIFEST
Term-ReadLine-Gnu-1.16/META.yml
Term-ReadLine-Gnu-1.16/ppport.h
Term-ReadLine-Gnu-1.16/README
Term-ReadLine-Gnu-1.16/t/
Term-ReadLine-Gnu-1.16/t/button.pl
Term-ReadLine-Gnu-1.16/t/callback.t
Term-ReadLine-Gnu-1.16/t/comptest/
Term-ReadLine-Gnu-1.16/t/comptest/0123
Term-ReadLine-Gnu-1.16/t/comptest/012345
Term-ReadLine-Gnu-1.16/t/comptest/023456
Term-ReadLine-Gnu-1.16/t/comptest/a_b
Term-ReadLine-Gnu-1.16/t/comptest/README
Term-ReadLine-Gnu-1.16/t/history.t
Term-ReadLine-Gnu-1.16/t/inputrc
Term-ReadLine-Gnu-1.16/t/readline.t
Term-ReadLine-Gnu-1.16/typemap
Removing previously used /root/.cpan/build/Term-ReadLine-Gnu-1.16

CPAN.pm: Going to build H/HA/HAYASHI/Term-ReadLine-Gnu-1.16.tar.gz

Found `/usr/lib/libtermcap.a'.
gcc -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -DHAVE_STRING_H rlver.c -o rlver -L/usr/local/lib -lreadline -ltermcap
It seems that you have the GNU Readline Library version 4.3.
Checking if your kit is complete...
Looks good
Writing Makefile for Term::ReadLine::Gnu
cp Gnu.pm blib/lib/Term/ReadLine/Gnu.pm
cp Gnu/XS.pm blib/lib/Term/ReadLine/Gnu/XS.pm
AutoSplitting blib/lib/Term/ReadLine/Gnu/XS.pm (blib/lib/auto/Term/ReadLine/Gnu/XS)
cp Gnu/euc_jp.pm blib/lib/Term/ReadLine/Gnu/euc_jp.pm
/usr/bin/perl /usr/lib/perl5/5.8.0/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.0/ExtUtils/typemap -typemap typemap Gnu.xs > Gnu.xsc && mv Gnu.xsc Gnu.c
gcc -c -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -march=i386 -mcpu=i686 -DVERSION=\"1.16\" -DXS_VERSION=\"1.16\" -fPIC "-I/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE" -DHAVE_STRING_H Gnu.c
Running Mkbootstrap for Term::ReadLine::Gnu ()
chmod 644 Gnu.bs
rm -f blib/arch/auto/Term/ReadLine/Gnu/Gnu.so
LD_RUN_PATH="/usr/lib:/lib" gcc -shared -L/usr/local/lib Gnu.o -o blib/arch/auto/Term/ReadLine/Gnu/Gnu.so -lreadline -ltermcap
chmod 755 blib/arch/auto/Term/ReadLine/Gnu/Gnu.so
cp Gnu.bs blib/arch/auto/Term/ReadLine/Gnu/Gnu.bs
chmod 644 blib/arch/auto/Term/ReadLine/Gnu/Gnu.bs
Manifying blib/man3/Term::ReadLine::Gnu.3pm
/usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/callback....ok
4/7 skipped: since Tk is not installed.

t/history.....FAILED tests 73-74
Failed 2/82 tests, 97.56% okay

t/readline....ok Try `/usr/bin/perl -Mblib t/readline.t verbose', if you will.
t/readline....ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/history.t 82 2 2.44% 73-74
4 subtests skipped.
Failed 1/3 test scripts, 66.67% okay. 2/193 subtests failed, 98.96% okay.
make: *** [test_dynamic] エラー 29
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force

cpan> quit
Lockfile removed.


Confirm the error message

[root@test Term-ReadLine-Gnu-1.16]# pwd
/root/.cpan/build/Term-ReadLine-Gnu-1.16


I resolved it finally with

force install ...

uniread - the best oracle command mate

uniread adds readline (line editing, command history, etc.) support to any
existing interactive command-line program. You can use this to add support
to annoying programs which do not provide it built-in (a good example is
Oracle's sqlplus, or jython) or to easily add it to your own programs.

To build this distribution, run:

perl Makefile.PL
make
make install


uniread requires:

- GNU readline
http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
- Term::ReadLine::Gnu
http://search.cpan.org/dist/Term-ReadLine-Gnu/
- IO::Tty
http://search.cpan.org/dist/IO-Tty/
or http://sourceforge.net/projects/expectperl


The latter two can be installed using the CPAN shell. Run:

perl -MCPAN -e shell

install Term::ReadLine::Gnu
install IO::Tty


-----
By me:
Add a command to .bash_profile/profile will help common user to uniread


# proxy
export http_proxy=http://proxy:8080/
export ftp_proxy=http://proxy:8080/

# initialize CPAN, just press enter except download site
perl -MCPAN -e shell

# install the pre-required modules, force for 86-64
perl -MCPAN -e shell << __EOF__
force install Term::ReadLine::Gnu
install IO::Tty
__EOF__

# copy and install uniread package
cd ~
[ ! -d pkg ] && mkdir pkg
pushd pkg
cp -a ~oracle/work/fyang/ofpkg/uniread*.tar.gz .
tar -zxvf uniread*.tar.gz
cd uniread*
perl Makefile.PL
make install
popd

# profile
cat >> /etc/profile << __EOF__
alias ufsqlplus="echo enter popd to return to original dir. ; pushd ~oracle/work/fyang ; uniread --quiet sqlplus "
alias sqlplusuf="echo enter popd to return to original dir. ; pushd ~oracle/work/fyang ; uniread --quiet sqlplus "
alias usqlplus="uniread --quiet sqlplus "
alias sqlplusu="uniread --quiet sqlplus "
__EOF__

2007/08/03

Note of Hibernate & Spring Testing

Recently, I complete tested the function of Hibernate and Spring.
I wrote this note to memo the experience.

* install the version is a point of hibernate
download the version at least the same major version software.
it may be the permenant weak point of the open source.
* midgen maps bit (boolean) to object
manually modify the attibute of the field to make it map to right java type.
* to make the update effact to all related object
add cascade="save-update" to set tag
* add named query







* to make spring handle the transaction

PROPAGATION_REQUIRED


* generate hbm.xml from java soruce with xdoclet
ant generate-hbm-from-xdoclet

Oracle Killing Sessions Version 10.2

kill oracle sessions scrit (with sqlplus)

select s.sid, s.serial#, s.username, spid,
osuser, s. program, schemaname
from v$session s, v$process p
where machine like '%ta%' and s.program like '%%' and s.paddr = p.addr
/

select 'alter system kill session '''
|| s.sid || ',' || s.serial# || '''; -- '
|| s.machine || ',' || s.program
from v$session s, v$process p
where machine like '%%' and s.program like '%%' and s.paddr = p.addr
/




Oracle Killing Sessions
Version 10.2

UNIX
Killing sessions in the UNIX environment ps -ef | grep ora to find Oracle processes. Be sure to get the process id of the session you are trying to kill.

kill -1
or
kill -9
kill -9 5745
All in one kill ps -ef | grep pmon_$ORACLE_SID | awk '{print $2}' | xargs kill -9

Windows
Killing sessions in the Windows environment with ORAKILL. orakill
SELECT instance_name
FROM gv$instance;

col program format a30

SELECT spid, osuser, s.program, schemaname
FROM gv$process p, gv$session s
WHERE p.addr = s.paddr;

c:\oracle\product\ora102\bin> orakill orabase spid

All
Killing sessions from inside the database To kill sessions within the database requires the ALTER SYSTEM privilege and the sid and serial# of the session to be killed

GRANT alter system TO ;

SELECT sid, serial#, username, schemaname, osuser
FROM gv$session
WHERE username = ;

ALTER SYSTEM KILL SESSION '< sid>,';
conn / as sysdba

GRANT alter system TO aqadmin;

conn aqadmin/aqadmin

SELECT sid, serial# , username, schemaname, osuser
FROM gv$session
WHERE username = 'AQUSER';

SQL> ALTER SYSTEM KILL SESSION '9,177' IMMEDIATE;

Kill All Sessions
Kill All Instance Sessions conn / as sysdba

set heading off
set termout off
set verify off
set echo off
set feedback off

ALTER SYSTEM enable restricted session;

ALTER SYSTEM checkpoint global;

spool kill_all.sql

SELECT 'execute kill_session('|| chr(39) || sid || chr(39) || ',' || chr(39) || serial# || chr(39) || ');'
FROM gv_$session
WHERE (username IS NOT NULL OR username <> 'SYS');

spool off

@kill_all

Session Kill Demo Procedure
An infinite loop for testing CREATE OR REPLACE PROCEDURE infinite_loop IS

BEGIN
LOOP
NULL;
END LOOP;
END infinite_loop;
/

SQL> exec infinite_loop

Oracle SQL*Plus Version 10.2

Oracle SQL*Plus
Version 10.2

General
Constants Constant Usage Example
SQL.LNO Line Number SELECT COUNT(*)
FROM all_objects;

show lno
SQL.PNO Page Number SELECT object_name
FROM all_objects;

show pno
SQL.RELEASE Oracle Version show release
SQL.SQLCODE Current error code show sqlcode
SQL.USER Currently connected user show user

Startup Parameters: Usage 1
Flags
Description
-H Displays the SQL*Plus version and the usage help
-V Displays the SQL*Plus version

sqlplus -C | -H
Startup Parameters: Usage 2
Flags
Description
-C Sets the compatibility of affected commands to the version specified. The version has the form "x.y[.z]. For example -C 10.2.0
-L Attempts to log on just once, instead of reprompting on error
-M