一、什么是oracle的字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台,有时候需要修改字符集的操作,这里稍微记录一下。
二、查看数据库的字符集
SQL> select * from nls_database_parameters; PARAMETER VALUE ------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET AL32UTF8 NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE NLS_NCHAR_CHARACTERSET UTF8 NLS_RDBMS_VERSION 11.2.0.4.0 20 rows selected.
这里NLS_CHARACTERSET就是当前数据库的字符集,也可以使用以下命令查看
SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8 SQL>
三、修改数据库的字符集
1. 关闭数据库
SQL>SHUTDOWN IMMEDIATE;
2. 启动到Mount
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; --这里只让数据库处于只有管理员才能登陆状态
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; --这里将允许的job进程调至为0,防止后台有job在运行
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; --将启动的AQ时间管理器的数量设置为0
SQL>ALTER DATABASE OPEN;
--这里可以从父集到子集
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
SQL>ALTER DATABASE NATIONAL CHARACTER SET ZHS16GBK;
--如果是从子集到父集,需要使用INTERNAL_USE 参数,跳过超子集检测
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL32UTF8;
3、配置完后将原来的设置都还原回去,将数据库启动到mount状态,如下:
SQL>ALTER SYSTEM DISABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=1000;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=35;
SQL>ALTER DATABASE OPEN;
4--查看数据库的字符集
SQL>select * from nls_database_parameters;
|