首页 > 数据库 >[20230903]完善hide.sql脚本2.txt

[20230903]完善hide.sql脚本2.txt

时间:2023-09-04 20:44:49浏览次数:31  
标签:hide string dest text sql 20230903 TRUE archive

[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.

标签:hide,string,dest,text,sql,20230903,TRUE,archive
From: https://www.cnblogs.com/lfree/p/17678044.html

相关文章

  • [20230903]执行计划ANTI SNA和ANTI NA表示什么.txt
    [20230903]执行计划ANTISNA和ANTINA表示什么.txt--//在notin的sql语句什么出现ANTISNA或者ANTINA(注:不会出现在notexists语句中),我自己是非常混乱的。--//我看了以前的链接http://blog.itpub.net/267265/viewspace-2157424/=>[20180705]关于hashjoin2.txt--//还是发现......
  • MySQL数据库
    一、SQL1.简介SQL(StructuredQueryLanguage)结构化查询语言;它是一种数据库查询和程序设计语言,同时也是目前使用最广泛的关系型数据库操作语言。2.分类2.1DQL(DataQueryLanguage)数据查询语言DQL主要用于数据的查询,其基本结构是使用SELECT子句,FROM子句和WHERE子句的组......
  • MySQL常见命令配图文超详细(一)
    切记:终端里面全都要加分号!!!!!(英文状态)数据库其实就是一个容器,他由表、视图、索引、触发器、存储过程、用户等对象组成,这些对象称之为数据库对象。所以在使用这些对象之前,必须先进行创建数据库。数据库基础语句连接服务器命令:mysql-uroot-p123456查看当前所有存在的数据库:showdata......
  • MySQL的Json类型个人用法详解
    前言虽然MySQL很早就添加了Json类型,但是在业务开发过程中还是很少设计带这种类型的表。少不代表没有,当真正要对Json类型进行特定查询,修改,插入和优化等操作时,却感觉一下子想不起那些函数怎么使用。比如把json里的某个键和值作为SQL条件,修改某个键下的子键的值,其中可能会遇到数组形式......
  • Caused by: java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
    最终是,查询条件,入参为null,所导致。JDBCgetParameterTypecallfailed-usingfallbackmethodinsteadRA-00923:FROMkeywordnotfoundwhereexpected 进一步,这个错误,在job执行的时候,会导致,oracle游标不够ORA-01000maximumopencursorsexceeded   参考: ......
  • MySQL安装
    1.下载地址:http://dev.mysql.com/get/Downloads/MySQL-4.0/mysql-4.0.22-win-noinstall.zip/from/pick2.安装:这个版本是直接解压缩到C盘就可以了.3.运行:运行bin/mysqld运行mysql,出现mysql>提示符或者用mysqluroot以管理员登录.默认密码好像没有,默认有一个Database叫mysql,以root......
  • sql-labs--Less-1--Error based-Single quotes
    sql\="SELECT\*FROMusersWHEREid\='id'LIMIT0,1";打开第一关,我们看到如下界面,上面写着PleaseinputtheIDasparameterwithnumericvalue,它的意思是让我们请输入ID作为带有数值的参数。https://images.cnblogs.com/cnblogs_com/blogs/800546/galleries/2341394/o_2......
  • mysql 创建定时器,每天晚上1点钟调用存储过程proc_task
    在MySQL中,你可以使用事件调度器(EventScheduler)来创建定时器,以在指定时间自动执行存储过程。以下是在每天晚上1点钟调用存储过程proc_task的示例:首先,确保MySQL事件调度器已经启用。如果尚未启用,可以在MySQL客户端中执行以下命令:SETGLOBALevent_scheduler=ON;然后,创......
  • PostgreSQL的参数:用户应了解的作用域和优先级
     PostgreSQL允许用户在不同的作用域设置参数,同一个参数可以在不同的地方用不同的方法设置。这可能会产生冲突。有人可能想知道为什么某些更改没有生效,因此了解/收集设置的作用域和优先级很重要。这里将试图列出用户可用的选项,并按照优先级递增的顺序排列。目的是为用户提供一个......
  • ORACLE 常用的SQL语法和数据对象 选择自 i_like_database 的 Blog
    一.数据控制语句(DML)部分1.INSERT (往数据表里插入记录的语句)INSERTINTO表名(字段名1,字段名2,……)VALUES(值1,值2,……);INSERTINTO表名(字段名1,字段名2,……) SELECT字段名1,字段名2,……FROM另外的表名;字符串类型的字段值必须用单引号括起来,例......