oracle 如何解决Redo日志文件块大小catch 22?

zqry0prt  于 2023-06-22  发布在  Oracle
关注(0)|答案(1)|浏览(138)

使用Oracle Enterprise Edition 19 c。
在测试环境中,我创建了一台运行Windows 2022服务器的物理机。长话短说,我一直在使用RAID阵列。在每次迭代之间,我关闭数据库,禁用服务,并将数据库移动到另一个驱动器。重新创建阵列后,我将数据移回并启动服务。
不幸的是,我正在切换的阵列具有不同的扇区大小。一个是512,另一个是4096。当从4096扇区大小移动到512扇区大小时,我可以设置参数“_DISK_SECTOR_SIZE_OVERRIDE”=TRUE并打开数据库。然后我创建了新的日志文件,这些日志文件的块大小为512字节。我删除了4096块大小的日志文件。
然而,当我做相反的尝试从512到4096,同样的程序不起作用。它不会打开数据库,并显示ora-312、ora-27040和osd-04001错误。
在尝试打开数据库时,我执行了“恢复数据库直至取消;“现在我必须在resetlogs模式下打开数据库。当我这样做时,它返回Ora-00344、ora-27040和osd-04001错误。
当我尝试在不打开数据库的情况下切换重做日志时,它告诉我数据库没有打开。
我怎样才能在不重新创建所有内容的情况下最好地从中恢复?

备注

我能够解决这个问题,安装另一个硬盘驱动器与512字节的部门,关闭数据库停止服务,复制数据库到其他驱动器。重新写驱动器(D:<=>E:),启动数据库在“C:“驱动器上创建新的重做日志文件,删除其他重做日志文件。然后我把所有东西都颠倒过来,把数据库放回RAID上,把重做日志文件留在C:上。
我会建议Oracle(在风中吐口水)让他们改变“alter database open resetlogs”不使用V$LOG中的值,并完全重新创建日志组和文件。
我没有把这个作为解决方案发布,因为它没有解决我的问题,但它确实让我解决了这个问题。

vyu0f0g1

vyu0f0g11#

在数据库关闭的情况下,删除(或移开)有问题的联机重做日志。
使用RMAN,恢复到最后一个可用的归档日志:

$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 20 00:41:38 2019
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 2415917880 bytes
Fixed Size          8899384 bytes
Variable Size         520093696 bytes
Database Buffers     1879048192 bytes
Redo Buffers            7876608 bytes
Database mounted.
SQL>

RMAN> run
2> {
3> set until sequence 4;  <-- substitute appropriate "until" clause
4> restore database;
5> recover database;
6> alter database open resetlogs;
7> }

恢复过程将重新创建联机重做日志。请确保在数据库备份后立即进行另一次完整备份。

相关问题