Hatena::ブログ(Diary)

ablog このページをアンテナに追加 RSSフィード Twitter

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-28

PGA_AGGREGATE_TARGET

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
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 でシステムコールをトレースする

[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))"

テスト手順

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
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();
			}
		}
	}
}
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

参考