1.源码编译

  pageinspect的源码在postgre源码包的contrib目录下,解压postgre源码包后进入对应的目录。

[root@localhost pageinspect]# pwd
/root/postgresql-11beta2/contrib/pageinspect
[root@localhost pageinspect]# ll
total
-rwxr-xr-x Jun : brinfuncs.c
-rwxr-xr-x Jun : btreefuncs.c
drwxr-xr-x Jun : expected
-rwxr-xr-x Jun : fsmfuncs.c
-rwxr-xr-x Jun : ginfuncs.c
-rwxr-xr-x Jun : hashfuncs.c
-rwxr-xr-x Jun : heapfuncs.c
-rwxr-xr-x Jun : Makefile
-rwxr-xr-x Jun : pageinspect--1.0--1.1.sql
-rwxr-xr-x Jun : pageinspect--1.1--1.2.sql
-rwxr-xr-x Jun : pageinspect--1.2--1.3.sql
-rwxr-xr-x Jun : pageinspect--1.3--1.4.sql
-rwxr-xr-x Jun : pageinspect--1.4--1.5.sql
-rwxr-xr-x Jun : pageinspect--1.5--1.6.sql
-rwxr-xr-x Jun : pageinspect--1.5.sql
-rwxr-xr-x Jun : pageinspect--1.6--1.7.sql
-rwxr-xr-x Jun : pageinspect.control
-rwxr-xr-x Jun : pageinspect.h
-rwxr-xr-x Jun : pageinspect--unpackaged--1.0.sql
-rwxr-xr-x Jun : rawpage.c
drwxr-xr-x Jun : sql

  有makefile文件,直接用make命令进行编译即可。编译后,只要得到pageinspect.so这个文件。

[root@localhost pageinspect]# ll
total
-rwxr-xr-x Jun : brinfuncs.c
-rw-r--r-- root root Jul : brinfuncs.o
-rwxr-xr-x Jun : btreefuncs.c
-rw-r--r-- root root Jul : btreefuncs.o
drwxr-xr-x Jun : expected
-rwxr-xr-x Jun : fsmfuncs.c
-rw-r--r-- root root Jul : fsmfuncs.o
-rwxr-xr-x Jun : ginfuncs.c
-rw-r--r-- root root Jul : ginfuncs.o
-rwxr-xr-x Jun : hashfuncs.c
-rw-r--r-- root root Jul : hashfuncs.o
-rwxr-xr-x Jun : heapfuncs.c
-rw-r--r-- root root Jul : heapfuncs.o
-rwxr-xr-x Jun : Makefile
-rwxr-xr-x Jun : pageinspect--1.0--1.1.sql
-rwxr-xr-x Jun : pageinspect--1.1--1.2.sql
-rwxr-xr-x Jun : pageinspect--1.2--1.3.sql
-rwxr-xr-x Jun : pageinspect--1.3--1.4.sql
-rwxr-xr-x Jun : pageinspect--1.4--1.5.sql
-rwxr-xr-x Jun : pageinspect--1.5--1.6.sql
-rwxr-xr-x Jun : pageinspect--1.5.sql
-rwxr-xr-x Jun : pageinspect--1.6--1.7.sql
-rwxr-xr-x Jun : pageinspect.control
-rwxr-xr-x Jun : pageinspect.h
-rwxr-xr-x root root Jul : pageinspect.so
-rwxr-xr-x Jun : pageinspect--unpackaged--1.0.sql
-rwxr-xr-x Jun : rawpage.c
-rw-r--r-- root root Jul : rawpage.o
drwxr-xr-x Jun : sql

  然后使用make install命令,把相关文件安装到/usr/localpgsql的目录下。

[root@localhost pageinspect]# make install
/bin/mkdir -p '/usr/local/pgsql/lib'
/bin/mkdir -p '/usr/local/pgsql/share/extension'
/bin/mkdir -p '/usr/local/pgsql/share/extension'
/usr/bin/install -c -m pageinspect.so '/usr/local/pgsql/lib/pageinspect.so'
/usr/bin/install -c -m ./pageinspect.control '/usr/local/pgsql/share/extension/'
/usr/bin/install -c -m ./pageinspect--1.6--1.7.sql ./pageinspect--1.5.sql ./pageinspect--1.5--1.6.sql ./pageinspect--1.4--1.5.sql ./pageinspect--1.3--1.4.sql ./pageinspect--1.2--1.3.sql ./pageinspect--1.1--1.2.sql ./pageinspect--1.0--1.1.sql ./pageinspect--unpackaged--1.0.sql '/usr/local/pgsql/share/extension/'

2.创建pageinspect extension

  准备工作完成,然后切换到postgre的用户,进入psql,创建pageinspect extension。

[pguser@localhost log]$ su pguser
Password:
[pguser@localhost log]$ psql -d test
psql (11beta2)
Type "help" for help. test=# \d pg_extension;
Table "pg_catalog.pg_extension"
Column | Type | Collation | Nullable | Default
----------------+---------+-----------+----------+---------
extname | name | | not null |
extowner | oid | | not null |
extnamespace | oid | | not null |
extrelocatable | boolean | | not null |
extversion | text | | not null |
extconfig | oid[] | | |
extcondition | text[] | | |
Indexes:
"pg_extension_name_index" UNIQUE, btree (extname)
"pg_extension_oid_index" UNIQUE, btree (oid) test=# create extension pageinspect;
CREATE EXTENSION
test=# \d pg_extension;
Table "pg_catalog.pg_extension"
Column | Type | Collation | Nullable | Default
----------------+---------+-----------+----------+---------
extname | name | | not null |
extowner | oid | | not null |
extnamespace | oid | | not null |
extrelocatable | boolean | | not null |
extversion | text | | not null |
extconfig | oid[] | | |
extcondition | text[] | | |
Indexes:
"pg_extension_name_index" UNIQUE, btree (extname)
"pg_extension_oid_index" UNIQUE, btree (oid) test=# select extName from pg_extension;
extname
-------------
plpgsql
pageinspect
( rows)

  这样就安装成功了。

3.使用pageinspect的函数

  最后还通过pageinspect的函数,查看table t2的页头信息。

test=# SELECT * FROM page_header(get_raw_page('t2', ));
lsn | checksum | flags | lower | upper | special | pagesize | version | prune_xid
-----------+----------+-------+-------+-------+---------+----------+---------+-----------
/1C3B848 | | | | | | | |
( row)

PostgreSQL学习(1)-- 安装pageinspect extension的更多相关文章

  1. postgresql学习之安装篇

    ---恢复内容开始--- 安装方法: 1.可以使用操作系统自带的安装源 2.可以使用官网下载的源码进行安装 3.可以使用编译好的包入.run格式的安装包安装(本文使用的是这种安装方法,下载地址http ...

  2. 与你相遇好幸运,Postgresql和postgis安装

    笔者开发环境: windows 7 x86_64 一开始安装的是官网最新版 PostgreSQL 9.6 ,安装成功 之后安装PostGIS Bundle 2.2 for PostgreSQL x64 ...

  3. PostgreSQL学习----模式schema

    PostgreSQL学习---模式schema 小序 接触PostgreSQL也有好长时间了,知识不总结梳理,似乎总不是自己的,继续努力吧少年!以此记录我的软件工艺之路! 模式(Schema) 一个 ...

  4. postgresql pgagent 的安装及使用

    pgagent 作为postgresql的一个任务调度代理,在postgresql 9.0 以前 是附带在pgadmin 包下面的,只是默认不安装,9.0之后作为了一个单独是的安装包.所以要使用pga ...

  5. postgresql学习记录1

    数据库9.3.5,系统fedora20,不同系统操作略有不同. 使用yum 命令安装即可:sudo yum install postgresql,postgresql-server 安装完毕后系统中会 ...

  6. Mac下手动安装SafariDriver extension

    环境:Mac OS X Yosemite 10.10.4下, Safari 8 Step 1:第一次运行SafariDriver时,先找到WebDriver extension的安装路径,比如/Use ...

  7. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  8. PostgreSQL学习手册

    事实上之前有很长一段时间都在纠结是否有必要好好学习它,但是始终都没有一个很好的理由说服自己.甚至是直到这个项目最终决定选用PostgreSQL 时,我都没有真正意识到学习它的价值,当时只是想反正和其它 ...

  9. Hadoop学习------Hadoop安装方式之(二):伪分布部署

    要想发挥Hadoop分布式.并行处理的优势,还须以分布式模式来部署运行Hadoop.单机模式是指Hadoop在单个节点上以单个进程的方式运行,伪分布模式是指在单个节点上运行NameNode.DataN ...

随机推荐

  1. 这几道Python面试题,稳准狠,Python面试题No15

    必须放一个表情包,太魔性了! 第1题: 修改以下Python代码,使得下面的代码调用类A的show方法? 原始代码 class A(object): def run(self): print(&quo ...

  2. linux 查看系统版本号(转)

    一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@localhost ~]# cat /proc/versionLinux version 2.6.18 ...

  3. python——函数重点总结

    参数的分类 形参:位置参数.默认参数.*args.命名关键字参数.**kwargs 实参:位置参数.关键字参数 命名关键字参数:定义在*后面的位置参数和默认参数叫作命名关键字参数:用来限制实参必须以关 ...

  4. java基础笔记(三)——main方法

    1.解析public static void main(String[] args)方法 JVM在运行程序时,会首先查找main()方法作为入口,main是JVM识别的特殊方法名. public是权限 ...

  5. JavaScript进阶 - 第8章 浏览器对象

    第8章 浏览器对象 8-1 window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法:

  6. kettle的使用(ETL,数据仓库技术)

    本周项目上用到了kettle并且需要做任务调度,听老师说用kettle自带的调度不大稳定于是便baidu了下,参照这篇文章完成了通过kitchen的调度,简单说就是通过windows的计划任务来调用. ...

  7. CellSet 遍历

    CellSet 结构: 查询MDX: SELECT NON EMPTY {{ {{ {{ {{ {{ AddCalculatedMembers([店铺.店铺ID].[店铺ID].Members)}} ...

  8. SSIS 抽取excel出错:所请求的 OLE DB 访问接口 Microsoft.ACE.OLEDB.12.0 尚未注册

    如果是安装的office2010就要装这个,如果是2007就不用装! http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b ...

  9. 对jvm虚拟机 内存溢出的思考

    java内存溢出:当新产生对象时,新生代空间不够,导致无法申请到足够的空间,报内存溢出 内存泄漏:一些静态集合,静态常量没有被gc清理,越来越多,占用内存,最后导致无法申请到新的空间

  10. MYSQL查询~ 存在一个表而不在另一个表中的数据

    A.B两表,找出ID字段中,存在A表,但是不存在B表的数据.A表总共13w数据,去重后大约3W条数据,B表有2W条数据,且B表的ID字段有索引. 方法一 使用 not in ,容易理解,效率低  ~执 ...