We usually put most parameters in a PARFILE for routine data pump operations, but you might see LRM-00109: could not open parameter file. in the following case:
[oracle@test ~]$ impdp system/password@orclpdb directory=DUMP_DIR parfile=table_list.par dumpfile=export_tables.dmp logfile=import_tables.log
LRM-00109: could not open parameter file 'table_list.par'
LRM-00113: error when processing file 'table_list.par'
Even though you explicitly put the directory object right before the parameter file of data pump, it's still not working.
[oracle@test ~]$ impdp system/password@orclpdb directory=DUMP_DIR parfile=DUMP_DIR:table_list.par logfile=import_tables.log
Not like DUMPFILE, LOGFILE and SQLFILE, which all depend on the directory object to locate their files. PARFILE does not work with the directory object, it should be expressed as a filename with its absolute path.
In the above case, impdp tried to open the parameter file of data pump in the present working directory ($PWD), but it cannot find any matched file.
So the solution is to use the absolution file path.
[oracle@test ~]$ impdp system/password@orclpdb directory=DUMP_DIR parfile=/dumps/table_list.par logfile=import_tables.log
That is how PARFILE works.
As I said, we usually use system to do data migration, however, we can also use expdp as sysdba to move data without providing any password.