Redis OSS的邏輯資料庫,無論是自部署還是作為ElastiCache等托管服務啟動,其目的都是通過減少管理需求並提供一系列的預設設置來簡化開發人員的工作。然而,在實際生產中,當您的功能和操作需求發生變化時,單個Redis實例可能不再足夠。 ...
[20230903]完善hide.sql腳本2.txt
--//以前寫的用來查詢隱含參數的腳本如下:
$ cat hide.sql
col name format a40
col description format a66
col session_value format a22
col default_value format a22
col system_value format a22
select
a.ksppinm name,
a.ksppdesc DESCRIPTION,
b.ksppstdf DEFAULT_VALUE,
b.ksppstvl SESSION_VALUE,
c.ksppstvl SYSTEM_VALUE,
DECODE (BITAND (a.ksppiflg / 256, 1), 1, 'TRUE', 'FALSE') ISSES_MODIFIABLE,
DECODE
(
BITAND (a.ksppiflg / 65536, 3)
,1, 'IMMEDIATE'
,2, 'DEFERRED'
,3, 'IMMEDIATE'
,'FALSE'
) ISSYS_MODIFIABLE
from x$ksppi a, x$ksppcv b, x$ksppsv c
where a.indx = b.indx
and a.indx = c.indx
and lower(a.ksppinm) like lower('%&1%')
escape '\'
order by 1;
--//參考鏈接:http://blog.itpub.net/267265/viewspace-2752521/=>[20210125]完善hide.sql腳本.txt
--//一直存在一個小問題,假如查詢如下:
SYS@test> @ hide log_archive_dest_2
NAME DESCRIPTION DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE ISSES ISSYS_MOD
------------------- ------------------------------------ ------------- ------------- ------------ ----- ---------
log_archive_dest_2 archival destination #2 text string TRUE TRUE IMMEDIATE
log_archive_dest_20 archival destination #20 text string TRUE TRUE IMMEDIATE
log_archive_dest_21 archival destination #21 text string TRUE TRUE IMMEDIATE
log_archive_dest_22 archival destination #22 text string TRUE TRUE IMMEDIATE
log_archive_dest_23 archival destination #23 text string TRUE TRUE IMMEDIATE
log_archive_dest_24 archival destination #24 text string TRUE TRUE IMMEDIATE
log_archive_dest_25 archival destination #25 text string TRUE TRUE IMMEDIATE
log_archive_dest_26 archival destination #26 text string TRUE TRUE IMMEDIATE
log_archive_dest_27 archival destination #27 text string TRUE TRUE IMMEDIATE
log_archive_dest_28 archival destination #28 text string TRUE TRUE IMMEDIATE
log_archive_dest_29 archival destination #29 text string TRUE TRUE IMMEDIATE
11 rows selected.
--//顯示一堆自己不需要的查看的log_archive_dest_2X參數,以前遇到這類情況我僅僅粘貼log_archive_dest_2的結果。
--//而且要顯示log_archive_dest_3參數,要另外執行@ hide log_archive_dest_3.
--//最近優化項目時才想到使用正則表達式可以很好地規避這些缺點,改寫如下:
$ cat hide.sql
col name format a40
col description format a66
col session_value format a22
col default_value format a22
col system_value format a22
select
a.ksppinm name,
a.ksppdesc DESCRIPTION,
b.ksppstdf DEFAULT_VALUE,
b.ksppstvl SESSION_VALUE,
c.ksppstvl SYSTEM_VALUE,
DECODE (BITAND (a.ksppiflg / 256, 1), 1, 'TRUE', 'FALSE') ISSES_MODIFIABLE,
DECODE
(
BITAND (a.ksppiflg / 65536, 3)
,1, 'IMMEDIATE'
,2, 'DEFERRED'
,3, 'IMMEDIATE'
,'FALSE'
) ISSYS_MODIFIABLE
from x$ksppi a, x$ksppcv b, x$ksppsv c
where a.indx = b.indx
and a.indx = c.indx
-- and lower(a.ksppinm) like lower('%&1%')
--escape '\'
and regexp_like (lower(a.ksppinm) ,lower('&1'))
order by 1;
--//這樣就靈活許多,只要知道正則表達式的寫法,很容易完成需要的顯示結果。比如我需要顯示
--//log_archive_dest_2,log_archive_dest_3參數,執行如下:
SYS@test> @ hide log_archive_dest_[23]$
NAME DESCRIPTION DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE ISSES ISSYS_MOD
------------------ ----------------------------------- ------------- ------------- ------------ ----- ---------
log_archive_dest_2 archival destination #2 text string TRUE TRUE IMMEDIATE
log_archive_dest_3 archival destination #3 text string TRUE TRUE IMMEDIATE
--//而且裡面_不再像以前的like那樣解析為任意字元。以前要顯示包含"_ash_"字元串的參數,以前要執行@ hide \_ash\_
--//現在只要知道正則表達式的語法,就可以很容易實現滿足自己需要的查詢結果。
--//例子:
@ hide _ash_
@ hide ^_ash_
@ hide log_archive_dest_[[:digit:]]
@ hide log_archive_dest_[[:digit:]]{1}$
--//註:輸出結果我不再貼出,大家可以自行測試.為了保留原來的執行文件,我把新建立的執行腳本命名hidez.sql.
--//順便貼上一些正則表達式的解析,摘自man grep文檔,許多自己不經常使用,做一個記錄.
Character Classes and Bracket Expressions
A bracket expression is a list of characters enclosed by [ and ]. It matches any single character in that list. If
the first character of the list is the caret ^ then it matches any character not in the list;it is unspecified whether
it matches an encoding error. For example, the regular expression [0123456789] matches any single digit.
Within a bracket expression, a range expression consists of two characters separated by a hyphen. It matches any single
character that sorts between the two characters, inclusive, using the locale's collating sequence and character
set. For example, in the default C locale, [a-d] is equivalent to [abcd]. Many locales sort characters in dictionary
order, and in these locales [a-d] is typically not equivalent to [abcd]; it might be equivalent to [aBbCcDd], for
example. To obtain the traditional interpretation of bracket expressions, you can use the C locale by setting the
LC_ALL environment variable to the value C.
Finally, certain named classes of characters are predefined within bracket expressions, as follows. Their names are
self explanatory, and they are [:alnum:], [:alpha:], [:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:],
[:print:], [:punct:], [:space:], [:upper:], and [:xdigit:]. For example, [[:alnum:]] means the character class of
numbers and letters in the current locale. In the C locale and ASCII character set encoding, this is the same as
[0-9A-Za-z]. (Note that the brackets in these class names are part of the symbolic names, and must be included in
addition to the brackets delimiting the bracket expression.) Most meta-characters lose their special meaning
inside bracket expressions. To include a literal ] place it first in the list. Similarly, to include a literal ^ place
it anywhere but first. Finally, to include a literal - place it last.
Anchoring
The caret ^ and the dollar sign $ are meta-characters that respectively match the empty string at the beginning and end
of a line.
The Backslash Character and Special Expressions
The symbols \< and \> respectively match the empty string at the beginning and end of a word. The symbol \b matches the
empty string at the edge of a word, and \B matches the empty string provided it's not at the edge of a word. The
symbol \w is a synonym for [_[:alnum:]] and \W is a synonym for [^_[:alnum:]].
Repetition
A regular expression may be followed by one of several repetition operators:
? The preceding item is optional and matched at most once.
* The preceding item will be matched zero or more times.
+ The preceding item will be matched one or more times.
{n} The preceding item is matched exactly n times.
{n,} The preceding item is matched n or more times.
{,m} The preceding item is matched at most m times. This is a GNU extension.
{n,m} The preceding item is matched at least n times, but not more than m times.