Oracle - 接続中のセッションの表示


現在接続中のOracleセッションを表示するSQLとLnux用シェルです。
USER_ID/PASSWORDには「V$SESSION」を参照できるユーザを指定してください。

oracleSessionShow.sh
# 「V$SESSION」を参照できるユーザを指定
USER_ID=scott
PASSWORD=tigger
INSTANCE_NAME=oracle


# 「EOT」の前の「\」は変数展開をしない設定
sqlplus -s ${USER_ID}/${PASSWORD}@${INSTANCE_NAME} <<\EOT
	SET LINESIZE 1000
	SET PAGESIZE 100
	COLUMN SID FORMAT 999999
	COLUMN SERIAL# FORMAT 9999999
	COLUMN USERNAME FORMAT A20
	COLUMN MACHINE FORMAT A20
	COLUMN PROGRAM FORMAT A40

	SELECT
		SID,
		SERIAL#,
		USERNAME,
		STATUS,
		MACHINE,
		PROGRAM,
		COMMAND
	FROM
		V$SESSION
	order by 3, 5, 1
	;
EOT


echo "COMMAND:凡例(一部)"
echo "2	INSERT"
echo "3	SELECT"
echo "6	UPDATE"
echo "7	DELETE"
echo "0	その他"

exit

COMMAND
番号 コマンド
2 INSERT
3 SELECT
6 UPDATE
7 DELETE
1 CREATE TABLE
9 CREATE INDEX
12 DROP TABLE
10 DROP INDEX
85 TRUNCATE TABLE
47 PL/SQL EXECUTE
50 EXPLAIN
62 ANALYZE TABLE
63 ANALYZE INDEX
0 その他(たぶん)
※よく使いそうなもののみピックアップ。これ以外の番号についてはマニュアル参照のこと。0はマニュアルに記載は無かったが、おそらく「その他」の意味だと思う。impコマンド時は、0と2の時間が長く数秒おきに交互に現れていた。「ある程度読込んでINSERT」を何度も繰り返しているのだと思う。またimpコマンド中のインデックス作成処理中は9だった。