[20260506]建立完善ipcs.sql脚本.txt
--//最近几天都在使用linux ipcs,发现从12c开始引入视图x$ksmssinfo,可以通过它查看共享内存段,相当于oracldebug ipc的转储.
--//不过这个X表的定义有点奇葩,字段名出现空格,并且SIZE还是oracle的关键字.
--//自己修改在增加"END ADDR+1"字段,按照"SEG_START ADDR"字段排序输出.
$ cat ipcs.sql
column INDX format 9999
column INST_ID format 9999999
column CON_ID format 999999
column "AREA NAME" format a16
column "SEG_START ADDR" format a16
column "START ADDR" format a16
column "END ADDR+1" format a16
column PAGESIZE format 99999999
column NUMAPG format 99999
select
ADDR
,INDX
,INST_ID
,CON_ID
,"AREA NAME"
,"SEG_START ADDR"
,"START ADDR"
,TO_CHAR ( TO_NUMBER ("START ADDR", 'XXXXXXXXXXXXXXXX') + "SEGMENT SIZE" ,'FM0XXXXXXXXXXXXXXX') "END ADDR+1"
,"SEGMENT SIZE"
,"SIZE"
,"REMAINING ALLOC SIZE"
,PAGESIZE
,SHMID
,"SEGMENT DISTRIBUTED"
,"AREA FLAGS"
,"SEGMENT DEFERRED"
,NUMAPG
from x$ksmssinfo
order by 6 ;
--//贴一个use_large_pages=true的情况。
SYS@book> show parameter use_large_page
PARAMETER_NAME TYPE VALUE
--------------- ------ ------
use_large_pages string true
SYS@book> @ ipcs
ADDR INDX INST_ID CON_ID AREA NAME SEG_START ADDR START ADDR END ADDR+1 SEGMENT SIZE SIZE REMAINING ALLOC SIZE PAGESIZE SHMID SEGMENT DISTRIBUTED AREA FLAGS SEGMENT DEFERRED NUMAPG
---------------- ----- -------- ------- ---------------- ---------------- ---------------- ---------------- ------------ ---------- -------------------- --------- ---------- -------------------- ---------- -------------------- ------
00007F2BDB0AA130 2 1 0 Fixed Size 0000000060000000 0000000060000000 0000000060A00000 10485760 9687040 0 2097152 29097984 YES 4631 NO 129
00007F2BDB0AA130 0 1 0 Variable Size 0000000061000000 0000000061000000 00000000A2000000 1090519040 1090519040 0 2097152 29130753 YES 530 NO 129
00007F2BDB0AA130 1 1 0 Redo Buffers 00000000A2000000 00000000A2000000 00000000A2800000 8388608 7090176 0 2097152 29163522 YES 4627 NO 129
00007F2BDB0AA130 3 1 0 skgm overhead 00000000A3000000 00000000A3000000 00000000A3004000 16384 16384 0 4096 29196291 YES 268435987 NO 129
--//可以发现AREA NAME=skgm overhead,使用PAGESIZE=4K。
$ ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 29097984 oracle 600 10485760 59
0x00000000 29130753 oracle 600 1090519040 59
0x00000000 29163522 oracle 600 8388608 59
0xafa94c20 29196291 oracle 600 16384 59
--//实际上比linux ipcs -m 的输出更加详细。ipcs看不到详细的段开始地址。
$ grep "rw-s" /proc/$(pgrep pmon)/maps
60000000-60a00000 rw-s 00000000 00:0c 29097984 /SYSV00000000 (deleted)
61000000-a2000000 rw-s 00000000 00:0c 29130753 /SYSV00000000 (deleted)
a2000000-a2800000 rw-s 00000000 00:0c 29163522 /SYSV00000000 (deleted)
a3000000-a3004000 rw-s 00000000 00:04 29196291 /SYSVafa94c20 (deleted)
7ff9da89c000-7ff9da89d000 rw-s 00000000 08:11 18861347 /u01/app/oracle/dbs/hc_book.dat
