Decode360's Blog

          業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          修改DBNAME
          ?
          ?
          ??? 最近通過VMware硬盤的直接復制來創建結點,需要修改DBID和DBNAME(保證數據庫環境可用),找了找可以用來直接修改DBNAME的方法,還真有,原來Oracle本身就自帶了這個功能的工具(NID),用了一下發現使用還是比較方便的,但是更改之后問題多多,使用的最終結論還是:不到萬不得已不推薦使用,因為DBID涉及到的關聯很多,修改SID后會引發很多不可預知的錯誤,很多參數都任然沿用之間的%SID%,如果沒有非常特殊的要求,還是保留datafile后,刪除重建。講一下 具體的操作過程:

          一、NID的用法:
          ?
          ??? 這是Oracle自帶的工具,數據庫安裝完成后就自動安裝了。
          C:\>nid
          DBNEWID: Release 9.2.0.1.0 - Production
          Copyright (c) 1995, 2002, Oracle Corporation.? 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

          用法舉例:

          1) 只修改DBID的用法 :
          wangxiaoqi> nid TARGET=sys/sys

          2) 修改DBID和DBNAME的用法:
          wangxiaoqi> nid TARGET=sys/sys DBNAME=kaka02

          3) 只修改DBNAME不改DBID的用法:
          wangxiaoqi> nid TARGET=sys/sys DBNAME=kaka02 SETNAME=YES
          ?
          4) 添加日志的用法
          wangxiaoqi> nid TARGET=sys/sys DBNAME=kaka02 SETNAME=YES LOGFILE='D:\test\nid.log'
          --理論上應該是這樣的,但是這個測試沒通過,根本不產生LOG
          ?
          ?
          二、修改步驟:
          ?
          1) 連接并修改DBNAME
          ?
          SQL> conn sys/sys as sysdba
          Connected.

          SQL> shutdown immediate
          Database closed.
          Database dismounted.
          ORACLE instance shut down.
          SQL> startup mount
          ORACLE instance started.
          ?
          Total System Global Area? 135338868 bytes
          Fixed Size?????????????????? 453492 bytes
          Variable Size???????????? 109051904 bytes
          Database Buffers?????????? 25165824 bytes
          Redo Buffers???????????????? 667648 bytes
          Database mounted.
          SQL> host nid target=sys/sys dbname=kaka02
          DBNEWID: Release 9.2.0.1.0 - Production
          Copyright (c) 1995, 2002, Oracle Corporation.? All rights reserved.
          ?
          Connected to database KAKA (DBID=524574739)
          ?
          Control Files in database:
          ??? D:\ORACLE\ORADATA\KAKA\CONTROL01.CTL
          ??? D:\ORACLE\ORADATA\KAKA\CONTROL02.CTL
          ??? D:\ORACLE\ORADATA\KAKA\CONTROL03.CTL
          ?
          Change database ID and database name KAKA to KAKA02? (Y/[N]) => y
          ?
          Proceeding with operation
          Changing database ID from 524574739 to 2420728802
          Changing database name from KAKA to KAKA02
          ??? Control File D:\ORACLE\ORADATA\KAKA\CONTROL01.CTL - modified
          ??? Control File D:\ORACLE\ORADATA\KAKA\CONTROL02.CTL - modified
          ??? Control File D:\ORACLE\ORADATA\KAKA\CONTROL03.CTL - modified
          ??? Datafile D:\ORACLE\ORADATA\KAKA\SYSTEM01.DBF - dbid changed, wrote new name
          ??? Datafile D:\ORACLE\ORADATA\KAKA\UNDOTBS01.DBF - dbid changed, wrote new name
          ??? Control File D:\ORACLE\ORADATA\KAKA\CONTROL01.CTL - dbid changed, wrote new name
          ??? Control File D:\ORACLE\ORADATA\KAKA\CONTROL02.CTL - dbid changed, wrote new name
          ??? Control File D:\ORACLE\ORADATA\KAKA\CONTROL03.CTL - dbid changed, wrote new name
          ?
          Database name changed to KAKA02.
          Modify parameter file and generate a new password file before restarting.
          Database ID for database KAKA02 changed to 2420728802.
          All previous backups and archived redo logs for this database are unusable.
          Shut down database and open with RESETLOGS option.
          Succesfully changed database name and ID.
          DBNEWID - Completed succesfully.

          2) 修改db_name參數,重啟數據庫

          SQL> shutdown immediate
          ORA-01109: database not open
          Database dismounted.
          ORACLE instance shut down.

          ? --在spfile文件里作相應修改,數據庫db_name
          SQL>startup mount;
          SQL>alter system set db_name=kaka02 scope=spfile;
          System altered.
          ? --如果是pfile文件,需手工修改db_name參數值

          3) 重新創建密碼文件

          SQL>host orapwd file=c:\oracle\ora92\database\pwdkaka02.ora password=sys entries=8
          SQL> conn
          sys/sys as sysdba
          Connected to an idle instance.

          4) 以Resetlogs選項打開數據庫

          SQL> startup mount
          ORACLE instance started.
          ?
          Total System Global Area? 135338868 bytes
          Fixed Size?????????????????? 453492 bytes
          Variable Size???????????? 109051904 bytes
          Database Buffers?????????? 25165824 bytes
          Redo Buffers???????????????? 667648 bytes
          Database mounted.

          SQL> alter database open resetlogs;

          Database altered.

          5) 查看修改是構成功

          SQL> select dbid,name from v$database;

          ????? DBID NAME
          ---------- ---------
          2420728802 KAKA02

          SQL>

          注意:2、3不能顛倒,否則,重建口令文件是不可用的
          ?
          ?
          三、注意修改監聽
          ?
          ??? 發現在..\network\admin\listener.ora下直接添加SID修改不管用,監聽起來的時候還是沒有對新的DB進行監聽。
          ?
          ??? 最后在圖形界面下增加了新的SID后,重啟lsnrctl,連接成功。
          ?
          ?
          ?
          ?
          ?
          ?
          ?
          附:Tom對修改SID的建議和過程:
          ***************************************************
          http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:318216852435
          ***************************************************
          ?
          ?
          ?
          ?
          posted on 2009-06-20 23:19 decode360 閱讀(787) 評論(0)  編輯  收藏 所屬分類: 10.DB_Tools
          主站蜘蛛池模板: 子长县| 土默特左旗| 泰兴市| 平潭县| 日喀则市| 尼木县| 茌平县| 峨山| 连州市| 七台河市| 甘孜| 郸城县| 综艺| 长丰县| 南江县| 通许县| 来宾市| 新民市| 始兴县| 云林县| 榆树市| 灌云县| 修武县| 政和县| 德保县| 高安市| 邵武市| 宜兰市| 神木县| 定安县| 德庆县| 和林格尔县| 治多县| 武隆县| 宁化县| 靖远县| 沁阳市| 四子王旗| 边坝县| 保德县| 麻江县|