数据库通过异机恢复后,想将其db_name和SID修改,以下总结两种修改方式

方法一:重建控制文件方式

–日志归档

alter system archive log current;

–备份控制文件

alter database backup controlfile to trace resetlogs;

–控制文件备份生成路径

show parameter  user_dump_dest

–控制文件路径

show parameter control_files

create pfile from spfile;

shutdown immediate

cd /u01/diag/rdbms/prod/prod/trace

cp prod_ora_3163.trc create_cf.sql

vicreate_cf.sql

–编辑文件

–(1)   “–“开头的可删除

–(2) ” STARTUP NOMOUNT” 以上的删除

–(3) CREATE CONTROLFILE REUSE DATABASE “PROD” RESETLOGS FORCE LOGGING ARCHIVELOG 这句的REUSE修改成SET

PROD 修改成你要的的名字,如 test(如果仅是修改dbname什么的,下面数据文件之类的路径可不用修改)

–(4)RECOVER DATABASE USING BACKUP CONTROLFILE这句可用 — 注释掉,这里不做recover

–备份原来控制文件

mv /u01/oradata/prod/control01.ctl /u01/oradata/prod/control01.ct.bak

mv /u01/oradata/prod/control02.ctl /u01/oradata/prod/control02.ctl.bak

cp/u01/oracle/db_1/dbs/initprod.ora/u01/oracle/db_1/dbs/inittest.ora

vi/u01/oracle/db_1/dbs/initprod.ora

–db_name和db_unique_name等都修改一下

*.db_name=’test’

*.db_unique_name=’test’

export ORACLE_SID=test

startup nomout pfile=’/u01/oracle/db_1/dbs/inittest.ora’

create spfile from pfile;

shutdown immediate

orapwd file=$ORACLE_HOME/dbs/orapwtest password=oracle entries=5

–执行重建控制文件

sqlplus / as sysdba

@create_cf.sql

注意:这种方法最后是 alter database open resetlogs;

方法二:用oracle自带的工具nid改数据库名

shutdown immediate

–nid需要在mount状态下才能做。

startup mount

exit

nid 修改 dbname=新的名字,要知道sys 密码

nid target=sys/password dbname=test

Change database ID and database name PROD to TEST? (Y/[N]) => y

orapwd file=$ORACLE_HOME/dbs/orapwtest password=oracle entries=5

cp/u01/oracle/db_1/dbs/initprod.ora/u01/oracle/db_1/dbs/inittest.ora

vi/u01/oracle/db_1/dbs/initprod.ora

–db_name和db_unique_name等都修改一下

*.db_name=’test’

*.db_unique_name=’test’

export ORACLE_SID=test

startup nomout pfile=’/u01/oracle/db_1/dbs/inittest.ora’

create spfile from pfile;

shutdown immediate

startup mount

alter database open resetlogs;