是来自用户还是数据库的字符集?

时间:2011-02-08 21:16:04

标签: oracle utf-8 oracle10g oracle11g

我正在试图找出项目出错的地方。

很久以前,我们的数据库管理员为我们正在处理的项目创建了一个用户和模式。

我们将该用户提供给创建表并安装应用程序的承包商。

今天我发现我们的数据库不支持UTF-8字符,我们需要它。

select value from nls_database_parameters 
where parameter='NLS_CHARACTERSET'

结果是: WE8ISO8859P1

我的问题是,创建用户时是否犯了错误,或创建表的承包商是否犯了错误?

由于

1 个答案:

答案 0 :(得分:8)

字符集是数据库的属性。因此,创建数据库的人大概选择了错误的字符集。创建用户或创建表时(除了确定是使用数据库字符集(CHAR / VARCHAR2)还是国家字符集(NCHAR / NVARCHAR2)数据类型之外),没有与字符集相关的设置。

更改现有数据库的字符集可能需要一些努力。 “全球化指南”有一节关于character set migration。根据Oracle版本(程序在10g和11g中有所不同)以及已存在的数据,执行导出&导入新数据库可能是最简单的选择。

我应该补充一点,你在帖子中指定的操作顺序没有意义。必须先创建数据库,然后才能创建用户或架构。因此,DBA很久以前就已经创建了用户和架构并且承包商最近创建了数据库是没有意义的。您是否可能在非Oracle上下文中使用术语“数据库”和“架构”?