如何查看和修改Oracle数据库服务器端的字符集?

如何查看和修改Oracle数据库服务器端的字符集?,第1张

A、oracle server 端字符集查询

select userenv('language') from dual

其中NLS_CHARACTERSET 为server端字符集

NLS_LANGUAGE 为 server端字符显示形式

B、查询oracle client端的字符集

$echo $NLS_LANG

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux *** 作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。

C、server端字符集修改

将数据库启动到RESTRICTED模式下做字符集更改:

SQL>conn /as sysdba  Connected.

SQL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux *** 作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。

. 1.oracle server端字符集查询        复制代码代码如下:    select userenv('language') from dual    server字符集修改:    将数据库启动到RESTRICTED模式下做字符集更改:&??

oracle10g服务器端是安装在AIX 6.0系统上,客户端是安装在windows server 2008 系统上,客户端与服务器已成功连接,但是数据库表里的中文字无法显示,显示为“?”,用SQLPLUS查得服务器端的字符集为AL16uTF16,如何修改该字符集使之支持中文呢?另外oracle10G客户端的字符集需不需要设置,如何查看和设置呢?

在 DBeaver 中连接 Oracle 数据库显示乱码的解决方法可能有多种,下面列举几种常见的方法:

修改字符集: 修改 DBeaver 的字符集设置为与 Oracle 数据库的字符集相同,可以在 DBeaver 中的首选项 - 数据库 - Oracle 中设置。

修改环境变量: 编辑环境变量 NLS_LANG 设置为与 Oracle 数据库的字符集相同。

修改数据库连接字符集:在连接 Oracle 数据库时将字符集设置为与 Oracle 数据库的字符集相同。

修改客户端配置文件:修改客户端的配置文件,如 client/network/admin/sqlnet.ora 将字符集设置为与 Oracle 数据库的字符集相同。

修改SQL语句:在执行的SQL语句中加入 nls_lang 语句来解决乱码问题。

1. 备份数据库中所有用户的数据

以oracle用户登陆,执行以下命令

# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”

保持与数据库服务器端一致,这样在exp导出时,就不会存在字符的转换了,备份最原始的数据。

2. 评估UTF8转换成ZHS16GBK的风险

转换之前,要使用Oracle的csscan工具对数据库扫描,评估字符集转换前后,数据有可能的损坏情况。如果评估情况糟糕,那就绝对要放弃了。

先安装属于 CSMIG 用户的一套表和过程。以oracle用户登陆UNIX,

#sqlplus “/ as sysdab”

SQL>@$ORACLE_HOME/ rdbms/admin/csminst.sql

SQL>exit

# $ORACLE_HOME\bin\csscan -help

可以更清楚如何使用csscan。

# $ORACLE_HOME/bin/csscan system/sunday user=mmsc FROMCHAR=UTF8 TOCHAR=ZHS16GBK ARRAY=102400 PROCESS=3 >csscan.log

以上命令意思是扫描用户:mmsc中的所有数据,从字符集UTF8更改为ZHS16GBK的转换情况。然后得到三个文件:scan.txt、scan.out、scan.err。

查看scan.out,scan.err,可以看出mmsc用户下的所有的数据都是可以转换的,并且没有出现转换“Exceptional”的情况,因此可以更放心一点。

3. 更改数据库的字符集为ZHS16GBK

前面说过,通过命令“Alter Database Characeter Set XXXX”,实现从超集到子集的转换,在Oracle是不允许的。但是该命令,提供这样的命令方式:

Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6460851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存