oracle更改数据库名的⽅法
如何修改数据库名(db_name)及实例名(Instance_name or Service_name)
Nid是Oracle从9iR2开始提供的⼯具,可以⽤来更改数据库名称,⽽⽆需通过之前重建控制⽂件等繁琐⽅式。
nid是⾃带的⼯具,在oracle_home/bin⽬录中.以下⽅法假设登陆到数据库本机做。
⽬的:在本例中,假设原来的数据库名为orcl,要改成dborcl,原实例名(service_name,instance_name)orcl,要改成dborcl. 步骤概述:
1.检查当前的参数情况
2.shutdown数据库,然后mount数据库
3.运⾏nid命令
4.更改参数⽂件a(db_name,instance_name)
5.检测更改情况
6.如果是windows平台,要修改服务
7.修改监听服务
C:\Documents and Settings\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10⽉ 22 11:56:33 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
plsql12配置数据库连接NLSRTL Version 10.2.0.1.0 - Production
1. 查看更改前的相应名称
SQL> show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string orcl
db_unique_name string orcl
global_names boolean FALSE
instance_name string orcl
lock_name_space string
log_file_name_convert string
service_names string orcl
2. --先shutdown数据库
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
3. --nid需要在mount状态下才能做。因为要更改控制⽂件的信息
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 180358020 bytes
Database Buffers 423624704 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
nid是操作系统的命令,所以要⽤host
SQL> host nid -help
DBNEWID: Release 10.2.0.1.0 - Production on Fri Oct 23 13:40:54 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Keyword Description (Default)
----------------------------------------------------
TARGET Username/Password (NONE)
DBNAME New database name (NONE)
LOGFILE Output Log (NONE)
REVERT Revert failed change NO
SETNAME Set a new database name only NO
APPEND Append to output log NO
HELP Displays these messages NO
以上是nid命令的语法
4。 --运⾏nid命令
SQL> host nid target=sys/aibo dbname=dborcl
DBNEWID: Release 10.2.0.1.0 - Production on 星期四 10⽉ 22 11:58:27 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接数据库 ORCL (DBID=1224293825)
已连接服务器版本 10.2.0
数据库中的控制⽂件数:
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
是否将数据库 ID 和数据库名 ORCL 更改为 DBORCL? (Y/[N]) => y
操作继续进⾏
将数据库 ID 从 1224293825 更改为 3277448932
将数据库名从 ORCL 更改为 DBORCL
控制⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL - 已修改
控制⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL - 已修改
控制⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL - 已修改
数据⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF - dbid 已更改, 已写⼊新名称
数据⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF - dbid 已更改, 已写⼊新名称
数据⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF - dbid 已更改, 已写⼊新名
数据⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF - dbid 已更改, 已写⼊新名称
数据⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF - dbid 已更改, 已写⼊新名称
数据⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF - dbid 已更改, 已
写⼊新名称
控制⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL - dbid 已更改, 已写⼊新名称
控制⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL - dbid 已更改, 已写⼊新名称
控制⽂件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL - dbid 已更改, 已写⼊新名称
实例关闭
数据库名已更改为 DBORCL。
修改参数⽂件并在重新启动前⽣成新的⼝令⽂件。
数据库 DBORCL 的数据库 ID 已更改为 3277448932。
此数据库的所有以前的备份和归档重做⽇志均不可⽤。
数据库⽆法识别恢复区中以前的备份和归档⽇志。
数据库已关闭, ⽤ RESETLOGS 选项打开数据库。
已成功更改数据库名和 ID。
DBNEWID - 已成功完成。
5. ---shutdown数据库
SQL> shutdown immediate
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 180358020 bytes
Database Buffers 423624704 bytes
Redo Buffers 7135232 bytes
SQL> create pfile='D:\oracle\product\10.2.a' from spfile;
⽂件已创建。
SQL> shutdown immediate;
ORA-01507:
6. ---修改初始化参数⽂件、spfile⽂件(a/spfile)
>>>>>>>>###
instance_name=eyglen
#instance_name=eyglev
>>>>>>>>###
db_domain=""
db_name=eyglen
# db_name=eyglev
>>>>>>>>###
7. ---以修改后的参数启动数据库
SQL> startup pfile='D:\oracle\product\10.2.a'
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 180358020 bytes
Database Buffers 423624704 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使⽤ RESETLOGS 或 NORESETLOGS 选项SQL> create spfile from pfile='D:\oracle\product\10.2.a'
2 ;
⽂件已创建。
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 180358020 bytes
Database Buffers 423624704 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使⽤ RESETLOGS 或 NORESETLOGS 选项SQL> alter database open noresetlogs
2 ;
alter database open noresetlogs
*
第 1 ⾏出现错误:
ORA-01588: 要打开数据库则必须使⽤ RESETLOGS 选项
SQL> alter database open resetlogs
2 ;
数据库已更改。
8. --现在数据库已经启动了啊,那就检查下吧,看看是否已经修改了
SQL> select open_mode from v$database;
OPEN_MODE
----------
READ WRITE
SQL> show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string dborcl
db_unique_name string dborcl
global_names boolean FALSE
instance_name string dborcl
lock_name_space string
log_file_name_convert string
service_names string dborcl
SQL>
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl
9. 发现v$instance⾥的没有修改过来,这是因为在windows平台,继续如下操作
********如果是windows平台,v$instance⾥的instanc_name没有变,继续如下操作
passwd⽂件通常放在oracle_home/database⽬录下,⽂件命名形式为a,sid为实例名(Service_name),
如当前的数据库名及service_name为orcl,则passwd⽂件为a
C:\Documents and Settings\Administrator>orapwd file=D:\oracle\product\10.2.0\db_
1\a password=aibo entries=5
要注意⼀下,此时虽然数据库名已经改成dborcl了,但instance_name还是orcl,所以,passwd⽂件必须跟以前⼀样。否则会出错。
10. 删除以前的实例orcl
C:\Documents and Settings\Administrator>oradim -delete -sid orcl
实例已删除。
11. 创建新的实例名 dborcl
C:\Documents and Settings\Administrator>oradim -new -sid dborcl -intpwd aibo -st
artmode a -pfile D:\oracle\product\10.2.a
OPW-00005: 存在相同名称的⽂件 - 请删除或重命名
实例已创建。
12.
C:\Documents and Settings\Administrator>set oracle_sid=dborcl
C:\Documents and Settings\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10⽉ 22 13:41:12 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> quit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
13.检查服务名
C:\Documents and Settings\Administrator>lsnrctl reload
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-10⽉-2009 13:4
3:13
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.56)(PORT=1521))) 命令执⾏成功
C:\Documents and Settings\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10⽉ 22 13:43:21 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select open_mode from v$database;
OPEN_MODE
----------
READ WRITE
SQL> select instance_name from v$instance;
INSTANCE_NAME
-
---------------
dborcl
SQL> show parameter name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string dborcl
db_unique_name string dborcl
global_names boolean FALSE
instance_name string dborcl
lock_name_space string
log_file_name_convert string
service_names string dborcl
SQL> quit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
检查service是否被更改
C:\Documents and Settings\Administrator>tnsping dborcl
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-10⽉-
2009 13:50:00
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使⽤的参数⽂件:
D:\oracle\product\10.2.0\db_1\network\a
已使⽤ EZCONNECT 适配器来解析别名
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=dborcl.gdgg.local ))(ADDRESS=(PROTOCOL=TCP)(HOST=202.106.195.30)(PORT=1521)))
^C
测试不通过,说明dborcl配置有问题
修改a⽂件,添加如下内容:
×××××××××××××××××××××××××××××××××××××××××××××××××××××
DBORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.56)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dborcl)
)
)
×××××××××××××××××××××××××××××××××××××××××××××××××××××
--重启监听
C:\Documents and Settings\Administrator>lsnrctl reload
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-10⽉-2009 13:5
0:46

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论