当前位置: 移动技术网 > IT编程>数据库>Oracle > oracle 更改数据库名的方法

oracle 更改数据库名的方法

2017年12月12日  | 移动技术网IT编程  | 我要评论

黄雀衔环,莫小晓qq,年中个人总结

如何修改数据库名(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.更改参数文件pfile.ora(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
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.0\pfile20091022.ora' from spfile;
文件已创建。
sql> shutdown immediate;
ora-01507: ??????

6. ---修改初始化参数文件、spfile文件(init.ora/spfile)

###########################################
instance_name=eyglen
#instance_name=eyglev
###########################################
db_domain=""
db_name=eyglen
# db_name=eyglev
###########################################
7. ---以修改后的参数启动数据库
sql> startup pfile='d:\oracle\product\10.2.0\pfile20091022.ora'
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.0\pfile20091022.ora'
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目录下,文件命名形式为pwdsid.ora,sid为实例名(service_name),
如当前的数据库名及service_name为orcl,则passwd文件为pwdorcl.ora

c:\documents and settings\administrator>orapwd file=d:\oracle\product\10.2.0\db_
1\database\pwddborcl.ora 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.0\pfile20091022.ora
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\admin\sqlnet.ora
已使用 ezconnect 适配器来解析别名
attempting to contact (description=(connect_data=(service_name=dborcl.gdgg.local
))(address=(protocol=tcp)(host=202.106.195.30)(port=1521)))
^c

测试不通过,说明dborcl配置有问题

修改tnsnames.ora文件,添加如下内容:
×××××××××××××××××××××××××××××××××××××××××××××××××××××
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
copyright (c) 1991, 2005, oracle. all rights reserved.
正在连接到 (description=(address=(protocol=tcp)(host=192.168.2.56)(port=1521)))
命令执行成功

---在测试
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:52:18
copyright (c) 1997, 2005, oracle. all rights reserved.
已使用的参数文件:
d:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

已使用 tnsnames 适配器来解析别名
attempting to contact (description = (address = (protocol = tcp)(host = 192.168.
2.56)(port = 1521)) (connect_data = (server = dedicated) (service_name = dborcl)
))
ok (20 毫秒)

到此所有的 数据库名(db_name)及实例名(instance_name or service_name) ,都已经更改

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网