工作中經常遇到沒有sqplus developer等第三方sql工具,必須使用sqlplus直接在伺服器上查詢的情況。
例如要查看系統參數sga值;
得到執行結果如下:
- [gysy01@oracle]/oracle>sqlplus "/as
sysdba"
- SQL*Plus: Release 11.1.0.7.0 - Production on 星期四
2月 17 17:35:16 2011
- Copyright (c) 1982, 2008, Oracle. All rights
reserved.
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit
Production
- With the Partitioning, Real Application Clusters, OLAP, Data Mining
- and Real Application Testing options
- SQL> show parameter sga;
- NAME TYPE
- ------------------------------------ ----------------------
- VALUE
- ------------------------------
- lock_sga boolean
- FALSE
- pre_page_sga boolean
- FALSE
- sga_max_size big integer
- 4G
- sga_target big integer
- 3G
- SQL>
可以看到串列問題,很嚴重,這時候就需要設定行字元數了。下面是修改參數結果。
- SQL> set linesize 1000
- SQL> show parameter sga;
- NAME TYPE VALUE
- ------------------------------------ ---------------------- ------------------------------
- lock_sga boolean FALSE
- pre_page_sga boolean FALSE
- sga_max_size big integer 4G
- sga_target big integer 3G
- SQL>
下面是一些常用的參數說明,用的比較多的是linesize,pagesize,rowwidth三個參數。
SQL>set colsep' '; //-域輸出分隔字元
SQL>set echo off; //顯示start啟動的指令碼中的每個sql命令,預設為on
SQL> set echo on //設定運行命令是是否顯示語句
SQL> set feedback on; //設定顯示“已選擇XX行”
SQL>set feedback off; //回顯本次sql命令處理的記錄條數,預設為on
SQL>set heading off; //輸出域標題,預設為on
SQL>set pagesize 0; //輸出每頁行數,預設為24,為了避免分頁,可設定為0。
SQL>set linesize 80; //輸出一行字元個數,預設為80
SQL>set numwidth 12; //輸出number類型域長度,預設為10
SQL>set termout off; //顯示指令碼中的命令的執行結果,預設為on
SQL>set trimout on; //去除標準輸出每行的拖尾空格,預設為off
SQL>set trimspool on; //去除重新導向(spool)輸出每行的拖尾空格,預設為off
SQL>set serveroutput on; //設定允許顯示輸出類似dbms_output
SQL> set timing on; //設定顯示“經過時間:XXXX”
SQL> set autotrace on-; //設定允許對執行的sql進行分析
set verify off //可以關閉和開啟提示確認資訊old 1和new 1的顯示.
匯出結果到文本:
spool<spool_flat_file>
例如:spool d:\Spool_flatquery.txt
這樣,SQL*Plus將把所有的輸出以及在螢幕上的命令等都指定給該檔案。
執行查詢輸出。此時,系統並沒有把結果儲存到檔案中,而是儲存到緩衝區中。
查詢結束後,關閉檔案即可。命令格式為:spool off。