К основному контенту

Установка PL/Java для PostgreSQL 9.4

Предварительные требования: 

1. Компилятор C. Как правило имеется в виду gcc и g++

gcc  --version

на CENTOS 7 мне понадобился gcc_c++ (в дополнение к установленному ранее gcc)

2. JAVA. Убедиться, что 

javac  -version

работает 

3. PostgreSQL установлен и работает

pg_config

Файлы для разработки (.h файлы) для нашего PostgreSQL также должны быть установлены. Убедиться можно посмотрев что лежит в INCLUDEDIR-SERVER (вывод pg_config). Я раньше компилировал БД из исходников на этой машине, так что у меня эти файлы были.

4. компилятор Maven

mvn --version


Установка

git clone https://github.com/tada/pljava.git
или
git clone ssh://git@github.com/tada/pljava.git

Заходим в директорию pljava и выполняем

mvn clean install

В результате должны получить:

[INFO] PostgreSQL PL/Java ................................ SUCCESS
[INFO] PL/Java API ....................................... SUCCESS
[INFO] PL/Java backend Java code ......................... SUCCESS
[INFO] PL/Java backend native code ....................... SUCCESS
[INFO] PL/Java Deploy .................................... SUCCESS
[INFO] PL/Java Ant tasks ................................. SUCCESS
[INFO] PL/Java examples .................................. SUCCESS
[INFO] PL/Java packaging ................................. SUCCESS

Теперь:

# as root
su
PATH=$PATH:/usr/pgsql-9.4/bin
java -jar pljava-packaging/target/pljava-pg9.4-amd64-Linux-gpp.jar

# as postgres
psql
SET pljava.libjvm_location TO '/usr/lib/jvm/java-1.8.0/lib/libjvm.so';

CREATE EXTENSION pljava;
GRANT USAGE ON LANGUAGE java TO dbax;

Если все работает, можно делать 

ALTER SYSTEM SET pljava.libjvm_location TO '/usr/lib/jvm/java-1.8.0/lib/libjvm.so';

или править postgresql.conf


Проверка

Для проверки можно установить тестовую схему.

SELECT sqlj.install_jar(
  'file:'
  '/var/lib/pgsql/9.4/src/pljava-master/pljava-examples/target/pljava-examples-1.6.0-SNAPSHOT.jar',
'examples', true);

Проверить или установить search_path:
SET SEARCH_PATH=javatest,public;
SHOW search_path;

search_path ------------------ javatest, public

Установить classpath
SELECT sqlj.set_classpath('javatest', 'examples');

Проверить работу функции из тестовой схемы.

SELECT javatest.java_addone(3);
 java_addone 
-------------
           4

Примечания:

1. Более подробно "что и зачем" описано тут.

2. Если нужно указать прокси-сервер для доступа в интернет:
- для git:

HTTP_PROXY=http://proxy.mycompany:80
$ git config --global http.proxy $HTTP_PROXY

(я на всякий случай указал и HTTPS)

- для maven:
правим

${user.home}/.m2/settings.xml

<settings>
   <proxies>
   <proxy>
      <id>example-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.example.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

Комментарии

Популярные сообщения из этого блога

Установка и настройка pgAgent(планировщика заданий PostgreSQL)

Установка pgAgent Последняя версия скрипта для установки агента  тут . Перенести инструкцию по агенту в отдельную тему. 1. Создать пользователя ОС, и сделать ему домашний каталог: useradd -s /bin/false -r -M pgagent mkdir /home/pgagent 2. Установить и настроить демон: yum install pgagent_94 При наличии ошибок вида (была на Oracle Linux 6.8) Error: Package: pgagent_94-3.4.0-1.rhel6.x86_64 (pgdg94)            Requires: libwx_baseu-2.8.so.0(WXU_2.8)(64bit) Нужно установить EPEL systemctl enable pgagent_94 chown pgagent:pgagent /var/log/pgagent_94.log 3. Установить схему агента в базе: sudo -u postgres psql -f /usr/share/pgagent_94-3.4.0/pgagent.sql postgres 4. Создать файл паролей для подключения агента к базе. vi /home/pgagent/.pgpass localhost:5432:*:postgres:postgres chown pgagent.pgagent /home/pgagent -R chmod 600 /home/pagent/.pgpass 5. Запустить и проверить работу агента systemctl start pgagent_94.service systemctl status pga

Включение логирования для Haproxy

Изначально логирование в syslog в HaProxy отключено. Ниже пример настройки логирования для ОС Centos 7. Настройка: Добавить строку  log 127.0.0.1 local2 в секцию global файла /etc/haproxy/haproxy.cfg Раскомментировать $ModLoad imudp и $UDPServerRun 514 в файле  /etc/rsyslog.conf Создать файл  /etc/rsyslog.d/haproxy.conf со следующим содержимым:  local2.* /var/log/haproxy.log Перезапустить rsyslog и haproxy.

Использование oraenv для установки окружения.

Для настройки окружения в Linux можно все параметры базы указать в .bash_profile: ORACLE_HOME=/app/oracle/product/11.2.0.4/dbhome_1 export ORACLE_HOME ORACLE_BASE=/app/oracle export ORACLE_BASE ORACLE_SID=orcl export ORACLE_SID PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin export PATH Но лучше использовать для этих целей утилиту oraenv. oraenv берет данные из файла /etc/oratab orcl:/app/oracle/product/12.1.0/dbhome_1:N И на ее основе задает параметры окружения: ORACLE_SID, ORACLE_BASE,ORACLE_HOME и PATH Использовать можно в интерактивном режиме: . oraenv ORACLE_SID = [orcl] ? orcl The Oracle base has been set to /app/oracle И в неинтерактивном режиме. Добавить в  .bash_profile: ORACLE_SID=orcl ORAENV_ASK=NO . oraenv Для ASM ситуация аналогичная. . oraenv ORACLE_SID = [orcl] ? +ASM1 The Oracle base has been set to /u01/app/oracle echo $ORACLE_HOME /app/11.2.0/grid