Oracle'ın birden çok karakter kümesini desteklediğini biliyorum, ancak çalıştığım geçerli 11g sisteminin bu işlevselliği etkinleştirip etkinleştirmediğini nasıl belirleyebilirim?Oracle sistemimin Unicode veya multibyte karakterleri destekleyecek şekilde ayarlanmış olup olmadığını nasıl anlarım?
cevap
SELECT *
FROM v$nls_parameters
WHERE parameter LIKE '%CHARACTERSET';
size veritabanı ve ulusal karakter kümesini gösterir. Veritabanı karakter kümesi, CHAR
ve VARCHAR2
sütunlarındaki verilerin kodlamasını kontrol eder. Veritabanı, bu sütunlarda Unicode'u destekliyorsa, veritabanı karakter kümesi AL32UTF8 (veya bazı nadir durumlarda UTF8) olmalıdır. Ulusal karakter kümesi, NCHAR
ve NVARCHAR2
sütunlarındaki verilerin kodlamasını kontrol eder. Veritabanı karakter kümesi Unicode'u desteklemiyorsa, Unicode verilerini bu veri türleriyle sütunlara depolayabilir, ancak genellikle sisteme karmaşıklık katabilirsiniz. Uygulamalar, ulusal karakter kümesini desteklemek için değişebilir.
Unicode Oracle Veritabanı Unicode için, dünyada konuşulan dillerin çoğunda Destek her karakteri tanımlayan bir karakter kodlama sistemidir:
Character Set Supported in RDBMS Release Unicode Encoding
AL24UTFFSS 7.2 - 8i UTF-8
UTF8 8.0 - 11g UTF-8
UTFE 8.0 - 11g UTF-EBCDIC
AL32UTF8 9i - 11g UTF-8
AL16UTF16 9i - 11g UTF-16
veritabanı Unicode olduğundan emin olun için değerini kontrol edin "NLS_CHARACTERSET" Parametresi ve yukarıdaki listeden AL32UTF8 veya AL16UTF16 olmalıdır. ALTER DATABASE geri alınamaz çünkü
SQL>
SQL> SELECT * FROM v$nls_parameters WHERE parameter='NLS_CHARACTERSET';
PARAMETER VALUE CON_ID
--------------------------- ------------------- ----------
NLS_CHARACTERSET AL32UTF8 0
Parametre değerini değiştirmek için yukarı Bek atın lütfen ve Kullanımı aşağıdaki ifadeler:
SHUTDOWN IMMEDIATE
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET AL32UTF8;
SHUTDOWN IMMEDIATE;
STARTUP;