从PG12开始,可以对系统表执行修改操作

0    591    1

Tags:

👉 本文共约4892个字,系统预计阅读时间或需19分钟。

在PG12中可以对system table进行alter table操作

前提:postgresql.conf设置allow_system_table_mods=on,然后再启动PG instance

注意:allow_system_table_mods的默认值为off,不建议修改为on,除非用于数据库损坏等的某些异常恢复场景中,详情请见https://www.postgresql.org/docs/12/runtime-config-developer.html

开发者选项

下面的参数目的是用在PostgreSQL源代码上, 并且在某些情况下可以帮助恢复严重损坏了的数据库。在一个生产数据库中没有理由使用它们。同样,它们被从例子postgresql.conf文件中排除。请注意许多这些参数要求特殊的源代码编译标志才能工作。

  • allow_system_table_mods (boolean)

    允许对系统表结构的修改,以及对系统表的某些其他危险操作。这是不允许的,即使是对超级用户。 不理智地使用此设置可能导致无法恢复的数据丢失或严重损坏数据库系统。只有超级用户才能更改此设置

  • backtrace_functions (string)

    这个参数包含一个以逗号分隔的C函数名称列表。 如果出现错误,并且发生错误的内部C函数的名称与列表中的值相匹配,那么将向服务器日志中写入一个回溯跟踪信息和错误消息。 这可以用来调试源代码的特定区域。回溯支持并非在所有平台上都可以使用,并且回溯的质量取决于编译选项。该参数只能由超级用户设置。

  • ignore_system_indexes (boolean)

    读取系统表时忽略系统索引(但是修改系统表时依然同时更新索引)。这在从被破坏的系统索引中恢复数据的时有用。这个参数在会话开始之后不能被更改。

  • post_auth_delay (integer)

    执行身份验证过程后启动新服务器进程时延迟的时间量。这是为了给开发者们一个机会在一个服务器进程上附加一个调试器。 如果指定值时没有单位,则以秒为单位。0值(默认值)禁用延迟。这个参数在会话开始之后不能被更改。

  • pre_auth_delay (integer)

    在新服务器进程分叉后,在进行身份验证过程之前,延迟的时间量。这是为了给开发者们一个机会在一个服务器进程上附加一个调试器来跟踪认证过程中的不当行为。 如果指定值时没有单位,则以秒为单位。0值(默认值)禁用延迟。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。

  • trace_notify (boolean)

    LISTENNOTIFY命令生成大量调试输出。client_min_messageslog_min_messages必须是DEBUG1或者更低才能把这种输出分别发送到客户端或者服务器日志。

  • trace_recovery_messages (enum)

    启用记录与恢复有关的调试输出,否则无法记录。这个参数允许用户覆盖log_min_messages的正常设置,但只用于指定的消息。这个参数的目的是用来调试热后备。有效值包括DEBUG5DEBUG4DEBUG3DEBUG2DEBUG1LOG。默认值LOG完全不会影响日志决定。其他值会记录相关级别或更高级别的与恢复相关的调试消息,就好像它们具有LOG优先级一样;对于log_min_messages的通用设置,这会无条件的将消息发送给服务器日志。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。

  • trace_sort (boolean)

    如果打开,发出在排序操作中的资源使用的相关信息。只有在编译PostgreSQL时定义了TRACE_SORT宏, 这个参数才可用(不过,当前在默认情况下就定义了TRACE_SORT)。

  • trace_locks (boolean)

    如果开启,发出锁使用情况的信息。被转储信息中包括锁操作的类型、锁的类型和 被锁或被解锁对象的唯一标识符。同样包括的还有已经授予这个对象的锁类型的位掩码和 等待这个对象的锁类型的位掩码。对每一种锁类型,已授权锁和等待锁的计数也会被一起转储。一个日志文件输出的例子如下:LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1 wait(0) type(AccessShareLock) LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(INVALID) 被转储结构的详细信息可以在src/include/storage/lock.h中找到。只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。

  • trace_lwlocks (boolean)

    如果开启,发出轻量级锁的使用信息。轻量级锁主要是为了提供对共享内存数据结构的互斥访问。只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。

  • trace_userlocks (boolean)

    如果开启,发出关于用户锁使用的信息。与trace_locks的输出一样,但只用于咨询锁。只有在编译PostgreSQL时定义了LOCK_DEBUG宏, 这个参数才可用。

  • trace_lock_oidmin (integer)

    本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
    AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
    验证码:
    获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复