我已将名为DB的数据库恢复到另一个名为DB01的数据库
它处于STARTED状态(未安装),如果不是挂载,我似乎无法更改名称,因为名称而无法挂载,如果可能,如何解决此问题?
我在当前服务器上的DB上有RMAN完全备份,该服务器托管数据库DB01,initdb01.ora已准备好并配置了DB01
我接下来该怎么做
nid没有帮助!它要求安装数据库!我无法装载它
ORA-01103:数据库名称' DB'在控制文件中不是' DB01'
答案 0 :(得分:3)
所以这里将db_name设置为DB,一旦数据库打开就开始恢复,你可以使用nid实用程序更改数据库名称。
SQL > ALTER SYSTEM SET DB_NAME=DB SCOPE=spfile;
答案 1 :(得分:2)
您需要重新创建控制文件。最好的方法是首先在原始数据库中执行以下命令:
alter database backup controlfile to trace;
这将在跟踪目录中创建一个文本文件。您需要更改文件路径以匹配新的数据库文件位置,并更改db_name参数。
完成上一步后,在nomount中启动新数据库并执行上述文件(确保您已连接到新数据库和所有文件路径点到新数据库)。这将创建一个新的控制文件。
答案 2 :(得分:0)
如果要还原到其他框,则可以临时使用原始数据库的名称来装入已还原的数据库。然后,您可以装入已还原的数据库,并使用已装入数据库的可用工具。
将ORACLE_SID
更改为原始数据库名称
重命名spfile以包含原始数据库名称
使用此命令更改spfile中的名称。
ALTER SYSTEM SET DB_NAME = ORIGINAL_DBNAME SCOPE = spfile;
这在原始数据库运行的盒子上不起作用,因为你不能在同一个盒子上运行两个同名的数据库。
答案 3 :(得分:0)
请参阅Oracle支持文档ID 1906009.1。
您需要从备份重新创建控制文件,然后将其修改为使用带有SET DATABASE选项的REUSE和RESETLOGS。使用
alter database backup controlfile to trace;
然后使用create controlfile命令查找相关的tracefile。修改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;
恢复数据库后,您需要使用“使用备份控制文件”选项进行恢复。
恢复数据库,直到使用备份控制文件取消;