广

oracle数据库

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    oracle 更改数据库名的方法

    2018-05-04 21:20:45 次阅读 稿源:互联网
    广告
    全网推广平台,软文发布
    如何修改数据库名(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) ,都已经更改

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告
    广告