自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

教你玩轉(zhuǎn) SQLPLUS,工作效率提升 200%

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
經(jīng)常使用 Oracle 數(shù)據(jù)庫(kù)的朋友,應(yīng)該對(duì) sqlplus 這個(gè)命令行工具不會(huì)陌生?;旧厦刻旃ぷ鞫茧x不開(kāi)它,我寫(xiě)這篇就是為了介紹如何優(yōu)化 sqlplus 命令行嘛!且聽(tīng)我慢慢道來(lái)哉~

[[439756]]

前言

經(jīng)常使用 Oracle 數(shù)據(jù)庫(kù)的朋友,應(yīng)該對(duì) sqlplus 這個(gè)命令行工具不會(huì)陌生?;旧厦刻旃ぷ鞫茧x不開(kāi)它,但是這個(gè)工具有些不太好用:

  • Linux 系統(tǒng)下 sqlplus 無(wú)法上下文切換查看編輯歷史命令,敲錯(cuò)命令需要按住 CTRL 鍵才能刪除
  • SQL 查詢(xún),輸出結(jié)果格式錯(cuò)亂,每次都需要手動(dòng) SET 和 COL 調(diào)整列寬
  • 當(dāng)前會(huì)話不顯示實(shí)例名和登錄用戶,容易誤操作用戶,用戶信息顯示不夠明顯

 注意: 以上均為 sqlplus 默認(rèn)配置下存在的問(wèn)題。

那么問(wèn)題來(lái)了,這些都可以解決嗎?

 當(dāng)然,我寫(xiě)這篇就是為了介紹如何優(yōu)化 sqlplus 命令行嘛!且聽(tīng)我慢慢道來(lái)哉~

演示配置

首先介紹下,主要分兩個(gè)部分:

  • 上下文切換:rlwrap + readline
  • 美化輸出格式:glogin.sql

一、上下文切換

相信大家在 Linux 主機(jī)使用 sqlplus 命令行工具時(shí),經(jīng)常會(huì)遇到命令輸錯(cuò)不好回退,或者剛輸入的命令想再次執(zhí)行,無(wú)法通過(guò)鍵盤(pán)上下翻看的情況。

上面的情況曾經(jīng)也一直困惑著我,后來(lái)經(jīng)過(guò)研究,我發(fā)現(xiàn)了解決方案!這就來(lái)分享給大家,希望也能幫助到你。

通過(guò) rlwrap + readline 配合使用,可以完美解決這個(gè)問(wèn)題,接下來(lái),我就來(lái)演示一下如何配置使用。

1、Linux 主機(jī)配置 yum 源

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

  1. ##查看系統(tǒng)版本 
  2. cat /etc/system-release 
  3. ##上傳對(duì)應(yīng)主機(jī)版本iso文件 
  4. scp rhel-server-7.9-x86_64-dvd.iso root@10.211.55.110:/soft 

  1. ##掛載系統(tǒng)iso鏡像源 
  2. mount -o loop /soft/rhel-server-7.9-x86_64-dvd.iso /mnt 
  3. ##配置yum鏡像源 
  4. mv /etc/yum.repos.d/* /tmp/ 
  5. echo "[local]" >> /etc/yum.repos.d/local.repo 
  6. echo "name = local" >> /etc/yum.repos.d/local.repo 
  7. echo "baseurl = file:///mnt/" >> /etc/yum.repos.d/local.repo 
  8. echo "enabled = 1" >> /etc/yum.repos.d/local.repo 
  9. echo "gpgcheck = 0" >> /etc/yum.repos.d/local.repo 

通過(guò)以上步驟,我們已經(jīng)成功掛載系統(tǒng)鏡像,可以開(kāi)始安裝 redline。

2、安裝 readline 依賴(lài)包

  1. yum install -y readline* 

如果沒(méi)有系統(tǒng) ISO 鏡像源,也可以直接在網(wǎng)上直接下載 readline 安裝包進(jìn)行安裝:

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

上傳安裝包:

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

解壓安裝:

  1. tar -zxvf readline-6.2.tar.gz 
  2. cd readline-6.2 
  3. ./configure && make && make install 

3、rlwrap 安裝

  1. tar -xvf rlwrap-0.42.tar.gz 
  2.  cd rlwrap-0.42 
  3. ./configure && make && make install 

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

📢 注意: 由于我使用的 macOS 的終端連接可以切換回退,所以無(wú)法演示,以下使用 XShell 來(lái)進(jìn)行演示。

未使用 rlwrap 時(shí),無(wú)法回退和切換上下文:

使用 rlwrap 時(shí),可任意切換回退:

通過(guò)上述演示,已經(jīng)可以輕松做到命令輸錯(cuò)無(wú)需按住 CTRL 鍵回退和上下文歷史命令切換,可以大大提升工作效率。

4、配置環(huán)境變量

為避免每次都需要輸入 rlwrap 來(lái)調(diào)用命令,我們通過(guò) alias 別名來(lái)配置環(huán)境變量實(shí)現(xiàn)。

  1. ##配置oracle用戶環(huán)境變量 
  2. cat <<EOF>>/home/oracle/.bash_profile 
  3. alias sqlplus='rlwrap sqlplus' 
  4. alias rman='rlwrap rman' 
  5. alias lsnrctl='rlwrap lsnrctl' 
  6. alias asmcmd='rlwrap asmcmd' 
  7. alias adrci='rlwrap adrci' 
  8. alias ggsci='rlwrap ggsci' 
  9. alias dgmgrl='rlwrap dgmgrl' 
  10. EOF 
  11.  
  12. ##環(huán)境變量生效 
  13. exit 
  14. su - oracle 

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

二、美化輸出格式 glogin.sql

sqlplus 在啟動(dòng)時(shí)會(huì)自動(dòng)運(yùn)行腳本:glogin.sql 。

  • glogin.sql 存放在目錄 $ORACLE_HOME/sqlplus/admin/ 下
  • 每當(dāng)用戶啟動(dòng) sqlplus 會(huì)話并成功建立 Oracle 數(shù)據(jù)庫(kù)連接時(shí),sqlplus 就會(huì)執(zhí)行此腳本
  • 該腳本可以寫(xiě)入在 sqlplus 腳本中的任何內(nèi)容,例如系統(tǒng)變量設(shè)置或 DBA 想要實(shí)現(xiàn)的其他全局設(shè)置

1、未做配置時(shí),默認(rèn)如下:

此時(shí),我登錄SQL*PLUS并執(zhí)行sql查詢(xún),看一下輸出結(jié)果格式。

未配置 glogin.sql 時(shí),查詢(xún)結(jié)果輸出:

可以看到,查詢(xún)結(jié)果格式很亂,而且連進(jìn)去之后也看不到當(dāng)前實(shí)例名和用戶名。

2、配置 glogin.sql

  1. cat <<EOF>>$ORACLE_HOME/sqlplus/admin/glogin.sql 
  2. --設(shè)置編輯器用vi打開(kāi),windows客戶端可以換成NotePad 
  3. define _editor=vi 
  4. --設(shè)置dbms_output輸出緩沖區(qū)大小 
  5. set serveroutput on size 1000000 
  6. --設(shè)置輸出格式 
  7. set long 200 
  8. set linesize 500 
  9. set pagesize 9999 
  10. --去除重定向輸出每行拖尾空格 
  11. set trimspool on 
  12. --設(shè)置name列長(zhǎng) 
  13. col Name format a80 
  14. --查詢(xún)當(dāng)前實(shí)例名 
  15. set termout off 
  16. col global_name new_value gname 
  17. define gname=idle 
  18. column global_name new_value gname 
  19. select lower(user) || '@' || substr( global_name, 1, decode( dot, 0, 
  20. length(global_name), dot-1) ) global_name 
  21.   from (select global_name, instr(global_name,'.') dot from global_name ); 
  22. set sqlprompt '&gname _DATE> ' 
  23. --設(shè)置session時(shí)間格式 
  24. ALTER SESSION SET nls_date_format = 'HH24:MI:SS'
  25. set termout on 
  26. EOF 

配置完 glogin.sql 后,查詢(xún)結(jié)果輸出:

通過(guò)以上配置,sqlplus 連接后,明顯輸出格式更加好看,顯示更加人性化。

具體配置可根據(jù)個(gè)人常用進(jìn)行配置,比如可以將查詢(xún)表空間使用率配置進(jìn)去,每次打開(kāi)都可以看到表空間使用率,防止數(shù)據(jù)文件撐爆。

  1. --查詢(xún)表空間使用率 
  2. col TABLESPACE_NAME for a20 
  3. select tbs_used_info.tablespace_name, 
  4.        tbs_used_info.alloc_mb, 
  5.        tbs_used_info.used_mb, 
  6.        tbs_used_info.max_mb, 
  7.        tbs_used_info.free_of_max_mb, 
  8.        tbs_used_info.used_of_max || '%' used_of_max_pct 
  9.   from (select a.tablespace_name, 
  10.                round(a.bytes_alloc / 1024 / 1024) alloc_mb, 
  11.                round((a.bytes_alloc - nvl(b.bytes_free, 
  12.                                           0)) / 1024 / 1024) used_mb, 
  13.                round((a.bytes_alloc - nvl(b.bytes_free, 
  14.                                           0)) * 100 / a.maxbytes) used_of_max, 
  15.                round((a.maxbytes - a.bytes_alloc + nvl(b.bytes_free, 
  16.                                                        0)) / 1048576) free_of_max_mb, 
  17.                round(a.maxbytes / 1048576) max_mb 
  18.           from (select f.tablespace_name, 
  19.                        sum(f.bytes) bytes_alloc, 
  20.                        sum(decode(f.autoextensible, 
  21.                                   'YES'
  22.                                   f.maxbytes, 
  23.                                   'NO'
  24.                                   f.bytes)) maxbytes 
  25.                   from dba_data_files f 
  26.                  group by tablespace_name) a, 
  27.                (select f.tablespace_name, 
  28.                        sum(f.bytes) bytes_free 
  29.                   from dba_free_space f 
  30.                  group by tablespace_name) b 
  31.          where a.tablespace_name = b.tablespace_name(+)) tbs_used_info 
  32.  order by tbs_used_info.used_of_max desc
  33.  
  34. --查詢(xún)備份 
  35. col status for a10 
  36. col input_type for a20 
  37. col INPUT_BYTES_DISPLAY for a10 
  38. col OUTPUT_BYTES_DISPLAY for a10  
  39. col TIME_TAKEN_DISPLAY for a10 
  40.  
  41. select input_type, 
  42.        status, 
  43.        to_char(start_time, 
  44.                'yyyy-mm-dd hh24:mi:ss'), 
  45.        to_char(end_time, 
  46.                'yyyy-mm-dd hh24:mi:ss'), 
  47.        input_bytes_display, 
  48.        output_bytes_display, 
  49.        time_taken_display, 
  50.        COMPRESSION_RATIO 
  51.   from v$rman_backup_job_details 
  52.  where start_time > date '2021-07-01' 
  53.  order by 3 desc

至此,glogin.sql 已經(jīng)配置完成,歡迎食用👏🏻。

寫(xiě)在最后

glogin.sql 需要謹(jǐn)慎配置,沒(méi)有理解的命令盡量不要寫(xiě)入!

大名鼎鼎的比特幣勒索病毒,有一種方式就是通過(guò) glogin.sql 來(lái)進(jìn)行注入。

參考官方文檔:

Configuring SQL*Plus:https://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_two.htm#SQPUG012

 

責(zé)任編輯:姜華 來(lái)源: Lucifer三思而后行
相關(guān)推薦

2023-08-01 08:01:27

工具安全漏洞

2024-11-19 15:28:15

2022-04-29 08:15:40

Python技巧Max

2017-03-07 14:26:19

Eclipse技巧效率

2013-03-15 09:59:42

遠(yuǎn)程開(kāi)發(fā)云工具Flowdock

2024-09-26 06:21:59

Python代碼

2011-09-15 17:49:32

Windows7效率

2025-01-21 08:01:26

2020-09-26 07:25:06

前端

2024-09-30 11:36:15

2020-05-29 11:27:27

VS Code遠(yuǎn)程工具

2012-05-21 16:50:52

愛(ài)普生掃描儀

2023-05-16 06:50:50

prompt郵件語(yǔ)法

2023-04-26 18:09:32

人工智能AI

2025-03-31 02:22:00

2022-10-28 11:43:59

戴爾

2021-04-16 15:11:50

工具軟件網(wǎng)站

2020-11-19 07:47:55

IDEA插件

2020-11-20 14:39:24

IDEA開(kāi)發(fā)插件

2025-02-24 08:24:39

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)