通过gdb推进修改oracle scn

19c和12c都支持gdb修改scn。

会话窗口1:

oracle@oracle \~$ export ORACLE_SID=jyc

oracle@oracle \~$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Oct 29 16:13:11 2025

Version 19.18.0.0.0

Copyright (c) 1982, 2022, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 6878657656 bytes

Fixed Size 9182328 bytes

Variable Size 3103784960 bytes

Database Buffers 3758096384 bytes

Redo Buffers 7593984 bytes

Database mounted.

Database opened.

SQL> select current_scn from v$database;--当前scn值

CURRENT_SCN


12011095

SQL> select to_char(12011095,'xxxxxxxxxxxx') from dual;

TO_CHAR(12011


b74657

SQL> show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED


2 PDB$SEED READ ONLY NO

3 PDB5 MOUNTED

4 PDB2 READ WRITE NO

5 PDB3 MOUNTED

6 PDB1 MOUNTED

8 PDB6 READ WRITE NO

SQL> select to_char(22011095,'xxxxxxxxxxxx') from dual; --最高位增加1位的值

TO_CHAR(22011


14fdcd7

SQL> oradebug setmypid

Statement processed.

SQL> oradebug dumpvar sga kcsgscn

kscn8 kcsgscn_ [060017E98, 060017EA0) = 00B77D4C 00000000

新开会话窗口2:通过gdb修改scn

Last login: Wed Oct 29 16:12:36 2025 from 192.168.88.46

root@oracle \~# su - oracle

Last login: Wed Oct 29 16:12:40 CST 2025 on pts/0

oracle@oracle \~$ ps -ef|grep LOCAL=YES

oracle 25297 25157 2 16:13 ? 00:00:02 oraclejyc (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 25998 25972 0 16:14 pts/1 00:00:00 grep --color=auto LOCAL=YES

oracle@oracle \~ gdb ORACLE_HOME/bin/oracle 25297

-bash: gdb: command not found

oracle@oracle \~$ exit

logout

root@oracle \~# yum install gdb -y

Loaded plugins: fastestmirror

Determining fastest mirrors

......

Transaction test succeeded

Running transaction

Installing : gdb-7.6.1-120.el7.x86_64 1/1

Verifying : gdb-7.6.1-120.el7.x86_64 1/1

Installed:

gdb.x86_64 0:7.6.1-120.el7

Complete!

root@oracle \~# su - oracle

Last login: Wed Oct 29 16:14:37 CST 2025 on pts/1

oracle@oracle \~$ ps -ef|grep LOCAL=YES

oracle 25297 25157 1 16:13 ? 00:00:02 oraclejyc (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 26142 26117 0 16:15 pts/1 00:00:00 grep --color=auto LOCAL=YES

oracle@oracle \~ gdb ORACLE_HOME/bin/oracle 25297

GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7

Copyright (C) 2013 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html\>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type "show copying"

and "show warranty" for details.

This GDB was configured as "x86_64-redhat-linux-gnu".

For bug reporting instructions, please see:

<http://www.gnu.org/software/gdb/bugs/\>...

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/bin/oracle...(no debugging symbols found)...done.

Attaching to program: /data/u01/app/oracle/product/19c/dbhome_1/bin/oracle, process 25297

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libodm19.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libodm19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libofs.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libofs.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libcell19.so...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libcell19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libskgxp19.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libskgxp19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libskjcx19.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libskjcx19.so

Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.

Loaded symbols for /lib64/librt.so.1

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libclsra19.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libclsra19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libdbcfg19.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libdbcfg19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libhasgen19.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libhasgen19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libskgxn2.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libskgxn2.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libocr19.so...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libocr19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libocrb19.so...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libocrb19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libocrutl19.so...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libocrutl19.so

Reading symbols from /lib64/libaio.so.1...Reading symbols from /lib64/libaio.so.1...(no debugging symbols found)...done.

(no debugging symbols found)...done.

Loaded symbols for /lib64/libaio.so.1

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libons.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libons.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libmql1.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libmql1.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libipc1.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libipc1.so

Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.

Loaded symbols for /lib64/libdl.so.2

Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.

Loaded symbols for /lib64/libm.so.6

Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.

Thread debugging using libthread_db enabled

Using host libthread_db library "/lib64/libthread_db.so.1".

Loaded symbols for /lib64/libpthread.so.0

Reading symbols from /lib64/libnsl.so.1...(no debugging symbols found)...done.

Loaded symbols for /lib64/libnsl.so.1

Reading symbols from /lib64/libresolv.so.2...(no debugging symbols found)...done.

Loaded symbols for /lib64/libresolv.so.2

Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.

Loaded symbols for /lib64/libc.so.6

Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.

Loaded symbols for /lib64/ld-linux-x86-64.so.2

Reading symbols from /usr/lib64/libnuma.so.1...Reading symbols from /usr/lib64/libnuma.so.1...(no debugging symbols found)...done.

(no debugging symbols found)...done.

Loaded symbols for /usr/lib64/libnuma.so.1

Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done.

Loaded symbols for /lib64/libgcc_s.so.1

Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols found)...done.

Loaded symbols for /lib64/libnss_files.so.2

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libnque19.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libnque19.so

Reading symbols from /data/u01/app/oracle/product/19c/dbhome_1/lib/libshpkavx19.so...(no debugging symbols found)...done.

Loaded symbols for /data/u01/app/oracle/product/19c/dbhome_1/lib/libshpkavx19.so

0x00007f51a9912740 in __read_nocancel () from /lib64/libpthread.so.0

Missing separate debuginfos, use: debuginfo-install glibc-2.17-326.el7_9.x86_64 libaio-0.3.109-13.el7.x86_64 libgcc-4.8.5-44.el7.x86_64 numactl-libs-2.0.12-5.el7.x86_64

(gdb) set *((int *) 0x060017E98) = 0x14fdcd7

(gdb) quit

A debugging session is active.

Inferior 1 process 25297 will be detached.

Quit anyway? (y or n) y

Detaching from program: /data/u01/app/oracle/product/19c/dbhome_1/bin/oracle, process 25297

Inferior 1 (process 25297) detached

返回会话窗口1操作:

SQL> select current_scn from v$database;--scn已经变大,后续重启库检查正常

CURRENT_SCN


22011101

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 6878657656 bytes

Fixed Size 9182328 bytes

Variable Size 3103784960 bytes

Database Buffers 3758096384 bytes

Redo Buffers 7593984 bytes

Database mounted.

Database opened.

SQL> select current_scn from v$database;

CURRENT_SCN


22015933

SQL> show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED


2 PDB$SEED READ ONLY NO

3 PDB5 MOUNTED

4 PDB2 READ WRITE NO

5 PDB3 MOUNTED

6 PDB1 MOUNTED

8 PDB6 READ WRITE NO

SQL>

参考:

https://www.modb.pro/db/1983201983378563072

相关推荐
ClickHouseDB8 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_639906948 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
时间售卖铺9 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw10 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社10 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙11 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain37612 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你021412 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川13 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组13 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制