视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Sh脚本中查询Oraclev$视图时需要在$号前加转义符“”
2020-11-09 10:42:21 责编:小采
文档


DBA经常会部署一些sh脚本登陆ORACLE数据库查询v$动态视图得到一些东西来实际管理自动化的目的,但在sh脚本中写ORACLE SQL语句时,

DBA经常会部署一些sh脚本登陆Oracle数据库查询v$动态视图得到一些东西来实际管理自动化的目的,但在sh脚本中写ORACLE SQL语句时,,如果语句查询v$视图,直接写v$XXXX是不能成功的,shell会将$当成一个参数来处理。

以下面一段简单的sh脚本为例:/home/oracle/s_parameter.sh

sqlplus /nolog<

conn / as sysdba

col inst_id for 99

col name for a48

col value for a

set pagesize 1000 line 180

spool /home/oracle/1111.txt

select inst_id,name,value from gv$system_parameter order by 1,2;

spool off

quit

EOF

当执行 sh /home/oracle/s_parameter.sh时,会报如下表或视图不存在的错误错:

SQL*Plus: Release 11.2.0.3.0 Production on Sun Aug 18 11:28:17 2013

Copyright (c) 1982, 2011, Oracle. All rights reserved.

SQL> Connected.

SQL> SQL> SQL> SQL> SQL> SQL> select inst_id,name,value from gv order by 1,2

*

ERROR at line 1:

ORA-00942: table or view does not exist

SQL> SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

本来sh脚本文件中写的是gv$system_parameter的,但是执行时,只能识别到gv,$以后面的视图名都未被识别。

处理这个问题其实很简单,只需要在$前加上一个“\”转义符即可,例如

sqlplus /nolog<

conn / as sysdba

col inst_id for 99

col name for a48

col value for a

set pagesize 1000 line 180

spool /home/oracle/1111.txt

select inst_id,name,value from gv\$system_parameter order by 1,2;

spool off

quit

EOF

再执行/home/oracle/s_parameter.sh就可以得到正确的结果(注意上面表格中红色的“\”号)

下载本文
显示全文
专题