ITPub博客

首页 > 数据库 > Oracle > [20260422]使用linux pgrep命令遇到的问题.txt

[20260422]使用linux pgrep命令遇到的问题.txt

原创 Oracle 作者:lfree 时间:2026-04-28 20:16:40 0 删除 编辑

[20260422]使用linux pgrep命令遇到的问题.txt

--//一般通过执行pgrep可以查询特定进程名的进程号,类似grep查询方式.上午在使用时遇到一个问题.
--//分析一下,为什么出现这样的现象.

1.测试前准备:

$ cat /u01/app/oracle/dbs/initbook.ora
SPFILE='/u01/app/oracle/dbs/spfilebook.ora'
use_large_pages=AUTO_ONLY

# sysctl -w vm.nr_hugepages=520
vm.nr_hugepages = 520
--//注我的测试环境需要530,才满足启动需求,但是设置use_large_pages=AUTO_ONLY,可以通过oradism修改内核参数满足启动需求。

2.问题提出:
# sysctl -w vm.nr_hugepages=520
vm.nr_hugepages = 520

SYS@book> startup nomount pfile=/u01/app/oracle/dbs/initbook.ora
ORACLE instance started.
Total System Global Area 1107294056 bytes
Fixed Size                  9684840 bytes
Variable Size             654311424 bytes
Database Buffers          436207616 bytes
Redo Buffers                7090176 bytes
--//已经启动到nomount阶段.

$ ps -ef | egrep "dis[m]|pmo[n]"
root      5716     1  0 16:55 ?        00:00:00 ora_dism_book
oracle    5719     1  0 16:55 ?        00:00:00 ora_pmon_book
--//可以发现ora_dism_book,ora_pmon_book两个后台进程都存在。

$ ps -p 5716 -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S     0  5716     1  0  80   0 -  4690 pipe_w ?        00:00:00 oradism

$ ps -fp 5716
UID        PID  PPID  C STIME TTY          TIME CMD
root      5716     1  0 16:55 ?        00:00:00 ora_dism_book
--//两者不同显示风格显示名字不同。

$ ps -p 5719 -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S 54321  5719     1  0  80   0 - 399803 SYSC_s ?       00:00:00 ora_pmon_book

$ ps -fp 5719
UID        PID  PPID  C STIME TTY          TIME CMD
oracle    5719     1  0 16:55 ?        00:00:00 ora_pmon_book
--//而查询进程5719,显示的cmd相同,为什么?

3.问题分析:
--//使用pgrep遇到的问题。
$ pgrep -l pmon
5719 ora_pmon_book

$ pgrep -l ora_dism
--//没有输出。

$ pgrep -l dism
5716 oradism

--//有点奇怪的是为什么pgrep -l dism显示的是oradism,而不显示ora_dism_book。
--//我开始执行的是pgrep -l ora_dism,没有显示,导致差点误判,以为没有dism相关后台进程。

3.采用strace跟踪看看。

--//修改/etc/sudoers建立加入如下:
# grep oracle /etc/sudoers
oracle  ALL=(ALL)       ALL

$ sudo strace -ff -o aaa sqlplus -s -l / as sysdba <<<"startup nomount pfile=/u01/app/oracle/dbs/initbook.ora"
strace: Can't stat 'sqlplus': No such file or directory

--//做了许多尝试,查询一些资料,采用如下方式执行,sqlplus使用全路径,并且使用sys用户以及口令。sudo加入-E参数。
--//$ rm -f aaa.*
$  sudo sysctl -w vm.nr_hugepages=520
vm.nr_hugepages = 520
--//以上这步不要忘记,不然不会启动dism在后台进程.

$ sudo -E strace -ff -o aaa /u01/app/oracle/product/21.0.0/dbhome_1/bin/sqlplus -s -l sys/bookbook as sysdba <<<"startup nomount pfile=/u01/app/oracle/dbs/initbook.ora"
ORACLE instance started.
Total System Global Area 1107294056 bytes
Fixed Size                  9684840 bytes
Variable Size             654311424 bytes
Database Buffers          436207616 bytes
Redo Buffers                7090176 bytes

$ grep dism aaa.* | grep exec |wc
     19     152    2109
$ grep dism aaa.* | grep exec
aaa.6674:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6690:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6694:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6698:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6702:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6704:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6708:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6712:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6726:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6728:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6738:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6752:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6758:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6761:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6762:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6764:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6769:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6782:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
aaa.6784:execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 74 vars */]) = 0
--//有点吃惊的是1次启动,竟然执行oradism 19次,18次是其他进程执行的。

$ pgrep dism
6674

--//查看strace的跟踪信息,进程6674:
...
close(3</u01/app/oracle/product/21.0.0/dbhome_1/env.ora>) = 0
munmap(0x7f954f64c000, 4096)            = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
fcntl(3<socket:[58423]>, F_GETFL)       = 0x2 (flags O_RDWR)
fcntl(3<socket:[58423]>, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("169.254.169.254")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=3<socket:[58423]>, events=POLLOUT}], 1, 1000) = 0 (Timeout)
close(3<socket:[58423]>)                = 0
write(1<pipe:[58411]>, "\5\241\300[\2\0\0\0\0\17\0\0s\0\0\0\0\0\20\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 8088) = 8088
rt_sigprocmask(SIG_SETMASK, NULL, [ALRM], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(0<pipe:[58410]>, "\265\f\32P\2\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 10288) = 10288
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [ALRM], NULL, 8) = 0
write(1<pipe:[58411]>, "\5\241\300[\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8088) = 8088
rt_sigprocmask(SIG_SETMASK, NULL, [ALRM], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(0<pipe:[58410]>, "\265\f\32P\2\0\0\0\0\0\20\0\0\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 10288) = 10288
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [ALRM], NULL, 8) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
fcntl(3<socket:[58425]>, F_GETFL)       = 0x2 (flags O_RDWR)
fcntl(3<socket:[58425]>, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("169.254.169.254")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=3<socket:[58425]>, events=POLLOUT}], 1, 1000) = 0 (Timeout)
close(3<socket:[58425]>)                = 0
write(1<pipe:[58411]>, "\5\241\300[\2\0\0\0\0\17\0\0s\0\0\0\0\0\20\0\4\0\0\0\0\0\0\0\0\0\0\0"..., 8088) = 8088
rt_sigprocmask(SIG_SETMASK, NULL, [ALRM], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(0<pipe:[58410]>, "\265\f\32P\2\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 10288) = 10288
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [ALRM], NULL, 8) = 0
write(1<pipe:[58411]>, "\5\241\300[\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 8088) = 8088
rt_sigprocmask(SIG_SETMASK, NULL, [ALRM], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(0<pipe:[58410]>, "\265\f\32P\2\0\0\0\0\0\20\0\0\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 10288) = 10288
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [ALRM], NULL, 8) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
fcntl(3<socket:[58426]>, F_GETFL)       = 0x2 (flags O_RDWR)
fcntl(3<socket:[58426]>, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("169.254.169.254")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=3<socket:[58426]>, events=POLLOUT}], 1, 1000) = 1 ([{fd=3, revents=POLLOUT|POLLERR|POLLHUP}])
getsockopt(3, SOL_SOCKET, SO_ERROR, [113], [4]) = 0
close(3<socket:[58426]>)                = 0
write(1<pipe:[58411]>, "\5\241\300[\2\0\0\0\0\17\0\0s\0\0\0\0\0\20\0\2\0\0\0\0\0\0\0\0\0\0\0"..., 8088) = 8088
rt_sigprocmask(SIG_SETMASK, NULL, [ALRM], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(0<pipe:[58410]>,

--//真心不知道最后为什么连接 169.254.169.254 的 80端口,尝试连接3次。
--//到底做什么。

$ man pgrep

...
-l, --list-name
    List the process name as well as the process ID.  (pgrep only.)

-a, --list-full
    List the full command line as well as the process ID.  (pgrep only.)

--//通过查询man文档,发现-a参数查询显示full command line。-l参数查询显示process name。

$ pgrep -a dism
7826 ora_dism_book

$ pgrep -l dism
7826 oradism

$ pgrep -l pmon
7829 ora_pmon_book

$ pgrep -a pmon
7829 ora_pmon_book

--//还是不理解,为什么显示pmon的-a,-l显示一样,而dism的-a,-l显示不同。
--//man execve
EXECVE(2)   Linux Programmer's Manual   EXECVE(2)

NAME
    execve - execute program

SYNOPSIS
   #include <unistd.h>

   int execve(const char *filename, char *const argv[],
              char *const envp[]);

DESCRIPTION
   execve() executes the program pointed to by filename.  filename must be either a binary executable, or a script
   starting with a line of the form:

       #! interpreter [optional-arg]

   For details of the latter case, see "Interpreter scripts" below.

   argv  is  an  array  of  argument strings passed to the new program.  By convention, the first of these strings
   should contain the filename associated with the file being executed.  envp is an array of strings, conventionally
   of the form key=value, which are passed as environment to the new program.  Both argv and envp must be terminated
   by a NULL pointer.  The argument vector and environment can be accessed by the called program's main function,
   when it is defined as:

   int main(int argc, char *argv[], char *envp[])

   execve() does not return on success, and the text, data, bss, and stack of the calling process are overwritten by
   that of the program loaded.

4.分析strace跟踪,还是不知道为什么?
--//不过我发现启动会跟踪环境变量SQLPATH,ORACLE_PATH的路径,可以改动后台的进程名。
--//以mmon进程为例说明:
$ env | egrep  "SQLPATH|ORACLE_PATH"
ORACLE_PATH=/home/oracle/sqllaji:/home/oracle/sqllaji/tpt
SQLPATH=/home/oracle/sqllaji:/home/oracle/sqllaji/tpt

$ touch /home/oracle/sqllaji/ora_mmon_book

--//增加两个参数-Ttt以及-y参数。
$ sudo -E strace -ff -o aaa -Ttt -y /u01/app/oracle/product/21.0.0/dbhome_1/bin/sqlplus -s -l sys/bookbook as sysdba <<<"startup nomount pfile=/u01/app/oracle/dbs/initbook.ora"
ORACLE instance started.

Total System Global Area 1107294056 bytes
Fixed Size                  9684840 bytes
Variable Size             654311424 bytes
Database Buffers          436207616 bytes
Redo Buffers                7090176 bytes

--//切换打开新的终端:
$ grep -i ora_mmon aaa.*
aaa.7647:17:11:07.339718 read(16</proc/7740/stat>, "7740 (ora_mmon_book) S 1 7740 77"..., 999) = 347 <0.000035>
aaa.7664:17:11:07.148017 access("/home/oracle/sqllaji/ora_mmon_book", F_OK) = 0 <0.000112>
aaa.7740:17:11:07.151476 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oracle", ["/home/oracle/sqllaji/ora_mmon_bo"...], [/* 75 vars */]) = 0 <0.000555>
aaa.7740:17:11:07.293525 access("/home/oracle/sqllaji/ora_MMON_book", F_OK) = -1 ENOENT (No such file or directory) <0.000067>
aaa.7740:17:11:07.293650 access("/home/oracle/sqllaji/tpt/ora_MMON_book", F_OK) = -1 ENOENT (No such file or directory) <0.000089>

$ pgrep -a mmon
7740 /home/oracle/sqllaji/ora_mmon_book

$ pgrep -l mmon
7740 ora_mmon_book
--//-a 显示/home/oracle/sqllaji/ora_mmon_book ,-l 显示ora_mmon_book.
--//视乎与进程号7647执行的有关,注意执行的时间序列.
aaa.7647:17:11:07.339718 read(16</proc/7740/stat>, "7740 (ora_mmon_book) S 1 7740 77"..., 999) = 347 <0.000035>
--//不过仅仅是读。

# cat /proc/7740/stat | tr " " "\n" | head -8
7740
(ora_mmon_book)
S
1
7740
7740
0
-1

# cat /proc/7740/cmdline
/home/oracle/sqllaji/ora_mmon_book
--//进程号7740对应ora_mmon_book。cmdline显示的是/home/oracle/sqllaji/ora_mmon_book。/proc/7740/stat显示的(ora_mmon_book)。

$ ps -ef | grep mmo[n]
oracle    7740     1  0 17:11 ?        00:00:00 /home/oracle/sqllaji/ora_mmon_book
--//ps -ef显示的是/home/oracle/sqllaji/ora_mmon_book.

--//后记:
--//当在11g下,测试时发现猜测oradism没有实现类似的功能。而且11g下也可以看出类似的情况,至于如何实现不知道。
--//在11g下,查看后台进程只能执行pgrep -a oracle。
--//可以参考:[20260424]验证11g下是否可以修改后台进程名的显示.txt

--//按照理论如果启动数据库,取消ORACLE_PATH,SQLPATH环境变量,可以"加快"一点点数据库的启动.

5.重复前面的测试:
# sysctl -w vm.nr_hugepages=520
vm.nr_hugepages = 520

$ sudo -E strace -ff -o bbb -Ttt -y /u01/app/oracle/product/21.0.0/dbhome_1/bin/sqlplus -s -l sys/bookbook as sysdba <<<"startup nomount pfile=/u01/app/oracle/dbs/initbook.ora"
[sudo] password for oracle:
ORACLE instance started.

Total System Global Area 1107294056 bytes
Fixed Size                  9684840 bytes
Variable Size             654311424 bytes
Database Buffers          436207616 bytes
Redo Buffers                7090176 bytes

$ grep -i dism bbb.*
bbb.8219:17:22:29.661574 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8219:17:22:29.661601 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8221:17:22:29.664314 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000842>
bbb.8224:17:22:34.052051 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000009>
bbb.8224:17:22:34.052087 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8226:17:22:34.054305 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000780>
bbb.8228:17:22:34.108551 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8228:17:22:34.108579 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000011>
bbb.8230:17:22:34.111060 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000758>
bbb.8232:17:22:34.167090 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000012>
bbb.8232:17:22:34.167146 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8234:17:22:34.169663 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000788>
bbb.8236:17:22:34.226827 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8236:17:22:34.226855 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8236:17:22:34.241910 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000012>
bbb.8236:17:22:34.241941 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000011>
bbb.8238:17:22:34.229515 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000690>
bbb.8240:17:22:34.244703 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000739>
bbb.8242:17:22:34.301468 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8242:17:22:34.301495 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8244:17:22:34.303321 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000460>
bbb.8246:17:22:34.355027 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000011>
bbb.8246:17:22:34.355069 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000008>
bbb.8248:17:22:34.357800 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000591>
bbb.8254:17:22:34.540546 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000044>
bbb.8254:17:22:34.540667 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000055>
bbb.8256:17:22:34.679463 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000041>
bbb.8256:17:22:34.679563 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000082>
bbb.8260:17:22:34.543796 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000405>
bbb.8265:17:22:34.710237 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000054>
bbb.8265:17:22:34.710346 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000064>
bbb.8271:17:22:34.682448 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000438>
bbb.8274:17:22:34.714436 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.001006>
bbb.8275:17:22:34.833989 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000039>
bbb.8275:17:22:34.834070 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000034>
bbb.8280:17:22:34.911678 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000029>
bbb.8280:17:22:34.911788 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000074>
bbb.8282:17:22:34.975652 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000126>
bbb.8282:17:22:34.975934 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000136>
bbb.8282:17:22:35.011404 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000048>
bbb.8282:17:22:35.011516 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000044>
bbb.8284:17:22:34.973347 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000075>
bbb.8284:17:22:34.973472 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000089>
bbb.8286:17:22:34.836380 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000346>
bbb.8288:17:22:35.043721 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000093>
bbb.8288:17:22:35.043913 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000141>
bbb.8292:17:22:34.914703 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000557>
bbb.8296:17:22:35.107128 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000158>
bbb.8296:17:22:35.107415 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000065>
bbb.8300:17:22:35.142048 access("/home/oracle/sqllaji/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000061>
bbb.8300:17:22:35.142151 access("/home/oracle/sqllaji/tpt/ora_dism_book", F_OK) = -1 ENOENT (No such file or directory) <0.000043>
bbb.8302:17:22:34.977149 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000548>
bbb.8304:17:22:34.979324 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000440>
bbb.8307:17:22:35.015448 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000431>
bbb.8312:17:22:35.047333 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000659>
bbb.8315:17:22:35.110596 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000433>
bbb.8317:17:22:35.146059 execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000415>

$ grep -i ora_dism bbb.* | grep stat
--//就没有前面类似stat的信息。

$ pgrep -a dism
8221 ora_dism_book

$ pgrep -l dism
8221 oradism

# cat /proc/8221/stat | tr " " "\n" | head -8
8221
(oradism)
S
1
8219
8219
0
-1

# cat /proc/8221/cmdline
ora_dism_book

--//换一句话将为什么调用执行:
execve("/u01/app/oracle/product/21.0.0/dbhome_1/bin/oradism", ["ora_dism_book"], [/* 75 vars */]) = 0 <0.000405>

--//pgrep -a dism 与 pgrep -l dism显示的信息为什么不同.
--//后记:应该是执行程序代码oradism没有实现类似的功能。而且11g下也可以看出类似的情况,至于如何实现不知道,

--//按照理论如果启动数据库,取消ORACLE_PATH,SQLPATH环境变量,可以加快一点点数据库的启动.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3116910/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969349