重庆思庄Oracle、Redhat认证学习论坛

标题: 使用PG _freespacemap模块的步骤 [打印本页]

作者: 郑全    时间: 2024-1-1 17:47
标题: 使用PG _freespacemap模块的步骤
本帖最后由 郑全 于 2024-1-1 17:48 编辑

默认情况下,pg_freespacemap是没有安装的,这个时候,直接去使用,会报错:
postgres@:5432/postgres-96307#=select * from pg_freespace('student');
ERROR:  function pg_freespace(unknown) does not exist
LINE 1: select * from pg_freespace('student');
                      ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.



需要我们创建 EXTENSION pg_freespacemap

步骤如下:

1.切换到ROOT用户
   su - root

2.进入到源码的contrib/pg_freespacemap目录
   cd /postgresql/soft/postgresql-16.1/contrib/pg_freespacemap
[root@dbserver1 ~]# cd /postgresql/soft/postgresql-16.1/contrib/pg_freespacemap

3.编译安装
  gmake && gmake install

[root@dbserver1 pg_freespacemap]# gmake && gmake install

  gmake -C ../../src/backend generated-headers
gmake[1]: 进入目录“/postgresql/soft/postgresql-16.1/src/backend”
gmake -C catalog distprep generated-header-symlinks
gmake[2]: 进入目录“/postgresql/soft/postgresql-16.1/src/backend/catalog”
gmake[2]: 对“distprep”无需做任何事。
gmake[2]: 对“generated-header-symlinks”无需做任何事。
gmake[2]: 离开目录“/postgresql/soft/postgresql-16.1/src/backend/catalog”
gmake -C nodes distprep generated-header-symlinks
gmake[2]: 进入目录“/postgresql/soft/postgresql-16.1/src/backend/nodes”
gmake[2]: 对“distprep”无需做任何事。
gmake[2]: 对“generated-header-symlinks”无需做任何事。
gmake[2]: 离开目录“/postgresql/soft/postgresql-16.1/src/backend/nodes”
gmake -C utils distprep generated-header-symlinks
gmake[2]: 进入目录“/postgresql/soft/postgresql-16.1/src/backend/utils”
gmake[2]: 对“distprep”无需做任何事。
gmake[2]: 对“generated-header-symlinks”无需做任何事。
gmake[2]: 离开目录“/postgresql/soft/postgresql-16.1/src/backend/utils”
gmake[1]: 离开目录“/postgresql/soft/postgresql-16.1/src/backend”
gmake -C ../../src/backend generated-headers
gmake[1]: 进入目录“/postgresql/soft/postgresql-16.1/src/backend”
gmake -C catalog distprep generated-header-symlinks
gmake[2]: 进入目录“/postgresql/soft/postgresql-16.1/src/backend/catalog”
gmake[2]: 对“distprep”无需做任何事。
gmake[2]: 对“generated-header-symlinks”无需做任何事。
gmake[2]: 离开目录“/postgresql/soft/postgresql-16.1/src/backend/catalog”
gmake -C nodes distprep generated-header-symlinks
gmake[2]: 进入目录“/postgresql/soft/postgresql-16.1/src/backend/nodes”
gmake[2]: 对“distprep”无需做任何事。
gmake[2]: 对“generated-header-symlinks”无需做任何事。
gmake[2]: 离开目录“/postgresql/soft/postgresql-16.1/src/backend/nodes”
gmake -C utils distprep generated-header-symlinks
gmake[2]: 进入目录“/postgresql/soft/postgresql-16.1/src/backend/utils”
gmake[2]: 对“distprep”无需做任何事。
gmake[2]: 对“generated-header-symlinks”无需做任何事。
gmake[2]: 离开目录“/postgresql/soft/postgresql-16.1/src/backend/utils”
gmake[1]: 离开目录“/postgresql/soft/postgresql-16.1/src/backend”
/usr/bin/mkdir -p '/postgresql/pg16/lib'
/usr/bin/mkdir -p '/postgresql/pg16/share/extension'
/usr/bin/mkdir -p '/postgresql/pg16/share/extension'
/usr/bin/install -c -m 755  pg_freespacemap.so '/postgresql/pg16/lib/pg_freespacemap.so'
/usr/bin/install -c -m 644 ./pg_freespacemap.control '/postgresql/pg16/share/extension/'
/usr/bin/install -c -m 644 ./pg_freespacemap--1.1.sql ./pg_freespacemap--1.1--1.2.sql ./pg_freespacemap--1.0--1.1.sql  '/postgresql/pg16/share/extension/'

4.进入到POSTGRES用户并登录PG

[root@dbserver1 pg_freespacemap]# su - postgres

[postgres@dbserver1 ~]$ psql
psql (16.1)
Type "help" for help.


5.创建扩展
   postgres@:5432/postgres-96497#=create extension pg_freespacemap;
CREATE EXTENSION

6.列出所有的extension
  postgres@:5432/postgres-96497#=\dx
                                            List of installed extensions
        Name        | Version |   Schema   |                              Description                              
--------------------+---------+------------+------------------------------------------------------------------------
pg_buffercache     | 1.4     | public     | examine the shared buffer cache
pg_freespacemap    | 1.2     | public     | examine the free space map (FSM)
pg_stat_statements | 1.10    | public     | track planning and execution statistics of all SQL statements executed
pg_visibility      | 1.2     | public     | examine the visibility map (VM) and page-level visibility info
plpgsql            | 1.0     | pg_catalog | PL/pgSQL procedural language
(5 rows)

7.查看空闲空间

postgres@:5432/postgres-96497#=select * from pg_freespace('student');
blkno | avail
-------+-------
     0 |  8032
(1 row)










欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2