2013-05-14
2行にまたがっている iostat のログを1行にするのに使ったPerlワンライナー
% perl -pe '/sssn[0-9]+s:/ and chop' iostat.txt > iostat_tmp.txt % perl -pe 's/(sssn[0-9]+s:[\/\w]+)iostat\s[0-9\/]{10}\s[0-9:]{8}/$1/' iostat_tmp.txt > iostat_mod.txt
2013-04-24
特定ディレクトリ以下を除いた find をする方法
特定ディレクトリ以下を除いた find をする方法を聞かれたので、id:teramako さんの記事を紹介したら喜ばれました。
find . -name "foo" -prune -o -print...
できることならxargsを使え
find /tmp -type f -exec rm -f {} \;じゃなくて
find /tmp -type f -print0 | xargs -0 /usr/bin/rm特定ディレクトリ以下を除いた find をする方法 - hogehoge @teramako
2013-04-21
インターフェースを down するときのシステムコールを調べてみた
[root@localhost ~]# strace -tf -o strace.log ifconfig eth0 down
- システムコールを確認する。
[root@localhost ~]# less strace.log 3096 23:36:01 execve("/sbin/ifconfig", ["ifconfig", "eth0", "down"], [/* 19 vars */]) = 0 3096 23:36:01 brk(0) = 0x8c5e000 3096 23:36:01 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 open("/etc/ld.so.cache", O_RDONLY) = 3 3096 23:36:01 fstat64(3, {st_mode=S_IFREG|0644, st_size=44348, ...}) = 0 3096 23:36:01 mmap2(NULL, 44348, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7fb8000 ... 3096 23:36:01 access("/proc/net", R_OK) = 0 3096 23:36:01 access("/proc/net/unix", R_OK) = 0 3096 23:36:01 socket(PF_FILE, SOCK_DGRAM, 0) = 3 3096 23:36:01 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4 3096 23:36:01 access("/proc/net/if_inet6", R_OK) = 0 3096 23:36:01 socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 5 3096 23:36:01 access("/proc/net/ax25", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 access("/proc/net/nr", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 access("/proc/net/rose", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 access("/proc/net/ipx", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 access("/proc/net/appletalk", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 access("/proc/sys/net/econet", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 access("/proc/sys/net/ash", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 access("/proc/net/x25", R_OK) = -1 ENOENT (No such file or directory) 3096 23:36:01 open("/usr/share/locale/locale.alias", O_RDONLY) = 6 3096 23:36:01 fstat64(6, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0 3096 23:36:01 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fc2000 3096 23:36:01 read(6, "# Locale name alias data base.\n#"..., 4096) = 2528 3096 23:36:01 read(6, "", 4096) = 0 3096 23:36:01 close(6) = 0 3096 23:36:01 munmap(0xb7fc2000, 4096) = 0 3096 23:36:01 open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT (No such file or directory) 3096 23:36:01 open("/usr/share/locale/en_US.utf8/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT (No such file or directory) 3096 23:36:01 open("/usr/share/locale/en_US/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT (No such file or directory) 3096 23:36:01 open("/usr/share/locale/en.UTF-8/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT (No such file or directory) 3096 23:36:01 open("/usr/share/locale/en.utf8/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT (No such file or directory) 3096 23:36:01 open("/usr/share/locale/en/LC_MESSAGES/net-tools.mo", O_RDONLY) = -1 ENOENT (No such file or directory) 3096 23:36:01 ioctl(4, SIOCGIFFLAGS, {ifr_name="eth0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST}) = 0 ★ココ 3096 23:36:01 ioctl(4, SIOCSIFFLAGS, 0xbf93bc78) = 0 3096 23:36:01 exit_group(0) = ?
ioctl システムコールを使ってインターフェースを down してるぽい。
「ifconfig ioctl」でググってみると、あきみちさんのサイトにヒットしたので読んでみると
Linuxでは、ネットワークインターフェースの状態を変更するためにioctlを利用します。
Geekなぺーじ:インターフェースをup状態にする
と、やはりそうらしい。
補足
インターフェースを down すると、そのインタフェースを使って通信しているプロセスのソケットがクローズされると思ったが、/proc/PID/fd を観察してみたところ、down してもクローズされずにそのままだった。
[root@localhost ~]# ls -l /proc/3419/fd total 0 lr-x------ 1 oracle oracle 64 Apr 20 23:50 0 -> /dev/null l-wx------ 1 oracle oracle 64 Apr 20 23:50 1 -> /dev/null lr-x------ 1 oracle oracle 64 Apr 20 23:50 10 -> /home/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/mesg/oraja.msb lr-x------ 1 oracle oracle 64 Apr 20 23:50 11 -> /home/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/mesg/oraus.msb lrwx------ 1 oracle oracle 64 Apr 20 23:50 14 -> socket:[8881] ★ここの状態を観察する l-wx------ 1 oracle oracle 64 Apr 20 23:50 2 -> /dev/null lrwx------ 1 oracle oracle 64 Apr 20 23:50 256 -> /home/oracle/app/oracle/oradata/orcl/system01.dbf lrwx------ 1 oracle oracle 64 Apr 20 23:52 257 -> /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf lr-x------ 1 oracle oracle 64 Apr 20 23:50 3 -> /dev/null lr-x------ 1 oracle oracle 64 Apr 20 23:50 4 -> /dev/null lr-x------ 1 oracle oracle 64 Apr 20 23:50 5 -> /home/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/mesg/oraus.msb lr-x------ 1 oracle oracle 64 Apr 20 23:50 6 -> /proc/3419/fd lr-x------ 1 oracle oracle 64 Apr 20 23:50 7 -> /dev/zero l-wx------ 1 oracle oracle 64 Apr 20 23:50 8 -> /home/oracle/app/oracle/diag/rdbms/orcl2/orcl/trace/orcl_ora_3419.trc l-wx------ 1 oracle oracle 64 Apr 20 23:50 9 -> /home/oracle/app/oracle/diag/rdbms/orcl2/orcl/trace/orcl_ora_3419.trm
インターフェースが down しても、抜線してもユーザープロセスから見ると区別つかなさそうだ。OSカーネル内のデータ構造(/proc/net/if_inet6など)には違いがあると思うが。NIC の bonding やチーミングを行っている場合は、デバイスドライバが高度な動きをすると思うが、ドライバのレイヤーでよろしくやってくれて、ユーザープロセスから見ると何もわからないのではないかと思う。
Oracle Database のサーバー・プロセスが通信する際にどのようなソケットオプションを使っているか調べる
環境
[root@localhost ~]# cat /etc/issue Enterprise Linux Enterprise Linux Server release 5.5 (Carthage) Kernel \r on an \m [root@localhost ~]# uname -a Linux localhost.localdomain 2.6.18-194.17.1.0.1.el5 #1 SMP Wed Sep 29 15:40:03 EDT 2010 i686 i686 i386 GNU/Linux
- Oracle Database
SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production PL/SQL Release 11.2.0.2.0 - Production CORE 11.2.0.2.0 Production TNS for Linux: Version 11.2.0.2.0 - Production NLSRTL Version 11.2.0.2.0 - Production
[oracle@localhost OPatch]$ ./opatch lsinventory ... Installed Top-level Products (1): Oracle Database 11g 11.2.0.2.0 There are 1 products installed in this Oracle Home. There are no Interim patches installed in this Oracle Home.
strace でシステムコールをトレースする
- リスナープロセスの PID を調べる。
[root@localhost ~]# ps -ef|grep [t]ns oracle 3249 1 0 19:35 ? 00:00:00 /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/tnslsnr LISTENER -inherit
[root@localhost ~]# strace -tf -p 3249 -o strace.log
[root@localhost ~]# grep -i setsockopt strace.log 3250 20:12:35 setsockopt(14, SOL_SOCKET, SO_LINGER, {onoff=1, linger=900}, 8) = 0 3249 20:12:36 setsockopt(14, SOL_TCP, TCP_NODELAY, [1], 4) = 0 3601 20:12:36 setsockopt(14, SOL_TCP, TCP_NODELAY, [1], 4) = 0 3601 20:12:37 setsockopt(14, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0 3601 20:12:37 setsockopt(14, SOL_SOCKET, SO_SNDTIMEO, "\0\0\0\0\0\0\0\0", 8) = 0 3601 20:12:37 setsockopt(14, SOL_SOCKET, SO_RCVTIMEO, "\0\0\0\0\0\0\0\0", 8) = 0 3601 20:12:37 setsockopt(14, SOL_SOCKET, SO_KEEPALIVE, [0], 4) = 0 3250 20:12:40 setsockopt(14, SOL_SOCKET, SO_LINGER, {onoff=1, linger=900}, 8) = 0 3249 20:12:40 setsockopt(14, SOL_TCP, TCP_NODELAY, [1], 4) = 0 3603 20:12:40 setsockopt(14, SOL_TCP, TCP_NODELAY, [1], 4) = 0 3603 20:12:40 setsockopt(14, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0 3603 20:12:41 setsockopt(14, SOL_SOCKET, SO_SNDTIMEO, "\0\0\0\0\0\0\0\0", 8) = 0 3603 20:12:41 setsockopt(14, SOL_SOCKET, SO_RCVTIMEO, "\0\0\0\0\0\0\0\0", 8) = 0 3603 20:12:41 setsockopt(14, SOL_SOCKET, SO_KEEPALIVE, [0], 4) = 0
Oracle Net トレース・ファイルから確認する
- Oracle Database の sqlnet.ora にトレース・レベルを設定する
[oracle@localhost ~]$ cat /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/sqlnet.ora TRACE_LEVEL_SERVER=16
- テストケース実行後、トレース・ファイルを確認する。
[oracle@localhost trace]$ grep testc * orcl_ora_3564.trc:2013-04-20 20:09:41.321368 : nsbasic_brc:2F 2A 20 74 65 73 74 63 |/*.testc| orcl_ora_3566.trc:2013-04-20 20:09:42.272207 : nsbasic_brc:2F 2A 20 74 65 73 74 63 |/*.testc| orcl_ora_3579.trc:2013-04-20 20:10:59.363429 : nsbasic_brc:2F 2A 20 74 65 73 74 63 |/*.testc| orcl_ora_3581.trc:2013-04-20 20:11:04.073404 : nsbasic_brc:2F 2A 20 74 65 73 74 63 |/*.testc| orcl_ora_3590.trc:2013-04-20 20:11:35.457958 : nsbasic_brc:2F 2A 20 74 65 73 74 63 |/*.testc| orcl_ora_3601.trc:2013-04-20 20:12:37.614055 : nsbasic_brc:2F 2A 20 74 65 73 74 63 |/*.testc| orcl_ora_3603.trc:2013-04-20 20:12:41.459677 : nsbasic_brc:2F 2A 20 74 65 73 74 63 |/*.testc|
- トレース・ファイルの中身を確認する。
[oracle@localhost trace]$ grep -i tcp orcl_ora_3601.trc 2013-04-20 20:12:36.959360 : nsinh_hoff:ADR="(ADDRESS=(PROTOCOL=tcp)(DEV=14)(HOST=192.168.56.101)(PORT=1521))" 2013-04-20 20:12:36.959715 : nsc2addr:(ADDRESS=(PROTOCOL=tcp)(DEV=14)(HOST=192.168.56.101)(PORT=1521)) 2013-04-20 20:12:36.966778 : nttcon:NT layer TCP/IP connection has been established. 2013-04-20 20:12:36.966984 : nttcon:set TCP_NODELAY on 14 2013-04-20 20:12:37.002025 : nsprecv:3D 74 63 70 29 28 48 4F |=tcp)(HO| 2013-04-20 20:12:37.100779 : nsgetclientaddress:Client address: "(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.1)(PORT=1849))" [oracle@localhost trace]$ grep -i tcp orcl_ora_3603.trc 2013-04-20 20:12:40.797698 : nsinh_hoff:ADR="(ADDRESS=(PROTOCOL=tcp)(DEV=14)(HOST=192.168.56.101)(PORT=1521))" 2013-04-20 20:12:40.798505 : nsc2addr:(ADDRESS=(PROTOCOL=tcp)(DEV=14)(HOST=192.168.56.101)(PORT=1521)) 2013-04-20 20:12:40.806009 : nttcon:NT layer TCP/IP connection has been established. 2013-04-20 20:12:40.806195 : nttcon:set TCP_NODELAY on 14 2013-04-20 20:12:40.841755 : nsprecv:3D 74 63 70 29 28 48 4F |=tcp)(HO| 2013-04-20 20:12:40.941021 : nsgetclientaddress:Client address: "(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.1)(PORT=1851))"
テスト手順
- Oracle Database の sqlnet.ora にトレース・レベル(16)を設定する。
- strace でリスナープロセスと fork されるプロセスのシステムコールをトレースする。
- テストプログラムを実行する。
exec_testcase1.bat exec_testcase2.bat
テストに使ったファイル
- set_env.bat
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_22 set PATH=%JAVA_HOME%\bin;%PATH%
- build_testcase1.bat
call set_env.bat %~d0 cd %~p0 set CLASSPATH=.;ojdbc5.jar javac TestCase1.java pause
- build_testcase2.bat
call set_env.bat %~d0 cd %~p0 set CLASSPATH=.;ojdbc5.jar javac TestCase2.java pause
- exec_testcase1.bat
call set_env.bat %~d0 cd %~p0 set CLASSPATH=.;ojdbc5.jar java TestCase1 pause
- exec_testcase2.bat
call set_env.bat %~d0 cd %~p0 set CLASSPATH=.;ojdbc5.jar java TestCase2 pause
- TestCase1.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; public class TestCase1 { public static void main(String args[]) { Connection conn = null; Statement stmt = null; ResultSet resultSet = null; try { Class.forName ("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.56.101:1521:orcl","system","manager"); stmt = conn.createStatement(); resultSet = stmt.executeQuery("select /* testcase1 */ sys_context('USERENV','INSTANCE_NAME'), sys_context('USERENV','SERVER_HOST') from dual"); for(;resultSet.next();) { System.out.println(resultSet.getString(1)); System.out.println(resultSet.getString(2)); } try { if (resultSet != null) { resultSet.close(); } } catch (SQLException e){ e.printStackTrace(); } try { if (stmt != null) { stmt.close(); } } catch (SQLException e){ e.printStackTrace(); } } catch (SQLException e) { System.out.println("Error code: " + e.getErrorCode()); System.out.println("SQL state: " + e.getSQLState()); e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { if (resultSet != null) { resultSet.close(); } } catch (SQLException e){ e.printStackTrace(); } try { if (stmt != null) { stmt.close(); } } catch (SQLException e){ e.printStackTrace(); } try { if (conn != null) { conn.close(); } } catch (SQLException e){ e.printStackTrace(); } } } }
- TestCase2.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; public class TestCase2 { public static void main(String args[]) { Connection conn = null; Statement stmt = null; ResultSet resultSet = null; try { Class.forName ("oracle.jdbc.driver.OracleDriver"); java.util.Properties info = new java.util.Properties(); info.setProperty("user", "system"); info.setProperty("password", "manager"); info.setProperty("TCP.NODELAY", "YES"); conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.56.101:1521:ORCL",info); stmt = conn.createStatement(); resultSet = stmt.executeQuery("select /* testcase2 */ sys_context('USERENV','INSTANCE_NAME'), sys_context('USERENV','SERVER_HOST') from dual"); for(;resultSet.next();) { System.out.println(resultSet.getString(1)); System.out.println(resultSet.getString(2)); } try { if (resultSet != null) { resultSet.close(); } } catch (SQLException e){ e.printStackTrace(); } try { if (stmt != null) { stmt.close(); } } catch (SQLException e){ e.printStackTrace(); } } catch (SQLException e) { System.out.println("Error code: " + e.getErrorCode()); System.out.println("SQL state: " + e.getSQLState()); e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { if (resultSet != null) { resultSet.close(); } } catch (SQLException e){ e.printStackTrace(); } try { if (stmt != null) { stmt.close(); } } catch (SQLException e){ e.printStackTrace(); } try { if (conn != null) { conn.close(); } } catch (SQLException e){ e.printStackTrace(); } } } }
おまけ(ltrace でライブラリコールのトレースを取得する)
[root@localhost ~]# ltrace -tf -p 13079 -o ltrace.log
[root@localhost ~]# grep -C 2 -i setsockopt ltrace.log 13090 21:04:07 __ctype_b_loc() = 0x147ed0 13090 21:04:07 free(0x11b6d080) = <void> 13090 21:04:07 setsockopt(14, 6, 1, 0xbfaec328, 4) = 0 13090 21:04:07 malloc(4096) = 0x11b6d080 13090 21:04:07 vsnprintf("set TCP_NODELAY on 14\n", 4096, "set TCP_NODELAY on %d\n", 0xbfaec264) = 22 -- 13090 21:04:08 write(8, "m}nttctl*0TgSY"1;\n", 18) = 18 13090 21:04:08 free(0x11b750d0) = <void> 13090 21:04:08 setsockopt(14, 1, 9, 0xbfaebcbc, 4) = 0 13090 21:04:08 malloc(4096) = 0x11b750d0 13090 21:04:08 vsnprintf("normal exit\n", 4096, "normal exit\n", 0xbfaebf80) = 12 -- 13090 21:04:13 write(8, "W}0TgmT"1;\n", 11) = 11 13090 21:04:13 free(0x11b76110) = <void> 13090 21:04:13 setsockopt(14, 1, 21, 0xbfaf522c, 8) = 0 13090 21:04:13 malloc(4096) = 0x11b76110 13090 21:04:13 vsnprintf("entry\n", 4096, "entry\n", 0xbfaf52a0) = 6 -- 13090 21:04:13 write(8, "}0TgdP"1;\n", 10) = 10 13090 21:04:13 free(0x11b76110) = <void> 13090 21:04:13 setsockopt(14, 1, 20, 0xbfaf522c, 8) = 0 13090 21:04:13 malloc(4096) = 0x11b76110 13090 21:04:13 vsnprintf("entry\n", 4096, "entry\n", 0xbfaf5224) = 6 -- 13090 21:04:13 write(8, "!nttdisc*0ThdS"1;\n", 18) = 18 13090 21:04:13 free(0x11b76110) = <void> 13090 21:04:13 setsockopt(14, 1, 9, 0xbfaf520c, 4) = 0 13090 21:04:13 close(14) = 0 13090 21:04:13 malloc(4096) = 0x11b76110 -- 13097 21:04:19 __ctype_b_loc() = 0x633690 13097 21:04:19 free(0x1241a080) = <void> 13097 21:04:19 setsockopt(14, 6, 1, 0xbf990628, 4) = 0 13097 21:04:19 malloc(4096) = 0x1241a080 13097 21:04:19 vsnprintf("set TCP_NODELAY on 14\n", 4096, "set TCP_NODELAY on %d\n", 0xbf990564) = 22 -- 13097 21:04:20 write(8, "m}nttctl*0TgEW"1;\n", 18) = 18 13097 21:04:20 free(0x124220d0) = <void> 13097 21:04:20 setsockopt(14, 1, 9, 0xbf98ffbc, 4) = 0 13097 21:04:20 malloc(4096) = 0x124220d0 13097 21:04:20 vsnprintf("normal exit\n", 4096, "normal exit\n", 0xbf990280) = 12 -- 13097 21:04:25 write(8, "W}0Tg4U"8;\n", 11) = 11 13097 21:04:25 free(0x12423110) = <void> 13097 21:04:25 setsockopt(14, 1, 21, 0xbf99952c, 8) = 0 13097 21:04:25 malloc(4096) = 0x12423110 13097 21:04:25 vsnprintf("entry\n", 4096, "entry\n", 0xbf9995a0) = 6 -- 13097 21:04:25 write(8, "}0TgUT"8;\n", 10) = 10 13097 21:04:25 free(0x12423110) = <void> 13097 21:04:25 setsockopt(14, 1, 20, 0xbf99952c, 8) = 0 13097 21:04:25 malloc(4096) = 0x12423110 13097 21:04:25 vsnprintf("entry\n", 4096, "entry\n", 0xbf999524) = 6 -- 13097 21:04:25 write(8, "!nttdisc*0ThAR"1;\n", 18) = 18 13097 21:04:25 free(0x12423110) = <void> 13097 21:04:25 setsockopt(14, 1, 9, 0xbf99950c, 4) = 0 13097 21:04:25 close(14) = 0 13097 21:04:25 malloc(4096) = 0
参考
2013-04-20
Oracle Netトレース・ファイルを出力する
- Oracle Database の sqlnet.ora にトレース・レベルを設定する
$ cat /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/sqlnet.ora TRACE_LEVEL_SERVER=16
$ ps auxw|grep [o]racleorcl oracle 3204 0.1 6.6 621024 60600 ? Ss 07:56 0:01 oracleorcl (LOCAL=NO)
- トレース・ファイルのパスを確認する。
$ ls -l /proc/3204/fd total 0 lr-x------ 1 oracle oracle 64 Apr 20 08:08 0 -> /dev/null l-wx------ 1 oracle oracle 64 Apr 20 08:08 1 -> /dev/null lr-x------ 1 oracle oracle 64 Apr 20 08:08 10 -> /home/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/mesg/oraja.msb lr-x------ 1 oracle oracle 64 Apr 20 08:08 11 -> /home/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/mesg/oraus.msb lrwx------ 1 oracle oracle 64 Apr 20 08:08 14 -> socket:[8341] l-wx------ 1 oracle oracle 64 Apr 20 08:08 2 -> /dev/null lrwx------ 1 oracle oracle 64 Apr 20 08:08 256 -> /home/oracle/app/oracle/oradata/orcl/system01.dbf lrwx------ 1 oracle oracle 64 Apr 20 08:08 257 -> /home/oracle/app/oracle/oradata/orcl/sysaux01.dbf lr-x------ 1 oracle oracle 64 Apr 20 08:08 3 -> /dev/null lr-x------ 1 oracle oracle 64 Apr 20 08:08 4 -> /dev/null lr-x------ 1 oracle oracle 64 Apr 20 08:08 5 -> /home/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/mesg/oraus.msb lr-x------ 1 oracle oracle 64 Apr 20 08:08 6 -> /proc/3204/fd l-wx------ 1 oracle oracle 64 Apr 20 08:08 7 -> /home/oracle/app/oracle/diag/rdbms/orcl2/orcl/trace/orcl_ora_3204.trc l-wx------ 1 oracle oracle 64 Apr 20 08:08 8 -> /home/oracle/app/oracle/diag/rdbms/orcl2/orcl/trace/orcl_ora_3204.trm lr-x------ 1 oracle oracle 64 Apr 20 08:08 9 -> /dev/zero
- トレース・ファイルの内容を確認する。
$ grep sdu /home/oracle/app/oracle/diag/rdbms/orcl2/orcl/trace/orcl_ora_3204.trc 2013-04-20 07:56:54.369683 : nsopen:lcl[0]=0xf4ffe9ff, lcl[1]=0x0, gbl[0]=0x7ebf, gbl[1]=0x0, tdu=65535, sdu=8192 2013-04-20 07:56:54.371471 : nsopen:lcl[0]=0xf4ffe9ff, lcl[1]=0x10000000, gbl[0]=0x7eff, gbl[1]=0x41, tdu=65535, sdu=8192 2013-04-20 07:56:54.373293 : nsconneg:vsn=308, lov=300, opt=0xc01, sdu=2048, tdu=32767, ntc=0x4f98 2013-04-20 07:56:54.373503 : nsconneg:vsn=308, gbl=0xc01, sdu=2048, tdu=32767
おまけ
jdbc:oracle:thin:@(DESCRIPTION=(SDU=7300)(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.101)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL2)))
- 接続してトレース・ファイルの内容を確認してみる。
$ grep sdu /home/oracle/app/oracle/diag/rdbms/orcl2/orcl/trace/orcl_ora_3736.trc 2013-04-20 08:54:48.067327 : nsopen:lcl[0]=0xf4ffe9ff, lcl[1]=0x0, gbl[0]=0x7ebf, gbl[1]=0x0, tdu=65535, sdu=8192 2013-04-20 08:54:48.069332 : nsopen:lcl[0]=0xf4ffe9ff, lcl[1]=0x10000000, gbl[0]=0x7eff, gbl[1]=0x41, tdu=65535, sdu=8192 2013-04-20 08:54:48.070440 : nsconneg:vsn=308, lov=300, opt=0xc01, sdu=7300, tdu=32767, ntc=0x4f98 2013-04-20 08:54:48.070810 : nsconneg:vsn=308, gbl=0xc01, sdu=7300, tdu=32767
