It has to do with the way systemd handles environment variables. Apparently systemd isn't aware of exports of variables. It uses a special section in a special file.
* You need to create a directory inside /etc/systemd/system/
and name it the same as your service with suffix .d -> postgresql-9.5.service.d
* Put inside a file (name is not important) with extension .conf -> orafwd.conf
* In that file specify a section [Service] with your Oracle environment variables.
Something like this... [Service] Environment=ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe Environment=TNS_ADMIN=/u01/app/oracle/product/11.2.0/xe/network/admin
* Article says you can use systemctl edit yourservice but I didn't tried that. Just created the directory and file by myself.
* Names and paths may vary according to your distribution and likes.
Resuming You have this file... /etc/systemd/system/postgresql-9.5.service.d/orafdw.conf
With content... [Service] Environment=ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe Environment=TNS_ADMIN=/u01/app/oracle/product/11.2.0/xe/network/admin
Check. When you run systemctl status postgres you see the config file included
[root@localhost ~]# systemctl status postgresql-9.5.service ● postgresql-9.5.service - PostgreSQL 9.5 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-9.5.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/postgresql-9.5.service.d └─orafdw.conf Active: active (running) since Wed 2017-05-17 12:11:49 PYT; 4 days ago
Sumeet Shukla wrote: > Yes, postmaster does not seem to be aware of LD_LIBRARY_PATH. I tried ldconfig and > postgres service restart but it does not seem to work. How can I fix this.
You first have to add a line to /etc/ld.so.conf that reads /usr/lib/oracle/12.1/client64/lib
Then run "ldconfig". > Also the owner of /usr/lib/oracle/12.1/client64/lib/libclntsh.so.12.1 is root. Please > confirm if it is OK.
Yes, as long as the PostgreSQL user has permission to read the file.