SQLPlus 使用技巧

[推薦]SQLPlus 使用技巧

 
作者:debuger     發表時間:2002/11/25 10:30am
 
          SQL*Plus系統環境變量有哪些?如何修改?
                  [ 天堂之水  2002年9月18日,閱讀人數21人 ]

 

軟件環境:
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;
                                      (注:a後面跟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   清空當前屏幕顯示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章