Linux下 SQL*Plus 命令速查与实用示例
一 连接与登录
sqlplus username/password[@connect_identifier](如:sqlplus scott/tiger@orcl)sqlplus / as sysdbasqlplus /nolog,随后再 CONNECT 进入-S 静默模式(无提示、无回显),常与 /nolog 配合写脚本CONNECT [username[/password][@connect_identifier]] [AS {SYSOPER|SYSDBA}]lsnrctl start,再用 sqlplus 连接二 脚本执行与文件操作
@ script.sql 或 START script.sql(支持本地文件;在 iSQL*Plus 中仅支持 HTTP/FTP URL 形式)@@ nested.sql(相对路径与调用脚本一致)LIST 查看缓冲区;/ 执行缓冲区中最近一条 SQL/PLSQLEDIT file.sql 调用编辑器(Linux 下常用 vi/emacs;可用 DEFINE _EDITOR='vim' 设置)SAVE file.sql 将缓冲区保存到文件;GET file.sql 将文件读入缓冲区HOST command 在 sqlplus 中执行 OS 命令(如 HOST ls -l)SPOOL output.log 开始记录输出;SPOOL OFF 结束(配合 SET TERM[OUT] OFF 可显著提升批量导出性能)三 格式化与报表输出
SET LINESIZE n、SET PAGESIZE n、SET NEWPAGE n|NONESET HEADING {ON|OFF}、SET FEEDBACK {6|n|ON|OFF}SET NULL 'text'、SET WRAP {ON|OFF}SET SERVEROUT[PUT] {ON|OFF}(显示 DBMS_OUTPUT)SET TIMING {ON|OFF}、SET VERIFY {ON|OFF}COL[UMN] col FORMAT fmt、HEADING 'text'JUSTIFY {LEFT|CENTER|RIGHT}、NOPRINT/PRINTNULL 'N/A'、WRAPPED|WORD_WRAPPED|TRUNCATEDTTITLE [printspec [text|variable] [OFF|ON]]、BTITLE 同语法BREAK ON col [SKIP n]、COMPUTE function LABEL text OF expr ON {expr|column|REPORT|ROW}COL SAL FORMAT $99,990; TTITLE LEFT '员工列表' CENTER '页码' RIGHT page 1; BREAK ON DEPTNO SKIP 1四 变量与交互
DEFINE var = value 定义;UNDEFINE var 取消&var 每次提示输入;&&var 首次提示后持久使用ACCEPT var [NUMBER|CHAR|DATE] [FORMAT fmt] [DEFAULT def] [PROMPT text] [HIDE]VARIABLE var [NUMBER|CHAR|VARCHAR2(n)|CLOB|...]:var;查看:PRINT varEXEC[UTE] plsql_block 执行单条 PL/SQLPRINT 打印绑定变量值五 数据库管理与实用脚本
STARTUP(启动实例);SHUTDOWN [IMMEDIATE|ABORT](关闭实例)SELECT status FROM v$instance;SELECT * FROM v$version;SELECT sid, serial#, username, status, machine FROM v$session;SELECT tablespace_name, SUM(bytes)/1024/1024 AS "Size(MB)", SUM(maxbytes)/1024/1024 AS "MaxSize(MB)" FROM dba_data_files GROUP BY tablespace_name;expdp user/pass@tns DIRECTORY=dir DUMPFILE=file.dmp [FULL=Y]impdp user/pass@tns DIRECTORY=dir DUMPFILE=file.dmp [FULL=Y]#!/bin/bash
sqlplus -S /nolog >startup.log <<'EOF'
CONNECT / as sysdba
STARTUP
EXIT
EOF
-S 静默;/nolog 先不连库;<<'EOF'...EOF 多行输入;EXIT 退出 sqlplus