postgresql954和pldebuger调试安装.docx

上传人:b****8 文档编号:29191706 上传时间:2023-07-21 格式:DOCX 页数:21 大小:27.48KB
下载 相关 举报
postgresql954和pldebuger调试安装.docx_第1页
第1页 / 共21页
postgresql954和pldebuger调试安装.docx_第2页
第2页 / 共21页
postgresql954和pldebuger调试安装.docx_第3页
第3页 / 共21页
postgresql954和pldebuger调试安装.docx_第4页
第4页 / 共21页
postgresql954和pldebuger调试安装.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

postgresql954和pldebuger调试安装.docx

《postgresql954和pldebuger调试安装.docx》由会员分享,可在线阅读,更多相关《postgresql954和pldebuger调试安装.docx(21页珍藏版)》请在冰豆网上搜索。

postgresql954和pldebuger调试安装.docx

postgresql954和pldebuger调试安装

序言

厌倦了办公室政治的谄媚妄讳,尔虞我诈的关系;想多些时间真正坐下,安心下来为他人留下点经验可以借鉴。

留下此篇文章,希望将来可以对初学者提供一些帮助。

开始安装POSTGRESQL的时候,也是从网上查一些别人提供的安装文档参照安装的,windows版本安装最简单,再此不想多言。

我仅仅就linux(centos6.6postgresql9.5.4以及调试程序pldebugger)的安装做些描述,如有纰漏也是本人能力有限敬请谅解。

同时也要感谢(

第一步:

安装前准备

安装数据库,首先要知道有些安装程序上的依赖,为此请认真查证是否本机已经安装的软件依赖包已经满足要求。

(下面是方法:

CentOS中查看是否安装了某个软件的命令:

rpm-qa|grep软件名(可非全名)

which命令可查看某个软件的安装路径。

使用yuminstall包名来安装软件包。

(注意这是非源码安装)

----------------------------------------下面关键------------------------------------------------------

1.GNUmake的版本3.80以上

[root@localhost~]#rpm-qa|grepmake

make-3.81-20.el6.x86_64

[root@localhost~]#whichgcc

/usr/bin/gcc

2.ISO/ANSI编译器,推荐最新版本的GCC

[root@localhost~]#rpm-qa|grepgcc

gcc-4.4.7-4.el6.x86_64

libgcc-4.4.7-4.el6.x86_64

gcc-c++-4.4.7-4.el6.x86_64

[root@localhost~]#gcc-v

gcc版本4.4.720120313(RedHat4.4.7-4)(GCC)

3.源码包的解压工具tar,除此之外还有gzip或bzip2

[root@localhost~]#rpm-qa|greptar

libtar-1.2.11-17.el6_4.1.x86_64

tar-1.23-11.el6.x86_64

[root@localhost~]#tar--version

tar(GNUtar)1.23

4.默认使用GNUReadline库

[root@localhost~]#rpm-qa|grepreadline

readline-6.0-4.el6.x86_64

5.默认使用zlib压缩库

[root@localhost~]#rpm-qa|grepzlib

zlib-1.2.3-29.el6.x86_64

6.可选软件包:

(洋人的东西,还得看洋文,请不懂洋文的同学绕过)

http:

//www.postgresql.org/docs/9.3/interactive/install-requirements.html

(1)为了编译PL/Perl服务器端编程语言,需要完整Perl的安装,包括libperl库和头文件。

(2)为了编译PL/Python服务器端语言,需要一个包含头文件和distuils模块的Python安装。

(3)为了编译PL/Tcl服务器端语言,需要Tcl的安装。

(4)为了使用NSL,即具有使用不同于英语的一种语言显示消息的能力,需要一种GettextAPI的实现。

(5)需要Kerberos,OpenSSL,OpenLDAP,and/orPAM,如果你想要使用这些服务支持认证或加密。

(6)为了编译PostgreSQL的文档,有一组独立的要求。

查看http:

//www.postgresql.org/docs/9.3/interactive/docguide-toolsets.html

第二步:

获取PostgreSQL源码、pldebugger程序源码

1.下载源码:

官网:

http:

//www.postgresql.org/ftp/source/,这里下载的是最新版postgresql9.5.4.

这个地址比较快(我下载的9.5.4)

2.解压:

你解压前,先找个文件夹,比如/usr/local/src,把压缩文件放在这,然后解压

tar-zxvfpostgresql-9.5.4.tar.gz

随后会生成一个新的文件夹/usr/local/src/postgresql-9.5.4。

cdpostgresql-9.5.4

(查看是否有contrib文件夹,记住这个文件夹)

3.下载pldebugger源程序代码,

cdcontib执行下面的命令,

gitclonegit:

//git.postgresql.org/git/pldebugger.git

将下载并创建pldebugger文件夹

(安装postgresql数据库前,请你一定要做好上面插件的下载)

加强理解几个概念:

(网上其他文,说的比较含糊不清)

源程序位置:

/usr/local/src/postgresql-9.5.4

第三方插件包放置位置:

/usr/local/src/postgresql-9.5.4/contrib(网上许多安装文档都说找源码,实际指的就是这个位置文件夹)

第三方插件简介:

(如果想深入研究,可跨过不看)

(contrib/:

已打包到PG源码中的第三方贡献的插件源码)

adminpack:

一些管理函数

auth_delay:

认证失败后延迟报异常,可以防止暴力破解

auto_explain:

将超过指定执行时间的SQL的执行计划输出到日志中

btree_gin:

gin索引方法的btree操作符扩展(在某些情况下“多列gin组合索引”比“多个btree单列索引”的bitmapanding更高效)

btree_gist:

gist索引方法的btree操作符扩展(在组合索引中的某些列类型仅支持gist索引访问方法,而另一些列的类型支持btree以及gist时btree_gist更为有效,同时btree_gist还新增了<>用于排他约束,<->用于近邻算法)

chkpass:

自动加密的字段类型(使用UNIX标准函数crypt()进行封装,所以仅支持前8位安全)'abcdefghijkl':

:

chkpass--'abcdefgh'

citext:

不区分大小写的数据类型

cube:

多维立方体类型,支持多维立方体对象的相同,相交,包含等运算

dblink:

PostgreSQL跨库操作插件

dict_int:

全文检索的一个字典模版,用于控制数字被拆分的最大长度,以控制数字在全文检索中的分词个数(maxlen=6:

12345678-->123456截断成6个,rejectlong=true则忽略这个分词)

dict_xsyn:

全文检索的一个字典模块,设置分词的同义词,支持同义词匹配

dummy_seclabel:

用于安全标签SQL的测试

earthdistance:

可以使用cube或point类型计算地球表面两点之间的距离

file_fdw:

文件外部表模块

fuzzystrmatch:

单字节字符串之间的相似性判断

hstore:

用于存储K-V数据类型,同时这个插件还提供了比较V类型相关的函数和操作符。

例如提供数组,json,hstore之间的转换,K-V的存在判断,删除K-V值

intagg:

int类型的数组聚合函数(内建的array_agg函数已包含这个功能)

intarray:

int类型的数组功能扩展库,提供了一些常用的函数和操作符(数组元素个数,元素排序,元素下标,取元素子集,相交,包含,增加元素,删除元素,合并等)

isn:

提供国际通用的产品标识码数据类型,例如ISBN,ISMN...

lo:

大对象的一个可选模块,lo类型以及自动unlink大对象的触发器,方便大对象在消亡后的自动unlink,防止大对象存储泄漏(类似内存泄漏)

ltree:

异构数据类型以及操作函数和操作符。

例如China.Zhejiang.Hang<@'China'

oid2name:

id转换成name的命令行工具,不属于extension。

或通过系统表查询得到.

pageinspect:

用于读取数据库PAGE裸信息的插件,可以读main,fsm,vmFORK的页数据,一般用于debug(使用时请参照对应数据库版本的头文件解读信息)

passwordcheck:

创建用户或者修改用户密码时,检查密码的安全性,如果太弱的话,将返回错误。

pg_archivecleanup:

清除归档文件的命令,不属于extension

pgbench:

数据库性能测试的命令,不属于extension

pg_buffercache:

输出当前的sharedbuffer的状态数据(细化到pagenumber)

pgcrypto:

PostgreSQL的服务端数据加密的扩展库

pg_freespacemap:

输出对象指定page或所有page的freespacemap信息

pgrowlocks:

(从行头信息中的informask获取行锁信息),注意输出的不是snapshot

pg_standby:

8.4以及以前的版本方便于创建warmstandby的命令行

pg_stat_statements:

跟踪数据库的SQL,收集SQL的统计信息

pgstattuple:

行级统计信息(deadtuples,livetuples,table_len,free_space,free_percent),索引的统计信息

pg_test_fsync:

测试磁盘的fsync速率。

适用于选择最快的wal_sync_method

pg_test_timing:

测试系统定时器的开销,开销越大,explainanalyze时间结果越不准,需要调整系统时钟源

pg_trgm:

将字符串拆分成3个一组的多个单元,用于测试两个字符串之间的近似度,比分词更加暴力。

pg_upgrade:

跨大版本的升级工具(例如9.0-->9.1)

pg_upgrade_support:

pg_upgrade用到的服务端函数集

pg_xlogdump:

从xlog中dump出一些易读的底层信息

postgres_fdw:

postgresq跨库的外部表插件

seg:

线段类型和浮点数的区间类型,以及相关的操作符,索引访问方法等

sepgsql:

基于SELinux安全策略的访问控制模块

spi:

一些服务端的触发器函数(例如跟踪记录的存活时间,被哪个用户修改了,记录的修改时间等)

sslinfo:

输出ssl认证的客户端的一些认证信息

start-scripts:

数据库启动脚本模版

tablefunc:

一般可用于行列变换,异构数据处理等

tcn:

提供异步消息输出的触发器

test_parser:

全文检索中的一个自定义parser的测试插件

tsearch2:

全文检索相关的插件,在全文检索未引入PG内核前的PG版本可以使用这个插件来实现全文检索功能,大于8.3以后就不需要这个了

unaccept:

全文检索相关的插件

uuid-ossp:

生成UUID的插件

vacuumlo:

大对象垃圾回收的命令

worker_spi:

9.3新增的服务端worker编程范例

xml2:

xml相关插件

(我上面省略了不是源代码目录介绍内容,如果想仔细研究请看原文)

第四步:

源码安装PostgreSQL-9.5.4

步骤如下:

1.配置(Configuration)

进入源码目录:

[root@localhostsrc]#cd/usr/local/src/postgresql-9.5.4

(执行配置程序,这个比较有讲究)

我执行的配置文件是下面这样:

(因为有些参数要依赖包担心不成功,因此选如下参数)

[root@localhostpostgresql-9.5.4]#./configure--prefix=/opt/pgsql9.5.4--with-pgport=5432--with-python--with-openssl--with-libxml--enable-thread-safety--with-wal-blocksize=16--with-blocksize=16

 

洋文默认配置如下:

./configure-with-openssl-enable-thread-safety

这种默认的配置将编译服务器和使用工具,以及所有客户端应用程序和接口,只需要一个C编译器。

所有文件默认将安装到/usr/local/pgsql中。

洋人的配置安装说明http:

//www.postgresql.org/docs/9.3/interactive/install-procedure.html

这里,网上的配置是可选参数设置如下:

而且有说明,比较感谢原作者

./configure--prefix=/opt/pgsql9.5.4--with-pgport=5432--with-perl--with-python--with-tcl--with-openssl--with-pam--without-ldap--with-libxml--with-libxslt--enable-thread-safety--with-wal-blocksize=16--with-blocksize=16--enable-dtrace--enable-debug

配置选项说明:

--prefix=/opt/pgsql9.5.4:

安装所有文件在/opt/pgsql9.5.4中(也就是安装目录)(取代默认时的/usr/local/pgsql)。

--with-pgport=5432:

为服务器和客户端设置默认端口号。

默认是5432。

--with-perl:

编译PL/Perl服务端语言。

--with-python:

编译PL/Python服务端语言。

--with-tcl:

编译PL/Tcl服务端语言。

--with-openssl:

编译支持SLL(加密)连接。

这需要安装OpenSSL包。

--with-pam:

编译支持PAM(PluggableAuthenticationModules,可插拔认证模块)

--without-ldap:

编译支持认证和连接参数检查

--with-libxml:

编译libxml(支持SQL/XML),支持这个选项需要Libxml2.6.23及最新版

--with-libxslt:

编译xml2模块,使用libxslt

--enable-thread-safety:

让客户端库是线程安全的

--with-wal-blocksize=16:

WAL:

预写式日志(Write-AheadLogging)

设置WAL的blocksize,以MB为单位。

这是在WAL日志中的每个独立文件的大小。

为了控制WAL日志传送的粒度去调整其大小,这可能是非常有用的。

默认为16MB。

这个值必须是2的1到64次方(MB)。

注意,改变这个值需要一个initdb。

--with-blocksize=16:

设置blocksize,以KB为单位。

这是表的存储和IO单元。

默认为8K,适用于大多数情况;但是在特殊场合中,其他的值可能是非常有用的。

这个值必须是2的1到32次方(KB)。

注意,改变这个值需要一个initdb。

--enable-dtrace:

编译PostgreSQL支持动态跟踪工具DTrace

--enable-debug:

把所有程序和库以带有调试符号的方式编译

--enable-nls[=LANGUAGES]:

打开本地语言支持(NLS),即以非英文显示程序的信息的能力。

LANGUAGES是一个空格分隔的语言代码列表,标识你想支持的语言。

比如--enable-nls='defr'。

(你提供的列表和实际支持的列表之间的交集将会自动计算出来。

)如果你没有声明一个列表,那么就安装所有可用的翻译。

(还可以在--enable-debug前,添加两个选项:

--enable-depend--enable-cassert)

配置过程可能会遇到依赖的动态库缺失,安装这些缺失的库即可。

记录下我这里的缺失lib的安装:

dtrace工具的安装:

PostgreSQL支持动态跟踪,可以通过dtrace或者systemtap工具统计相关探针的信息。

在CentOS中安装systemtap:

在安装systemtap前,要保证kernel对应的kernel-devel包的版本保持一致:

检查:

[root@localhost~]#rpm-qa|grepkernel

[root@localhost~]#uname-a

不一致的话,则安装对应的kernel-devel版本或者升级kernel:

[root@localhost~]#yuminstallkernel-devel

或:

[root@localhost~]#yumupdatekernel

重启服务器。

安装systemtap

[root@localhost~]#yuminstallsystemtapsystemtap-sdt-devel

其中:

安装systemtap时,安装了systemtap-devel、systemtap-client和systemtap-runtime这3个包。

systemtap-sdt-devel是编译PostgreSQL时,选项--enable-dtrace需要的包。

使用命令:

[root@localhost~]#rpm-qf/usr/bin/stap

systemtap-devel-2.3-4.el6_5.x86_64

systemtap-client-2.3-4.el6_5.x86_64

rpm-qf:

查询文件隶属的软件包

检查stap是否正常

[root@localhost~]#stap

Ascriptmustbespecified.

Try'--help'formoreinformation.

此时stap是正常的。

接着测试下:

[root@localhost~]#stap-ve'probebegin{log("helloworld")exit()}'

Pass1:

parseduserscriptand96libraryscript(s)using198456virt/26648res/3080shr/24072datakb,in260usr/40sys/296realms.

Pass2:

analyzedscript:

1probe(s),2function(s),0embed(s),0global(s)using198852virt/27396res/3320shr/24468datakb,in10usr/0sys/10realms.

Pass3:

usingcached/root/.systemtap/cache/ca/stap_ca2aff10c84d1cf00083e0eb3e5d7082_1033.c

Pass4:

usingcached/root/.systemtap/cache/ca/stap_ca2aff10c84d1cf00083e0eb3e5d7082_1033.ko

Pass5:

startingrun.

helloworld

Pass5:

runcompletedin40usr/80sys/404realms.

stap调试好后,就可以用来跟踪postgresql了。

PostgreSQL编译时必须开启dtrace支持,即--enable-dtrace。

开启dtrace后,数据库将启用代码中的探针或跟踪点。

回到PG的继续重新执行configure,遇到问题以及解决方法:

(1)问题1:

no

configure:

error:

couldnotdetermineflagsforlinkingembeddedPerl.

ThisprobablymeansthatExtUtils:

:

EmbedorExtUtils:

:

MakeMakerisnot

installed.

解决方法:

yuminstallperl-ExtUtils-Embed

(2)问题2:

configure:

error:

readlinelibrarynotfound

Ifyouhavereadlinealreadyinstalled,seeconfig.logfordetailsonthe

failure.Itispossiblethecompilerisn'tlookingintheproperdirectory.

Use--without-readlinetodisablereadlinesupport.

解决方法:

yuminstallreadlinereadline-devel

(3)问题3:

checkingforinflatein-lz...no

configure:

error:

zliblibrarynotfound

Ifyouhavezlibalreadyinstalled,seeconfig.logfordetailsonthe

failure.Itispossiblethecompilerisn'tlookingintheproperdirectory.

Use--without-zlibtodisablezlibsupport.

解决方法:

yuminstallzlibzlib-devel

(4)问题4:

checkingforCRYPTO_new_ex_datain-lcrypto...no

configure:

error:

library'crypto'isrequiredforOpenSSL

解决方法:

yuminstallopensslopenssl-devel

(5)问题5:

checkingforpam_startin-lpam...no

configure:

error:

library'pam'isrequiredforPAM

解决方法:

yuminstallpampam-devel

(6)问题6:

checkingforxmlSaveToBufferin-lxml2...no

configure:

error:

library'xml2'(version>=2.6.23)isrequiredforXMLsupport

解决方法:

yuminstalllibxml2libxml2-devel

(7)问题7:

checkingforxsltCleanupGlobals

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1