| 
                         如何修改数据库名(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 SettingsAdministrator>sqlplus "/as sysdba"  SQLPlus: 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,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,Oracle. All rights reserved.  已连接数据库 ORCL (DBID=1224293825)  已连接服务器版本 10.2.0  数据库中的控制文件数:  D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTL  D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL02.CTL  D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.CTL  是否将数据库 ID 和数据库名 ORCL 更改为 DBORCL? (Y/[N]) => y  操作继续进行  将数据库 ID 从 1224293825 更改为 3277448932  将数据库名从 ORCL 更改为 DBORCL  控制文件 D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTL - 已修改  控制文件 D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL02.CTL - 已修改  控制文件 D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.CTL - 已修改  数据文件 D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF - dbid 已更改, 已写入新名称  数据文件 D:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF - dbid 已更改, 已写入新名称  数据文件 D:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF - dbid 已更改, 已写入新名称  数据文件 D:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF - dbid 已更改,已  写入新名称  数据文件 D:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF - dbid 已更改, 已写入新名称  数据文件 D:ORACLEPRODUCT10.2.0ORADATAORCLTEMP01.DBF - dbid 已更改,已  写入新名称  控制文件 D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTL - dbid 已更改, 已写入新名称  控制文件 D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL02.CTL - dbid 已更改, 已写入新名称  控制文件 D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.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:oracleproduct10.2.0pfile20091022.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:oracleproduct10.2.0pfile20091022.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:oracleproduct10.2.0pfile20091022.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),  如当前的数据库名及servicename为orcl,则passwd文件为PWDorcl.ora C:Documents and SettingsAdministrator>orapwd file=D:oracleproduct10.2.0db  1databasePWDdborcl.ora password=aibo entries=5  要注意一下,此时虽然数据库名已经改成dborcl了,但instance_name还是orcl,所以,passwd文件必须跟以前一样。否则会出错。 10. 删除以前的实例orcl  C:Documents and SettingsAdministrator>oradim -delete -sid orcl  实例已删除。  11. 创建新的实例名 dborcl  C:Documents and SettingsAdministrator>oradim -new -sid dborcl -intpwd aibo -st  artmode a -pfile D:oracleproduct10.2.0pfile20091022.ora  OPW-00005: 存在相同名称的文件 - 请删除或重命名  实例已创建。  12. C:Documents and SettingsAdministrator>set oracle_sid=dborcl  C:Documents and SettingsAdministrator>sqlplus "/as sysdba"  SQLPlus: Release 10.2.0.1.0 - Production on 星期四 10月 22 13:41:12 2009  Copyright (c) 1982,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 SettingsAdministrator>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,Oracle. All rights reserved.  正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.56)(PORT=1521)))  命令执行成功  C:Documents and SettingsAdministrator>sqlplus "/as sysdba"  SQLPlus: Release 10.2.0.1.0 - Production on 星期四 10月 22 13:43:21 2009  Copyright (c) 1982,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 SettingsAdministrator>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,Oracle. All rights reserved.  已使用的参数文件:  D:oracleproduct10.2.0db_1networkadminsqlnet.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 SettingsAdministrator>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,Oracle. All rights reserved.  正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.56)(PORT=1521)))  命令执行成功 ---在测试  C:Documents and SettingsAdministrator>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,Oracle. All rights reserved.  已使用的参数文件:  D:oracleproduct10.2.0db_1networkadminsqlnet.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) ,都已经更改                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |