• Linux之lsof


    lsof:一个功能强大的命令
    lsof命令的原始功能是列出打开的文件的进程,但LINUX下,所有的设备都是以文件的行式存在的,所以,lsof的功能很强大!
    lsof输出各列信息的意义如下:
    COMMAND:进程的名称
    PID:进程标识符
    USER:进程所有者
    FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
    TYPE:文件类型,如DIR、REG等
    DEVICE:指定磁盘的名称
    SIZE:文件的大小
    NODE:索引节点(文件在磁盘上的标识)
    NAME:打开文件的确切名称
    
    
    系统检测进程 (SMON)
    
    SMON负责系统的清楚任务。这些任务包括:
    *在实例启动时执行实例恢复。
    *由于文件或者表空间离线的错误,有些事务在实例恢复中被忽略了,当文件和表空间在线
     的时候,SMON恢复中断的事务
    *清楚无用的临时表空间段。
    *合并字典表空间中连续的空闲的区(extent)
    
    
    [root@june ~]# lsof | grep redo
    oracle     2294    oracle   19u      REG        8,3   52429312   10289162 /oradata/june/redo01.log
    oracle     2294    oracle   20u      REG        8,3   52429312   10289167 /oradata/june/redo02.log
    oracle     2294    oracle   21u      REG        8,3   52429312   10289164 /oradata/june/redo03.log
    oracle     2294    oracle   22u      REG        8,3   52429312   10289172 /oradata/june/redo04.dbf
    [root@june ~]# ps -ef | grep 2294
    oracle    2294     1  0 Oct05 ?        00:00:07 ora_lgwr_june
    root     31000 30928  0 00:44 pts/1    00:00:00 grep 2294
    
    
    
    操作控制文件的进程有dbwn lgwr ckpt 还有server process
    
    [root@june ~]# lsof | grep control
    oracle     2292    oracle   16u      REG        8,3    7356416   10289159 /oradata/june/control01.ctl
    oracle     2292    oracle   17u      REG        8,3    7356416   10289160 /oradata/june/control02.ctl
    oracle     2292    oracle   18u      REG        8,3    7356416   10289161 /oradata/june/control03.ctl
    oracle     2294    oracle   16u      REG        8,3    7356416   10289159 /oradata/june/control01.ctl
    oracle     2294    oracle   17u      REG        8,3    7356416   10289160 /oradata/june/control02.ctl
    oracle     2294    oracle   18u      REG        8,3    7356416   10289161 /oradata/june/control03.ctl
    oracle     2296    oracle   16uW     REG        8,3    7356416   10289159 /oradata/june/control01.ctl
    oracle     2296    oracle   17uW     REG        8,3    7356416   10289160 /oradata/june/control02.ctl
    oracle     2296    oracle   18uW     REG        8,3    7356416   10289161 /oradata/june/control03.ctl
    oracle    31011    oracle   13u      REG        8,3    7356416   10289159 /oradata/june/control01.ctl
    oracle    31011    oracle   14u      REG        8,3    7356416   10289160 /oradata/june/control02.ctl
    oracle    31011    oracle   15u      REG        8,3    7356416   10289161 /oradata/june/control03.ctl
    [root@june ~]# ps -ef | grep 2292
    oracle    2292     1  0 Oct05 ?        00:00:06 ora_dbw0_june
    root     31005 30928  0 00:44 pts/1    00:00:00 grep 2292
    [root@june ~]# ps -ef | grep 2294
    oracle    2294     1  0 Oct05 ?        00:00:07 ora_lgwr_june
    root     31007 30928  0 00:44 pts/1    00:00:00 grep 2294
    [root@june ~]# ps -ef | grep 2296
    oracle    2296     1  0 Oct05 ?        00:01:24 ora_ckpt_june
    root     31009 30928  0 00:44 pts/1    00:00:00 grep 2296
    
    [root@june ~]# ps -ef | grep 31011
    oracle   31011 31010  7 00:45 ?        00:00:04 oraclejune (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    
    当增加、重命名、删除一个数据文件或者一个联机日志文件时,Oracle服务器进程(Server Process)会立即更新控制文件以反映数据库结构的这种变化。所以,Oracle总是告诫我们,在数据库的结构发生变化后,要备份控制文件。日志写进程LGWR负责把当前日志序列号记录到控制文件中。校验点进程CKPT负责把校验点的信息记录到控制文件中。归档进程负责把归档日志的信息记录到控制文件中。
    
    
    操作日志文件的进程是lgwr
    [root@june ~]# lsof | grep redo
    oracle     2294    oracle   19u      REG        8,3   52429312   10289162 /oradata/june/redo01.log
    oracle     2294    oracle   20u      REG        8,3   52429312   10289167 /oradata/june/redo02.log
    oracle     2294    oracle   21u      REG        8,3   52429312   10289164 /oradata/june/redo03.log
    oracle     2294    oracle   22u      REG        8,3   52429312   10289172 /oradata/june/redo04.dbf
    [root@june ~]# ps -ef | grep 2294
    oracle    2294     1  0 Oct05 ?        00:00:07 ora_lgwr_june
    root     31072 30928  0 00:50 pts/1    00:00:00 grep 2294
    
    操作数据文件的进程
    
    [root@june ~]# ps -ef | grep 2292
    oracle    2292     1  0 Oct05 ?        00:00:07 ora_dbw0_june
    root     31083 30928  0 00:55 pts/1    00:00:00 grep 2292
    [root@june ~]# ps -ef | grep 2294
    oracle    2294     1  0 Oct05 ?        00:00:07 ora_lgwr_june
    root     31085 30928  0 00:55 pts/1    00:00:00 grep 2294
    [root@june ~]# ps -ef | grep 2298
    oracle    2298     1  0 Oct05 ?        00:00:17 ora_smon_june
    root     31087 30928  0 00:55 pts/1    00:00:00 grep 2298
    [root@june ~]# ps -ef | grep 31011
    oracle   31011 31010  0 00:45 ?        00:00:04 oraclejune (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    root     31089 30928  0 00:55 pts/1    00:00:00 grep 31011
    
    
    操作unod文件的进程:
    [root@june ~]# lsof /oradata/june/undotbs02.dbf 
    COMMAND   PID   USER   FD   TYPE DEVICE    SIZE     NODE NAME
    oracle   2292 oracle   25uW  REG    8,3 1056768 10289168 /oradata/june/undotbs02.dbf
    oracle   2294 oracle   29u   REG    8,3 1056768 10289168 /oradata/june/undotbs02.dbf
    oracle   2298 oracle   22u   REG    8,3 1056768 10289168 /oradata/june/undotbs02.dbf
    oracle   2304 oracle   21u   REG    8,3 1056768 10289168 /oradata/june/undotbs02.dbf
    oracle  31011 oracle   18u   REG    8,3 1056768 10289168 /oradata/june/undotbs02.dbf
    [root@june ~]# ps -ef | grep 31011
    
    
    操作temp文件的进程:
    [root@june ~]# lsof /oradata/june/temp01.dbf 
    COMMAND  PID   USER   FD   TYPE DEVICE     SIZE     NODE NAME
    oracle  2292 oracle   30uW  REG    8,3 31465472 10289165 /oradata/june/temp01.dbf
    oracle  2294 oracle   34u   REG    8,3 31465472 10289165 /oradata/june/temp01.dbf
    oracle  2298 oracle   27u   REG    8,3 31465472 10289165 /oradata/june/temp01.dbf
    
    
    select * from v$sga_dynamic_components
    
    
    
    第二个脚本是pga_by_session.sql,用来监控session所使用的PGA和UGA的大小:
    select a.name, b.value
    from v$statname a, v$sesstat b
    where a.statistic# = b.statistic#
    and b.sid = &sid
    and a.name like '%ga %'
    order by a.name
    /
    第三个脚本监控进程所使用的PGA的大小,pga_by_process.sql :
    SELECT
    a.pga_used_mem "PGA Used",
    a.pga_alloc_mem "PGA Alloc",
    a.pga_max_mem "PGA Max"
    FROM v$process a,v$session b
    where a.addr = b.paddr
    and b.sid= &sid
    
    
    
    
    会话是在连接建立的基础之上
    
    
    
    
    
    
    
    [root@june ~]# ipcs -m | grep oracle
    0x276f145c 98305      oracle    640        209715200  17                      
    [root@june ~]# ipcrm -m 98305
    [root@june ~]# ipcs -m | grep oracle
    0x00000000 98305      oracle    640        209715200  17         dest         
    
    [root@june ~]# ipcs -m | grep oracle
    0x00000000 98305      oracle    640        209715200  17         dest         
    [root@june ~]# ipcs -m | grep oracle
    0x00000000 98305      oracle    640        209715200  17         dest 
    

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352180.html
Copyright © 2020-2023  润新知