2025年修了一套oracle 9i(9.2.0.7)的库

最近帮一位朋友查看一套老旧业务系统的问题,登录环境一看,竟是二十多年前的经典组合:Sun 小型机、Solaris 8 操作系统和 Oracle 9i 数据库。主机的 CPU 和内存配置以现在的眼光来看非常有限,但令人感慨的是,就是这样一套资源拮据的系统,却在某大型国企的核心业务中稳定运行了这么多年。

反观当下,不少国产数据库在一些规模并不大的客户环境中,主机配置却动辄要求 512GB 内存、上百个 CPU 核心,再加上全闪存储,资源投入远超实际业务需求。更有些客户领导盲目追求技术潮流,迷信“分布式”和“高可用”,原本完全可以在集中式架构上稳定运行的系统,也要硬上国产分布式数据库——架构复杂了,运维成本高了,是否真能像前面那套 Solaris + Oracle 的组合那样,由一个初级 DBA 就能维护,并且平稳运行十几年?

技术之路,有时候不是在进步,而是在轮回;不是越新越好,而是合适最好。

前几天给这套oracle 9i的dg standby环境做了failover, 近日primary端因为断电坏了条内存条,启动后数据库访问有些慢。

root@sundb # uname -a
SunOS sundb 5.8 Generic_108528-29 sun4u sparc SUNW,Sun-Fire

root@sundb # vmstat 3 3
 procs     memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr s0 s1 s6 sd   in   sy   cs us sy id
 0 2 0 9748368 786768 154 9932 1460 177 2519 0 8118 153 141 0 0 1362 425 1386 1 5 93
 0 2 0 9267856 120088 35 1989 1848 2 2408 0 2292 150 215 0 0 1744 243 2084 0 26 74
 0 2 0 9270584 121480 61 1221 1640 88 2976 59808 4377 157 173 0 0 1592 341 1728 0 3 96
 
root@sundb # sar -r 3 2

SunOS sundb 5.8 Generic_108528-29 sun4u    09/09/25

11:59:18 freemem freeswap
11:59:21   15538 18473159
11:59:24   15601 18596725

Average    15569 18534736
root@sundb # prtconf
System Configuration:  Sun Microsystems  sun4u
Memory size: 8192 Megabytes
System Peripherals (Software Nodes):


$ ipcs -mb
IPC status from <running system> as of Tue Sep  9 12:04:16 CST 2025
T         ID      KEY        MODE        OWNER    GROUP      SEGSZ
Shared Memory:
m          1   0x50000b29 --rw-r--r--     root     root          4
m        514   0          --rw-r-----   oracle      dba    4194304
m          3   0          --rw-r-----   oracle      dba 3858759680
m          4   0x2f41c8b4 --rw-r-----   oracle      dba 3846176768

这样看8G内存,给数据库分配了近7G的共享内存,这是问题的源泉,调整内存分配即可,数据库恢复了流畅。

$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.7.0 - Production on Tue Sep 9 12:19:49 2025

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area 5152154088
bytes

Fixed Size                   737768
bytes

Variable Size             855638016
bytes

Database Buffers         4294967296
bytes

Redo Buffers                 811008

bytes

SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

再用几年也不成问题。

— over —

Leave a Comment