新聞中心
求助,如何修改ORACLE默認(rèn)SID
比如將sid=orcl 更改為sid=db01

創(chuàng)新互聯(lián)建站主營(yíng)潢川網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都APP應(yīng)用開(kāi)發(fā),潢川h5微信小程序搭建,潢川網(wǎng)站營(yíng)銷(xiāo)推廣歡迎潢川等地區(qū)企業(yè)咨詢(xún)
1.shutdown immediate
2.[oracle@oracle ~]$ vi .bash_profile
export ORACLE_SID=bd01
[oracle@oracle ~]$ source .bash_profile(使其生效)
3.修改 /etc/oratab 文件 ; 在文件的最后一行 將 orcl 改為db01
db01:/u01/app/oracle/product/10.2.0:N
4. 接下來(lái)就應(yīng)該修改 oracle 目錄里邊的文件 cd
/$ORACLE_HOME/dbs 把所有包含 orcl 的文件名 ,修改為 包含 db01 的文件名
mv
hc_orcl.dat hc_db01.dat
mv lkORCL lkDB01
mv spfileorcl.ora
spfildb01.ora
mv orapworcl
orapwdb01
5.重建口令文件 我的用戶(hù)名密碼
為:oracle@oracle
[oracle@oracle dbs]$ orapwd
file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle
6 啟動(dòng)數(shù)據(jù)庫(kù),更改sid成功
SQL startup
select instance_name from v$instance;
INSTANCE
oracle中怎么執(zhí)行帶有輸出參數(shù)的存儲(chǔ)過(guò)程,在程序中我知道怎么調(diào)用,
下面說(shuō)明在SQL
DEVELOPER中的做法,右擊存儲(chǔ)結(jié)構(gòu)的文件名,在菜單中選擇RUN,會(huì)跳出一個(gè)叫RUN
PL/SQL的頁(yè)面,在下方寫(xiě)著PL/SQL
BLOCK
的地方修改輸入?yún)?shù)
spno
=spno
修改為spno
=真實(shí)的值
具體可以參看HELP中的Run/Debug/Profile
PL/SQL
怎么修改oracle 默認(rèn)表空間
在oracle中,用戶(hù)的默認(rèn)永久性表空間為system,默認(rèn)臨時(shí)表空間為temp。如果所有的用戶(hù)都使用默認(rèn)的臨時(shí)表空間,無(wú)疑會(huì)增加system與temp表空間的競(jìng)爭(zhēng)性。
oracle允許使用自定義的表空間作為默認(rèn)的永久性表空間,使用自定義臨時(shí)表空間作為默認(rèn)臨時(shí)表空間。
設(shè)置默認(rèn)的表空間的語(yǔ)法如下。
alter database default [temporary] tablespace tablespace_name
如果使用temporary關(guān)鍵字,則表示設(shè)置默認(rèn)臨時(shí)表空間;如果不適用該關(guān)鍵字,則表示設(shè)置默認(rèn)永久性表空間。
查詢(xún)默認(rèn)的表空間
select property_name,property_value from database_properties where property_name in('DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE'); PROPERTY_NAME PROPERTY_VALUE -------------------- -------------------- DEFAULT_TEMP_TABLESP TEMP DEFAULT_PERMANENT_TA USERS
如上面的查詢(xún)結(jié)果所示,系統(tǒng)默認(rèn)的臨時(shí)表空間為temp,默認(rèn)的新用戶(hù)的表空間為users。
如何修改oracle的字符集編碼
1. 備份數(shù)據(jù)庫(kù)中所有用戶(hù)的數(shù)據(jù)
以oracle用戶(hù)登陸,執(zhí)行以下命令
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”
保持與數(shù)據(jù)庫(kù)服務(wù)器端一致,這樣在exp導(dǎo)出時(shí),就不會(huì)存在字符的轉(zhuǎn)換了,備份最原始的數(shù)據(jù)。
2. 評(píng)估UTF8轉(zhuǎn)換成ZHS16GBK的風(fēng)險(xiǎn)
轉(zhuǎn)換之前,要使用Oracle的csscan工具對(duì)數(shù)據(jù)庫(kù)掃描,評(píng)估字符集轉(zhuǎn)換前后,數(shù)據(jù)有可能的損壞情況。如果評(píng)估情況糟糕,那就絕對(duì)要放棄了。
先安裝屬于 CSMIG 用戶(hù)的一套表和過(guò)程。以oracle用戶(hù)登陸UNIX,
#sqlplus “/ as sysdab”
SQL@$ORACLE_HOME/ rdbms/admin/csminst.sql
SQLexit
# $ORACLE_HOME\bin\csscan -help
可以更清楚如何使用csscan。
# $ORACLE_HOME/bin/csscan system/sunday user=mmsc FROMCHAR=UTF8 TOCHAR=ZHS16GBK ARRAY=102400 PROCESS=3 csscan.log
以上命令意思是掃描用戶(hù):mmsc中的所有數(shù)據(jù),從字符集UTF8更改為ZHS16GBK的轉(zhuǎn)換情況。然后得到三個(gè)文件:scan.txt、scan.out、scan.err。
查看scan.out,scan.err,可以看出mmsc用戶(hù)下的所有的數(shù)據(jù)都是可以轉(zhuǎn)換的,并且沒(méi)有出現(xiàn)轉(zhuǎn)換“Exceptional”的情況,因此可以更放心一點(diǎn)。
3. 更改數(shù)據(jù)庫(kù)的字符集為ZHS16GBK
前面說(shuō)過(guò),通過(guò)命令“Alter Database Characeter Set XXXX”,實(shí)現(xiàn)從超集到子集的轉(zhuǎn)換,在Oracle是不允許的。但是該命令,提供這樣的命令方式:
Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX
怎么修改oracle數(shù)據(jù)庫(kù)的字符集
如何更改Oracle字符集
國(guó)內(nèi)最常用的Oracle字符集ZHS16GBK(GBK 16-bit Simplified Chinese)能夠支持繁體中文,并且按照2個(gè)字符長(zhǎng)度存儲(chǔ)一個(gè)漢字。UTF8字符集是多字節(jié)存儲(chǔ),1個(gè)漢字(簡(jiǎn)體、繁體)有時(shí)采用3個(gè)字符長(zhǎng)度存儲(chǔ)。
Oracle支持字符集的更改,但是UTF8是Oracle中最大的字符集,也就是說(shuō)UTF8是ZHS16GBK的嚴(yán)格超集。
對(duì)于子集到超集的轉(zhuǎn)換,Oracle是允許的,但是對(duì)于超集到子集的轉(zhuǎn)換是不允許的。一般對(duì)于超集到子集的轉(zhuǎn)換,建議是通過(guò)dbca刪除原來(lái)的數(shù)據(jù)庫(kù),重新再建庫(kù),選擇正確的字符集,然后導(dǎo)入備份。
我的方案是:先備份數(shù)據(jù),然后強(qiáng)制轉(zhuǎn)換字符集從UTF8到ZHS16GBK,然后導(dǎo)入備份數(shù)據(jù)。如果不行,才來(lái)重新建庫(kù),設(shè)置字符集ZHS16GBK,導(dǎo)入備份數(shù)據(jù)。如果這還不行,就把更改字符集從ZHS16GBK到UTF8(這是安全的),再導(dǎo)入備份數(shù)據(jù),恢復(fù)到原始狀況。這樣就有可能避開(kāi)重新建庫(kù)的麻煩。
1. 備份數(shù)據(jù)庫(kù)中所有用戶(hù)的數(shù)據(jù)
以oracle用戶(hù)登陸,執(zhí)行以下命令
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”
保持與數(shù)據(jù)庫(kù)服務(wù)器端一致,這樣在exp導(dǎo)出時(shí),就不會(huì)存在字符的轉(zhuǎn)換了,備份最原始的數(shù)據(jù)。
2. 評(píng)估UTF8轉(zhuǎn)換成ZHS16GBK的風(fēng)險(xiǎn)
轉(zhuǎn)換之前,要使用Oracle的csscan工具對(duì)數(shù)據(jù)庫(kù)掃描,評(píng)估字符集轉(zhuǎn)換前后,數(shù)據(jù)有可能的損壞情況。如果評(píng)估情況糟糕,那就絕對(duì)要放棄了。
先安裝屬于 CSMIG 用戶(hù)的一套表和過(guò)程。以oracle用戶(hù)登陸UNIX,
#sqlplus “/ as sysdab”
SQL@$ORACLE_HOME/ rdbms/admin/csminst.sql
SQLexit
# $ORACLE_HOME\bin\csscan -help
可以更清楚如何使用csscan。
# $ORACLE_HOME/bin/csscan system/sunday user=mmsc FROMCHAR=UTF8 TOCHAR=ZHS16GBK ARRAY=102400 PROCESS=3 csscan.log
以上命令意思是掃描用戶(hù):mmsc中的所有數(shù)據(jù),從字符集UTF8更改為ZHS16GBK的轉(zhuǎn)換情況。然后得到三個(gè)文件:scan.txt、scan.out、scan.err。
查看scan.out,scan.err,可以看出mmsc用戶(hù)下的所有的數(shù)據(jù)都是可以轉(zhuǎn)換的,并且沒(méi)有出現(xiàn)轉(zhuǎn)換“Exceptional”的情況,因此可以更放心一點(diǎn)。
3. 更改數(shù)據(jù)庫(kù)的字符集為ZHS16GBK
前面說(shuō)過(guò),通過(guò)命令“Alter Database Characeter Set XXXX”,實(shí)現(xiàn)從超集到子集的轉(zhuǎn)換,在Oracle是不允許的。但是該命令,提供這樣的命令方式:
Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX
這是Oracle的非公開(kāi)命令?!霸谑褂眠@個(gè)命令時(shí),Oracle會(huì)跳過(guò)所有子集及超集的檢查,在任意字符集之間進(jìn)行強(qiáng)制轉(zhuǎn)換,所以,使用這個(gè)命令時(shí)你必須十分小心,你必須清楚這一操作會(huì)帶來(lái)的風(fēng)險(xiǎn)”。
以oracle用戶(hù)登陸UNIX,
#sqlplus “/ as sysdba”
SQL SHUTDOWN IMMEDIATE;
SQL STARTUP MOUNT;
SQL ALTER SESSION SET SQL_TRACE=TRUE;
SQL ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL ALTER DATABASE OPEN;
SQL ALTER DATABASE CHARACTER SET ZHS16GBK;
//如果不使用“INTERNAL_USE”參數(shù),系統(tǒng)會(huì)提示出錯(cuò):
//ERROR at line 1:
//ORA-12712: new character set must be a superset of old character set
SQL ALTER SESSION SET SQL_TRACE=FALSE;
SQL SHUTDOWN IMMEDIATE;
SQL STARTUP;
此時(shí),檢查一下數(shù)據(jù)庫(kù)的字符集是否更改過(guò)來(lái)
SQL select value$ from props$ where name=’NLS_CHARACTERSET’;
VALUE$
-----------------
ZHS16GBK
緊接著檢查一下數(shù)據(jù)庫(kù)中簡(jiǎn)體中文、繁體中文是否正常,不會(huì)出現(xiàn)亂碼。
SQLselect spid,spname,spshortname from spinfovisual_hk
…...
非常不幸,我看到了一堆亂碼,這也證明了Oracle不支持字符集從超集到子集的更改,當(dāng)時(shí)心里很緊張,很怕失敗,從而恢復(fù)到原樣。
但是根據(jù)以前的驗(yàn)證,把UTF8下的備份導(dǎo)入到ZHS16GBK中去,是OK的,所以繼續(xù)嘗試。
4. 導(dǎo)入備份的用戶(hù)數(shù)據(jù)
還是以oracle用戶(hù)登陸UNIX, 先刪除庫(kù)中的用戶(hù)mmsc:
#sqlplus “/ as sysdba”
SQLdrop user mmsc cascade;
SQLexit
再運(yùn)行createuser.sql,生成mmsc用戶(hù)。
然后使用原來(lái)的備份文件,導(dǎo)入到mmsc用戶(hù)中:
注意:先設(shè)置NLS_LANG要與當(dāng)前數(shù)據(jù)庫(kù)的一致:ZHS16GBK。這樣,導(dǎo)出時(shí)用戶(hù)會(huì)話(huà)的NLS_LANG為UTF8,與原先的數(shù)據(jù)庫(kù)字符集一致;現(xiàn)在為ZHS16GBK,與此時(shí)的數(shù)據(jù)庫(kù)字符集一致。這樣,導(dǎo)入時(shí),就會(huì)進(jìn)行字符轉(zhuǎn)換。
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
#imp mmsc/mmsc@mdspdb file=DSMPD113_user_mmsc.dmp ignore=y fromuser=mmsc touser=mmsc
馬上查看數(shù)據(jù)庫(kù)中簡(jiǎn)體、繁體中文,哈哈,沒(méi)有亂碼了,一切顯示正常。
緊接著進(jìn)行驗(yàn)證,也證明了:1個(gè)漢字此時(shí)只占用2個(gè)字符長(zhǎng)度。問(wèn)題解決了!
如何修改oracle spfile
spfile是二進(jìn)制的,所以無(wú)法直接修改文件。
兩種方法修改:
1、使用下面的語(yǔ)句修改
alter system set 參數(shù)名稱(chēng)=參數(shù)值 scope=spfile ;
2、生成pfile,修改后使用此pfile生成spfile。
create pfile='路徑' from spfile ;
修改后
create spfile from pfile='路徑' ;
網(wǎng)站欄目:oracle怎么修改sp,oracle怎么修改數(shù)據(jù)庫(kù)密碼
文章鏈接:http://www.dlmjj.cn/article/hsjdsd.html


咨詢(xún)
建站咨詢(xún)
