oracle中的文件ORA_DUMMY_FILE.f是什么?

Tom*_*als 6 oracle parallel-processing file-descriptor oracle12c

oracle版本:12.2.0.1

如您所知,这些是oracle中并行服务器的unix进程:

ora_p000_ora12c
ora_p001_ora12c
....
ora_p???_ora12c
Run Code Online (Sandbox Code Playgroud)

它们也可以在视图中看到:gv $ px_process.可以从那里获得每个并行服务器的spid.

然后我在这里寻找与te并行服务器相关的打开文件:

ls -l /proc/<spid>/fd
Run Code Online (Sandbox Code Playgroud)

我正在为几个与此相同的并行服务器获取大约500-10000个文件描述符:

991 -> /u01/app/oracle/admin/ora12c/dpdump/676185682F2D4EA0E0530100007FFF5E/ORA_DUMMY_FILE.f (deleted)
Run Code Online (Sandbox Code Playgroud)

我已经删除了它们:(实际上我已经创建了一个小脚本,因为它有数千个)

gdb -p <spid>
    gdb> p close(<fd_id>)
Run Code Online (Sandbox Code Playgroud)

但几个小时后,文件描述符又开始被创建(每天数百个)

如果它们没有被删除,那么最终达到linux限制并且任何并行查询都会抛出这样的错误:

ORA-12801: error signaled in parallel query server P001
ORA-01116: error in opening database file 132
ORA-01110: data file 132: '/u02/oradata/ora12c/pdbname/tablespacenaname_ts_1.dbf'
ORA-27077: too many files open
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何以及为什么要创建这个文件描述符,以及如何避免它?

编辑:添加了一些可能有用的信息.我已经测试过,当创建一个新的PDB时,会在其中创建一个目录DATA_PUMP_DIR(select*from all_directories),该目录指向:

/u01/app/oracle/admin/ora12c/dpdump/<xxxxxxxxxxxxx>
Run Code Online (Sandbox Code Playgroud)

linux目录也是创建的.还会创建一个文件描述符,指向新dpdump子目录中的ORA_DUMMY_FILE.f,就像最初描述的那样

lsof | grep "ORA_DUMMY_FILE.f (deleted)"

/u01/app/oracle/admin/ora12c/dpdump/<xxxxxxxxxxxxx>/ORA_DUMMY_FILE.f (deleted)
Run Code Online (Sandbox Code Playgroud)

这可能没问题,我面临的问题是指向ORA_DUMMY_FILE的文件描述符的持续增长达到linux限制.