[20260506]建立完善ipcs.sql脚本.txt

[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



posted @ 2026-05-06 21:18  lfree  阅读(4)  评论(0)    收藏  举报