将PostgreSQL PL / Java安装为PostgreSQL扩展
在2011年,我在PostgreSQL PL / Java上寫了一系列文章。 基本信息仍然可靠,但是現(xiàn)在有了一種從源代碼安裝PL / Java的簡(jiǎn)便方法。 這也消除了依賴第三方來(lái)創(chuàng)建軟件包的需要。 這些注釋將非常簡(jiǎn)短,因?yàn)槲艺J(rèn)為我的讀者已經(jīng)對(duì)git和maven熟悉了。
(注意:我已將此信息傳遞給PL / Java團(tuán)隊(duì),因此在您閱讀本文時(shí),它可能已經(jīng)被處理。)
執(zhí)行基本構(gòu)建
當(dāng)然不是那么簡(jiǎn)單。 Maven可以引入自己的依賴關(guān)系,但是除了標(biāo)準(zhǔn)的GNU工具鏈之外,我們?nèi)匀恍枰獛讉€(gè)專門的庫(kù)。 在我的Ubuntu系統(tǒng)上,我需要:
- PostgreSQL服務(wù)器開(kāi)發(fā)9.4
- libpg開(kāi)發(fā)
- libpgtypes3
- libecpg開(kāi)發(fā)
(我不知道RedHat / Fedora / CentOS的相應(yīng)軟件包名稱。)
可能需要進(jìn)行一些試驗(yàn),但是確定所需的所有軟件包并不難。 只要記住,您通常會(huì)需要帶有“ -dev”擴(kuò)展名的軟件包。
編譯器有很多警告和錯(cuò)誤,但大多數(shù)(如果不是全部的話)似乎與符號(hào)轉(zhuǎn)換有關(guān)。 這值得進(jìn)一步調(diào)查-符號(hào)轉(zhuǎn)換警告表明惡意用戶可能會(huì)攻擊該網(wǎng)絡(luò)-但就目前而言,只要maven成功,我們就可以了。 我們需要三個(gè)文件:
./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復(fù)制文件
現(xiàn)在,我們可以將三個(gè)文件復(fù)制到它們各自的位置。
$ 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”命令學(xué)習(xí)正確的目標(biāo)目錄。
$ pg_config PKGLIBDIR = /usr/lib/postgresql/9.4/lib SHAREDIR = /usr/share/postgresql/9.4 ...我將版本從0.0.2-SNAPSHOT更改為1.4.4,因?yàn)槲覀円东@PL / Java版本,而不是pom.xml版本。 我希望這些很快會(huì)保持同步。
編輯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';重要的是要記住,每個(gè)數(shù)據(jù)庫(kù)連接都有一個(gè)實(shí)例化的唯一JVM。 當(dāng)您同時(shí)具有20個(gè)以上的連接時(shí),內(nèi)存消耗可能成為主要問(wèn)題。
創(chuàng)建pljava.control文件
我們必須將新擴(kuò)展名告訴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可見(jiàn)
我們通常通過(guò)JAVA_HOME環(huán)境變量指定Java二進(jìn)制文件和共享庫(kù)的位置。 這不是數(shù)據(jù)庫(kù)服務(wù)器的選項(xiàng)。
有兩種方法取決于您是否要使Java共享庫(kù)(libjvm.so)對(duì)所有應(yīng)用程序或僅對(duì)數(shù)據(jù)庫(kù)服務(wù)器可見(jiàn)。 我認(rèn)為前者最簡(jiǎn)單。
我們需要?jiǎng)?chuàng)建一個(gè)文件
/etc/ld.so.conf.d/i386-linux-java.conf
/usr/lib/jvm/java-8-openjdk-i386/jre/lib/i386/server其中大多數(shù)路徑名來(lái)自JAVA_HOME。 您的系統(tǒng)上的位置可能不同。 該目錄必須包含共享庫(kù)“ 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加載擴(kuò)展
現(xiàn)在,我們可以輕松地加載和卸載PL / Java。
=> CREATE EXTENSION pljava; CREATE EXTENSION=> DROP EXTENSION pljava; DROP EXTENSION萬(wàn)一出現(xiàn)薄脆...
如果系統(tǒng)看起來(lái)不穩(wěn)定,您可以將兩個(gè)“ 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
總結(jié)
以上是生活随笔為你收集整理的将PostgreSQL PL / Java安装为PostgreSQL扩展的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓挂机赚钱平台(安卓挂机赚)
- 下一篇: tostring 16进制_ToStri