当前位置:
数据分析 > 如何在Oracle数据库服务器端查看和修改字符集
如何在Oracle数据库服务器端查看和修改字符集
在Oracle数据库服务器端查看和修改字符集的方法是本文的主要内容。接下来我们就来看看这部分内容。
www.sychzs.cn服务器端字符集查询
从 Dual 中选择 userenv(‘语言’)
其中,NLS_CHARACTERSET为服务器端字符集。
NLS_LANGUAGE 是服务器端字符显示格式
B、查询oracle客户端的字符集
$回显$NLS_LANG
如果您发现您选择的数据出现乱码,请将客户端的字符集配置为与Linux操作系统相同的字符集。如果仍然出现乱码,可能是数据库中的数据有问题,也可能是Oracle服务器的配置有问题。
C.服务器端字符集修改
以 RESTRICTED 模式启动数据库并更改字符集:SQL> conn /as sysdba 已连接。 SQL> 立即关闭;数据库已关闭。数据库已卸载。 ORACLE 实例关闭。 SQL> 启动挂载 ORACLE 实例已启动。系统全局区域总计 236000356 字节 固定大小 451684 字节 可变大小 201326592 字节 数据库缓冲区 33554432字节重做缓冲区 667648 字节已安装数据库。 SQL> 更改系统启用受限会话;系统已更改。 SQL> 更改系统设置 JOB_QUEUE_PROCESSES=0;系统已更改。 SQL> 更改系统设置 AQ_TM_PROCESSES=0;系统已更改。 SQL> 更改数据库打开;数据库已更改。 SQL> 更改数据库字符集 ZHS16GBK;更改数据库字符集 ZHS16GBK 第 1 行错误:ORA-12712:新字符集必须是旧字符集的超集
提示我们的字符集:新字符集必须为旧字符集的超集,接下来我们可以跳过超集的检查做更改:SQL> ALTER DATABASE 字符集 INTERNAL_USE ZHS16GBK;数据库已更改。 SQL> 从 v$nls_parameters 选择 *;已选择 19 行。
重新启动以检查更改是否完成:
SQL> 立即关闭;数据库关闭。数据库已卸载。 ORACLE 实例关闭。 SQL> 启动 ORACLE 实例已启动。系统全局区域总计 236000356 字节 固定大小 451 684 字节 可变大小 201326592 字节 数据库缓冲区 33554432 字节 重做缓冲区 667648 字节 已安装数据库。数据库已打开。 SQL> 从 v$nls_parameters 选择 *;已选择 19 行。
我们看到这个过程和前面ALTER DATABASE CHARACTER SET操作的内部过程一模一样。换句话说,INTERNAL_USE提供的帮助是让Oracle数据库能够绕过子集和超集的验证。
这种方法在某些方面很有用,比如测试;将其应用于生产环境时应小心。除了您之外,没有人对后果负责。
结论(不妨再说一遍):
对于DBA来说,一个非常重要的原则是:不要让你的数据库处于危险之中!
这就要求我们在执行任何可能改变数据库结构的操作之前必须做好有效的备份。许多DBA都从没有备份的操作中吸取了惨痛的教训。
D.客户端字符集修改
在 /home/oracle 和 /root 用户目录中的 .bash_profile 中添加或修改导出NLS_LANG="AMERICAN_AMERICA.UTF8"语句
关闭当前的 ssh 窗口。
注意:NLS_LANG变量必须正确配置,否则会导致sqlplus失败。
Oracle数据库中查看和修改服务器端字符集的方法介绍到此结束。希望对您有所帮助!
【编辑精选】
科学构建索引,提高查询速度
数据库查询性能调优和索引优化总结
Oracle中如何使用CASE语句对指定字段重新赋值
将MapInfo地图数据中的空间信息提取到SQL Server 2008
在SQL Server存储过程中编写事务处理代码的三种方法