由于最近要使用postgresql处理一些java的数据类型,主备使用pljiava。
准备:
1. Postgresql预先安装好(我使用的版本是9.1)
2. 准备pljiava安装文件,可以到http://pgfoundry.org/frs/?group_id=1000038下载,我使用的是pljava-src-1.4.3.tar.gz
3. 准备java1.4或1.5 (java1.6编译时有问题)
4. 准备postgresql-odbc 可以到http://jdbc.postgresql.org/download.html 下载
安装
1. 安装java,并配置环境变量(不会安装java的请google一下)
环境变量设置:
export JAVA_HOME=/usr/java/jdk1.5.0_22/
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/data/vince/software/mysql/bin:$PATH
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/server
2. 安装pljava,
1. 如果java的版本没有问题,java和pg的环境变量设置没有问题的话,安装很简单Make,make install 就ok。
2. 把postgresql的jdbc的jar文件copy到 pg的lib目录下
3. 进入安装目录src/sql.执行其中的install.sql
可能遇到的问题:
执行install.sql时报错: RROR: could not load library "/usr/local/lib/pljava/libpljava.so":libjvm.so: cannot open shared object file: No such file or directory
查看so依赖关系:
ldd /data/vince/dev/pgsql/lib/pljava.so
linux-gate.so.1 => (0xffffe000)
libjvm.so => /usr/java/jdk1.5.0_22//jre/lib/i386/server/libjvm.so (0xb759f000)
libc.so.6 => /lib/libc.so.6 (0xb7454000)
libm.so.6 => /lib/libm.so.6 (0xb742c000)
libdl.so.2 => /lib/libdl.so.2 (0xb7427000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb740f000)
/lib/ld-linux.so.2 (0x80000000)
解决方法1(使用root用户):
Echo “/usr/java/jdk1.5.0_22//jre/lib/i386/server/libjvm.so” > /etc/ld.so.conf.d/jvm.conf
Ldconfig
解决方法2:
把/usr/java/jdk1.5.0_22//jre/lib/i386/server/libjvm.so copy到pg的lib目录下。
配置:
在postgresql.conf中
修改
dynamic_library_path = '$libdir:/usr/java/jdk1.5.0_22/jre/lib/i386:/usr/java/jdk1.5.0_22//jre/lib/i386/server/'
添加:
custom_variable_classes = 'pljava' # list of custom variable class names
pljava.classpath='$libdir/pljava.jar:$libdir/postgresql-9.1-901.jdbc4.jar'
pljava.statement_cache_size = 10
pljava.release_ligering_savepoints = true
pljava.vmoptions = '-Xmx264M'
pljava.debug = false
重启pg,安装完成
.安装example
如要要安装example程序测试的话进入psql:
SELECT sqlj.install_jar('file:///some/directory/examples.jar', 'samples', true);
这么能够将Examples安排到PostgreSQL中。