[20240930]建立ocol.sh脚本查询字段.txt
--//oracle没有一个好的视图记录显示视图中的相关字段。要显示仅仅使用desc,而desc不支持过滤功能,如果没有图形工具,找到需要
--//的字段有点麻烦。写一个简单的bash shell脚本,实现这个功能。
$ cat ocol.sh
#! /bin/bash
conn=${3:-'/ as sysdba'}
sqlplus -s -l ${conn} <<< "@desc $1" | grep --color=never -Ei "^\s+Name|------|$2"
--//缺点只能在服务端以sys用户使用,不知道如何实现pdb下表的查询。
--//修改加入参数3,这样可以实现上述功能。
$ cat desc.sql
set linesize 80
desc &1
set linesize 280
--//测试如下:
SCOTT@book01p> !! ocol.sh 'v$database' supp
Name Null? Type
------------------------------- -------- ----------------------------
30 SUPPLEMENTAL_LOG_DATA_MIN VARCHAR2(8)
31 SUPPLEMENTAL_LOG_DATA_PK VARCHAR2(3)
32 SUPPLEMENTAL_LOG_DATA_UI VARCHAR2(3)
40 SUPPLEMENTAL_LOG_DATA_FK VARCHAR2(3)
41 SUPPLEMENTAL_LOG_DATA_ALL VARCHAR2(3)
52 SUPPLEMENTAL_LOG_DATA_PL VARCHAR2(3)
59 SUPPLEMENTAL_LOG_DATA_SR VARCHAR2(3)
--//使用中注意几个问题,如果存在$或者|要使用单引号.
$ ocol.sh dba_tables '128|table'
Name Null? Type
------------------------------- -------- ----------------------------
1 OWNER NOT NULL VARCHAR2(128)
2 TABLE_NAME NOT NULL VARCHAR2(128)
3 TABLESPACE_NAME VARCHAR2(30)
4 CLUSTER_NAME VARCHAR2(128)
5 IOT_NAME VARCHAR2(128)
31 TABLE_LOCK VARCHAR2(8)
48 CLUSTER_OWNER VARCHAR2(128)
$ ocol.sh 'x$ksmsp' '*'
Name Null? Type
------------------------------- -------- ----------------------------
1 ADDR RAW(8)
2 INDX NUMBER
3 INST_ID NUMBER
4 CON_ID NUMBER
5 KSMCHIDX NUMBER
6 KSMCHDUR NUMBER
7 KSMCHCOM VARCHAR2(16)
8 KSMCHPTR RAW(8)
9 KSMCHSIZ NUMBER
10 KSMCHCLS VARCHAR2(8)
11 KSMCHTYP NUMBER
12 KSMCHPAR RAW(8)
$ ocol.sh 'dept' "*" "scott/book@book01p"
Name Null? Type
------------------------------- -------- ----------------------------
1 DEPTNO NOT NULL NUMBER(2)
2 DNAME VARCHAR2(14)
3 LOC VARCHAR2(13)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040917/viewspace-3039941/ ,如需转载,请注明出处,否则将追究法律责任。