SQL*Plus系統環境變量有哪些?如何修改?
軟件環境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安裝路徑為:C:\ORANT
實現方法:
show和set命令是兩條用于維護SQL*Plus系統變量的命令
SQL> show all --查看所有68個系統變量值
SQL> show user --顯示當前連接用戶
SQL> show error --顯示錯誤
SQL> set heading off --禁止輸出列標題,默認值為ON
SQL> set feedback off --禁止顯示最后一行的計數反饋信息,默認值為"對6個或更多的記錄,回送ON"
SQL> set timing on --默認為OFF,設置查詢耗時,可用來估計SQL語句的執行時間,測試性能
SQL> set sqlprompt "SQL> " --設置默認提示符,默認值就是"SQL> "
SQL> set linesize 1000 --設置屏幕顯示行寬,默認100
SQL> set autocommit ON --設置是否自動提交,默認為OFF
SQL> set pause on --默認為OFF,設置暫停,會使屏幕顯示停止,等待按下ENTER鍵,再顯示下一頁
SQL> set arraysize 1 --默認為15
SQL> set long 1000 --默認為80
說明:
long值默認為80,設置1000是為了顯示更多的內容,因為很多數據字典視圖中用到了long數據類型,如:
SQL> desc user_views
列名 可空值否 類型
------------------------------- -------- ----
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
SQL> define a = '''20000101 12:01:01''' --定義局部變量,如果想用一個類似在各種顯示中所包括的回車那樣的常量,
--可以用define命令來設置
SQL> select &a from dual;
原值 1: select &a from dual
新值 1: select '20000101 12:01:01' from dual
'2000010112:01:01
-----------------
20000101 12:01:01
問題提出:
1、用戶需要對數據庫用戶下的每一張表都執行一個相同的SQL操作,這時,一遍、一遍的鍵入SQL語句是很麻煩的
實現方法:
SQL> set heading off --禁止輸出列標題
SQL> set feedback off --禁止顯示最后一行的計數反饋信息
列出當前用戶下所有同義詞的定義,可用來測試同義詞的真實存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查詢當前用戶下所有表的記錄數
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
把所有符合條件的表的select權限授予為public
select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
刪除用戶下各種對象
select 'drop '||tabtype||' '||tname from tab;
刪除符合條件用戶
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速編譯所有視圖
----當在把數據庫倒入到新的服務器上后(數據庫重建),需要將視圖重新編譯一遍,
----因為該表空間視圖到其它表空間的表的連接會出現問題,可以利用PL/SQL的語言特性,快速編譯。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然后執行ON.SQL即可。
SQL> @ON.SQL
當然,授權和創建同義詞也可以快速進行,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶名;' FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶名.'||TNAME||';' FROM TAB;
SQL*PLUS常用命令列表
[ 天堂之水 2002年9月18日,閱讀人數36人 ]
軟件環境:
1、Windows 98 第二版
2、Oracle數據庫版本為:Personal Oracle7 Release 7.3.4.0.0
3、Oracle安裝路徑為:C:\ORAWIN95
命令列表:
假設當前執行命令為:select * from tab;
(a)ppend 添加文本到緩沖區當前行尾 a order by tname 結果:select * from tab order by tname;
?。ㄗⅲ篴后面跟2個空格)
(c)hange/old/new 在當前行用新的文本替換舊的文本 c/*/tname 結果:select tname from tab;
(c)hange/text 從當前行刪除文本 c/tab 結果:select tname from ;
del 刪除當前行
del n 刪除第n行
(i)nput 文本 在當前行之后添加一行
(l)ist 顯示緩沖區中所有行
(l)ist n 顯示緩沖區中第 n 行
(l)ist m n 顯示緩沖區中 m 到 n 行
run 執行當前緩沖區的命令
/ 執行當前緩沖區的命令
r 執行當前緩沖區的命令
@文件名 運行調入內存的sql文件,如:
SQL> edit s<回車>
如果當前目錄下不存在s.sql文件,則系統自動生成s.sql文件,
在其中輸入“select * from tab;”,存盤退出。
SQL> @s<回車>
系統會自動查詢當前用戶下的所有表、視圖、同義詞。
@@文件名 在.sql文件中調用令一個.sql文件時使用
save 文件名 將緩沖區的命令以文件方式存盤,缺省文件擴展名為.sql
get 文件名 調入存盤的sql文件
start 文件名 運行調入內存的sql文件
spool 文件名 把這之后的各種操作及執行結果“假脫機”即存盤到磁盤文件上,默認文件擴展名為.lst
spool 顯示當前的“假脫機”狀態
spool off 停止輸出
例:
SQL> spool a
SQL> spool
正假脫機到 A.LST
SQL> spool off
SQL> spool
當前無假脫機
exit 退出SQL*PLUS
desc 表名 顯示表的結構
show user 顯示當前連接用戶
show error 顯示錯誤
show all 顯示所有68個系統變量值
edit 打開默認編輯器,Windows系統中默認是notepad.exe,把緩沖區中最后一條SQL語句調入afiedt.buf文件中進行編輯
edit 文件名 把當前目錄中指定的.sql文件調入編輯器進行編輯
clear screen 清空當前屏幕顯示
SQL> show all
appinfo 為 OFF 并且已設置為 "SQL*Plus"
arraysize 15
autocommit OFF
autoprint OFF
autorecovery OFF
autotrace ON EXPLAIN STATISTICS
blockterminator "." (hex 2e)
btitle OFF 為下一條 SELECT 語句的前幾個字符
cmdsep OFF
colsep " "
compatibility version NATIVE
concat "." (hex 2e)
copycommit 0
COPYTYPECHECK 為 ON
define "&" (hex 26)
describe DEPTH 1 LINENUM OFF INDENT ON
echo OFF
editfile "afiedt.buf"
embedded OFF
escape OFF
用于 6 或更多行的 FEEDBACK ON
flagger OFF
flush ON
heading ON
headsep "|" (hex 7c)
instance "local"
linesize 80
lno 14
loboffset 1
logsource ""
long 80
longchunksize 80
markup HTML OFF HEAD "<style type='text/css'> body {font:10pt Arial,Helvetica,sa
ns-serif; color:black; background:White;} p {font:10pt Arial,Helvetica,sans-seri
f; color:black; background:White;} table,tr,td {font:10pt Arial,Helvetica,sans-s
erif; color:Black; background:#f7f7e7; padding:0px 0px 0px 0px; margin:0px 0px 0
px 0px;} th {font:bold 10pt Arial,Helvetica,sans-serif; color:#336699; backgroun
d:#cccc99; padding:0px 0px 0px 0px;} h1 {font:16pt Arial,Helvetica,Geneva,sans-s
erif; color:#336699; background-color:White; border-bottom:1px solid #cccc99; ma
rgin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;} h2 {font:bold 10pt Ar
ial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; margin-t
op:4pt; margin-bottom:0pt;} a {font:9pt Arial,Helvetica,sans-serif; color:#66330
0; background:#ffffff; margin-top:0pt; margin-bottom:0pt; vertical-align:top;}</
style><title>SQL*Plus Report</title>" BODY "" TABLE "border='1' width='90%' alig
n='center' summary='Script output'" SPOOL OFF ENTMAP ON PREFORMAT OFF
newpage 1
null ""
numformat ""
numwidth 10
pagesize 14
PAUSE 為 OFF
pno 0
recsep WRAP
recsepchar " " (hex 20)
release 1002000100
repfooter OFF 為 NULL
repheader OFF 為 NULL
serveroutput OFF
shiftinout INVISIBLE
showmode OFF
spool OFF
sqlblanklines OFF
sqlcase MIXED
sqlcode 0
sqlcontinue "> "
sqlnumber ON
sqlpluscompatibility 10.2.0
sqlprefix "#" (hex 23)
sqlprompt "SQL> "
sqlterminator ";" (hex 3b)
suffix "sql"
tab ON
termout ON
timing ON
trimout ON
trimspool OFF
ttitle OFF 為下一條 SELECT 語句的前幾個字符
underline "-" (hex 2d)
USER 為 "ITMP"
verify ON
wrap : 將換至下一行
SQL>