数字档案馆系统升级中或升级后快速排错与数据救回实操指南

一、前置必做:立即触发紧急状态保护

无论错误出在升级中还是升级后,第一步必须断开所有业务终端连接+停止数据库写入+全量锁定备份介质,这是避免二次灾难的核心,严格按顺序操作:

  • 断开业务终端:登录防火墙管理后台(常见是深信服AS/华为USG,IP为设备默认管理IP或企业自定义的内网段,账号密码存放在运维应急手册的《硬件设备基础信息表》),添加临时规则:禁止所有非核心运维IP访问系统应用端口(通常为80/443(Web端)、1521(Oracle)、3306(MySQL)、5432(PostgreSQL)、8080(中间件))
  • 停止数据库写入:根据数据库类型执行对应只读锁定命令,操作前需用超级管理员账号(sys/Oracle、root/MySQL、postgres/PostgreSQL)登录

Oracle只读锁定代码(SQLPlus或PL/SQL Developer执行):

```sql -- 锁定所有普通用户表空间只读(临时表空间除外) BEGIN FOR rec IN (SELECT tablespace_name FROM dba_tablespaces WHERE tablespace_name NOT IN ('SYSTEM','SYSAUX','UNDOTBS1','TEMP')) LOOP EXECUTE IMMEDIATE 'ALTER TABLESPACE '||rec.tablespace_name||' READ ONLY'; END LOOP; END; / -- 检查是否锁定成功 SELECT tablespace_name, status FROM dba_tablespaces WHERE status = 'READ ONLY'; ```

MySQL只读锁定代码(终端或Navicat Premium执行):

```sql -- 全局设置只读(root账号) SET GLOBAL read_only = ON; SET GLOBAL super_read_only = ON; -- 检查是否锁定成功 SHOW VARIABLES LIKE '%read_only%'; ```

PostgreSQL只读锁定代码(终端或pgAdmin执行):

```sql -- 锁定所有普通用户数据库只读 UPDATE pg_database SET datallowconn = FALSE WHERE datname NOT IN ('postgres','template0','template1'); ALTER DATABASE 你的业务数据库名 SET default_transaction_read_only = ON; -- 检查是否锁定成功 SELECT datname, datallowconn FROM pg_database; ```
  • 锁定备份介质:拔出外接备份硬盘的USB/网线接口,云端备份则开启OSS/S3的“版本保护”和“访问控制白名单仅本机可读取”(阿里云OSS操作路径:控制台→Bucket→数据安全→版本管理→开启;访问控制→权限策略→新建白名单策略仅允许本机公网IP访问)

二、升级中出错:精准回滚的3步操作

升级中出错(停留在进度条、弹窗报错、进程崩溃),优先使用系统自带的回滚快照,无快照则按“备份介质→中间件→应用→配置”的顺序还原:

2.1 使用系统自带快照回滚

主流数字档案馆系统(如超星、万方、浙大恩特)均支持升级前自动生成快照,操作路径通用:

  • 登录系统所在服务器的本地控制台(不能远程!),输入运维应急账号密码(存放在《数字档案馆运维手册》第3部分)
  • 进入【系统管理】→【升级管理】→【历史快照】,选择最近一次升级前1分钟内的快照(标记为“系统自动生成”)
  • 点击“强制回滚”按钮,等待30-60分钟(时间取决于数据量),回滚期间不要断电或重启服务器

2.2 无快照时的手动还原

如果系统未生成快照,严格按以下顺序还原:

2.2.1 还原数据库

Oracle还原(RMAN备份)代码(终端执行):

```bash 进入RMAN rman target sys/你的密码@你的数据库SID 启动数据库到mount状态 STARTUP MOUNT; 还原最近的全量备份 RESTORE DATABASE; 恢复到升级前的时间点(需提前查RMAN备份日志,替换时间戳) RECOVER DATABASE UNTIL TIME '202X-XX-XX XX:XX:XX'; 打开数据库并重置日志 ALTER DATABASE OPEN RESETLOGS; ```

MySQL还原(mysqldump备份)代码(终端执行):

```bash 先解锁临时表空间的写入限制?不,先停止MySQL服务 systemctl stop mysqld 清空业务数据库(提前确认!) mysql -u root -p -e "DROP DATABASE IF EXISTS 你的业务数据库名; CREATE DATABASE 你的业务数据库名;" 还原最近的全量备份 mysql -u root -p 你的业务数据库名 < /你的备份路径/你的备份文件名.sql 重启MySQL服务 systemctl start mysqld ```

数字档案馆系统升级中或升级后快速排错与数据救回实操指南

PostgreSQL还原(pg_dump备份)代码(终端执行):

```bash 先停止PostgreSQL服务 systemctl stop postgresql 清空业务数据库 sudo -u postgres psql -c "DROP DATABASE IF EXISTS 你的业务数据库名; CREATE DATABASE 你的业务数据库名;" 还原最近的全量备份 sudo -u postgres pg_restore -d 你的业务数据库名 /你的备份路径/你的备份文件名.dump 重启PostgreSQL服务 systemctl start postgresql ```

2.2.2 还原中间件与应用

先停止中间件服务(如Tomcat:systemctl stop tomcat;WebLogic:执行/你的WebLogic路径/user_projects/domains/你的域名/bin/stopWebLogic.sh),然后删除中间件下的整个webapps目录,最后将备份的webapps目录(升级前必须单独备份)复制到原路径。

2.2.3 还原配置文件

将备份的配置文件(如Tomcat的server.xml、web.xml;数据库的tnsnames.ora、my.cnf、postgresql.conf)覆盖原路径的配置文件。

三、升级后出错:5种高频问题的快速修复

升级后能登录但功能异常,优先查系统错误日志,路径通用为:/你的应用路径/logs/error.log(Web端)、/你的数据库路径/admin/你的SID/bdump/alert_你的SID.log(Oracle)、/var/log/mysqld.log(MySQL)、/var/log/postgresql/你的版本号-main.log(PostgreSQL),以下是5种高频问题的修复:

3.1 档案全文检索失效

90%是因为索引未重建,操作路径通用:

  • 登录系统Web端的【系统管理员】账号
  • 进入【全文检索管理】→【索引管理】
  • 先点击“清空所有索引”,等待清空完成
  • 再点击“全量重建索引”,期间禁止解锁数据库

3.2 旧档案无法打开或预览

检查路径映射是否丢失,以Tomcat为例,编辑server.xml,在标签内添加(替换你的旧档案存储路径):

```xml ```

3.3 用户权限丢失

如果系统支持权限导出导入,先导入升级前的权限备份(存放在/你的应用路径/backups/permission/你的备份文件名.xml),否则:

  • 用系统管理员账号登录
  • 进入【用户管理】→【权限批量恢复】,选择“恢复到升级前默认权限组”

3.4 数据库连接超时

检查连接池配置,以Tomcat的context.xml为例,修改Resource标签内的参数(替换为你的数据库信息):

```xml ```

3.5 系统界面乱码

统一字符编码为UTF-8,修改3个地方:

  • 数据库:已在还原时设置为UTF-8,无需修改
  • 中间件:Tomcat修改server.xml的Connector标签,添加URIEncoding="UTF-8";WebLogic修改config.xml的标签,添加UTF-8
  • 应用:已在还原时覆盖原配置,无需修改

四、恢复验证与收尾

所有修复完成后,必须按顺序验证:

  • 解锁数据库:反向执行前置必做的只读锁定命令
  • 单用户测试:用普通档案管理员账号测试登录、检索、打开、上传、删除、权限管理功能
  • 小批量终端测试:开放2-3台业务终端IP,测试正常业务流程
  • 全量恢复业务:删除防火墙临时规则,开放所有业务终端
  • 重新生成完整备份:备份数据库、中间件、应用、配置文件,标记为“升级救回后全量备份”
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统