ORA-01222: MAXINSTANCES of string requires MAXLOGFILES be at least string, not string

文档解释

ORA-01222: MAXINSTANCES of string requires MAXLOGFILES be at least string, not string

Cause: Attemping to create a database or control file that does not have room for at least two logs per thread of redo. A thread of redo must have two online logs in order to be enabled. It does not make sense to allow more redo threads than can be supported by the logs.

Action: Either reduce the MAXINSTANCES argument or increase MAXLOGFILES.

这个错误涉及到 Oracle 数据库实例活动及归档日志文件的配置。当实例最大可用数INSTANCE_MAX被设置为一个特定数量时,它会要求归档日志文件MAXLOGFILES也得被设置到一个足够的数量,以便可以支持最大可用实例数量。

ORA-01222:“MAXINSTANCES of string requires MAXLOGFILES be at least string, not string”,意思是最大实例数Maxinstances要求最大的归档日志文件数Maxlogfiles至少是某个特定的数值,但实际设置的值却不是。

官方解释

ORA-01222:最大实例数要求归档日志文件数

Cause:设置的最大的实例数Maxinstances大于0,而最大的归档日志文件数Maxlogfiles被设置为0或比所需要的要少。

Solution:设置Maxinstances参数,使它小于或等于当前Maxlogfiles参数。或者将Maxlogfiles设置成一个适当的大值,比如1000,以便可以支持Maxinstances被设置的最大数量。

常见案例

当用某种方法重新启动数据库时,会发生这种报错,例如在数据库发生实例宕掉后,重新建立另外一个实例。或者是直接修改init文件,然后重新启动数据库等。

正常处理方法及步骤

1. 查询参数 Maxinstances 和 Maxlogfiles 的值:

SQL:SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME IN (‘MAXINSTANCES’, ‘MAXLOGFILES’);

2. 如果Maxinstances的值大于Maxlogfiles,则需要修改Maxinstances使其小于Maxlogfiles:

SQL:ALTER SYSTEM SET MAXINSTANCES = value SCOPE = SPFILE;

3. 如果Maxinstances的值小于Maxlogfiles,则可以保持不变。可以利用ACKUPCTL来备份并释放归档日志文件:

SQL:ALTER SYSTEM ARCHIVE LOG CURRENT;

你可能感兴趣的