本發(fā)明涉及一種IT 運維領域,具體地說是一種Oracle數據庫修改字符集的方法。
背景技術:
在IT運維過程中測試開發(fā)環(huán)境需要搭建部署大量的Oracle數據庫環(huán)境,經常出現申請信息不準確而導致Oracle數據庫環(huán)境重復部署的問題,給運維人員帶來了很多不必要的重復性工作,尤其是Oracle數據庫的字符集變更的問題給眾多運維工程師帶來了不小的麻煩,如果需要更換字符集一般情況下是要對Oracle數據庫重新建庫來完成。這樣既增加了運維人員的工作量又延后了測試開發(fā)人員的項目周期。
技術實現要素:
本發(fā)明的技術任務是提供一種Oracle數據庫修改字符集的方法,來解決因Oracle數據庫字符集錯誤而對Oracle數據庫重新建庫所增加的工作量和浪費的工作時間的問題。
本發(fā)明的技術任務是按以下方式實現的,一種Oracle數據庫修改字符集的方法,步驟為:
(1)完全關閉一個節(jié)點1;
(2)、在節(jié)點2操作,修改cluster_database參數為false,變成單實例;
(3)、在節(jié)點2上關閉數據庫,重啟數據庫;
(4)、在節(jié)點2上分別執(zhí)行命令;
(5)、重新啟動數據庫后啟動節(jié)點1。
步驟(1)中,oracle用戶下執(zhí)行如下代碼:srvctl stop nodeapps -n name1;root用戶下執(zhí)行如下代碼:crsctl stop crs (一般在/opt/app/crs/bin/根據實際情況而定)。
步驟(2)中,代碼為:SQL> alter system set cluster_database=false scope=spfile。
步驟(4)中,將數據庫啟動到RESTRICTED模式下做字符集更改:
SQL> conn /as sysdba
Connected
SQL> shutdown immediate;
Database closed
Database dismounted
ORACLE instance shut down
SQL> startup mount
ORACLE instance started
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered
SQL> alter database open;
Database altered
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set。
步驟(4)中,若遇到提示字符集內容為:新字符集必須為舊字符集的超集,此時,跳過超集的檢查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered
SQL> select * from v$nls_parameters;
19 rows selected
SQL> alter system set cluster_database=true scope=spfile。
步驟(5)中,代碼為:crsctl start crs(一般在/opt/app/crs/bin/ 根據實際情況而定)。
本發(fā)明的一種Oracle數據庫修改字符集的方法具有以下優(yōu)點:
1、本發(fā)明應用在針對于測試開發(fā)環(huán)境對Oracle字符集緊急臨時變更及在部署Oracle環(huán)境前字符集選擇錯誤而需要緊急修改的場景;
2、采用本方法進行Oracle數據庫字符集修改不需要對Oracle重新建庫操作減少了工作量并節(jié)省了時間;
3、為應急修改字符集提供了可行方法;
4、操作方便,應用簡便,因而,具有很好的推廣使用價值。
具體實施方式
參照具體實施例對本發(fā)明的一種Oracle數據庫修改字符集的方法作以下詳細地說明。
實施例:
本發(fā)明的一種Oracle數據庫修改字符集的方法, 步驟為:
(1)完全關閉一個節(jié)點1;
(2)、在節(jié)點2操作,修改cluster_database參數為false,變成單實例;
(3)、在節(jié)點2上關閉數據庫,重啟數據庫;
(4)、在節(jié)點2上分別執(zhí)行命令;
(5)、重新啟動數據庫后啟動節(jié)點1。
步驟(1)中,oracle用戶下執(zhí)行如下代碼:srvctl stop nodeapps -n name1;root用戶下執(zhí)行如下代碼:crsctl stop crs (一般在/opt/app/crs/bin/根據實際情況而定)。
步驟(2)中,代碼為:SQL> alter system set cluster_database=false scope=spfile。
步驟(4)中,將數據庫啟動到RESTRICTED模式下做字符集更改:
SQL> conn /as sysdba
Connected
SQL> shutdown immediate;
Database closed
Database dismounted
ORACLE instance shut down
SQL> startup mount
ORACLE instance started
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered
SQL> alter database open;
Database altered
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set。
步驟(4)中,若遇到提示字符集內容為:新字符集必須為舊字符集的超集,此時,跳過超集的檢查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered
SQL> select * from v$nls_parameters;
19 rows selected
SQL> alter system set cluster_database=true scope=spfile。
步驟(5)中,代碼為:crsctl start crs(一般在/opt/app/crs/bin/ 根據實際情況而定)。
通過上面具體實施方式,所述技術領域的技術人員可容易的實現本發(fā)明。但是應當理解,本發(fā)明并不限于上述的具體實施方式。在公開的實施方式的基礎上,所述技術領域的技術人員可任意組合不同的技術特征,從而實現不同的技術方案。
除說明書所述的技術特征外,均為本專業(yè)技術人員的已知技術。