添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • sqlplus交互界面存在的问题
  • sqlplus的两种非交互式使用方式
  • 利用管道做兴许处理
  • 须要注意的地方
  • 一个简单的脚本
  • 1 sqlplus交互界面存在的问题

    sqlplus是ORACLE数据库的最重要的官方命令行client软件。是DBA的必备工具,使用它能够完毕差点儿所有的管理任务。然而。sqlplus的交互界面并非很友好,输入命令时不具有历史命令记录功能。默认的输出结果更是不堪入目。

    在易用性方面,sqlplus确实比mysqlclient差了不少。

    既然sqlplus交互模式存在这么多的不便。那么不如干脆直接使用非交互模式使用它,再借助操作系统提供的shell工具集来协助完毕更复杂的任务。sqlplus本身就是支持非交互式使用的,并且支持的很好,符合一般的Unix设计哲学: 从标准输入读取命令。把结果写到标准输出

    2 sqlplus的两种非交互式使用方式

    sqlplus在非交互模式下,能够从两个地方为其提供sql命令:一是通过外部文件,而是通过标准输入。

    2.1 通过外部命令文件

    sqlplus username/password@serverIP/侦听服务名 @命令文件名称
    

    以下举一个样例。
    命令文件名称为 1.sql。内容例如以下:

    select count(*) from dba_objects;
    exit;

    运行命令为:

    sqlplus sys/***@172.16.2.190/xgdb.db001.xigang @1.sql
    

    此时运行完毕会把结果输出。
    这样的外部命令文件的方式。须要建立单独的物理文件来存储命令。适合常常使用的大批量管理任务。

    2.2 通过标准输入

    既然sqlplus从标准输入来读取命令,那么就能够利用管道把命令发送给它。

    echo 命令 | sqlplus username/password@serverIP/侦听服务名
    

    这样的方式不须要在命令中包括 exit;,因为sqlplus运行后自己主动退出。以下是个样例:

    echo 'select count(*) from dba_objects;' | sqlplus sys/***@172.16.2.190/xgdb.db001.xigang as sysdba
    

    这样运行后结果输出到屏幕。因为sql语句是bash命令的參数。而整个命令行能够通过bash方便的历史记录来反复调用。又能够方便的使用上下箭头来反复使用运行过的sql语句了。

    3 利用管道做兴许处理

    既然sqlplus把结果输出到了标准输出,那么就能够借助管道,使用sed,awk等文字处理工具来得到想要的输出。

    echo -e 'set pagesize 0\nselect table_name,owner from dba_tables;' | sqlplus -S sys/***@172.16.2.190/xgdb.db001.xigang as sysdba | awk '{printf("%-10d%-30s%-20s\n",NR,$1,$2);}'
    

    4 须要注意的地方

    使用外部文件时,文件里的命令与交互式使用全然同样,无需操心。

    • 使用echo + 管道输入时,要避免 bash 元字符的干扰。一定要把sql命令使用单引號或双引號保护起来。

      当sql命令中有单引號时。应选择使用双引號保护。如

    echo  "insert into t1(name) values('奥巴马');" | sqlplus ...
    
  • 因为$在双引號里也会被当成元字符。所以须要对其进行转义

  • echo "select * from v\$nls_valid_values where parameter='LANGUAGE';" | sqlplus ...
    
  • 另外,sqlplus不同意把sqlplus指令和sql命令混合在一行使用。

    并且sql命令必须以;结尾。这样必须使用echo -e 选项来开启把”\n”解释成换行符。

    比如

  • echo -e 'set pagesize 0\nset linesize 100\nselect * from dba_objects;' | sqlplus ...
    

    5 一个简单的脚本

    上述命令行方式尽管能够方便的通过bash的历史记录功能调用运行过的sql语句,可是命令行中除了sql语句还有大量的其它内容,显得繁琐。所以。写一个小脚本(文件名称为sql)会让调用起来很方便,例如以下:

    #!/bin/bash -
    if [ $# -ne 1 ]
        echo "Usage: $0 'SQL statement'"
        SQL="set pagesize 0\nset linesize 300\n$1"
        echo -e "$SQL"
        echo -e "$SQL" | sqlplus -S sys/***@172.16.2.190/xgdb.db001.xigang as sysdba
    

    这样调用起来就像以下一样。

    sql 'select * from dba_objects;'
    

    这样显得很干净利落。并且也不会在历史命令中记下ORACLE的账户信息,相对也安全。

    非交互模式例子:
    在这里插入图片描述

    参考:
    https://www.cnblogs.com/mengfanrong/p/5367748.html

sqlplus交互界面存在的问题sqlplus的两种非交互式使用方式1 通过外部命令文件2 通过标准输入利用管道做兴许处理须要注意的地方一个简单的脚本1 sqlplus交互界面存在的问题sqlplus是ORACLE数据库的最重要的官方命令行client软件。是DBA的必备工具,使用它能够完毕差点儿所有的管理任务。然而。sqlplus的交互界面并非很友好,输入命令时不具有... OPNAME - job name TARGET_DESC - job operation SOFAR - megabytes transferred thus far during the job TOTALWORK - estimat mysql -e “” 命令可以实现 交互式 执行查询语句。 mysql -h www.sirius.com -P 3306 --default-character-set=utf8 -u root -p root -e "show variables;" >> mylog.txt mysql --help mysql Ver
1. sqlplus / as sysdba 操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态。比如我们想要启动数据库就可以用这种方式进入 sqlplus ,然后通过startup命令来启动。 此时需要 使用 oracle 用户的环境变量 ORACLE _SID来控制去连接哪个数据库实例。 2. sqlplus username/password
您好,如果 Oracle SQLPlus 在打开时闪退,可能是由于以下原因之一: 1. Oracle SQLPlus 版本不兼容您的操作系统。请确保您下载并安装了与您的操作系统兼容的版本。 2. 您的计算机上缺少必要的依赖项。请检查您的计算机是否已安装所有必要的依赖项,并尝试重新安装 Oracle SQLPlus 。 3. 您的计算机上存在病毒或恶意软件。请运行杀毒软件扫描您的计算机,并清除任何发现的病毒或恶意软件。 希望这些信息能够帮助您解决问题。如果问题仍然存在,请尝试联系 Oracle 支持团队获取更多帮助。
关于项目报错:Error:Cannot build artifact ‘XXX:war exploded‘ because it is included into a circular dep 是都删除,还是删除重复的其中一个呢