《學習Oracle從這裡開始》之sqlplus命令篇

陳洪光發表於2014-08-06

    做為資料庫開發和管理人員,日常工作用到最多的工具可能就是PLSQL和SQLPLUS了,我在工作中一般編寫SQL語句或寫一些包、儲存過程之類的程式碼是在PLSQL中完成的(挺喜歡它的提示和排版的),其它的基本上都是利用SQLPLUS了。既然我們如此多的使用打了SQLPLUS,那麼我們就很有必要掌握它的一些常用的命令了,在本篇博文中我會列出一些我常用命令,大家可以積極發言進行補充。

    資料庫管理人員經常會使用SYS使用者以SYSDBA進行登入,如果有機會直接在伺服器端登入是最好的,如果沒有那需要在客戶端登入怎麼辦呢?方法很簡單,只需要在命令視窗使用:“sqlplus 使用者名稱/密碼@連線 as sysdba”就可以了。那如果實在伺服器端呢?實際上就更簡單了,在伺服器端使用的是作業系統驗證的方式登入的,所以有沒有使用者名稱、密碼、和連線實際上都是一樣的,不信我們來看,我們以三種不同的當時登入:

sqlplus / as sysdba

sqlplus as sysdba

sqlplus ss/cc as sysdba

點選(此處)摺疊或開啟

  1. Microsoft Windows [版本 5.2.3790]
  2. (C) 版權所有 1985-2003 Microsoft Corp.

  3. C:\\Documents and Settings\\Administrator>sqlplus / as sysdba

  4. SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 8月 6 13:48:32 2014

  5. Copyright (c) 1982, 2005, Oracle. All rights reserved.


  6. 連線到:
  7. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
  8. With the Partitioning, OLAP and Data Mining options

  9. SQL> show user;
  10. USER\"SYS\"
  11. SQL>


點選(此處)摺疊或開啟

  1. Microsoft Windows [版本 5.2.3790]
  2. (C) 版權所有 1985-2003 Microsoft Corp.

  3. C:\\Documents and Settings\\Administrator>sqlplus ccc/ccc@orcl as sysdba

  4. SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 8月 6 13:46:46 2014

  5. Copyright (c) 1982, 2005, Oracle. All rights reserved.


  6. 連線到:
  7. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
  8. With the Partitioning, OLAP and Data Mining options

  9. SQL>show user;
  10. USER\"SYS\"
  11. SQL>

點選(此處)摺疊或開啟

  1. Microsoft Windows [版本 5.2.3790]
  2. (C) 版權所有 1985-2003 Microsoft Corp.

  3. C:\\Documents and Settings\\Administrator>sqlplus ss/cc as sysdba

  4. SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 8月 6 13:47:09 2014

  5. Copyright (c) 1982, 2005, Oracle. All rights reserved.


  6. 連線到:
  7. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
  8. With the Partitioning, OLAP and Data Mining options

  9. SQL>show user;
  10. USER\"SYS\"
  11. SQL>

    以sysdba登入後能做什麼呢?我們來看:    

    1、啟動資料庫:startup

            startup 預設引數為open,並且預設以獨佔方式裝入資料庫。

            正常使用startup啟動就可以了,但是總有個別情況,那我們來看看它的引數吧:

            startup; 啟動例項裝入並開啟資料庫,允許任何使用者連線到資料庫並執行資料庫訪問操作。

            startup nomount; 啟動例項但不裝入資料庫,一般只有在資料庫建立的時候使用。

            startup mount; 啟動例項裝入資料庫但不開啟資料庫,允許使用者執行一些維護工作,如:重新命名資料檔案、新增和撤消以及重新命名重做日誌檔案、啟動和禁止重做日誌歸檔、執行全部的資料庫恢復。

            startup restrict; 限制在資料庫啟動時的使用者訪問,這種模式只允許DBA進行:執行結構維護、執行資料庫檔案的匯入匯出、執行資料裝載、臨時阻止典型使用者使用資料。

            startup force; 強行啟動例項,如果一個例項正在啟動,該命令可以重新啟動。

            startup open recover; 啟動例項,裝入資料庫,並啟動介質恢復。

            如果使用者的oracle伺服器允許多個事例來併發的訪問一個資料庫(oracle 並行伺服器選項),應選擇獨佔或並行裝入資料庫。

            startup open orcl pfile=initorcl.ora parallel; 並行裝入資料庫。

            strartup open orcls pfile=initorcls.ora execlusive restrict; 獨佔裝入資料庫。

    2、關閉資料庫:shutdown

            shutdown normal; 不允許產生新的連線、等待當前所有會話結束、等待當前存在的所有事務結束、做一個檢查點並關閉資料檔案,啟動時不需要例項恢復。

            shutdown transactional; 不允許產生新的連線、不等待當前存在會話結束、等待當前存在的所有事務結束、做一個檢查點並關閉資料檔案,啟動時不需要例項恢復。

            shutdown immediate; 不允許產生新的連線、不等待當前存在會話結束、不等待當前存在的事務結束、做一個檢查點並關閉資料檔案,沒有結束的事務是自動rollback的,啟動時不需要例項恢復。

            shutdown abort; 不允許產生新的連線、不等待當前存在會話結束、不等待當前存在的事務結束、不做檢查點且沒有關閉資料檔案,啟動時自動進行例項恢復。

    3、更改資料庫狀態為開啟/裝載/備份,更改字符集

            程式碼就不一一羅列了,基本上就是alter system set ... = ... scope=..; cope分為memory、spfile、both。

             alter tablespace .. read wrte;

             ....

             ....

    4、建立使用者

            create user test identified by test;

    5、授權

            grant dba to test;

    6、建立表空間:

            create smallfile tablespace data3 logging datafile 'd:\oradata\ora10g\data3.dbf' size 32767m reuse autoextend on next 10240k maxsize unlimited extent management local segment space management auto;

    7、給使用者分配表空間:

            alert user test default tablespace data3;

    8、建立spfile:

            create spfile from pfile;

    9、日誌歸檔和恢復。


    不再廢話了,看下其他的:

    show all           --檢視所有系統變數值
    show user          --顯示當前使用者
    show error       --檢視錯誤
    set heading off    --禁止輸出列頭,預設值為on
    set feedback off   --禁止顯示計數資訊,預設值為"on"
    set timing on      --預設為off,顯示查詢耗時
    set sqlprompt " "  --設定預設提示符,預設值就是" "
    set linesize 1000  --設定螢幕顯示行寬,預設100
    set autocommit on  --設定是否自動提交,預設為off
    set pause on       --預設為off,設定暫停,會使螢幕顯示停止,等待按下enter鍵,再顯示下一頁
    set arraysize 1    --預設為15
    set long 1000      --預設為80

    define               -- 用來定義常量,如: define val=‘a’; select &val from dual;

  spool d:\log.txt; --將執行結果記錄到檔案

  spool off; -- 關閉資訊記錄

  @d:\sql.sql -- 用來執行外部檔案,如果在檔案內引用其他檔案,那麼需要使用兩個@,如:@@source\create_table.sql;   

   a  where rownum = 1;  -- 新增文字到緩衝區當前行尾,a後面緊跟兩個空格, 如當前執行的是:select * from user_tables; 執行結果為:select * fom user_tables where rownum = 1;

    c --替換,如:c/*/table_name,執行結果為select table_name from user_tables where rownum = 1;

    del --刪除當前緩衝區的語句,可進行引數設定,如: del 2;

    i --新增一行到緩衝區

    l --顯示當前緩衝的所有語句,可進行引數設定,如:l 2;顯示當前緩衝的第2條語句,l 1 3;顯示當前緩衝區1到3條語句。

    run 或者 / 或者 r -- 執行當前緩衝區的語句,我測試過,如果當前緩衝區存在多條的話,是執行失敗的。

    edit -- 如:edit s 如果當前目錄下不存在s.sql檔案,則系統自動生成s.sql檔案,編輯後,儲存退出,再次使用只需要用:@s 即可。

    save -- 如:save a 將當前緩衝區的語句儲存到檔案。

    get -- 如:get a 讀取存檔的sql檔案

    start -- 如:start a 執行調入記憶體的sql檔案

    exit -- 退出當前sqlplus

    desc -- 如:desc user_tables; 顯示錶結構

    clear screen -- 清空當前視窗


其他補充:
   清空共享池或者叫快取池:
       alter system flush shared_pool;
       alter system flush buffer_cache;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25357621/viewspace-1246635/,如需轉載,請註明出處,否則將追究法律責任。

相關文章