AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[upgrade](dba)

Martin Hope
Chris Douglas
Asked: 2022-01-19 03:41:23 +0800 CST

将 PostgreSQL 从 9.x/10.x 升级到 13.x 的潜在陷阱?

  • 1

我从前任那里继承了大量 Debian 9 系统,我们现在正在考虑升级到 Debian 11。其中大多数运行 PostgreSQL 9 或 10,从 Postgres 自己的存储库安装,其余的几乎支持 9 .x 系统。显然,我们将更新所有内容作为系统升级的一部分,包括 PostgreSQL 本身。我们可能仍会使用 Postgres 自己的存储库而不是 Debian 存储库,但仅出于软件成熟度的原因使用 13 超过 14,我相信无论如何 Debian 11 都带有。

我的问题是:这么大的跳跃可能会带来问题吗?使用此设置从 Debian 9 升级到 10 再到 11(根据官方建议),最后是否仍然有一个可访问的数据库,而无需转储和重新导入?我知道我可能不得不apt install postgres-13在这条链上的某个时间点做一个apt remove postgres-9; 完成后数据会保持存在还是我需要在开始时转储数据,进行所有升级,然后在最后重新导入?

postgresql upgrade
  • 1 个回答
  • 47 Views
Martin Hope
Tombart
Asked: 2022-01-16 11:16:06 +0800 CST

升级到 PostgreSQL 13 失败

  • 1

我正在尝试使用以下脚本将 PostgreSQL 12 集群升级到版本 13:

/usr/lib/postgresql/13/bin/pg_upgrade --check \
 --old-datadir=/var/lib/postgresql/12/main \
 --new-datadir=/var/lib/postgresql/13/main \
 --old-bindir=/usr/lib/postgresql/12/bin \
 --new-bindir=/usr/lib/postgresql/13/bin \
 --old-options=' -c config_file=/etc/postgresql/12/main/postgresql.conf' \
 --new-options=' -c config_file=/etc/postgresql/13/main/postgresql.conf' \
 --old-port=5432 \
 --new-port=5433

支票返回:

*Clusters are compatible*

然而,在实际升级过程中,由于pg_catalog.pg_pltemplate表:

pg_restore: creating ACL "pg_catalog.TABLE "pg_pltemplate""
pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 17728; 0 0 ACL TABLE "pg_pltemplate" postgres
pg_restore: error: could not execute query: ERROR:  relation "pg_catalog.pg_pltemplate" does not exist

这似乎是一个老问题,但是升级脚本不会检查这些模板。

到目前为止,这个查询似乎应该返回一个空结果,否则你会遇到麻烦:

$ psql -c "SELECT * FROM information_schema.role_table_grants WHERE table_name='pg_pltemplate';"
 grantor  | grantee  | table_catalog | table_schema |  table_name   | privilege_type | is_grantable | with_hierarchy 
----------+----------+---------------+--------------+---------------+----------------+--------------+----------------
 postgres | postgres | postgres      | pg_catalog   | pg_pltemplate | TRIGGER        | YES          | NO
 postgres | postgres | postgres      | pg_catalog   | pg_pltemplate | REFERENCES     | YES          | NO
 postgres | postgres | postgres      | pg_catalog   | pg_pltemplate | TRUNCATE       | YES          | NO
 postgres | postgres | postgres      | pg_catalog   | pg_pltemplate | DELETE         | YES          | NO
 postgres | postgres | postgres      | pg_catalog   | pg_pltemplate | UPDATE         | YES          | NO
 postgres | postgres | postgres      | pg_catalog   | pg_pltemplate | SELECT         | YES          | YES
 postgres | postgres | postgres      | pg_catalog   | pg_pltemplate | INSERT         | YES          | NO
 postgres | PUBLIC   | postgres      | pg_catalog   | pg_pltemplate | SELECT         | NO           | YES

撤销这些特权:

REVOKE SELECT ON "pg_catalog"."pg_pltemplate" FROM PUBLIC;
REVOKE ALL ON "pg_catalog"."pg_pltemplate" FROM postgres;

REVOKE由于语句被保存到架构中,因此并没有真正的帮助:

pg_restore: error: could not execute query: ERROR:  relation "pg_catalog.pg_pltemplate" does not exist
Command was: REVOKE ALL ON TABLE "pg_catalog"."pg_pltemplate" FROM "postgres";
REVOKE SELECT ON TABLE "pg_catalog"."pg_pltemplate" FROM PUBLIC;

可以使用以下方法检查(结果也应该为空):

pg_dump --port 5432 --schema-only --quote-all-identifiers | grep pg_pltemplate

在执行升级之前。

任何想法如何完全摆脱pg_catalog.pg_pltemplate桌子?

postgresql upgrade
  • 1 个回答
  • 373 Views
Martin Hope
agrajag_42
Asked: 2021-12-01 03:59:20 +0800 CST

CockroachDB 升级未完成

  • 0

我正在运行一个三节点 CockroachDB docker 集群(Debian OS),我最近按照文档中概述的过程使用选项将集群从版本 v21.1 升级到版本 v21.2

SET CLUSTER SETTING cluster.preserve_downgrade_option = '21.1';

然后我一次重新启动每个节点的容器,当没有出现问题时,我运行

RESET CLUSTER SETTING cluster.preserve_downgrade_option;

现在所有三个节点都运行相同的版本,并且cluster.preserve_downgrade_option设置为空字符串。尽管如此,即使从那时起已经过去了几个小时,当我尝试创建一个具有 21.2 版本中包含的功能的表时

create table randdb.public.randtable
(
    name_surname varchar(30),
    update_tim TIMESTAMPTZ DEFAULT now() ON UPDATE now(),
    PRIMARY KEY (name_surname)
)

我收到错误消息

SQL Error [0A000]: ERROR: version 21.1-1152 must be finalized to use ON UPDATE

除此之外,集群似乎功能齐全。任何想法出了什么问题?

upgrade docker
  • 1 个回答
  • 42 Views
Martin Hope
Jesús Reyes Landeros
Asked: 2021-10-30 10:37:20 +0800 CST

PostgreSQL 8 到 13 的弃用功能列表

  • 1

我打算将几个 PostgreSQL 8 数据库升级到版本 13。我为之工作的人来自 SQL Server。我一直在寻找类似于“DMA”的工具,特别是列出已弃用功能和“重大更改”的部分。他们想要一份报告来估计时间。他们喜欢报道。Docx 和 xlsx 无处不在。

postgresql upgrade
  • 1 个回答
  • 465 Views
Martin Hope
knaperek
Asked: 2021-09-25 08:04:43 +0800 CST

升级到 Postgres 13 时函数引用不兼容

  • 0

我想将 CloudSQL (GCP) 上的 Postgres 9.6 数据库升级到版本 13。由于 SQL 导出/导入是唯一受支持的升级路径,我已导出 PG9.6 数据库并尝试将其导入新的 PG13 实例。

导入失败,但出现以下错误:

ERROR: function public.pg_stat_statements_reset() does not exist

我认为它是由转储中的以下行触发的:

GRANT ALL ON FUNCTION public.pg_stat_statements_reset() TO somerandomuser;

当我尝试在新的 PG13 实例上手动执行该单行时,我也遇到了错误。同样的情况也发生在 PG12 上。

不过在 PG11 上,它工作正常。

我已确保pg_stat_statements在所有经过测试的数据库实例中都安装了该扩展:

SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements' and installed_version is not null;

        name        | default_version | installed_version |                                comment                                 
--------------------+-----------------+-------------------+------------------------------------------------------------------------
 pg_stat_statements | 1.8             | 1.8               | track planning and execution statistics of all SQL statements executed
(1 row)

我找不到任何有关影响此的重大更改的文档。关于它为什么不起作用的任何想法?

postgresql upgrade
  • 1 个回答
  • 325 Views
Martin Hope
sazary
Asked: 2021-03-31 09:57:51 +0800 CST

为什么 Postgresql 集群的数据目录中的某些文件是指向另一个集群的文件的符号链接?

  • 0

我确实使用了pg_upgrade.

我的机器上有一个版本为 9.6 的 Postgresql 集群,然后我确实启动了另一个版本为 v12 的集群。他们每个人都有单独的数据目录,在这样的目录方案中:

./postgresql/
├── 12
│   └── main
└── 9.6
    └── main

然后我关闭了 9.6 集群并开始使用 v12 集群。但是现在,偶然发现basev12集群目录中的一些文件不是文件,而是base9.6目录下文件的符号链接;例如:

./postgresql/12/main/base/16401/35093 -> ./postgresql/9.6/main/base/16402/35093

为什么会这样?而且,更重要的是,这是怎么回事?!我的意思是,我认为base目录内的文件对于每个数据库来说是如此内部,以至于这根本不可能。

而且,我可以做些什么来禁用符号链接吗?

postgresql upgrade
  • 1 个回答
  • 161 Views
Martin Hope
Gandon Jank
Asked: 2020-12-09 14:09:14 +0800 CST

无法安装任何 DB2 LUW 10.5 修订包

  • 1

我目前正在使用 Fixpack 1 并正在尝试安装任何更新的修复包。他们都拒绝以类似的错误申请自己。下面的一个来自 Fixpack 2 文件v10.5fp2_ntx64_server。他们每个人都说他们无法升级我的版本,但他们都没有提供理由。

在此处输入图像描述

阅读安装规划链接后,遇到这个问题后我的大脑很痛:

DB2 必须安装在启用短名称的驱动器或没有空格的目录上,例如 E:\DB2\SQLLIB。要检查驱动器的当前 8.3 文件名设置,请在具有管理员权限的命令窗口中输入

fsutil.exe behavior query disable8dot3

运行命令时会返回以下可能值:

0: Create 8.3 short file names (default)
1: Do not create 8.3 file names
2: Set 8.3 file names on a per volume basis
3: Disable 8.3 file names on all volumes, except the system volume

NtfsDisable8dot3NameCreation 的注册表状态为 0,这意味着在所有卷上启用 8.3 文件名。要全局启用 8.3 文件名,请输入

fsutil.exe behavior set disable8dot3 0 

如果 DB2 安装在不支持 8.3 名称的驱动器和不带空格的目录中,则必须将它重新安装在支持 8.3 名称的驱动器上。如果在禁用 8.3 名称支持时已经创建了您尝试安装 DB2 的文件夹,那么如果您尝试重新安装到同一目录,则不会创建短名称。Windows 短名称是在目录创建期间创建的,因此您必须将其安装到新目录中,或者如果目录为空,请删除该目录并允许重新创建。

在我的系统上,设置为默认值 2,即“每卷”。我不确定这是否是修复包拒绝自行安装的原因。

这是否意味着 IBM 实质上将他们的客户置于一个死亡陷阱,允许 DB2 的初始安装将其放入C:\Program Files\,但拒绝在以后安装修订包?我不敢相信这是事实。任何 DB2 用完的人都可以C:\Program Files\解释我们应该如何升级吗?

更新:

通过运行,dir /x我发现层次结构中的所有目录从c:\下到上sqllib都有短名称。缺少它们不能成为拒绝安装更新的原因。

db2 upgrade
  • 3 个回答
  • 66 Views
Martin Hope
sharadov
Asked: 2020-12-03 14:11:44 +0800 CST

从 Postgres 9.5.5 到 Postgres 12.3 的 pg_upgrade 出错了

  • 0

我正在尝试使用 pg_upgrade 将数据库集群从 9.5.5 升级到 12.3。

我使用该--check选项运行它,结果返回“集群兼容”,但是当我使用该--clone选项运行它时,我收到以下错误。日志没有告诉我它在哪里失败。

relname: pg_catalog.pg_largeobject: reloid: 2613 reltblspace: 
relname: pg_catalog.pg_largeobject_loid_pn_index: reloid: 2683 reltblspace: 
executing: SELECT pg_catalog.set_config(‘search_path’, ‘’, false);
Checking for presence of required libraries         ok
could not clone file between old and new data directories: Operation not supported
postgresql upgrade
  • 1 个回答
  • 423 Views
Martin Hope
Jefferson B. Elias
Asked: 2020-11-20 22:51:28 +0800 CST

无法查询模式绑定视图的基础表

  • 8

我使用备份还原技术和一组传输后操作(如DBCC UPDATEUSAGEor )将数据库从 SQL Server 2008R2 迁移到 SQL Server 2019(企业版) UPDATE STATISTICS XXX。

在统计更新时,我收到以下错误:

Msg 402, Level 16, State 1, Procedure ZZZZ, Line 5 [Batch Start Line 0]
The data types datetime and time are incompatible in the add operator.
Msg 4413, Level 16, State 1, Line 1
Could not use view or function 'ZZZZ' because of binding errors.

我知道该消息非常明确(在 2008R2 上语法正确的视图在 2019 年不再存在)。我不明白为什么定义WITH SCHEMABINDING的无效视图会阻止更新基础表上的统计信息。

此外,在使用子句查询基础表时,我会收到相同的错误消息WHERE,除非我使用以下提示强制 FULLSCAN:

OPTION(TABLE HINT( $mytable, FORCESCAN ))

我知道如果对底层架构绑定对象进行 DDL 更改,SQL Server 会触发错误,但我不明白为什么,如果视图无效,则底层对象不能像往常一样使用。

我确定有一个解释(例如由于视图无效而无法处理模式绑定视图的保护机制),但我无法在文档中确定。

我跑了一个DBCC CHECKDB没有问题的。我将兼容级别更改为150。

sql-server upgrade
  • 2 个回答
  • 375 Views
Martin Hope
The Owl
Asked: 2020-11-01 10:47:15 +0800 CST

如果兼容性设置为 12.2.0,我们可以从 19c 降级到 12.1.0

  • 2

团队:

最近我将 12.1.0 数据库升级到 19c(非 CDB 架构)。当前兼容性设置为 12.2.0。我可以将其降级到早期版本 - 12.1.0 吗?文档说明降级是可能的,但不确定兼容性参数。

https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/downgrading-oracle-db-after-upgrade.html#GUID-59F92E2A-DC4D-46A3-9AC9-63F47BE4A86F

oracle upgrade
  • 3 个回答
  • 4927 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve