我已将名为 DB 的数据库还原到另一个名为 DB01 的数据库
它处于 STARTED 状态(未安装),如果未安装,我似乎无法更改名称,并且由于名称我无法安装它,如果可能的话如何解决这个问题?
我在托管数据库 DB01 的当前服务器上从 DB 进行了 RMAN 完整备份,initdb01.ora 已准备好并配置了 DB01
接下来我能做什么
nid没有帮助!它要求安装数据库!我无法安装它
ORA-01103: 控制文件中的数据库名称 'DB' 不是 'DB01'
所以这里将 db_name 设置为 DB,一旦数据库打开就开始恢复,您可以使用 nid 实用程序更改数据库名称。
SQL > ALTER SYSTEM SET DB_NAME=DB SCOPE=spfile;
您需要重新创建控制文件。最好的办法是先在原databasr中执行以下命令:
alter database backup controlfile to trace;
这将在跟踪目录中创建一个文本文件。您需要更改文件路径以匹配新的数据库文件位置,并更改 db_name 参数。
完成上一步后,在 nomount 中启动新数据库并执行上述文件(确保您已连接到新数据库并且所有文件路径都指向新数据库)。这将创建一个新的控制文件。
如果您要恢复到不同的盒子,那么您可以暂时使用原始数据库的名称来挂载恢复的数据库。然后,您可以挂载恢复的数据库并使用已挂载的数据库可用的工具。
更改ORACLE_SID
为原始数据库名称
重命名 spfile 以包含原始数据库名称
使用它来更改 spfile 中的名称。
ALTER SYSTEM SET DB_NAME=ORIGINAL_DBNAME SCOPE=spfile;
这不适用于运行原始数据库的机器,因为您不能在同一个机器上运行两个具有相同名称的数据库。
请参阅 Oracle 支持文档 ID 1906009.1。
您需要从备份中重新创建控制文件,然后修改它以使用带有 SET DATABASE 选项和 RESETLOGS 的 REUSE。利用
alter database backup controlfile to trace;
然后使用 create controlfile 命令找到相关的跟踪文件。修改 SQL 以包含推荐的选项。我只是这样做了,这是我的例子:
CREATE CONTROLFILE REUSE set DATABASE "ANDYSTBY" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
'+LOGS/ANDYSTBY/ONLINELOG/group_1.258.917112951',
'+LOGS/ANDYSTBY/ONLINELOG/group_1.259.917113325'
) SIZE 50M BLOCKSIZE 512,
GROUP 2 (
'+LOGS/ANDYSTBY/ONLINELOG/group_2.257.917112935',
'+LOGS/ANDYSTBY/ONLINELOG/group_2.260.917113339'
) SIZE 50M BLOCKSIZE 512,
GROUP 3 (
'+LOGS/ANDYSTBY/ONLINELOG/group_3.256.917112925',
'+LOGS/ANDYSTBY/ONLINELOG/group_3.261.917113345'
) SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'+DATA/ANDYSTBY/DATAFILE/system.257.917108631',
'+DATA/ANDYSTBY/DATAFILE/sysaux.256.917108485',
'+DATA/ANDYSTBY/DATAFILE/undotbs1.259.917108757',
'+DATA/ANDYSTBY/DATAFILE/users.258.917108757'
CHARACTER SET AL32UTF8;
恢复数据库后,您需要使用“使用备份控制文件”选项进行恢复。
使用备份控制文件恢复数据库直到取消;