Postgres学习(1)-- 安装pageinspect extension

1.源码编译

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

[root@localhost pageinspect]# pwd
/root/postgresql-11beta2/contrib/pageinspect
[root@localhost pageinspect]# ll
total 144
-rwxr-xr-x 1 1107 1107 10455 Jun 25 23:09 brinfuncs.c
-rwxr-xr-x 1 1107 1107 15388 Jun 25 23:09 btreefuncs.c
drwxr-xr-x 2 1107 1107  4096 Jun 25 23:17 expected
-rwxr-xr-x 1 1107 1107  1572 Jun 25 23:09 fsmfuncs.c
-rwxr-xr-x 1 1107 1107  7590 Jun 25 23:09 ginfuncs.c
-rwxr-xr-x 1 1107 1107 15812 Jun 25 23:09 hashfuncs.c
-rwxr-xr-x 1 1107 1107 12367 Jun 25 23:09 heapfuncs.c
-rwxr-xr-x 1 1107 1107   802 Jun 25 23:09 Makefile
-rwxr-xr-x 1 1107 1107   560 Jun 25 23:09 pageinspect--1.0--1.1.sql
-rwxr-xr-x 1 1107 1107   562 Jun 25 23:09 pageinspect--1.1--1.2.sql
-rwxr-xr-x 1 1107 1107  1946 Jun 25 23:09 pageinspect--1.2--1.3.sql
-rwxr-xr-x 1 1107 1107  2566 Jun 25 23:09 pageinspect--1.3--1.4.sql
-rwxr-xr-x 1 1107 1107  1347 Jun 25 23:09 pageinspect--1.4--1.5.sql
-rwxr-xr-x 1 1107 1107  2252 Jun 25 23:09 pageinspect--1.5--1.6.sql
-rwxr-xr-x 1 1107 1107  6262 Jun 25 23:09 pageinspect--1.5.sql
-rwxr-xr-x 1 1107 1107   698 Jun 25 23:09 pageinspect--1.6--1.7.sql
-rwxr-xr-x 1 1107 1107   173 Jun 25 23:09 pageinspect.control
-rwxr-xr-x 1 1107 1107   527 Jun 25 23:09 pageinspect.h
-rwxr-xr-x 1 1107 1107  1116 Jun 25 23:09 pageinspect--unpackaged--1.0.sql
-rwxr-xr-x 1 1107 1107  8516 Jun 25 23:09 rawpage.c
drwxr-xr-x 2 1107 1107  4096 Jun 25 23:17 sql

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

[root@localhost pageinspect]# ll
total 1224
-rwxr-xr-x 1 1107 1107  10455 Jun 25 23:09 brinfuncs.c
-rw-r--r-- 1 root root 138240 Jul 27 16:43 brinfuncs.o
-rwxr-xr-x 1 1107 1107  15388 Jun 25 23:09 btreefuncs.c
-rw-r--r-- 1 root root 160912 Jul 27 16:43 btreefuncs.o
drwxr-xr-x 2 1107 1107   4096 Jun 25 23:17 expected
-rwxr-xr-x 1 1107 1107   1572 Jun 25 23:09 fsmfuncs.c
-rw-r--r-- 1 root root  34080 Jul 27 16:43 fsmfuncs.o
-rwxr-xr-x 1 1107 1107   7590 Jun 25 23:09 ginfuncs.c
-rw-r--r-- 1 root root 120392 Jul 27 16:43 ginfuncs.o
-rwxr-xr-x 1 1107 1107  15812 Jun 25 23:09 hashfuncs.c
-rw-r--r-- 1 root root 151832 Jul 27 16:43 hashfuncs.o
-rwxr-xr-x 1 1107 1107  12367 Jun 25 23:09 heapfuncs.c
-rw-r--r-- 1 root root 112936 Jul 27 16:43 heapfuncs.o
-rwxr-xr-x 1 1107 1107    802 Jun 25 23:09 Makefile
-rwxr-xr-x 1 1107 1107    560 Jun 25 23:09 pageinspect--1.0--1.1.sql
-rwxr-xr-x 1 1107 1107    562 Jun 25 23:09 pageinspect--1.1--1.2.sql
-rwxr-xr-x 1 1107 1107   1946 Jun 25 23:09 pageinspect--1.2--1.3.sql
-rwxr-xr-x 1 1107 1107   2566 Jun 25 23:09 pageinspect--1.3--1.4.sql
-rwxr-xr-x 1 1107 1107   1347 Jun 25 23:09 pageinspect--1.4--1.5.sql
-rwxr-xr-x 1 1107 1107   2252 Jun 25 23:09 pageinspect--1.5--1.6.sql
-rwxr-xr-x 1 1107 1107   6262 Jun 25 23:09 pageinspect--1.5.sql
-rwxr-xr-x 1 1107 1107    698 Jun 25 23:09 pageinspect--1.6--1.7.sql
-rwxr-xr-x 1 1107 1107    173 Jun 25 23:09 pageinspect.control
-rwxr-xr-x 1 1107 1107    527 Jun 25 23:09 pageinspect.h
-rwxr-xr-x 1 root root 292497 Jul 27 16:43 pageinspect.so
-rwxr-xr-x 1 1107 1107   1116 Jun 25 23:09 pageinspect--unpackaged--1.0.sql
-rwxr-xr-x 1 1107 1107   8516 Jun 25 23:09 rawpage.c
-rw-r--r-- 1 root root  76816 Jul 27 16:43 rawpage.o
drwxr-xr-x 2 1107 1107   4096 Jun 25 23:17 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 755  pageinspect.so '/usr/local/pgsql/lib/pageinspect.so'
/usr/bin/install -c -m 644 ./pageinspect.control '/usr/local/pgsql/share/extension/'
/usr/bin/install -c -m 644 ./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
(2 rows)

  这样就安装成功了。

3.使用pageinspect的函数

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

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

猜你喜欢

转载自www.cnblogs.com/plairst/p/9378552.html
今日推荐