pl/postgresql_将PostgreSQL PL / Java安装为PostgreSQL扩展
pl/postgresql
在2011年,我在PostgreSQL PL / Java上撰寫了一系列文章。 基本信息仍然可靠,但是現(xiàn)在有了一種從源代碼安裝PL / Java的簡便得多的方法。 這也消除了依賴第三方來創(chuàng)建軟件包的需要。 由于我的讀者已經(jīng)熟悉git和maven,因此這些注釋將非常簡短。
(注意:我已將此信息傳遞給PL / Java團隊,因此在您閱讀本文時,它可能已經(jīng)被處理。)
執(zhí)行基本構建
當然不是那么簡單。 Maven可以引入自己的依賴關系,但是除了標準的GNU工具鏈之外,我們?nèi)匀恍枰獛讉€專門的庫。 在我的Ubuntu系統(tǒng)上,我需要:
- PostgreSQL服務器開發(fā)9.4
- libpg開發(fā)
- libpgtypes3
- libecpg開發(fā)
(我不知道RedHat / Fedora / CentOS的相應軟件包名稱。)
可能需要進行一些試驗,但是確定所需的所有軟件包并不難。 只要記住,您通常會需要帶有“ -dev”擴展名的軟件包。
有大量的編譯器警告和錯誤,但大多數(shù)(如果不是全部的話)似乎與符號轉(zhuǎn)換有關。 這值得進一步調(diào)查-信號轉(zhuǎn)換警告表明惡意用戶可能會發(fā)動攻擊-但就目前而言,只要maven成功,我們就可以了。 我們需要三個文件:
./src/sql/install.sql ./pljava/target/pljava-0.0.2-SNAPSHOT.jar ./pljava-so/target/nar/pljava-so-0.0.2-SNAPSHOT-i386-Linux-gpp-shared/lib/i386-Linux-gpp/shared/libpljava-so-0.0.2-SNAPSHOT.so復制文件
現(xiàn)在,我們可以將三個文件復制到它們各自的位置。
$ sudo cp ./pljava-so/target/nar/pljava-so-0.0.2-SNAPSHOT-i386-Linux-gpp-shared/lib/i386-Linux-gpp/shared/libpljava-so-0.0.2-SNAPSHOT.so \/usr/lib/postgresql/9.4/lib/pljava.so$ sudo cp ./pljava/target/pljava-0.0.2-SNAPSHOT.jar /usr/share/postgresql/9.4/extension/pljava--1.4.4.jar$ sudo cp ./src/sql/install.sql /usr/share/postgresql/9.4/extension/pljava--1.4.4.sql我們可以使用“ pg_config”命令學習正確的目標目錄。
$ pg_config PKGLIBDIR = /usr/lib/postgresql/9.4/lib SHAREDIR = /usr/share/postgresql/9.4 ...我將版本從0.0.2-SNAPSHOT更改為1.4.4,因為我們要捕獲PL / Java版本,而不是pom.xml版本。 我希望這些很快會保持同步。
編輯pljava–1.4.4.sql
我們需要在安裝sql中添加兩行:
SET PLJAVA.CLASSPATH='/usr/share/postgresql/9.4/extension/pljava--1.4.4.jar'; SET PLJAVA.VMOPTIONS='-Xms64M -Xmx128M';重要的是要記住,每個數(shù)據(jù)庫連接都有一個實例化的唯一JVM。 當您同時具有20個以上的連接時,內(nèi)存消耗可能成為主要問題。
創(chuàng)建pljava.control文件
我們必須告訴PostgreSQL新擴展。 這由控制文件處理。
/usr/share/postgresql/9.4/extension/pljava.control
# pljava extension comment = 'PL/Java bundled as an extension' default_version = '1.4.4' relocatable = false使libjvm.so可見
我們通常通過JAVA_HOME環(huán)境變量指定Java二進制文件和共享庫的位置。 這不是數(shù)據(jù)庫服務器的選項。
有兩種方法取決于您是否要使Java共享庫(libjvm.so)對所有應用程序或僅對數(shù)據(jù)庫服務器可見。 我認為前者是最簡單的。
我們需要創(chuàng)建一個文件
/etc/ld.so.conf.d/i386-linux-java.conf
/usr/lib/jvm/java-8-openjdk-i386/jre/lib/i386/server其中大多數(shù)路徑名來自JAVA_HOME。 您的系統(tǒng)上的位置可能不同。 該目錄必須包含共享庫“ libjvm.so”。
我們還必須告訴系統(tǒng)刷新其緩存。
$ sudo ldconfig $ sudo ldconfig -p | grep jvmlibjvm.so (libc6) => /usr/lib/jvm/java-8-openjdk-i386/jre/lib/i386/server/libjvm.solibjsig.so (libc6) => /usr/lib/jvm/java-8-openjdk-i386/jre/lib/i386/server/libjsig.so加載擴展
現(xiàn)在,我們可以輕松地加載和卸載PL / Java。
=> CREATE EXTENSION pljava; CREATE EXTENSION=> DROP EXTENSION pljava; DROP EXTENSION萬一出現(xiàn)薄脆...
如果系統(tǒng)看起來不穩(wěn)定,您可以將兩個“ set”命令移至postgresql.conf文件中。
/etc/postgresql/9.4/main/postgresql.conf
#------------------------------------------------------------------------------ # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------# Add settings for extensions herePLJAVA.CLASSPATH='/usr/share/postgresql/9.4/extension/pljava--1.4.4.jar' PLJAVA.VMOPTIONS='-Xms64M -Xmx128M'翻譯自: https://www.javacodegeeks.com/2015/08/installing-postgresql-pljava-as-a-postgresql-extension.html
pl/postgresql
總結
以上是生活随笔為你收集整理的pl/postgresql_将PostgreSQL PL / Java安装为PostgreSQL扩展的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用其它硬盘启动电脑(把硬盘装到其它机子
- 下一篇: java源文件编译成jar_从源文件和J