数据库db_files参数增大怎么办

调整db_files参数
本文介绍了解决Oracle数据库中db_files参数达到上限的问题。通过重建控制文件以增加数据文件数量限制,详细步骤包括修改控制文件、数据库恢复及参数调整。
数据库的数据文件数(200)达到了数据库定义的参数db_files的值,而原本需要使用alter system可以修改这个参数,但是因为限制该参数的maxdatafiles值(由控制文件定义)仪200,故要想改大db_files参数值,需要重建控制文件,下面是我个人根据实验总结的操作过程。

一、参数察看
$sqlplus /nolog

conn / as sysdba



SQL> show parameter db_files;



NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_files integer 200

由此可看出db_files值为200,如果数据库中数据文件数达到或超过200,就需要更改该参数了。

更改db_files有两种情况:

1, 如果控制文件中定义的maxdatafiles以及系统允许打开的文件数值大于200,则可以通过alter方式来修改db_files的值

2, 如果控制文件中maxdatafiles值等于200,则需要重建控制文件来修改maxdatafiles值。

察看maxdatafiles方法

SQL>alter database backup controlfile to trace;

到$ORACLE_BASE/admin/db_name/udump下面查找最新生成的trc文件

$grep –i MAXDATAFILES boss_ora_4310.trc

MAXDATAFILES 200

MAXDATAFILES 200

系统允许打开文件数可用ulimit –a察看

$ulimit –a

open files (-n) 1024

二、修改步骤
1,生成控制文件创建脚本
SQL>alter database backup controlfile to trace;

在$ORACLE_BASE/admin/db_name/udump目下新生成的trc文件oracle/admin/boss/udump/boss_ora_4310.trc

根据上述文件创建控制文件生成脚本recreate_control.sql

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "BOSS" NORESETLOGS NOARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 300 修改MAXDATAFILES值

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/oracle/oradata/boss/redo01.log' SIZE 50M,

GROUP 2 '/oracle/oradata/boss/redo02.log' SIZE 50M,

GROUP 3 '/oracle/oradata/boss/redo03.log' SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'/oracle/oradata/boss/system01.dbf',

'/oracle/oradata/boss/undotbs01.dbf',

'/oracle/oradata/boss/sysaux01.dbf',

'/oracle/oradata/boss/users01.dbf',

'/oracle/oradata/boss/example01.dbf'

CHARACTER SET ZHS16GBK

;

2,关闭数据库
SQL>shutdown

3, 备份原有控制文件,删除原有控制文件
备份控制文件

cd /oracle/oradata/boss/

cp control01.ctl control01.ctl.0520

cp control02.ctl control02.ctl.0520

cp control03.ctl control03.ctl.0520

删除控制文件

rm control0*.ctl

4, 创建新的控制文件
$sqlplus /nolog

SQL>conn / as sysdba

SQL>@ oracle/admin/boss/udump/recreate_control.sql

ORACLE instance started.



Total System Global Area 268435456 bytes

Fixed Size 1218892 bytes

Variable Size 75499188 bytes

Database Buffers 188743680 bytes

Redo Buffers 2973696 bytes



Control file created.

5,使用控制文件恢复
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE

ORA-00279: change 567684 generated at 05/15/2010 00:19:32 needed for thread 1

ORA-00289: suggestion :

/oracle/flash_recovery_area/BOSS/archivelog/2010_05_15/o1_mf_1_3_%u_.arc

ORA-00280: change 567684 for thread 1 is in sequence #3





Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/oracle/oradata/boss/redo01.log

ORA-00310: archived log contains sequence 2; sequence 3 required

ORA-00334: archived log: '/oracle/oradata/boss/redo01.log'





SQL> RECOVER DATABASE USING BACKUP CONTROLFILE

ORA-00279: change 567684 generated at 05/15/2010 00:19:32 needed for thread 1

ORA-00289: suggestion :

/oracle/flash_recovery_area/BOSS/archivelog/2010_05_15/o1_mf_1_3_%u_.arc

ORA-00280: change 567684 for thread 1 is in sequence #3





Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/oracle/oradata/boss/redo02.log

Log applied.

Media recovery complete.

这里恢复要使用redo在线日志,需要逐个尝试,直到介质恢复成功。

6,resetlogs方式启动数据库
SQL> ALTER DATABASE OPEN RESETLOGS;

Database altered

7,恢复临时表空间


SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oracle/oradata/boss/temp01.dbf'

2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;



Tablespace altered.

8,修改参数
SQL> show parameter db_files;



NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_files integer 200





SQL> alter system set db_files=250 scope=spfile;



System altered.



SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.



Total System Global Area 268435456 bytes

Fixed Size 1218892 bytes

Variable Size 75499188 bytes

Database Buffers 188743680 bytes

Redo Buffers 2973696 bytes

Database mounted.

Database opened.



SQL>show parameter db_files

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_files integer 250

SQL> exit

至此db_files参数修改工作完成

当然,如果控制文件损坏或丢失,也可以使用这种方法来恢复数据库。
内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值