分类目录归档:数据库

pg_control丢失/损坏处理

-l :设置下一个wal日志名
可以通过 $PGDATA/pg_wal 目录中查找数值最新的WAL段的文件名+1

[postgres@localhost pg_wal]$ ls
00000001000000000000008E  archive_status

-l 00000001000000000000008F

-m:设置下一个和最旧的事务ID
mxid1:下一个多事务ID的安全值可以通过在 $PGDATA/pg_multixact/offsets目录中查找数值最大的文件名+1,然后乘以65536(0×10000)来确定。
mxid2:最旧的事务ID的安全值可以通过$PGDATA/pg_multixact/offsets目录中数字最小的文件名+1,乘以65536(0×10000)来确定。文件名是十六进制

[postgres@localhost pg_wal]$ cd ../pg_multixact
[postgres@localhost pg_multixact]$ ls
members  offsets
[postgres@localhost pg_multixact]$ cd offsets/
[postgres@localhost offsets]$ ls
0000

-m 0x10000,0x10000

-O:设置下一个多事务处理偏移量
安全值可以通过在 $PGDATA/pg_multixact/members 目录中查找数值最大的文件名,+1,然后乘以52352(0xCC80)来确定。文件名为十六进制

[postgres@localhost members]$ ls
0000

-O 0xCC80

-x:设置下一个事务ID
安全值可以通过在$PGDATA/pg_xact目录中查找数值最大的文件名,+1,然后乘以1048576(0×100000)来确定。请注意,文件名是十六进制

[postgres@localhost pg_xact]$ ls -ltr
total 504
-rw------- 1 postgres postgres 262144 Mar  8 01:53 0000
-rw------- 1 postgres postgres 253952 Mar  9 10:54 0001

-x 0x200000

删除postmaster.pid文件
如果正常关闭库,该文件会被自动删除,异常关闭的才需要处理

[postgres@localhost pg_wal]$ pg_resetwal -l 00000001000000000000008F -m 0x10000,0x10000 -O 0xCC80 -x 0x200000 -f $PGDATA
pg_resetwal: error: lock file "postmaster.pid" exists
pg_resetwal: hint: Is a server running?  If not, delete the lock file and try again.
[postgres@localhost pg_wal]$ cd ../
[postgres@localhost data]$ ls -l postmaster.pid
-rw------- 1 postgres postgres 75 Mar  9 11:02 postmaster.pid
[postgres@localhost data]$ rm -rf postmaster.pid

touch pg_control文件

[postgres@localhost data]$ pg_resetwal -l 00000001000000000000008F -m 0x10000,0x10000 -O 0xCC80 -x 0x200000 -f $PGDATA
pg_resetwal: error: could not open file "global/pg_control" for reading: No such file or directory
pg_resetwal: hint: If you are sure the data directory path is correct, execute
  touch global/pg_control
and try again.
[postgres@localhost data]$ touch global/pg_control

重建pg_control

[postgres@localhost data]$ pg_resetwal -l 00000001000000000000008F -m 0x10000,0x10000 -O 0xCC80 -x 0x200000 -f $PGDATA
pg_resetwal: warning: pg_control exists but is broken or wrong version; ignoring it
Write-ahead log reset
[postgres@localhost data]$ pg_ctl start
waiting for server to start....
 done
server started
发表在 PostgreSQL恢复 | 标签为 , , | 留下评论

当前主流数据库版本服务支持周期-202503

在最新的”当前数据库版本的发行时间表 (Doc ID 1626244.1)”文档中,oracle官方更新的数据库产品的支持周期,最重要的一点就是oracle 19c标准服务延期到2029年12月31日
DBROADMAP12-2-2024

版本 补丁结束日期 注意和例外
 23ai

Long Term Release

Premier Support – 2032年12月31日

Extended Support - 时间待定

  • 由于此次发布中突破性人工智能技术的重要性,我们将其从 Oracle 数据库 23c 重新命名为 Oracle 数据库 23ai
  • 现在可在云上、Oracle Exadata 和 Oracle Database Appliance 中使用。请参阅下方的 Oracle 数据库日程表中的详细信息
  • Premier Support将于 2031 年 12 月 31 日结束
  • 通过扩展支持或者ULA进行错误修正/补丁的截止日期待定
21c

Innovation Release

 2027年7月31日
  • 错误更正/补丁 有效期至2027年7月31日
  • 21c没有资格申请 Extended Support(ES)
  • 21c只提供 Release Updates (RUs) 补丁
  • 21c不适用于Exadata Database Service

 

19c

Long Term Release

2029年12月31日,没有ES/ULA

2032年12月31日,有ES/ULA

 

  • Premier Support(PS)将于2029年12月31日结束。扩展支持(ES)将从2030年1月1日持续到2032年12月31日。
  • 错误更正/补丁,付费的ES可到2032年12月31日;没有付费的ES,有效期到2029年12月31日
  • 从 2022 年 10 月的补丁周期开始,19.17.0 及更高版本将不再提供 19c RUR。在 2023 年 1 月交付 Oracle Database 19c RUR 19.16.2 之后,不会在任何平台上交付额外的 RUR。更多细节请参考文档 Sunsetting of 19c RURs and FAQ (Doc ID 2898381.1))
  • 为了让客户更频繁地访问推荐和经过良好测试的补丁集合,Oracle 从 2022 年 11 月开始推出 Monthly Recommended Patches (MRP)。 MRP 仅支持 Linux x86-64 平台。(更多细节请参考文档 Introducing Monthly Recommended Patches (MRPs) and FAQ (Doc ID 2898740.1))
18c

Innovation Release

 

2021年6月30日
  • 错误更正/补丁 有效期至2021年6月30日,18c已进入 Sustaining Support 阶段。
  • 18c没有资格申请 Extended Support(ES)
  • 18c 在 Exadata Database Service、Base Database Service 或 Exadata Cloud@Customer 上不受支持。
12.2.0.1

 

2022年3月31日

Upgrade Support (Restricted Availability) Jan 1, 2024- Dec 31, 2025 - 具体请联系 CSS

  • 这个版本的错误更正/补丁已经结束
  • 12.2.0.1 没有资格申请 Extended Support(ES)
  • 在 Exadata Database Service、Base Database Service 或 Exadata Cloud@Customer 上运行 12.2.0.1 需要购买 Upgrade Support (Restricted Availability)(旧称MDS) 服务
12.1.0.2

最终版本

2022年7月31日,有付费的ES, ULA, 或者减免费用的 EBS

Dec 31, 2025 (Upgrade Support (Restricted Availability)- 具体请联系 CSS)

  • 这个版本的错误更正/补丁已经结束
  • Premier Support(PS)截止至2018年7月31日,为期一年的免费 Extended Support(ES)有效期至2019年7月31日
  • 从 2019年8月1日 至 2022年7月31日,需要ES费用或ULA. 没有付费的 ES or ULA, 补丁截止于 2019年7月31日
  • 我们为电子商务客户提供全球ES uplift 费用减免,详情和到期日期见: Extended Support Fee Waiver for Oracle Database 12.1 and 11.2 for Oracle E-Business Suite (Doc ID 2522948.1) 或技术支持政策文件
  • Apple Macintosh 平台 补丁结束日期为2021年7月31日 
  • 微软Windows平台: 对于 12.1.0.2 Database, Oracle 在 Microsoft Windows 2008 上运行 12.1.0.2 Database。 这个平台的 end-of-life support 是 January 14, 2020。 甲骨文做出了合理的努力,在2022年7月之前为Windows上的数据库12.1.0.2提供补丁,但这种支持已经过期。
  • 在 Exadata Database Service、Base Database Service 或 Exadata Cloud@Customer 上运行 12.1.0.2 需要购买 Upgrade Support (Restricted Availability)(旧称MDS) 服务
12.1.0.1 2016年8月31日
  • 这个版本的错误更正/补丁已经结束
  • 12.1.0.1 没有资格申请 Extended Support (ES)
  • 12.1.0.1 是 Standard Edition (SE) 和 Standard Edition One (SE1) 的最后一个版本
11.2.0.4

最终版本 for 11.2

  • 2020年12月31日(有偿扩展支持 或 ULA扩展支持 或 减免费用的EBS)
  • 2025年12月31日(Upgrade Support (Restricted Availability) - 具体请联系 CSS)
  • 2021年12月31日 适用于OpenVMS平台

 

  • Premier Support (PS)截止到2015年1月31日,而为期一年的免费Extended Support(ES)持续到2018年12月31日。
  • 从2019年1月1日开始到2020年12月31日,将需要ES费用或ULA。
  • Oracle为电子商务客户提供全球ES uplift 费用减免,详情和到期日期见: Extended Support Fee Waiver for Oracle Database 12.1 and 11.2 for Oracle E-Business Suite (Doc ID 2522948.1) 或技术支持政策文件。
  • 第1代 ExaCC, OCC DBCS, and ODA 将拥有额外3个月的支持周期. 这些平台上的数据库的支持周期截止到: 2021年3月31日。可以创建新实例,直到扩展支持终止为止。但是,Oracle不承诺在支持终止后任何11.2.0.4 DBCS实例将继续运行。
  • 市场驱动支持(Market Driven Support)提供以下数据库云服务:第1代和第2代ExaCC,OCC DBCS,OCI DBCS,OCI ExaCS。 直到市场驱动支持终止(2021年12月31日),可以创建新实例。 Oracle不承诺在Upgrade Support(旧称MDS)支持终止后任何11.2.0.4 DBCS实例将继续运行。 市场驱动支持不适用于PSM-based OCI DBCS,OCI-C DBCS和OCI-C ExaCS。
  • 在 Exadata Database Service、Base Database Service 或 Exadata Cloud@Customer 上运行 11.2.0.4 需要购买 Upgrade Support (Restricted Availability)(旧称MDS) 服务
  • 11.2.0.4是OpenVMS上的最终版本。 在2021日历年中,除了标准的专业支持费用之外无需其他费用,客户能够收到重要度1的修复程序和安全更新。涵盖范围不包括新认证,第三方产品或任何Java/JDK功能(包括数据库中嵌入的Java组件)。涵盖范围还不包括与加密和网络加密有关的任何更新。 此供应不包括标准的安全补丁更新(SPU)。

 


发表在 Oracle | 留下评论

pg启动报invalid checkpoint record处理

pg库启动报PANIC: could not locate a valid checkpoint record错误

2025-03-09 10:59:10.365 EDT [73013] LOG:  starting PostgreSQL 16.8 on x86_64-pc-linux-gnu, 
                                          compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit
2025-03-09 10:59:10.365 EDT [73013] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2025-03-09 10:59:10.365 EDT [73013] LOG:  listening on IPv6 address "::", port 5432
2025-03-09 10:59:10.367 EDT [73013] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2025-03-09 10:59:10.401 EDT [73018] LOG:  database system was interrupted; last known up at 2025-03-09 10:54:43 EDT
2025-03-09 10:59:11.506 EDT [73018] LOG:  invalid checkpoint record
2025-03-09 10:59:11.508 EDT [73018] PANIC:  could not locate a valid checkpoint record
2025-03-09 10:59:12.004 EDT [73013] LOG:  startup process (PID 73018) was terminated by signal 6: Aborted
2025-03-09 10:59:12.004 EDT [73013] LOG:  aborting startup due to startup process failure
2025-03-09 10:59:12.006 EDT [73013] LOG:  database system is shut down

从报错信息中看,是有无法读取到有效的checkpoint记录导致,初步怀疑是wal异常,检查pg_wal目录,发现wal日志为空

[root@localhost pg_wal]# ls -ltr
total 16388
drwx------  2 postgres postgres        6 Mar  6 08:10 archive_status
[root@localhost pg_wal]# 

进一步检查系统操作命令rm删除wal日志命令

cd pg_wal
rm -rf 0000000*

初步确认是由于wal日志被意外删除导致pg库无法启动,尝试重置wal,由于库不是干净关闭,无法直接重置成功

[postgres@localhost log]$ pg_resetwal $PGDATA
The database server was not shut down cleanly.
Resetting the write-ahead log might cause data to be lost.
If you want to proceed anyway, use -f to force reset.

使用pg_resetwal -f强制重置

[postgres@localhost log]$ pg_resetwal -f $PGDATA
Write-ahead log reset

尝试启动pg库成功

[postgres@localhost log]$ pg_ctl start 
waiting for server to start....2025-03-09 11:02:02.609 EDT [73088] LOG:  
redirecting log output to logging collector process
2025-03-09 11:02:02.609 EDT [73088] HINT:  Future log output will appear in directory "log".
 done
server started
2025-03-09 11:02:02.609 EDT [73088] LOG:  starting PostgreSQL 16.8 on x86_64-pc-linux-gnu, 
                                          compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit
2025-03-09 11:02:02.609 EDT [73088] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2025-03-09 11:02:02.609 EDT [73088] LOG:  listening on IPv6 address "::", port 5432
2025-03-09 11:02:02.610 EDT [73088] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2025-03-09 11:02:02.645 EDT [73092] LOG:  database system was shut down at 2025-03-09 11:01:53 EDT
2025-03-09 11:02:02.650 EDT [73088] LOG:  database system is ready to accept connections
发表在 PostgreSQL恢复 | 标签为 , | 留下评论