在Linux系统中部署和使用Oracle Database时,不少用户会发现输入SQL语句时退格键无法正常工作,按下退格键后不仅不能删除前面的字符,还可能出现^H之类的乱码符号,给日常数据库操作带来很大困扰。这个问题本质是终端输入配置和Oracle客户端环境不匹配导致的,并非数据库本身的功能故障。

问题原因分析
出现退格键失效的核心原因主要有两类:
- Linux终端默认将退格键映射为^H字符,而Oracle的sqlplus客户端默认期望接收DEL字符作为删除指令,两者映射不匹配就会出现异常。
- 系统的终端配置参数没有正确设置,比如stty工具的相关参数没有开启正确的删除功能,也会导致退格键无法生效。
解决方法
方法一:临时调整终端配置
使用stty命令临时修改终端的退格键映射,这种方式修改后仅在当前终端会话生效,关闭终端后配置会恢复。
执行以下命令即可:
# 查看当前终端的退格键映射状态 stty -a | grep erase # 将退格键映射为正确的删除字符,适用于大多数bash终端 stty erase ^H
执行完成后重新进入sqlplus,测试退格键是否可以正常使用。
方法二:永久配置终端参数
如果希望每次登录终端都自动生效退格键配置,可以将stty命令写入用户的bash配置文件中。
编辑当前用户的.bash_profile或者.bashrc文件,在文件末尾添加如下内容:
# 配置终端退格键映射,适配Oracle sqlplus stty erase ^H
保存文件后执行source ~/.bash_profile或者source ~/.bashrc让配置立即生效,后续每次登录终端都会自动应用该设置。
方法三:修改Oracle客户端环境变量
也可以通过设置Oracle相关的环境变量来调整退格键的行为,编辑.bash_profile文件添加如下内容:
# 设置Oracle终端类型,部分终端类型会自动适配退格键 export ORACLE_TERM=xterm
同样执行source命令让配置生效,之后进入sqlplus测试退格键功能。
验证方法
完成配置后,重新登录Linux系统,进入Oracle的sqlplus环境,输入一段测试SQL语句,比如select * from dual;,故意输入错误字符后按退格键,如果可以正常删除错误字符,说明问题已经解决。如果仍然无法使用,可以依次检查stty的erase参数是否正确,ORACLE_TERM变量是否设置成功,逐步排查问题。
Oracle DatabaseLinux退格键终端配置stty修改时间:2026-06-04 01:59:19