产品中心

你的位置:长春市湛如文化传媒有限公司 > 产品中心 > 教你玩转 SQLPLUS,工作效率提升 200%


教你玩转 SQLPLUS,工作效率提升 200%

发布日期:2022-08-07 07:09    点击次数:90

前言

经常使用 Oracle 数据库的朋友,应该对 sqlplus 这个命令行工具不会陌生。基本上每天工作都离不开它,但是这个工具有些不太好用:

Linux 系统下 sqlplus 无法上下文切换查看编辑历史命令,敲错命令需要按住 CTRL 键才能删除 SQL 查询,输出结果格式错乱,每次都需要手动 SET 和 COL 调整列宽 当前会话不显示实例名和登录用户,容易误操作用户,用户信息显示不够明显

 注意: 以上均为 sqlplus 默认配置下存在的问题。

那么问题来了,这些都可以解决吗?

 当然,我写这篇就是为了介绍如何优化 sqlplus 命令行嘛!且听我慢慢道来哉~

演示配置

首先介绍下,主要分两个部分:

上下文切换:rlwrap + readline 美化输出格式:glogin.sql 一、上下文切换

相信大家在 Linux 主机使用 sqlplus 命令行工具时,经常会遇到命令输错不好回退,或者刚输入的命令想再次执行,无法通过键盘上下翻看的情况。

上面的情况曾经也一直困惑着我, lim官方自助注册后来经过研究,我发现了解决方案!这就来分享给大家,希望也能帮助到你。

通过 rlwrap + readline 配合使用,可以完美解决这个问题,接下来,我就来演示一下如何配置使用。

1、Linux 主机配置 yum 源

由于需要使用 yum 安装 readline ,下面配置一下:

##查看系统版本 cat /etc/system-release ##上传对应主机版本iso文件 scp rhel-server-7.9-x86_64-dvd.iso root@10.211.55.110:/soft 

##挂载系统iso镜像源 mount -o loop /soft/rhel-server-7.9-x86_64-dvd.iso /mnt ##配置yum镜像源 mv /etc/yum.repos.d/* /tmp/ echo "[local]" >> /etc/yum.repos.d/local.repo echo "name = local" >> /etc/yum.repos.d/local.repo echo "baseurl = file:///mnt/" >> /etc/yum.repos.d/local.repo echo "enabled = 1" >> /etc/yum.repos.d/local.repo echo "gpgcheck = 0" >> /etc/yum.repos.d/local.repo 

通过以上步骤,产品中心我们已经成功挂载系统镜像,可以开始安装 redline。

2、安装 readline 依赖包
yum install -y readline* 

如果没有系统 ISO 镜像源,也可以直接在网上直接下载 readline 安装包进行安装:

wget -c ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz 

上传安装包:

scp readline-6.2.tar.gz root@10.211.55.110:/soft 

解压安装:

tar -zxvf readline-6.2.tar.gz cd readline-6.2 ./configure && make && make install 
3、rlwrap 安装
tar -xvf rlwrap-0.42.tar.gz  cd rlwrap-0.42 ./configure && make && make install 

下载地址:https://github.com/hanslub42/rlwrap/releases/tag/v0.45.2

📢 注意: 由于我使用的 macOS 的终端连接可以切换回退,所以无法演示,以下使用 XShell 来进行演示。

未使用 rlwrap 时,无法回退和切换上下文:

使用 rlwrap 时,可任意切换回退:

通过上述演示,已经可以轻松做到命令输错无需按住 CTRL 键回退和上下文历史命令切换,可以大大提升工作效率。

4、配置环境变量

为避免每次都需要输入 rlwrap 来调用命令,我们通过 alias 别名来配置环境变量实现。

##配置oracle用户环境变量 cat <<EOF>>/home/oracle/.bash_profile alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' alias lsnrctl='rlwrap lsnrctl' alias asmcmd='rlwrap asmcmd' alias adrci='rlwrap adrci' alias ggsci='rlwrap ggsci' alias dgmgrl='rlwrap dgmgrl' EOF  ##环境变量生效 exit su - oracle 

至此,rlwrap 工具就配置完成啦!

二、美化输出格式 glogin.sql

sqlplus 在启动时会自动运行脚本:glogin.sql 。

glogin.sql 存放在目录 $ORACLE_HOME/sqlplus/admin/ 下 每当用户启动 sqlplus 会话并成功建立 Oracle 数据库连接时,sqlplus 就会执行此脚本 该脚本可以写入在 sqlplus 脚本中的任何内容,例如系统变量设置或 DBA 想要实现的其他全局设置 1、未做配置时,默认如下:

此时,我登录SQL*PLUS并执行sql查询,看一下输出结果格式。

未配置 glogin.sql 时,查询结果输出:

可以看到,查询结果格式很乱,而且连进去之后也看不到当前实例名和用户名。

2、配置 glogin.sql

cat <<EOF>>$ORACLE_HOME/sqlplus/admin/glogin.sql --设置编辑器用vi打开,windows客户端可以换成NotePad define _editor=vi --设置dbms_output输出缓冲区大小 set serveroutput on size 1000000 --设置输出格式 set long 200 set linesize 500 set pagesize 9999 --去除重定向输出每行拖尾空格 set trimspool on --设置name列长 col Name format a80 --查询当前实例名 set termout off col global_name new_value gname define gname=idle column global_name new_value gname select lower(user) 


上一篇:MySQL 默认隔离级别是RR,为什么阿里等大厂会改成RC?
下一篇:MySQL设置数据库为只读,你会吗?

Powered by 长春市湛如文化传媒有限公司 @2013-2022 RSS地图 HTML地图

Copyright 站群 © 2013-2022 365建站器 版权所有