vacuumlo

vacuumlo — 从PostgreSQL数据库中移除孤立的大对象

大纲

vacuumlo [option...] dbname...

描述

vacuumlo是一个从PostgreSQL数据库中移除孤立大对象的简单使用程序。一个孤立的大对象(LO)是指其OID不出现在数据中任何oidlo数据列中的LO。

如果你使用该程序,你也许还会对lo模块中的lo_manage触发器感兴趣。lo_manage对于避免创建孤立LO有用处。

在命令行中提到的所有数据库都将被处理。

选项

vacuumlo接受下列命令行参数:

-l limit

在每一个事务中移除不超过limit个大对象(默认值为1000)。因为移除每一个LO时服务器都将要求一个锁,所以在一个事务中移除过多的LO会有超过max_locks_per_transaction的风险。如果你想在一个事务中就完成所有的移除工作,请将这个限制设置为0。

-n

不移除任何东西,只是显示将会做什么。

-v

写一些进度消息。

-V
--version

打印vacuumlo的版本并退出。

-?
--help

显示关于vacuumlo的命令行参数,并且退出。

vacuumlo也接受下列命令行参数用于连接:

-h hostname

数据库服务器的主机名。

-p port

数据库服务器的端口。

-U username

用于连接的用户名。

-w
--no-password

不要发出一个口令提示。如果服务器要求口令认证并且没有其他方式可以提供一个口令(例如一个.pgpass文件),连接尝试将会失败。这个选项可用于批处理任务以及脚本,因为在这些情况下不会有用户输入口令。

-W

强制vacuumlo在连接到数据库之前提示要求一个口令。

这个选项不是不可缺少的,因为如果服务器要求口令认证,vacuumlo会自动提示要求一个口令。但是,vacuumlo将会浪费一次连接尝试来了解到服务器需要口令。在某些情况,值得用-W来避免这种额外的连接尝试。

说明

vacuumlo按照下列方法工作:首先vacuumlo建立一个临时表,其中包含所选择数据库中所有大对象的OID。然后它会扫描数据库中所有类型为oidlo的列,并且从临时表中移除在这些列中出现过的OID(注意:只有类型为这些名字的才被考虑,特别的,在这些类型之上的域是不被考虑的)。临时表中剩下的项就标识了鼓励LO。它们将被移除。

作者

Peter Mount