ORACLE数据库NLS_CHARACTERSET字符集修改

在我们安装数据库的时候经常需要设置需求的字符集,但是有时候会忘记设置所需要的数据库字符集,数据库安装完之后查询到不是需求的字符集,如何修改成我们需求的字符集了,有什么解决这一问题的方法?

ORACLE数据库字符集修改方式如下:

我们经常查询数据库字符集的语句:数据库服务器字符集select * from nls_database_parameters; 其来源于props$,是表示数据库的字符集。

查看当前的字符集:select userenv(‘language’) from dual;

方法一:数据库创建以后,如果需要修改字符集,通常需要重建数据库,通过导入导出的方式来转换。这种方法是最安全的方法。

方法二:通过”alter database character set ZHS16GBK;” 方式修改,但并不总是有效。这种方法是最常用的方式,但是这个操作在本质上并不转换任何数据库字符,只是简单的更新数据库中所有跟字符集相关的信息。

重新创建数据库的方法不详细说明了,以下是最常用的方法修改字符集的步骤:

查询字符集信息:

或者

注意:转换字符集,数据库应该在RESTRICTED模式下进行. (使用DBA登录数据库)

停止数据库,启动到MOUNT状态:

修改参数设置以及数据库RESTRICTED模式:

可能会报错,原因是字符集超集导致。可以使用下面语句解决:

查询字符集:

启动数据库:

注意上面修改数据库字符集是单实例环境下,RAC环境修改字符集有所不同,如下步骤:

查看当前的字符集

撤销集群属性:

停止数据库(所有节点多需要停止)

启动数据库(仅在一个节点上面操作)

修改字符集:

修改集群参数

验证(两个节点都要测)

注意:在修改字符集的时候,要先做好数据库的全量备份,防止由于错误操作,不能回退造成数据丢失或者损坏。创建数据库是最好根据需求设置好数据库的字符集,防止安装完之后不能修改字符集等。

未经允许不得转载:Oracle一体机用户组 » ORACLE数据库NLS_CHARACTERSET字符集修改

相关推荐