測試機上裝入數據 發現中文字段全部變成???????,初步判斷為字符集問題
更改 UPDATE sys.props$ SET VALUE$='WE8ISO8859P1' where name like 'NLS%' and value$='ZHS16GBK'; commit; 後發現sqlldr采集數據時,報錯 SQL*Loader-704: Internal error: ulmtsyn: OCIStmtExecute(tabhp) [6552] ORA-06552: PL/SQL: Compilation unit analysis terminated ORA-06553: PLS-553: character set name is not recognized 查資料後發現原來更改字符集還需要在設置字符集時把數據庫設置成RESTRICTED模式等諸多操作,進行以下操作後,sqlldr采集正常 >STARTUP MOUNT; ORACLE instance started. Total System Global Area 76619308 bytes Fixed Size 454188 bytes Variable Size 58720256 bytes Database Buffers 16777216 bytes Redo Buffers 667648 bytes Database mounted. SQL> ALTER SESSION SET SQL_TRACE=TRUE; Session altered. 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> set linesize 120 SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; ORA-12712: new character set must be a superset of old character set RROR at line 1:>ALTER DATABASE character set INTERNAL_USE zhs16gbk;
>ALTER SESSION SET SQL_TRACE=FALSE;