前面寫過一篇SecureCRT 超時自動斷開的解決方法閱讀量比較高,一直想著要再次分享一下這個 CRT 快捷按鈕,可是一拖再拖,大概就拖了兩年的時間了,雖然沒有什么技術含量,但心中的這個執念依舊存在,這個月一直沒有寫文章,這算是第一篇吧,在本篇后面也會補上我 CRT 常用 SQL 的命令,這樣也算是帶上了分享技術的話題。
常用的 Linux 命令行遠程連接工具有以下幾種:
PuTTY:
優點:支持 SSH、rlogin、Telnet 等協議;綠色軟件,無需安裝;操作簡單,所有操作都在個控制面板中實現。
缺點:不支持同時登陸多個 Linux,需要打開多個窗口才能登陸多個 Linux,這樣會造成混亂;算是老牌的 SSH 客戶端軟件,UI 界面部分有點丑。
Xshell:
優點:支持 SSH1, SSH2, 以及 Windows 平臺的 TELNET 協議;界面設計簡潔,人性化,用起來讓人覺得很舒服;支持標簽,打開多個會話鏈接的時候很方便;可以保存密碼,方便下次直接使用,當然要做好電腦安全防護;支持 rz 和 sz 命令,這兩個命令在傳輸少量小文件時非常方便。
缺點:需要付費購買專業版才能享受更多高級功能。
SecureCRT:
優點:支持 SSH、Telnet、rlogin 和串口等協議;提供會話記錄功能,可以查看歷史會話記錄;支持多標簽會話窗口;支持從第三方系統導入設置;提供會話腳本編程功能。
缺點:是付費軟件,生產環境不建議使用破解版,以免出現安全問題;使用前需要進行比復雜的配置;價格較高。
MobaXterm:
優點:集成了 SSH、Telnet、rlogin、FTP、SFTP 等協議;支持標簽,方便同時打開多個會話鏈接;提供免費版和專業版,專業版擁有更多高級功能;操作簡單,界面簡潔。
缺點:免費版只支持連接兩個終端;專業版需要付費購買才能享受更多高級功能。
下面來分享一直使用的 SecureCRT 快捷按鈕設置方法,CRT 快捷按鈕是指在 CRT 下方設置了一些常用的命令的按鈕,點擊某一個按鈕就會執行設置好的一些命令,比如下方的查看進程按鈕,點擊它就可以執行命令行中的“ps -ef |grep smon| grep -v grep”命令來查看進程是否存在,這里的綠色的“進程”或者“查看進程”是個人自定義的中英文名稱。


那么,這個下方的按鈕怎么顯示呢?點擊菜單中的“view”子菜單,在“view”子菜單中有一個“Button Bar”的按鈕,去勾選上就有了。如果你的 CRT 是綠色破解版的,支持中文,應該是在“查看”菜單中有一個叫“按鈕欄”的菜單也是能達到同樣的效果。

然后我們就開始新建一個按鈕,在出現的狀態欄中鼠標右擊就會出現下圖所示的“New Button”、“Edit Button”等多個選項,首次使用我們一般選項新建,后期在考慮使用編輯或者移動等功能。

我們點擊新建按鈕時,會出現下圖所示的四塊可以編輯的區域,左邊區域 “Action Function”可以選擇發送字符串、運行腳本等多個功能,右邊區域寫一些常用命令,注意要有換行,這里一般為“\n”換行,每一個換行都需要有“\n”才可以,最后結尾也最好有換行命令才可以執行。左下方區域標簽名字暫時叫做“查看進程”,右邊區域可以選擇按鈕顏色,這里選擇 Green 綠色,可能其他版本的 CRT 有一定的差別,還請注意識別。

我這里的版本為 8.7.2 版本,最新的版本為 2023 年 7 月 18 日發布的 SecureCRT 9.4.1 版本,更多詳細信息請訪問官方鏈接。

如果你的事綠色中文版的,應該是下圖中的樣子,注意,以上僅供個人學習使用,非商業用途,如有企業用戶使用,請購買正版使用,謝謝!

下面是我作為一個 Oracle DBA 經常使用的命令快捷按鈕,可以直接新建按鈕使用,如需在 Shell 或者 SQLPLUS 命令行中使用,請自行刪除每一行末尾的“\n”換行字符。
1、sqlplus
ps -ef | grep smon \n
echo $ORACLE_SID \n
sqlplus / as sysdba \n
set timing on time on \n
2、查看用戶狀態
set line 240 \n
set pages 999 \n
col ACCOUNT_STATUS for a18 \n
select USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users; \n
3、數據庫啟動時間
set line 240 \n
col HOST_NAME for a30 \n
select INSTANCE_NAME,HOST_NAME,VERSION,STARTUP_TIME,STATUS from gv$instance; \n
4、查看ASM使用率
set lin 1000 pagesize 999 \n
col PATH for a33 \n
col NAME for a15 \n
col FAILGROUP for a15 \n
col path for a15 \n
select GROUP_NUMBER,DISK_NUMBER,TOTAL_MB/1024,FREE_MB/1024,NAME,FAILGROUP,PATH,FAILGROUP_TYPE from v$asm_disk order by 1; \n
select GROUP_NUMBER,NAME,STATE,TYPE,TOTAL_MB/1024,FREE_MB/1024,USABLE_FILE_MB/1024,HOT_USED_MB,COLD_USED_MB/1024 from v$asm_diskgroup; \n
5、查看用戶狀態
set line 240 \n
col profile for a20 \n
set pages 999 \n
col username for a25 \n
col ACCOUNT_STATUS for a18 \n
select USERNAME,ACCOUNT_STATUS,CREATED,LOCK_DATE,PROFILE,PASSWORD_VERSIONS,DEFAULT_TABLESPACE from dba_users where account_status='OPEN' order by CREATED asc; \n
6、查看 ASM 使用率
set line 240 \n
col HOST_NAME for a30 \n
select INSTANCE_NAME,HOST_NAME,VERSION,STARTUP_TIME,STATUS from gv$instance; \n
7、查看數據量
select sum(bytes)/1024/1024/1024 Gb from dba_segments where segment_name not like 'BIN$%';\n
8、查看 LOCAL=NO 會話
ps -ef | grep LOCAL=NO | grep -v grep | awk '{print $2}' |wc -l \n
echo "ps -ef | grep LOCAL=NO | grep -v grep | awk '{print \$2}' | xargs kill -9" \n
9、查看等待事件
set lines 345 pages 345 \n
select event, sql_id,sid,serial#,SECONDS_IN_WAIT from gv$session \n
where type <> 'BACKGROUND' and STATUS='ACTIVE' \n
group by event,sql_id,sid,serial#,SECONDS_IN_WAIT \n
order by SECONDS_IN_WAIT desc; \n
10、查看索引列
SET LINE 234 \n
COL INDEX_OWNER FOR A20 \n
COL TABLE_OWNER FOR A20 \n
COL TABLE_NAME FOR A25 \n
COL INDEX_NAME FOR A30 \n
COL COLUMN_NAME FOR A25 \n
SELECT INDEX_OWNER,TABLE_OWNER,TABLE_NAME,INDEX_NAME,COLUMN_NAME FROM DBA_IND_COLUMNS WHERE TABLE_NAME='&tablename' and table_owner='&tb_owner' ORDER BY INDEX_NAME; \n
11、連接會話總數
--select CON_ID,inst_id,count(*),status from gv$session where type<>'BACKGROUND' group by con_id,inst_id,status order by 1;\n
select inst_id,count(*),status from gv$session where type<>'BACKGROUND' group by inst_id,status order by 1; \n
12、表空間使用率
--purge dba_recyclebin; \n
col TABLESPACE_NAME for a30 \n
set pages 456 \n
SELECT a.tablespace_name,round(total/1024/1024/1024) "Total g", \n
round(free/1024/1024/1024) "Free g",ROUND((total-free)/total,4)*100 "USED%" \n
FROM (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE \n
GROUP BY tablespace_name ) a, \n
(SELECT tablespace_name,SUM(bytes) total FROM DBA_DATA_FILES \n
GROUP BY tablespace_name) b \n
WHERE a.tablespace_name=b.tablespace_name \n
ORDER BY 4; \n
13、查看有哪些 IP 連接數據庫
netstat -anop | grep ESTABLISHED | awk '$4 ~/:1521/' |awk '{print $5}' \n
14、查數據文件大小
select file_id,file_name,bytes/1024/1024,AUTOEXTENSIBLE from dba_data_files where tablespace_name='&tabs_name'; \n
15、查表空間內前十大表
col TABLE_NAME for a30 \n col OWNER for a30 \n
set pagesize 200 \n
set linesize 200 \n
col TABLE_NAME for a30 \n
select * from (select TABLESPACE_NAME,OWNER,SEGMENT_NAME "TABLE_NAME",to_number(decode(substr(BYTES/1024/1024,1,1),'.','0'||BYTES/1024/1024,BYTES/1024/1024)) total_MB \n
from dba_segments where TABLESPACE_NAME ='&tablespacename' and SEGMENT_TYPE='TABLE' order by total_MB desc ) where rownum<=10; \n
16、查看用戶下 Lob 字段大小
SET LINE 345 PAGES 456 \n
COL OWNER FOR a20 \n
COL TABLE_NAME FOR A40 \n
COL SEGMENT_TYPE FOR A20 \n
col COLUMN_NAME FOR A35 \n
SELECT \n
A.OWNER, \n
B.TABLE_NAME, \n
B.COLUMN_NAME, \n
a.SEGMENT_TYPE, \n
ROUND(SUM(A.BYTES/1024/1024/1024),2) G \n
FROM DBA_SEGMENTS A \n
LEFT JOIN DBA_LOBS B \n
ON A.OWNER = B.OWNER \n
AND A.SEGMENT_NAME = B.SEGMENT_NAME \n
WHERE A.SEGMENT_TYPE='LOBSEGMENT' \n
AND A.OWNER in('&OWNER') \n
GROUP BY A.OWNER,B.TABLE_NAME,B.COLUMN_NAME,a.SEGMENT_TYPE \n
ORDER BY 5 DESC; \n
17、查隱含參數
set line 345 \n col name for a50 \n
col value for a30 \n
col description for a80 \n
select a.ksppinm name, b.ksppstvl value,a.ksppdesc description from x$ksppi a, x$ksppcv b where a.indx = b.indx and a.ksppinm like '%&name%'; \n
18、查看 ADG 延遲
set linesize 150; \n
set pagesize 9999; \n
column name format a13; \n
column value format a20; \n
column unit format a30; \n
column TIME_COMPUTED format a30; \n
select name,value,unit,datum_time,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');\n
19、外鍵沒創建索引的表
set linesize 250 \n
set pagesize 9999 \n
col CONSTRAINT_NAME for a40 \n
with cons as \n
(select /*+materialize*/ \n
owner, table_name, constraint_name \n
from dba_constraints \n
where owner = '&OWNER' \n
and constraint_type = 'R'), \n
idx as \n
(select /*+materialize*/ \n
table_owner, table_name, column_name \n
from dba_ind_columns \n
where table_owner = '&TABLE_OWNER') \n
select owner, table_name, constraint_name, column_name \n
from dba_cons_columns \n
where (owner, table_name, constraint_name) in (select * from cons) \n
and (owner, table_name, constraint_name) not in (select * from idx); \n
20、需要收集直方圖的列
select a.owner,
a.table_name,
a.column_name,
b.NUM_ROWS,
a.num_distinct Cardinality,
round(a.num_distinct / b.NUM_ROWS * 100, 2) selectivity
from dba_tab_col_statistics a, dba_tables b
where a.owner = b.OWNER
and a.table_name = b.TABLE_NAME
and a.owner = '&OWNER'
and round(a.num_distinct / b.NUM_ROWS * 100, 2) < 5
and num_rows > 50000
and (a.table_name, a.column_name) in
(select o.name, c.name
from sys.col_usage$ u, sys.obj$ o, sys.col$ c, sys.user$ r
where o.obj# = u.obj#
and c.obj# = u.obj#
and c.col# = u.intcol#
and r.name = '&OWNER')
order by 2,6;
全文完,希望可以幫到正在閱讀的你,如果覺得此文對你有幫助,可以分享給你身邊的朋友,同事,你關心誰就分享給誰,一起學習共同進步~~~
歡迎關注我的公眾號【JiekeXu DBA之路】,第一時間一起學習新知識!
————————————————————————————
公眾號:JiekeXu DBA之路
CSDN :https://blog.csdn.net/JiekeXu
墨天輪:http://m.sunline.cc/u/4347
騰訊云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————





