我正在尝试在测试虚拟机中克隆我们的生产数据库。我们的生产数据库使用 ASM。我想在测试数据库中使用普通文件系统。
我创建了数据库、服务、pfile 等。我将生产数据库控制文件提供给测试数据库。现在我正在尝试重命名测试数据库中的数据文件。我收到以下错误。
SQL> startup mount;
.....
SQL> alter database rename file '+NEWDATA/XX/XX01.dbf' to 'M:\oracle\datafiles\XX\XX01.dbf'; alter database rename file
'+NEWDATA/XX/XX01.dbf' to 'M:\oracle\datafiles\XX\XX01.dbf';
* ERROR at line 1: ORA-01511: error in renaming log/data files ORA-01141: error renaming data file 162 - new file
'M:\oracle\datafiles\XX\XX01.dbf' not found ORA-01110: data file 162:
'+NEWDATA/XX/XX01.dbf' ORA-27046: file size is not a multiple of
logical block size OSD-04012: file size mismatch O/S-Error: (OS 4) The
system cannot open the file.
我的备份是正常的 rman 备份,而不是作为副本备份。我正在尝试重命名不存在的文件。在这个重命名过程之后,我将尝试从 rman 备份中恢复数据库。但是这个备份不是一个个的拷贝。
你写了:
那么这不是这样做的方法。为了使用 ALTER DATABASE RENAME FILE,该文件必须已经存在于新位置。取而代之的是,您可以(并且应该)在 RMAN 中处理它:
您已经完成了,然后:
并运行以下命令:
重命名数据文件时,您必须先将其移动到新位置。
ALTER DATABASE RENAME FILE
命令不移动文件。它只是更改控制文件中的文件记录。但是目标文件必须存在。重命名和重定位数据文件
重命名数据文件时,通常必须满足以下条件。
我的条件满足第一个。数据库处于挂载阶段。但是当我尝试重命名数据文件时,它会要求文件。我没有正确的文件,因为我会尝试从备份中恢复它。但是 oracle 只要求文件中的正确大小(ORA-27046:文件大小不是逻辑块大小的倍数)。此文件不必是正确的文件。因此创建具有正确大小的虚拟文件,块大小的倍数。如何实现这一点。
在 Windows 中使用 powershell
在 windows fsutil中
在Linux中
创建文件后,您可以使用正常的alter database rename 命令。