首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 修改實例名 SID 完整操作指南(CentOS 6.5 / 10.2 實測)

     編輯:Oracle 資料庫相關知識

因業務整合、測試環境克隆或命名規範統一,常需修改 Oracle 資料庫實例名(SID)。本文以 CentOS 6.5 + Oracle 10.2.0.5 為例,記錄從環境變數、控制檔、參數檔、口令檔到驗證的全流程操作,並說明 SID ≠ DB_NAME 的關鍵區別。

環境基線

項目修改前修改後
OSCentOS 6.5 x86_64
Oracle 版本10.2.0.5.0
ORACLE_SIDorcllinuxidc
DB_NAMEorclorcl(未變)
ORACLE_HOME/u01/app/oracle/product/10.2.0/db_1

操作步驟

1. 確認原實例名

$ echo $ORACLE_SID
orcl

$ sqlplus / as sysdba
SQL> SELECT instance FROM v$thread;
INSTANCE
--------
orcl

2. 正常關閉資料庫

SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> EXIT

3. 修改 oracle 用戶環境變數

$ vi ~/.bash_profile
# 修改 ORACLE_SID
export ORACLE_SID=linuxidc
# 生效
$ source ~/.bash_profile
$ echo $ORACLE_SID
linuxidc

4. 修改 /etc/oratab(影響 dbstart/dbshut 與 OEM 發現)

$ vi /etc/oratab
# 原行:orcl:/u01/app/oracle/product/10.2.0/db_1:Y
linuxidc:/u01/app/oracle/product/10.2.0/db_1:Y

5. 重命名 $ORACLE_HOME/dbs 下關鍵檔案

$ cd $ORACLE_HOME/dbs
$ ls -l *orcl* *zf*  # 視實際檔名而定
$ mv hc_orcl.dat      hc_linuxidc.dat
$ mv lkorcl           lklinuxidc
$ mv orapworcl        orapwlinuxidc
$ mv spfileorcl.ora   spfilelinuxidc.ora
$ mv initorcl.ora     initlinuxidc.ora

注意:檔名中 SID 部分需與新 SID 完全一致,否則啟動時會報 ORA-01078 或找不到參數檔。

6. 重建口令檔

$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=123456 entries=5 force=y
# 產生 orapwlinuxidc

舊口令檔改名後無法被新實例識別,必須重建。

7. 啟動資料庫驗證

$ sqlplus / as sysdba
SQL> STARTUP
ORACLE instance started.
Database mounted.
Database opened.

SQL> SELECT instance FROM v$thread;
INSTANCE
--------
linuxidc

關鍵補充:SID vs DB_NAME

執行上述步驟後,實例名已變更為 linuxidc,但資料庫名仍為 orcl。這意味著:

  • 客戶端 tnsnames.ora 中 SID=linuxidc 可連線。
  • 若使用 SERVICE_NAME 連線,服務名預設為 orcl(DB_NAME),需同步修改 SERVICE_NAMES 參數或 LISTENER.ORA GLOBAL_DBNAME。
  • Data Guard、GoldenGate、RMAN 腳本中引用 DB_NAME 的地方不可隨意修改,否則會導致備份恢復、同步邏輯失效。

若需同步修改 DB_NAME(謹慎操作)

  1. STARTUP MOUNT
  2. 使用 NID 工具:nid target=/ dbname=newdbname setname=YES
  3. 修改 init.ora/spfile 中 DB_NAME=newdbname
  4. 重建控制檔或 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 重建
  5. 更新 tnsnames.ora、listener.ora、/etc/oratab、環境變數
  6. 重啟驗證

最佳實踐:僅修改 SID 滿足多實例共存、測試環境隔離需求;修改 DB_NAME 屬高風險操作,需完整備份、停機窗口、回滾預案,非必要不建議執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved