Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更改Oracle 11g XE上的NLS字符集参数_Sql_Oracle_Oracle11g_Oracle Apex_Oracle Xe - Fatal编程技术网

Sql 更改Oracle 11g XE上的NLS字符集参数

Sql 更改Oracle 11g XE上的NLS字符集参数,sql,oracle,oracle11g,oracle-apex,oracle-xe,Sql,Oracle,Oracle11g,Oracle Apex,Oracle Xe,我正在使用Oracle 11g Express Edition。当前,当我使用SELECT*FROM NLS\u database\u parameters检查NLS字符集参数时它提供默认值: NLS_CHARACTERSET: AL32UTF8 NLS_NCHAR_CHARACTERSET: AL16UTF16 我想将这两个参数都设置为UTF8。我怎样才能做到?我刚刚安装了Oracle 11g XE,所以除了Oracle本身所需的数据外,没有其他数据。也许这是可行的:alter databa

我正在使用Oracle 11g Express Edition。当前,当我使用
SELECT*FROM NLS\u database\u parameters检查NLS字符集参数时它提供默认值:

NLS_CHARACTERSET: AL32UTF8
NLS_NCHAR_CHARACTERSET: AL16UTF16
我想将这两个参数都设置为UTF8。我怎样才能做到?我刚刚安装了Oracle 11g XE,所以除了Oracle本身所需的数据外,没有其他数据。

也许这是可行的:
alter database character set UTF8-->Oracle 10.1或更高版本不再支持

然而,你真的确定要改变它吗
AL32UTF8实际上是UTF-8

在Oracle上还有一个名为
UTF8
的字符集,这是一种用词不当的字符集。据我所知,这就像“1999年Unicode版本3的UTF-8”。只要使用小于65535(基本多语言平面)的Unicode字符,
AL32UTF8
UTF8
是相同的


注意,仅当新字符集是旧字符集的严格超集时,此命令才起作用。也就是说,您可以从
US7ASCII
更改为
AL32UTF8
WE8ISO8859P1
,但您不能从
WE8ISO8859P1
更改为
AL32UTF8
这对我来说很有效,因为应用程序正在检查
UTF8而不是al32f8ut8

SQL> shutdown immediate;

SQL> startup restrict

SQL> select name from v$database;

SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE WE8MSWIN1252 ;

SQL> select value from NLS_DATABASE_PARAMETERS where parameter=’NLS_CHARACTERSET’;

SQL> shutdown immediate;

SQL> startup

SQL> select value from NLS_DATABASE_PARAMETERS where parameter=’NLS_CHARACTERSET’;
SQL> shutdown immediate;

SQL> startup restrict

SQL> select name from v$database;

SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8 ;

SQL> select value from NLS_DATABASE_PARAMETERS 
     where parameter=’NLS_CHARACTERSET’;

SQL> shutdown immediate;

SQL> startup

一旦设置了安装,就无法更改。如果您想更改,则需要使用Oracle启动一个很长的过程。

我尝试应用上述命令,它会给出以下错误<代码>SQL错误:ORA-12712:新字符集必须是旧字符集的超集
我同意不应更改字符集。但是我安装的应用程序需要
NLS\u字符集
NLS\u NCHAR\u字符集
设置为
UTF8
。我怀疑任何应用程序都可能有这样的要求,除非它使用一些非常特殊的字符。我可以理解这一点。实际上我对Oracle数据库不太了解。如果您说If
AL32UTF8
UTF8
,正如名称所示,这是很清楚的,但是对于
NLS\u NCHAR\u字符集
,它的值为
AL16UTF16
,因此它确实意味着它是
UTF16
字符集。如何将该参数更改为UTF8?是的,它表示UTF-16
NLS\u NCHAR\u字符集
用于数据类型
nvarhar2
,resp
NCHAR
。在Unicode发明之前,它很有用。今天,实际上已经没有理由再使用这些数据类型之一了。将NLS_字符集设置为AL32UTF8与UTF8不同。例如:不能使用旧客户端(如Oracle Forms 6 runtime)连接到AL32UTF8数据库,但可以连接到UTF8数据库。命令:
SELECT*FROM SYS.nls\u database\u参数不起作用。不建议在生产数据库中使用它。它将损坏数据库,并将无法恢复,EM登录页面-损坏您的回答对我很有帮助。我试图更改停靠的Oracle XE中的默认字符集。如果命令序列<代码>立即停机,则有可能;启动限制;改变数据库字符集内部使用EE8ISO8859P2;立即关闭;启动插入到此行之前: