• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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.更改参数文件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) ,都已经更改
    您可能感兴趣的文章:
    • ORACLE查询表最近更改数据的方法
    • 将oracle的create语句更改为alter语句使用
    • Oracle Faq(如何在ORACLE中更改表的列名和顺序 )
    • Oracle数据库并行查询出错的解决方法
    • oracle12c安装报错:PRVF-0002的解决方法
    • Oracle用户密码含有特殊字符导致无法登陆解决方法
    • Oracle数据库账号被锁定解决方法
    • Oracle数据更改后出错的解决方法
    上一篇:oracle impdp network_link参数使用介绍
    下一篇:Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    oracle 更改数据库名的方法 oracle,更改,数据库,名,的,