深入淺出oracle ebs之字符集與轉(zhuǎn)換_第1頁
深入淺出oracle ebs之字符集與轉(zhuǎn)換_第2頁
深入淺出oracle ebs之字符集與轉(zhuǎn)換_第3頁
深入淺出oracle ebs之字符集與轉(zhuǎn)換_第4頁
深入淺出oracle ebs之字符集與轉(zhuǎn)換_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

OracleERPE-BusinessOracle應(yīng)用技術(shù) Creation October29,Last October23, ReferenceNumber> DRAFT1A<Approver <Approver Copy ControlChange4DraftNoPrevious Copy1LibraryProject2Project34NoteToIfyoureceiveanelectroniccopyofthis andprintitout,pleasewriteyournameontheequivalentofthecoverpage,for controlpurposes.Ifyoureceiveahardcopyofthis,pleasewriteyournameonthefrontcover,forcontrolpurposes. Code Character Cloneand Materialized LossDatainSys Exceed User Background 組合字 系 對(duì) Set Loss Exceed System SYS. SYS. SYS. SYS. SYS. SYS. SYS. Index DBCharacterSetChangingMethod ALTERDATABASECHARACTER CombinationofALTERDATABASECHARACTERSETand Inline ConvertOracleApplicationtoNewCharacterSet DB APPSORA DatabasePackagesand FormResource APPLTEMP OpenandClosedIssuesforthis Open Closed CodeCodePoint就是字符的“內(nèi)碼”,即數(shù)據(jù)實(shí)際將以怎樣的二進(jìn)制串。以“楊”為ZHS16CGB231280的CodePoint是D1EE,UTF8的CodePoint是E69DA8;以“A”為例,ZHS16CGB231280的CodePoint是41,UTF8的CodePoint也是41??梢杂肦AWTOHEX函數(shù)看字符的CodePoint,配合Convert函數(shù),就基本可以看任何字符集的CodePoint,如selectrawtohex(convert('A','UTF8fromdual;也可以使用LocaleBuilder工具可以查看字符集的CodePoint表,該工具在 mon/nls/lbuilder下,如果要看UTF8的CodePoint,需要 同一個(gè)字,在不同字符集下CodePoint可能相同也可能不同;如果字符集A所有的字符在字符集B中都存在,并且CodePoint也相同,這個(gè)時(shí)候我們說字符集A是字符集B的Select*Fromnls_database_parametersSIMPLIFIED_.ZHS16GBKCharacter下面是UCS-2和UTF8的CodePointUCS-2bitUTF-8bitUTF-8byte70x0000-1(內(nèi)碼相同0x0080-110xxxxx20x0800-1110xxxx10xxxxxx3Character,RecementCharacter通常是一個(gè)問號(hào)“?”。以“珺”,用LocalBuilder搜索ZHS16CGB23128文件找不到該字,Oracle的ZHS16CGB231280中并沒有“珺”的編碼;搜索UTF8文件,則可以找到,在如果在PL/SQLDeveloper(操作系統(tǒng)NLS_LANG和數(shù)據(jù)庫一樣)中把“珺”Insert到是亂碼,它是無法用函數(shù)轉(zhuǎn)成其他字符集的、在中也是報(bào)告為L(zhǎng)oss以通過設(shè)置PL/SQLDeveloper的Grid的字體來驗(yàn)證。CharacterSetScanner是Oracle提供的字符集掃描工具,可從OTN,掃描需要通過掃描可以發(fā)現(xiàn)幾類數(shù)據(jù):Changeless(CodePoint相同)、Convertible(CodePoint不同但可以找到對(duì)應(yīng)的內(nèi)碼)、ExceedSize(CodePoint不同且可以找到對(duì)應(yīng)的CSSNCvertile、ExeedSze、Lss6csmg$csscansystem/managerFULL=YFROMCHAR=ZHS16CGB231280TOCHAR=UTF8ARRAY=102400PROCESS=1CAPTURE=Y。Cloneand Object Char類型的數(shù)據(jù),極可能出現(xiàn)ExceedSize錯(cuò)誤。原因很簡(jiǎn)單,因?yàn)镃har類型字段,其MaterializedLossDatainSysExceedMetalink124721.1說“NEVERextendacolumninorderto modatetheexistingdata”,這個(gè)是有道理的。修改字段的風(fēng)險(xiǎn)是無法估計(jì)的:Oracle升級(jí)/Patch是否會(huì)不再滿足字段長(zhǎng)度的要求;Form中字段的MaxLength默認(rèn)都和做Form時(shí)數(shù)據(jù)庫字段User是Export/Import,字符集轉(zhuǎn)換沒有轉(zhuǎn)換這些數(shù)據(jù);而加密基礎(chǔ)是的CodePoint,由于新環(huán)境下字符相同的同一串,其CodePoint不同,這樣,用同樣的算法加密Background一些程序,如Job、Schedule的ConcurrentProgram、系統(tǒng)的回寫等,他們可ConcurrentManager停掉再運(yùn)行CSSCAN。OracleDBLink可以自動(dòng)進(jìn)行字符集轉(zhuǎn)換,所以不用當(dāng)心不同字符集Instance之間的連從本DB讀:對(duì)本DB沒有影響,但系統(tǒng)如果讀到自己沒有編碼的字符,就會(huì)變成亂ZH16CGB231280廣多了);或者讀到的字符轉(zhuǎn)成自己的編碼后ExceedSize了(比如UTF8系統(tǒng)從ZH16CGB231280系統(tǒng)讀數(shù),所以目前BIS系統(tǒng)的字段基本是EBS的3SetLoss有在新字符集下一一更新成正確的CodePoint了。Exceed一是用ROWID,速度最快,適合單個(gè)修改。Scan出來結(jié)果會(huì)哪個(gè)表哪個(gè)ROWID哪個(gè)字段有問題,可以直接用UpdateTable_NameSetField_Name=New_DataWhereROWID=SCAN_ROWIDandField_Name=OLD_DATA。后面這個(gè)條件是個(gè)二是用Rece,適合有規(guī)律的批量修改,全表掃描全表更新。比如要把某一字段中所有“XXX中民XXX”改為“XXX X”,語句:UpdateTable_NameSetField_Name=Rece(Field_Name,’中民’,’中國’)。第三,ROWID可能變了,那么也可以通過UpdateTable_NameSetField_Name=New_DataWhereField_Name=OLD_DATA,該方法全表掃描、局部System SYS.SYS. SYS.SYS.SYS.SYS.SYS.源代碼包含和新字符集CodePoint不同的字符,這個(gè)問題比較常見,因?yàn)榇a中通常如果源代碼沒有Loss和ExceedSize數(shù)據(jù),也可以采用Inline轉(zhuǎn)換的方法,即用Convert函數(shù)轉(zhuǎn)換CodePoint(這一步可以和處理用戶數(shù)據(jù)時(shí)一起處理),再用AlterObject_TypeOwner_Name.Object_NameCompile。<Stopallqueueswithdbms_aqadm.stop_queue(queue_name=>'<queuename>');>SHUTDOWN<doafulldatabasebackup>STARTUPMOUNT;ALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTERSYSTEMSETAQ_TM_PROCESSES=0;ALTERDATABASEOPEN;<makesurewhatthecurrentcharactersetiswiththefollowingselect:selectvaluefromnls_database_parameterswhere<settheNLS_LANGenvironmentvariabletothesamethecharacterset<exportsys.RULE$<exportanyotherconvertible(user)dataifthereisanyleft>TRUNCATETABLESYS.METASTYLESHEET;TRUNCATETABLE<truncateordeletetheother(user)datathatwasexportedALTERDATABASECHARACTERSETINTERNAL_USE<new_character_set>;SHUTDOWNIMMEDIATE;STARTUPALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTERSYSTEMSETAQ_TM_PROCESSES=0;ALTERDATABASEOPEN;<makesurethatNLS_LANGisstillsetthesameaswhentheexportwasdone<importsys.RULE$<importanyotherdatathatwasexportedUPDATESYS.JOB$SETNLSENV=CONVERT(NLSENV,<newcharacterset>,'<oldcharacterset>');<For9.2:<For9.0.1:SHUTDOWNIMMEDIATE;<startthequeuesagainIndex運(yùn)行請(qǐng)求RebuildHelpSearchIndex(實(shí)際調(diào)用$FND_TOP/sql/aflobbld.sql)的時(shí)候$sqlplusSQL>dropindexFND_LOBS_CTX;SQL>exit;$cd$FND_TOP/admin/sql(或者sqlplusSQL>startAFLOBCX3.sqlapplsysDBCharacterSetChangingMethodALTERDATABASECHARACTER為僅僅是修改數(shù)據(jù)庫的字符集申明,并不改變實(shí)際數(shù)據(jù)的CodePoint。所以如果舊字CombinationofALTERDATABASECHARACTERSETandALTERDATABASECHARACTERSETInline對(duì)于那些Convertible的數(shù)據(jù),從底層看,當(dāng)用ALTERDATABASECHARACTERSET改變數(shù)據(jù)庫字符集之后,其CodePoint還是原始的CodePoint。Setcolumn_nameconvert(column_name,’New_CS’,’OLD_CS’)直接處理,同++ALTERDATABASECHARACTERConvertOracleApplicationtoNewCharacter cdautoconfigcontextfile=<SID>.xmlConvertcharacterGeneratemessageGenerateformGeneratereportGenerateproductJARCompile$IAS_ORACLE_AddTypetext/htmlhtmhtml改為AddType"text/html;charset=utf-8"htm$ORACLE_DBDB$ORACLE_APPSORA$ORACLE_$ORACLE_添加NLS_LANG="AMERICAN_AMERICA.UTF8";exportNLS_LANG,如果沒有的DatabasePackagesandFormResourcecd$ORACLE_HOME/forms60/admin/resource/ZHScpfmrweb.resfmrweb.res.bakcpfmrweb_utf8.res !

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論