0、对整个数据库做一个关闭状态下的完全一致性备份;
1、alter database backup controlfile to trace;
2、shutdown immediate;
3、在admin/ORACLE_SID/udump目录下找到含有重建控制文件脚本的那个TRACE文件(最近时间的),
将从"CREATE CONTROLFILE"开始到分号结束的部分copy出来,新建成create_ctl.sql文件,并作适当的修改:
1)把 CREATE CONTROLFILE reuse DATABASE "old_name" NORESETLOGS ...
改成 CREATE CONTROLFILE set DATABASE "new_name" RESETLOGS ...;
2)另外,如果想把数据库文件的路径也随数据库名作响应改动的话,在脚本中修改数据文件和日志文件的路径;
4、(如果使用SPFILE,从它创建一个PFILE),修改PFILE:
sqlplus /nolog
connect sys/password@ORACLE_SID as sysdba
create pfile from spfile; --在ORACLE_HOME/dbs目录下:initORACLE_SID.ora文件
1)把DB_NAME注释掉;
2)(如果需要)修改DUMP、控制文件和归档日志文件的存放地址;
5、保证存放控制文件的目录中不存在和需要创建的控制文件同名的文件;
6、startup nomount pfile=...;(步骤4创建、修改的文件)
7、运行修改好的控制文件重建命令(步骤3创建的文件),新的控制文件就会出现在步骤4中设定的目录中;
SQL>@/data1/gototop/create_ctl.sql
8、recover database using backup controlfile until cancel; 输入cancel当出现提示时;
9、alter database open resetlogs;
10、做一些验证工作:
——select name from v$database;
——select instance_name from v$instance;(注意INSTANCE和DATABASE名的区别,一般默认建库时二者相同)
——select name from v$datafile;
——select member from v$logfile;
——archive log list;
11、shutdown immediate;
12、配置新库的lsnr\tns,创建新库的sys密码文件;
13、修改PFILE,加上db_name='????',还有instancename,设成新的数据库名,保存成新库名字的PFILE
startup pfile=...;(刚才修改的文件)
如果愿意使用SPFILE,就生成一个新的,替换旧的SPFILE;
14、再次验证数据库(碰到一次提示密码文件错误,重建一个替换原来的就文件就行了,后来没碰到这个问题)。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/75673/viewspace-682311/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/75673/viewspace-682311/