Oracle 修改oracle数据库名
by:授客
1.确保你有个可用于数据库恢复的,完整的数据库备份
2.确保数据库处于mount,非open状态,并且在加载前先以immediate方式关闭。如:
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP MOUNT
3.命令行状态下,指定一个具有SYSDBA权限的合法用户,必须指定数据库名DBNAME和SETNAME参数。例子:
% nid TARGET=SYS DBNAME=new_dbname SETNAME=YES
DBNEWID在尝试往文件读写前会执行控制文件的文件头header检查,然后给出确认提醒,改变控制文件中的数据库名,关闭数据库,退出,例子:
Control Files in database:
/oracle/TEST_DB/data/cf1.dbf
/oracle/TEST_DB/data/cf2.dbf
The following datafiles are offline clean:
/oracle/TEST_DB/data/tbs_61.dbf (23)
/oracle/TEST_DB/data/tbs_62.dbf (24)
/oracle/TEST_DB/data/temp3.dbf (3)
These files must be writable by this utility.
The following datafiles are read-only:
/oracle/TEST_DB/data/tbs_51.dbf (15)
/oracle/TEST_DB/data/tbs_52.dbf (16)
/oracle/TEST_DB/data/tbs_53.dbf (22)
These files must be writable by this utility.
Changing database name from PROD to TEST_DB
Control File /oracle/TEST_DB/data/cf1.dbf - modified
Control File /oracle/TEST_DB/data/cf2.dbf - modified
Datafile /oracle/TEST_DB/data/tbs_01.dbf - wrote new name
Datafile /oracle/TEST_DB/data/tbs_ax1.dbf - wrote new name
Datafile /oracle/TEST_DB/data/tbs_02.dbf - wrote new name
Datafile /oracle/TEST_DB/data/tbs_11.dbf - wrote new name
Datafile /oracle/TEST_DB/data/tbs_12.dbf - wrote new name
Datafile /oracle/TEST_DB/data/temp1.dbf - wrote new name
Control File /oracle/TEST_DB/data/cf1.dbf - wrote new name
Control File /oracle/TEST_DB/data/cf2.dbf - wrote new name
Instance shut down
Database name changed to TEST_DB.
Modify parameter file and generate a new password file before restarting.
Successfully changed database name.
DBNEWID - Completed successfully.
如果检查失败,那么DBNEWID中断并且停止与目标数据库的交互。你可以打开数据库,修复错误,然后继续DBNEWID操作或者不再继续。
4.设置初始参数文件PFILE中的DB_NAME初始化参数值为新的数据库名
注:DBNEWID功能不改变服务器参数文件SPFILE。因此,如果你用SPFILE来启动数据库,那么你必须由服务器参数文件SPFILE重新创建初始化参数文件,移除服务器参数文件,改变在初始化参数文件PFILE中的DB_NAME参数值,然后重新由PFILE创建SPFILE
5.创建一个新的密码文件
6.启动数据库
STARTUP
因为你只改变了数据库名,不是数据库ID,因此当你启动数据库时没必要用RESETLOGS选项。这意味着你之前所有的备份都是可用的。
参考资料:http://docs.oracle.com/cd/E16655_01/server.121/e17639/dbnewid.htm#i1004734
用ORAPWD创建密码文件
语法:
orapwd FILE=filename [ENTRIES=numusers] [FORCE={y|n}] [ASM={y|n}] [DBUNIQUENAME=dbname] [FORMAT={12|legacy}] [SYSBACKUP={y|n}] [SYSDG={y|n}]
[SYSKM={y|n}] [DELETE={y|n}] [INPUT_FILE=input-fname]
Argument | Description |
---|---|
FILE | 如果没指定 DESCRIBE参数,那么指定给新密码文件的文件名,必须指明完整路径。如果你仅提供一个文件名,那么文件被生成在当前的目录下。 如果有指定DESCRIBE 参数,那么指定一个已经存在的密码文件的名字。 |
PASSWORD | sys用户的密码.如果没指定,将提示你输入密码。密码存储在创建的密码文件中。 |
ENTRIES | 可选。文件允许的的最大用户帐号数 |
FORCE | 可选。如果选择y,允许覆盖已经存在的密码文件。 |
ASM | 可选。如果选择y,在一个Oracle ASM磁盘组中创建密码文件 。如果选n,缺省,在操作系统文件系统中创建密码文件 当 DBUNIQUENAME参数被指定时,密码文件是一个数据库密码文件,当DBUNIQUENAME参数不指定时,密码文件可以是一个数据库密码文件或一个oracle ASM密码文件。 |
DBUNIQUENAME | 唯一的数据库名用于标识仅属于ASM磁盘组数据库密码文件。当数据库密码文件存储在ASM磁盘组中,该参数是必备的。当oracle ASM密码文件以设置ASM参数为Y的方式被创建时,该参数是被忽略的。 |
FORMAT | 可选。如果为12,缺省,密码文件以oracle数据库12c的格式被创建 .这种格式支持SYSBACKUP, SYSDG, and SYSKM管理员权限,如果为legacy,密码文件为legacy 格式,oracle数据库12c以前的格式。当SYSBACKUP, SYSDG, or SYSKM被指定时,这个参数不可以被设置为legacy |
SYSBACKUP | 可选,如果为y,在密码文件中创建一个SYSBACKUP条目,要求输入密码。密码存储在创建的密码文件中。 |
SYSDG | 可选。如果选择y,在密码文件中创建一个SYSDG条目,要求输入密码。密码存储在创建的密码文件。 |
SYSKM | 可选。如果选择y,在密码文件中创建一个SYSKM条目,要求输入密码 。密码存储在创建的密码文件中。 |
DELETE | 可选。如果选择y,删除指定的密码文件,如果选择n,缺省,创建指定的密码文件 |
INPUT_FILE | 可选。密码输入文件的名字. ORAPWD把输入文件中的条目转移到密码文件。这个参数可以把密码文件从legacy格式转为oracle数据库12c格式。ORAPWD不能转移存储在Oracle ASM磁盘组中的输入文件。 |
DESCRIBE | 描述指定的密码文件的属性,包括格式,(12c或legacy),和是否区分大小写。 |
ORAPWD命令行参数描述
FILE
这个参数设置要创建密码文件的名字。这是必须参数.
如果你指定位于Oracle ASM磁盘组,那么密码文件自动在集群结点中共享。当你用一个Oracle ASM磁盘组来存储密码文件并且没应用Oracle Manged文件,那么必须指定文件的全路径。当使用Oracle Managed Files,全路径是必须的。
如果不指定位于Oracle ASM磁盘组,那么密码文件名由操作系统来决定。有些操作系统要求密码文件有指定的格式并位于指定的位置。有的操作系统允许使用环境变量来指定密码文件的名字和位置。
以下表列出了不同平台上密码文件名字要求和位置要求
例如,一个sid为orcldw的数据库实例,在Linux上密码文件必须被命名为orapworcldw,在Windos平台上PWDorcldw.
如平台要求一个环境变量被设置为密码文件路径,那该平台上的Oracle实时应用集群环境中,每个实例的该环境变量必须指定同一个密码文件。.
对于一个 policy-managed Oracle RAC 数据库或者一个有db_unique_name_n(n为一个数字)形式的ORACLE_SID的Oracle RAC One Node 数据库,密码文件在使用前缀:ORACLE_HOME/dbs/orapw
sid_prefix或 ORACLE_HOME\database\PWD
sid_prefix.ora的文件中被搜索
.sid_prefix (the 数据库名的前8个字符)用于查找密码文件。
注意:
1.保护你的密码文件和标识密码文件位置的环境变量对数据库系统的安全相当的重要。
2.等号左右无空格
……
更多信息请参考以下连接
http://docs.oracle.com/cd/E16655_01/server.121/e17636/dba.htm#i1006814
实例:把数据库名改成Lai_Yu.1
C:\Documents and Settings\Administrator.HAIXIA-6C5F59BA>sqlplus sys/abc123 as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 1月 3 12:28:29 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 209715664 bytes
Database Buffers 318767104 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
SQL>
C:\Documents and Settings\Administrator.HAIXIA-6C5F59BA>nid TARGET=SYS DBNAME=Lai_Yu.1 SETNAME=YES
DBNEWID: Release 11.2.0.1.0 - Production on 星期五 1月 3 13:06:43 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
口令:
已连接数据库 MYORCL (DBID=241062891)
已连接服务器版本 11.2.0
数据库中的控制文件数:
C:\APP\ADMINISTRATOR\ORADATA\MYORCL\CONTROL01.CTL
C:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYORCL\CONTROL02.CTL
是否将数据库 MYORCL 的数据库名更改为 LAI_YU.1? (Y/[N]) => y
操作继续进行
将数据库名从 MYORCL 更改为 LAI_YU.1
控制文件 C:\APP\ADMINISTRATOR\ORADATA\MYORCL\CONTROL01.CTL - 已修改
控制文件 C:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYORCL\CONTROL02.CTL - 已修改
数据文件 C:\APP\ADMINISTRATOR\ORADATA\MYORCL\SYSTEM01.DB - 已写入新名称
数据文件 C:\APP\ADMINISTRATOR\ORADATA\MYORCL\SYSAUX01.DB - 已写入新名称
数据文件C:\APP\ADMINISTRATOR\ORADATA\MYORCL\UNDOTBS01.DB - 已写入新名称
数据文件 C:\APP\ADMINISTRATOR\ORADATA\MYORCL\USERS01.DB - 已写入新名称
数据文件 C:\APP\ADMINISTRATOR\ORADATA\MYORCL\EXAMPLE01.DB - 已写入新名称
数据文件 C:\APP\ADMINISTRATOR\ORADATA\MYORCL\TEMP01.DB - 已写入新名称
控制文件 C:\APP\ADMINISTRATOR\ORADATA\MYORCL\CONTROL01.CTL - 已写入新名称
控制文件 C:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\MYORCL\CONTROL02.CTL - 已写入新名称
实例关闭
数据库名已更改为 LAI_YU.1。
修改参数文件并在重新启动前生成新的口令文件。
已成功更改数据库名。
DBNEWID - 已成功完成。
更改初始化参数文件中的db_name值为你要的新的数据库名
估计是文件类型被关联导致,,正常的显示如下
SQL> create spfile from pfile='C:\app\Administrator\admin\myorcl\pfile\init.ora';
create spfile from pfile='C:\app\Administrator\admin\myorcl\pfile\init.ora'
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结尾
进程 ID: 3552
会话 ID: 125 序列号: 5
解决方法:退出sqlplus,再登录sqlplus,如下
SQL> exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
C:\Documents and Settings\Administrator.HAIXIA-6C5F59BA>sqlplus sys/abc123 as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 1月 3 13:47:06 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
已连接到空闲例程。
已连接到空闲例程。
SQL> create spfile from pfile='C:\app\Administrator\admin\myorcl\pfile\init.ora';
create spfile from pfile='C:\app\Administrator\admin\myorcl\pfile\init.ora'
*
第 1 行出现错误:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file
'C:\APP\ADMINISTRATOR\ADMIN\MYORCL\PFILE\INIT.ORA'
解决方法:加上类型
SQL> create spfile from pfile='C:\app\Administrator\admin\myorcl\pfile\init.ora.611201394741';
文件已创建。
C:\Documents and Settings\Administrator.HAIXIA-6C5F59BA>orapwd file=C:\app\Administrator\product\11.2.0\dbhome_1\database\PWDmyorcl.ora ENTRIES=30 FORCE=y
Enter password for SYS:
C:\Documents and Settings\Administrator.HAIXIA-6C5F59BA>
SQL>startup
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 180355536 bytes
Database Buffers 348127232 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
数据库已经打开。
SQL>