How To Change Database Name
前言: 数据库的名字是在Create Database时,就已经由init.ora中db_name的参数决定了。一台Server上,数据库的名字必须是独一的,它可以与Instance_name相同或不同,但是为了方便管理,通常建议将这两个参数,设为相同的值。 若在数据库建立后,需要变更数据库的名字时,则需要重新建立control file,因为数据库的名字存放在control file中。不过control file是数据库中相当重要的档案,因此在对数据库重新命名时,必须相当的小心,以免毁损数据库。
|
步骤:
|
|
A. 产生数据库Control file的Trace file
|
|
C:\sqlplus system/manager SQL>select name from v$database; (确定联机的数据库为欲更名的数据库) Name ------------------------- FRANK SQL>Alter database backup controlfile to trace resetlogs;
|
|
将目前数据库的control file备份成文字文件到User_Dump_Dest参数所设定的路径。
SQL>show parameter user_dump_dest;
---------------------------------------------------------------------------
user_dump_dest
|
string
|
C:\oracle\admin\Frank\udump
|
|
|
Trace file产生在C:\oracle\admin\Frank\udump
SQL>host dir C:\oracle\admin\Frank\udump
|
磁盘区 C 中的磁盘没有卷标。 磁盘区序号: 08F8-D0AC 目录: C:\oracle\admin\Frank\udump
|
2001/09/03 11:51a
|
|
.
|
2001/09/03 11:51a
|
|
..
|
2001/07/26 11:02p
|
|
73,858 ORA01372.TRC
|
2001/09/03 12:06p
|
|
4,612 ORA01640.TRC
|
2001/09/03 12:11p
|
|
1,785 ORA01968.TRC
|
|
3 个档案
|
80,255 字节
|
|
2 个目录
|
3,428,466,688 字节可用
|
|
|
这里出现三个trace file,那一个才是我们要的trace file
|
SQL>select spid from v$process where addr=(select paddr from v$session where sid=(select distinct sid from v$mystat)); SPID --------- 1968
|
因此我们得知ORA01968.TRC为我们这个server process所写的trace file。 SQL>exit(离开sqlplus环境,准备将trace file改成数据库更名的script)
|
|
C:\notepad oracle\admin\frank\udump\ORA01968.TRC 利用任一文字编辑器修改
|
|
- 将startup nomount这行以上都删除。
- 在REUSE与DATABASE这两个关键词之间,加入SET这关键词。并将"FRANK"改成新的数据库名字即可。
- 删去RECOVER DATABASE USING BACKUP CONTROLFILE这行,保留其它行的内容。
- 删除所有以#开始的行。
- 将此档案另存为renamedb.sql。
|
|
|
C. 修改initfrank.ora(parameter file)
|
|
C:\notepad c:\oracle\admin\frank\pfile\init.ora 利用任一文字编辑器修改
|
将db_name=FRANK改成db_name=Newname
|
|
SQL>shutdown immediate; SQL>exit;
|
请进行Whole Database Backup
|
|
C:\sqlplus /nolog SQL>connect / as sysdba or connect sys/password as sysdba SQL>@c:\oracle\admin\frank\udump\renamedb.sql
|
已启动 ORACLE 执行项次
|
Total System Global Area
|
68991004 bytes
|
Fixed Size
|
75804 bytes
|
Variable Size
|
20365312 bytes
|
Database Buffers
|
48472064 bytes
|
Redo Buffers
|
77824 bytes
|
控制檔已被建立 数据库已被更改 SQL>select name from v$database; Name ------------ Newname
|
|
|
因为数据库已经resetlogs,所以之前的备份已经不能使用,请立刻进行Closed Backup。
|
结论: 以上为将数据库重新命名的步骤,当然还有许多的情况无法一一详述,不过这已包含大多数的情况。通常这个动作,主要是一开始数据库名字没取好,或者想利用OS Backup所产生的档案,在同一Server建立另一个数据库。
|