oracle 用Sqlplus连接的时候中文出现乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 用Sqlplus连接的时候中文出现乱码相关的知识,希望对你有一定的参考价值。

1、按win+R键调出windows运行窗口,并在窗口中输入“cmd”以便进入命令行程序。

2、在cmd命令行下输入“sqlplus用户名/密码@服务名”来登录数据库,其中用户名,密码,服务名需要根据实际情况进行替换。

登陆完成后,会发现提示语并不是中午,或者包含有乱码,在sqlplus中,selectuserenv('language')fromdual;查看当前数据库的字符集。

为:SIMPLIFIEDCHINESE_CHINA.ZHS16GBK。需要把客户端字符集和操作系统字符集都设置成这个就行了。

3、首先设置客户端字符集,右击我的电脑,选择属性。

4、在弹出的“属性”对话框中,选择“高级”->“环境变量”。

5、在环境变量中查找一个名为“NLS_LANG”的环境变量,如果找不到,则新建一个。

把变量值赋值为:“SIMPLIFIEDCHINESE_CHINA.ZHS16GBK”(需要根据实际数据库服务器字符集进行赋值)。客户端字符集设置成功。

6、在开始菜单中选择“控制面板”-“区域和语言选项”,在该选项下对计算机语言进行设置。

7、在“高级”选项下,选择“非Unicode程序的语言”为中文,同时点击确定。

点击确定后会提示安装字符集同时提示需要重启计算机才能生效,重启吧。

8、重启完成后,再次进入sqlplus,发现中文乱码问题解决。

参考技术A

问题图片:

解决办法: 右键点击SQLplus最上方蓝色标题条

选择“默认值”——进入控制台窗口属性,勾选使用旧版控制台

并重新打开sqlplus,“修改默认代码页”,把“437 OEM 美国”改为“936 ANSI/OEM 简体中文(GBK)”。

参考技术B 可以用Toad for Oracle 9.6.1这个工具去查看下表里面的数据是否就是乱码,如果是乱码在手动插入一条数据看是否是乱码,如果是这样的话就是本身数据库字符集编码不支持中文,
你可以sqlplus 后,select userenv('language') from dual 执行这条sql语句,查看字符集编码是不是ZHS16GBK ,该编码支持中文,若不是该编码就要调整oracle字符集编码了。本回答被提问者采纳
参考技术C 这个建议还是通过以下方式排查下问题原因,之后进行解决:
第一步:查看 NLS_LANG 的方法
echo %NLS_LANG%
如:
E:\>echo %NLS_LANG%
AMERICAN_AMERICA.ZHS16GBK
第二步:查看数据库当前字符集参数设置
SELECT * FROM v$nls_parameters;

select * from nls_database_parameters

select userenv(‘language’) from dual;
第三步: 查看数据库可用字符集参数设置
SELECT * FROM v$nls_valid_values;
第四步: 客户端 NLS_LANG 的设置方法
# 常用中文字符集
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
# 常用unicode字符集
set NLS_LANG=american_america.AL32UTF8
参考技术D 解决办法: 右键点击SQLplus蓝色标题条,选择“默认值”——进入控制台窗口属性,“修改默认代码页”,把“437 OEM 美国”改为“936 ANSI/OEM 简体中文(GBK)”。也是自己摸索出来的,真为自己高兴啊

用sqlplus连接数据库时,为啥会出Oracle not available错误?

1 Oracle not available,这个提示说明oracle服务目前不可用。

2 解决方法:在“开始”-“运行”中输入cmd,在弹出的命令行窗口输入
“sqlplus /nolog”,回车,再输入“conn / as sysdba”,回车,这时候提示已连接到oracle空闲例程,再输入“startup”,回车,之后等这个命令运行完成,发现oracle就可用了。

3 上述方法是通过oracle操作系统身份验证,以sysdba身份去启动数据库实例。因为提示“Oracle not available”,所以说明oracle目前实例没有起来,而且数据库也没有mount上和open,因此提示不可用。通过第二步,就可解决这个问题。

4 之所以出现这个问题,一般是oracle_home 和 oracle_sid两个环境变量在安装或者在设置的时候有问题。可以通过查看%ORACLE_HOME%,%ORACLE_SID%,%ORACLE_BASE%三个环境变量。linux下用$ORACLE_HOME……

以上,希望对你有所帮助。
参考技术A 因为数据库还没有正常启动运行起来,connect / as sysdba
startup
起来后再登录就不会有这个错误了。
参考技术B 1、数据库不能启动
SQL startup
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 83886784 bytes
Database Buffers 197132288 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-16038: 日志 2 序列号 44 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 2 线程 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
2、查看$ORACLE_HOME\admin\SID\bdump\alert_SID.log日志
Thu Feb 19 09:45:33 2009
Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_arc1_660.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 99.95% used, and has 1129472 remaining bytes available.
Thu Feb 19 09:45:33 2009
Errors in file d:\oracle\product\10.2.0\admin\orcl\udump\orcl_ora_4708.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 2147483648 字节) 已使用 99.95%, 尚有 1129472 字节可用。
Thu Feb 19 09:45:33 2009
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
Thu Feb 19 09:45:33 2009
************************************************************************
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
You have following choices to free up space from flash recovery area:
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
reflect the new space.
then consider changing RMAN ARCHIVELOG DELETION POLICY.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
2. Back up files to tertiary device such as tape using RMAN
DELETE EXPIRED commands.
************************************************************************
BACKUP RECOVERY AREA command.
Thu Feb 19 09:45:34 2009
Errors in file d:\oracle\product\10.2.0\admin\orcl\bdump\orcl_arc1_660.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 44217856 bytes disk space from 2147483648 limit
从上面信息知道是flash recovery area闪回恢复空间中默认2G的空间被归档日志占满了,没有空间进行存放归档日志。
3、退出sqlplus,进入rman
SQL exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
C:\Documents and Settings\mengzhaoliangrman target/
恢复管理器: Release 10.2.0.1.0 - Production on 星期四 2月 19 09:57:48 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库: ORCL (DBID=1193443472, 未打开)
4、查看归档日志
RMAN list archivelog all;
使用目标数据库控制文件替代恢复目录
已存档的日志副本列表
关键字 Thrd Seq S 短时间 名称
------- ---- ------- - ---------- ----
40 1 1 A 17-11月-08 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2008_11_18\O1_MF_1_1_4L44Z9CQ_.ARC
41 1 2 A 18-11月-08 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2008_11_18\O1_MF_1_2_4L4W4O0H_.ARC
42 1 3 A 18-11月-08 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
5、可以先把归档日志备份到其他的空间,然后用rman删除归档日志;
RMAN delete archivelog all;
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=151 devtype=DISK
已存档的日志副本列表
关键字 Thrd Seq S 短时间 名称
------- ---- ------- - ---------- ----
40 1 1 A 17-11月-08 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2008_11_18\O1_MF_1_1_4L44Z9CQ_.ARC
是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除的存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\200
_11_18\O1_MF_1_1_4L44Z9CQ_.ARC 记录 ID=40 时间戳 =671101294
6、退出rman,进入sqlplus,打开数据库
RMAN exit
恢复管理器完成。
C:\Documents and Settings\mengzhaoliangsqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 2月 19 10:03:02 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL alter database open;
数据库已更改。
数据库已经打开!本回答被提问者采纳
参考技术C 没startup。

以上是关于oracle 用Sqlplus连接的时候中文出现乱码的主要内容,如果未能解决你的问题,请参考以下文章

oracle 10g 客户端连接数据库 出现ora-12154 错误

ORA-01002: 提取乱序

oracle sqlplus '/as sysdba'

linux下安装好oracle12c,然后sqlplus启动出现如下问题ORA-01034、ORA-27101,求高手,linux如何启动orac

sqlplus连接oracle问题

sqlplus连接登录数据库时,出现 ORA-28009错误(转)