标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-01595 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,750)
- DB2 (22)
- MySQL (76)
- Oracle (1,595)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (162)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (68)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (585)
- Oracle安装升级 (96)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (84)
- PostgreSQL (30)
- pdu工具 (6)
- PostgreSQL恢复 (9)
- SQL Server (30)
- SQL Server恢复 (11)
- TimesTen (7)
- 达梦数据库 (2)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (38)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (21)
-
最近发表
- 11.2.0.4库中遇到ORA-600 kcratr_nab_less_than_odr报错
- [MY-013183] [InnoDB] Assertion failure故障处理
- Oracle 19c 202504补丁(RUs+OJVM)-19.27
- Oracle Recovery Tools修复ORA-600 6101/kdxlin:psno out of range故障
- pdu完美支持金仓数据库恢复(KingbaseES)
- 虚拟机故障引起ORA-00310 ORA-00334故障处理
- pg创建gbk字符集库
- PostgreSQL运行日志管理
- ora-600 kdsgrp1 错误描述
- GAM、SGAM 或 PFS 页上存在页错误处理
- ORA-600 krhpfh_03-1208
- VMware勒索加密恢复(vmdk勒索恢复)
- ORA-39773: parse of metadata stream failed故障处理
- sql数据库备份失败—失败: 23(数据错误(循环冗余检查)
- vmdk文件被加密恢复(虚拟机文件加密)
- 差点被误操作的ORA-600 kcratr_nab_less_than_odr故障
- win平台19c 打patch遭遇2个小问题汇总
- pg单个数据库目录恢复-pdu恢复单个数据库目录数据
- pg删除数据恢复—pdu恢复pg delete数据
- .[OnlyBuy@cyberfear.com].REVRAC勒索mysql恢复
分类目录归档:PostgreSQL
pdu完美支持金仓数据库恢复(KingbaseES)
最近朋友对pdu进行了一些完善,让其可以比较好的支持电科金仓数据库(KingbaseES)的v8/v9版本
使用pdu直接unload数据
[kingbase@xifenfei ~]$ isql -Usystem test Password for user system: isql (V9.0) Licesen Type: SALES-企业版. Type "help" for help. test=# select version(); version ------------------------- KingbaseES V009R002C010 (1 row) test=# \dt List of relations Schema | Name | Type | Owner --------+-------+-------+-------- public | t_xff | table | system (1 row) test=# drop table walminer_contents; DROP TABLE test=# select * from t_xff; id | name ----+------------------ 1 | 汉字 2 | xff测试 3 | 惜分飞测试 4 | www.xifenfei.com (4 rows) test=# insert into t_xff values(5,'www.xifenfie.com test'# www.orasos.com'); INSERT 0 1 test=# select * from t_xff; id | name ----+------------------ 1 | 汉字 2 | xff测试 3 | 惜分飞测试 4 | www.xifenfei.com 5 | www.xifenfie.com+ | www.orasos.com (5 rows) test=# checkpoint; CHECKPOINT
pdu直接unload恢复
test.public=# b; 开始初始化... -pg_database:</data/kingbase/v9/data/global/1262> 数据库:test -pg_schema:</data/kingbase/v9/data/base/13856/2615> -pg_class:</data/kingbase/v9/data/base/13856/1259> 共132行 -pg_attribute:</data/kingbase/v9/data/base/13856/1249> 共8863行 模式: -->public 1张表 数据库:kingbase -pg_schema:</data/kingbase/v9/data/base/13857/2615> -pg_class:</data/kingbase/v9/data/base/13857/1259> 共131行 -pg_attribute:</data/kingbase/v9/data/base/13857/1249> 共8855行 模式: -->public 0张表 PDU.public=# use test; |----------------------------------------| | 模式 | 表数量 | |----------------------------------------| | public | 1 | |----------------------------------------| test.public=# set public; |--------------------------------------------------| | 表名 | 表大小 | |--------------------------------------------------| | t_xff | 8.00 KB | |--------------------------------------------------| 仅显示表大小排名前 1 的表名 test.public=# param exmode sql; ------------------------------------------------------------------- | 参数 | 当前值 | ------------------------------------------------------------------- | startwal | | | endwal | | | starttime | | | endtime | | | resmode(Data Restore Mode) | TX | | exmode(Data Export Mode) | SQL | ------------------------------------------------------------------ test.public=# unload tab t_xff; 正在解析表 <t_xff>. 已解析数据页: 1, 已解析数据: 5 条 表名<t_xff>-</data/kingbase/v9/data/base/13856/16384> 解析完成, 1 个数据页 ,共计 5 条数据. 成功 5 条; 失败 0 条 COPY文件路径为:<test/public/t_xff.sql> test.public=# unload ddl; DDL导出完成. 文件路径: test/DDL/public_ddl.sql, 共计 1 张表
查看恢复结果,证明可以完美恢复金仓中表的数据
[root@xifenfei pdu]# cat test/public/t_xff.sql INSERT INTO t_xff VALUES(1,'汉字'); INSERT INTO t_xff VALUES(2,'xff测试'); INSERT INTO t_xff VALUES(3,'惜分飞测试'); INSERT INTO t_xff VALUES(4,'www.xifenfei.com'); INSERT INTO t_xff VALUES(5,'www.xifenfie.com www.orasos.com'); [root@xifenfei pdu]# cat test/DDL/public_ddl.sql CREATE SCHEMA public; set search_path to public; CREATE TABLE t_xff( id int, name varchar );
pdu恢复金仓数据库delete数据
删除数据尝试恢复
test=# delete from t_xff where id in(4,2); DELETE 2 test=# checkpoint; CHECKPOINT test=# select * from t_xff; id | name ----+------------------ 1 | 汉字 3 | 惜分飞测试 5 | www.xifenfie.com+ | www.orasos.com (3 rows)
使用pdu恢复被删除数据
PDU.public=# use test; |----------------------------------------| | 模式 | 表数量 | |----------------------------------------| | public | 1 | |----------------------------------------| test.public=# set public; |--------------------------------------------------| | 表名 | 表大小 | |--------------------------------------------------| | t_xff | 8.00 KB | |--------------------------------------------------| 仅显示表大小排名前 1 的表名 test.public=# scan t_xff; 正在扫描表<t_xff>的删除记录... 开始扫描归档目录 |-起始文件<000000010000000000000005> |-终点文件<000000010000000000000009> 正在扫描中 ------------------------------------------------------------------- 当前为 事务号恢复 模式,扫描结果将以 事务号 为单位进行输出 --------------------------------------------------------------------- 读取到最后的日志段: 0/504EC68: 扫描结束,当前扫描的时间段为 |-开始时间:2025-04-06 19:13:15.280234 CST |-结束时间:2025-04-08 01:45:59.493354 CST --------------------------------------------------------------------------------------------------------- 时间戳:2025-04-08 01:45:59.493354 CST | 事务号:1120 | 数据文件oid:16384 | toast文件oid:0 |待恢复条数:2 --------------------------------------------------------------------------------------------------------- test.public=# restore del 1120; 开始扫描归档目录 |-起始文件<000000010000000000000005> |-终点文件<000000010000000000000009> 正在扫描中 读取到最后的日志段: 0/504EC68: |-已解析出2条数据读取到最后的日志段: 0/504EC68: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 解析结果:成功 2, 失败 0 (即对应FPW未找到), 共计2条数据 恢复出的csv文件路径为<restore/public/t_xff_1120.csv> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 扫描结束,当前扫描的时间段为 |-开始时间:2025-04-06 19:13:15.280234 CST |-结束时间:2025-04-08 01:45:59.493354 CST restore完成 test.public=# exit; [root@xifenfei pdu]# cat restore/public/t_xff_1120.csv 2 xff测试 4 www.xifenfei.com
通过上述测试,证明pdu工具可以完美的恢复金仓中刚刚被删除的delete数据.
pg创建gbk字符集库
记录下,Postgres库创建中文字符集
postgres=# CREATE DATABASE mydb_gbk postgres-# ENCODING 'EUC_CN' postgres-# LC_COLLATE 'zh_CN' postgres-# LC_CTYPE 'zh_CN' postgres-# TEMPLATE template0; CREATE DATABASE postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges -----------+----------+----------+-------------+-------------+------------+-----------------+----------------------- mydb_gbk | postgres | EUC_CN | zh_CN | zh_CN | | libc | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | libc | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | libc | =c/postgres + | | | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | libc | =c/postgres + | | | | | | | postgres=CTc/postgres (4 rows)
前提系统必须支持zh_CN语言包,检查命令为:
[root@xifenfei yum.repos.d]# locale -a |grep zh_CN zh_CN zh_CN.gb18030 zh_CN.gbk zh_CN.utf8
如果没有使用yum以下命令安装
yum groupinstall "fonts" yum install glibc-langpack-zh.x86_64
PostgreSQL运行日志管理
PostgreSQL目前配置中,不直接记录日志文件,这样的情况给数据库后期出现问题(特别是无法正常启动的情况)分析带来很大麻烦,不知道具体问题所在,建议在PG安装完成之后,启用日志功能,便于数据库运行状态检查和错误跟踪,主要日志参数涉及以下配置
log_destination = 'stderr' # Valid values are combinations of # stderr, csvlog, jsonlog, syslog, and # eventlog, depending on platform. # csvlog and jsonlog require # logging_collector to be on. # This is used when logging to stderr: logging_collector = on # Enable capturing of stderr, jsonlog, # and csvlog into log files. Required # to be on for csvlogs and jsonlogs. # (change requires restart) //是否将日志重定向至文件中,默认是off。 # These are only used if logging_collector is on: log_directory = 'pg_log' # directory where log files are written, # can be absolute or relative to PGDATA //日志文件目录,默认是PGDATA的相对路径,即PGDATA的相对路径,即{PGDATA}/pg_log,也可以改为绝对路径。 //日志文件可能会非常多,建议将日志重定向到其他目录或分区。 //将此配置修改其他目录时,必须先创建此目录,并修改权限,使得postgres用户对该目录有写权限。 log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern, # can include strftime() escapes log_file_mode = 0600 # creation mode for log files, # begin with 0 to use octal notation log_rotation_age = 1d # Automatic rotation of logfiles will # happen after that time. 0 disables. log_rotation_size = 10MB # Automatic rotation of logfiles will # happen after that much log output. # 0 disables. #log_truncate_on_rotation = off # If on, an existing log file with the # same name as the new log file will be # truncated rather than appended to. # But such truncation only occurs on # time-driven rotation, not on restarts # or size-driven rotation. Default is # off, meaning append to existing files # in all cases. //当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。
上述配置得到的结果如下
[postgres@xifenfei pg_log]$ pwd /data/pg/15/data/pg_log [postgres@xifenfei pg_log]$ ls -l total 4 -rw------- 1 postgres postgres 1263 Apr 3 22:37 postgresql-2025-04-03_223117.log