这是网上搜到的一篇文章:
--------- 如何将Oracle数据库改名 在很多人看来Oracle数据库一旦建好后,数据库的名字就不能改变了,其实不然,本文将告诉你如何更改Oracle数据库的名字。 当然在开始这一系列动作之前,你必须确认已对你的数据库做了一个完整可用的备份,虽然我做过测试,不做任何备份完全可以成功,但是如果你也这样做,风险自负,可不要怪我没有提醒你噢!欢迎和我交流:gototop@vip.sina.com。 1、打开Server Manager,用internal连接 $ svrmgrl SVRMGR> connect internal 2、如果你的数据库跑在archived log mode下,你需要执行以下命令来强迫一次checkpoint发生: SVRMGR> alter system switch logfile; 3、为你的control file做一次备份: SVRMGR> alter database backup controlfile to trace resetlogs; 4、用normal或immediate方式关闭数据库,记住千万不要用abort方式: SVRMGR> shutdown immediate SVRMGR> exit 5、打开你最近一次的trace file(在"user_dump_dest"所定义的目录下),将从"CREATE CONTROLFILE"开始到分号结束的部分copy出来,新建成create_ctl.sql文件。 6、编辑此文件,将其中的 CREATE CONTROLFILE REUSE DATABASE "old_db_name" RESETLOGS ... 改为: CREATE CONTROLFILE set DATABASE "new_db_name" RESETLOGS ... 即把"REUSE"改成"SET",把原来的DB_NAME改为新的DB_NAME。 7、备份你原来的control files,以防止被覆盖。 8、编辑你的初始化参数文件initSID.ora,将其中的db_name改为新的db_name。 9、执行如下操作: $ svrmgrl SVRMGR> connect internal SVRMGR> @/data1/gototop/create_ctl.sql 此时如何系统有提示部分数据文件需要做恢复,则说明在第四步时没有正常关闭数据库。此时你将不得不使用当前logfile中的redo来恢复数据库: SVRMGRL> recover database using backup controlfile until cancel; 10、下面用resetlogs方式打开数据库: SVRMGR> alter database open resetlogs; 11、改变全局数据库名称: SVRMGR> alter database rename global_name to <newdb_name>.<domain> SVRMGR> select * from v$database; 12、好了,到此为止你的数据库名字就改好了,现在我不说你都知道要做什么了,resetlogs之后不要忘了对你的数据库执行新的全备份,因为你以前的备份都已经失效了。 |
|