将来在使用 xshell 连接 CentOS 进入 SQLPLUS 进行操作时,无法使用退格键、删除键、方向键(显示乱码)。安装软件 readline 和 rlwrap,重启系统可以解决此问题。
## 1、下载readline-6.2.tar.gz文件 [root@rac1 oracle]# mkdir -p /soft/soft [root@rac1 oracle]# [root@rac1 oracle]# cd /soft/soft [root@rac1 soft]# pwd /soft/soft [root@rac1 soft]# wget ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz --2021-04-19 00:33:24-- ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz => “readline-6.2.tar.gz” 正在解析主机 ftp.gnu.org... 209.51.188.20, 2001:470:142:3::b 正在连接 ftp.gnu.org|209.51.188.20|:21... 已连接。 正在以 anonymous 登录 ... 登录成功! ==> SYST ... 完成。 ==> PWD ... 完成。 ==> TYPE I ... 完成。 ==> CWD (1) /gnu/readline ... 完成。 ==> SIZE readline-6.2.tar.gz ... 2277926 ==> PASV ... 完成。 ==> RETR readline-6.2.tar.gz ... 完成。 长度:2277926 (2.2M) (非正式数据) 99% [========================================> ] 2,266,600 737K/s eta(英国中部时 100%[=========================================>] 2,277,926 741K/s in 3.0s 2021-04-19 00:33:31 (741 KB/s) - “readline-6.2.tar.gz” 已保存 [2277926] ## 2、解压文件 [root@rac1 soft]# tar zxvf readline-6.2.tar.gz [root@rac1 soft]# tar zxvf readline-6.2.tar.gz readline-6.2/ readline-6.2/doc/ readline-6.2/doc/Makefile.in readline-6.2/doc/texinfo.tex ........... readline-6.2/histexpand.c readline-6.2/histfile.c readline-6.2/histsearch.c readline-6.2/patchlevel ## 3、安装编译软件 gcc [root@rac1 soft]# yum install -y gcc Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package gcc.x86_64 0:4.4.7-23.el6 will be installed --> Processing Dependency: libgomp = 4.4.7-23.el6 for package: gcc-4.4.7-23.el6.x86_64 --> Processing Dependency: cpp = 4.4.7-23.el6 for package: gcc-4.4.7-23.el6.x86_64 --> Processing Dependency: libgcc >= 4.4.7-23.el6 for package: gcc-4.4.7-23.el6.x86_64 --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.4.7-23.el6.x86_64 --> Processing Dependency: cloog-ppl >= 0.15 for package: gcc-4.4.7-23.el6.x86_64 --> Processing Dependency: libgomp.so.1()(64bit) for package: gcc-4.4.7-23.el6.x86_64 --> Running transaction check ........... Installed: gcc.x86_64 0:4.4.7-23.el6 Dependency Installed: cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-23.el6 glibc-devel.x86_64 0:2.12-1.212.el6_10.3 glibc-headers.x86_64 0:2.12-1.212.el6_10.3 kernel-headers.x86_64 0:2.6.32-754.35.1.el6 libgomp.x86_64 0:4.4.7-23.el6 mpfr.x86_64 0:2.4.1-6.el6 ppl.x86_64 0:0.10.2-11.el6 Dependency Updated: glibc.x86_64 0:2.12-1.212.el6_10.3 glibc-common.x86_64 0:2.12-1.212.el6_10.3 libgcc.x86_64 0:4.4.7-23.el6 tzdata.noarch 0:2020d-1.el6 Complete! ## 4、编译、安装软件 [root@rac1 soft]# ls readline-6.2 readline-6.2.tar.gz [root@rac1 soft]# cd readline-6.2 [root@rac1 readline-6.2]# ./configure && make && make install ## 5、安装libtermcap-devel [root@rac1 readline-6.2]# yum install -y libtermcap-devel Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package ncurses-devel.x86_64 0:5.7-4.20090207.el6 will be installed --> Processing Dependency: ncurses-libs = 5.7-4.20090207.el6 for package: ncurses-devel-5.7-4.20090207.el6.x86_64 --> Running transaction check ---> Package ncurses-libs.x86_64 0:5.7-3.20090208.el6 will be updated ---> Package ncurses-libs.x86_64 0:5.7-4.20090207.el6 will be an update --> Processing Dependency: ncurses-base = 5.7-4.20090207.el6 for package: ncurses-libs-5.7-4.20090207.el6.x86_64 --> Running transaction check ---> Package ncurses-base.x86_64 0:5.7-3.20090208.el6 will be updated ---> Package ncurses-base.x86_64 0:5.7-4.20090207.el6 will be an update --> Finished Dependency Resolution .......... Installed: ncurses-devel.x86_64 0:5.7-4.20090207.el6 Dependency Updated: ncurses-base.x86_64 0:5.7-4.20090207.el6 ncurses-libs.x86_64 0:5.7-4.20090207.el6 Complete!
## 1、下载软件包 [root@rac1 soft]# ls readline-6.2 readline-6.2.tar.gz rlwrap-0.37.tar.gz ## 2、解压缩 [root@rac1 soft]# tar -zxvf rlwrap-0.37.tar.gz rlwrap-0.37/ rlwrap-0.37/completions/ rlwrap-0.37/completions/testclient rlwrap-0.37/completions/coqtop rlwrap-0.37/doc/ rlwrap-0.37/doc/rlwrap.man.in rlwrap-0.37/doc/Makefile.am rlwrap-0.37/doc/Makefile.in rlwrap-0.37/filters/ rlwrap-0.37/filters/README rlwrap-0.37/filters/RlwrapFilter.pm rlwrap-0.37/filters/RlwrapFilter.3pm rlwrap-0.37/filters/count_in_prompt rlwrap-0.37/filters/pipeto rlwrap-0.37/filters/logger rlwrap-0.37/filters/null rlwrap-0.37/filters/unbackspace rlwrap-0.37/filters/pipeline rlwrap-0.37/filters/ftp_filter rlwrap-0.37/filters/history_format rlwrap-0.37/filters/simple_macro rlwrap-0.37/filters/template rlwrap-0.37/filters/scrub_prompt rlwrap-0.37/filters/paint_prompt rlwrap-0.37/filters/censor_passwords rlwrap-0.37/filters/listing rlwrap-0.37/filters/Makefile.am rlwrap-0.37/filters/Makefile.in rlwrap-0.37/src/ rlwrap-0.37/src/rlwrap.h rlwrap-0.37/src/redblack.h rlwrap-0.37/src/malloc_debug.h rlwrap-0.37/src/completion.rb rlwrap-0.37/src/Makefile.am rlwrap-0.37/src/Makefile.in rlwrap-0.37/src/main.c rlwrap-0.37/src/signals.c rlwrap-0.37/src/readline.c rlwrap-0.37/src/pty.c rlwrap-0.37/src/completion.c rlwrap-0.37/src/term.c rlwrap-0.37/src/ptytty.c rlwrap-0.37/src/utils.c rlwrap-0.37/src/string_utils.c rlwrap-0.37/src/malloc_debug.c rlwrap-0.37/src/filter.c rlwrap-0.37/test/ rlwrap-0.37/test/testclient rlwrap-0.37/test/testit rlwrap-0.37/tools/ rlwrap-0.37/tools/config.guess rlwrap-0.37/tools/config.sub rlwrap-0.37/tools/depcomp rlwrap-0.37/tools/install-sh rlwrap-0.37/tools/missing rlwrap-0.37/README rlwrap-0.37/configure.ac rlwrap-0.37/aclocal.m4 rlwrap-0.37/Makefile.am rlwrap-0.37/Makefile.in rlwrap-0.37/config.h.in rlwrap-0.37/configure rlwrap-0.37/AUTHORS rlwrap-0.37/COPYING rlwrap-0.37/ChangeLog rlwrap-0.37/INSTALL rlwrap-0.37/NEWS rlwrap-0.37/TODO rlwrap-0.37/BUGS rlwrap-0.37/PLEA ## 3、编译、安装软件 [root@rac1 soft]# cd rlwrap-0.37 [root@rac1 rlwrap-0.37]# ./configure && make && make install checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make sets $(MAKE)... (cached) yes checking whether build environment is sane... yes checking for style of include used by make... GNU ......... make[2]: Leaving directory `/soft/soft/rlwrap-0.37/filters' make[1]: Leaving directory `/soft/soft/rlwrap-0.37/filters' make[1]: Entering directory `/soft/soft/rlwrap-0.37' make[2]: Entering directory `/soft/soft/rlwrap-0.37' make[2]: Nothing to be done for `install-exec-am'. test -z "/usr/local/share/rlwrap" || /bin/mkdir -p "/usr/local/share/rlwrap" /bin/mkdir -p '/usr/local/share/rlwrap/filters' /usr/bin/install -c -m 644 filters/README filters/RlwrapFilter.pm filters/RlwrapFilter.3pm filters/count_in_prompt filters/pipeto fi lters/logger filters/null filters/unbackspace filters/pipeline filters/ftp_filter filters/history_format filters/simple_macro filters/template filters/scrub_prompt filters/paint_prompt filters/censor_passwords filters/listing '/usr/local/share/rlwrap/filters'/bin/mkdir -p '/usr/local/share/rlwrap/completions' /usr/bin/install -c -m 644 completions/testclient completions/coqtop '/usr/local/share/rlwrap/completions' make install-data-hook make[3]: Entering directory `/soft/soft/rlwrap-0.37' chmod a+x /usr/local/share/rlwrap/filters/* make[3]: Leaving directory `/soft/soft/rlwrap-0.37' make[2]: Leaving directory `/soft/soft/rlwrap-0.37' make[1]: Leaving directory `/soft/soft/rlwrap-0.37'
######## 创建所需的六个用户组,分别为 oinstall、dba、oper、asmadmin、asmdba、asmoper groupadd -g 501 oinstall groupadd -g 502 dba groupadd -g 503 oper groupadd -g 504 asmadmin groupadd -g 505 asmdba groupadd -g 506 asmoper [root@rac1 rlwrap-0.37]# groupadd -g 501 oinstall [root@rac1 rlwrap-0.37]# groupadd -g 502 dba [root@rac1 rlwrap-0.37]# groupadd -g 503 oper [root@rac1 rlwrap-0.37]# groupadd -g 504 asmadmin [root@rac1 rlwrap-0.37]# groupadd -g 505 asmdba [root@rac1 rlwrap-0.37]# groupadd -g 506 asmoper
###分别创建两个用户:grid 和 oracle,并添加到相应的用户组中 ###其中: ###grid用户所在的组为:dba,asmadmin,asmdba,asmoper ###oracle用户所在的组为:dba,oper,asmdba,asmadmin useradd -u 502 -g oinstall -G dba,asmadmin,asmdba,asmoper grid useradd -u 501 -g oinstall -G dba,oper,asmdba,asmadmin oracle [root@rac1 rlwrap-0.37]# useradd -u 502 -g oinstall -G dba,asmadmin,asmdba,asmoper grid [root@rac1 rlwrap-0.37]# useradd -u 501 -g oinstall -G dba,oper,asmdba,asmadmin oracle
## 设置 grid 用户口令:grid [root@rac1 rlwrap-0.37]# passwd grid 更改用户 grid 的密码 。 新的 密码: 无效的密码: 过短 无效的密码: 过于简单 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新。 ## 设置 oracle 用户口令:oracle [root@rac1 rlwrap-0.37]# passwd oracle 更改用户 oracle 的密码 。 新的 密码: 无效的密码: 它基于字典单词 无效的密码: 过于简单 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新。
[root@rac1 rlwrap-0.37]# su - grid [grid@rac1 ~]$ ls -a . .. .bash_logout .bash_profile .bashrc .gnome2 [grid@rac1 ~]$ vi .bash_profile ## 文件的内容如下: # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/11.2.0/grid export ORACLE_OWNER=oracle export ORACLE_SID=+ASM1 ## rac1 设置为 +ASM1, rac2 设置为 +ASM2,其他选项两个节点相同 export ORACLE_TERM=vt100 export THREADS_FLAG=native export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin export LANG=en_US alias sqlplus='rlwrap sqlplus / as sysdba' alias rman='rlwrap rman' alias lsnrctl='rlwrap lsnrctl' alias asmcmd='rlwrap asmcmd'
[grid@rac1 ~]$ source .bash_profile
[root@rac1 rlwrap-0.37]# vi /home/oracle/.bashrc ## 文件的内容如下: # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_OWNER=oracle export ORACLE_SID=orcl1 #### rac2节点设置为 orcl2 export ORACLE_TERM=vt100 export THREADS_FLAG=native export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin export EDITOR=vi export SQLPATH=/home/oracle export LANG=en_US alias sqlplus='rlwrap sqlplus' alias lsnrctl='rlwrap lsnrctl' alias rman='rlwrap rman' alias dgmgrl='rlwrap dgmgrl'
[oracle@rac1 ~]$ source .bash_profile