SQLPLUS 使用的一些技巧
生活随笔
收集整理的這篇文章主要介紹了
SQLPLUS 使用的一些技巧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
SQLPLUS 使用的一些技巧? ?? ???在ORACLE的維護過程中,目前ORACLE有很多易用的客戶端 工具,如pl sql、delveloer、TOAD,但作為 數據庫 管理員也需要經常和SQLPLUS 打交道,一些常用的操作往往需要在SQLPLUS完成,如果SQLPLUS不熟悉也在很大程度上降低我們的維護效率,本文主要介紹一些在 管理 數據庫過程中比較有用的的SQLPLUS技巧。
? ?? ???技巧一:修改SQLPLUS的提示符
? ?? ???1??問題描述:
? ?? ???ORACLE的SQLPLUS默認情況下是沒有 系統提示符的,由于在日常維護操作中經常要在SQLPLUS下做一些高危險的操作如shutdown之類的操作,如果操作的對象錯誤將導致設備事故。
? ?? ???2??解決辦法:
? ?? ???通過修改SQLPLUS提示符號,可以明確地標識所要操作的數據庫,避免操作錯誤;
? ?? ???3??處理過程:
? ?? ???SQLPLUS 程序在啟動情況下可以通過 設置相關參數,讓其執行login.sql,然后通過修改login.sql腳本可以定義一些語句,達到修改SQLPLUS的提示符的目的,便于識別,login.sql的 文件路徑需要通過操作系統環境變量SQLPATH進行 設置:
? ?? ???WINDOWS環境下,通過修改 注冊表項目在SQLPATH(位置一般在ORACLE-HOME下)在 注冊表中,可以設置為D:/oracle/ora92/dbs
? ?? ???UNIX的可以直接在ORACLE 用戶的profile文件中加入SQLPATH環境變量,可以設置export SQLPATH=/home/oracle/app/oracle/product/9.2/dbs;具體的login.sql,如下所示,可以根據需要實際修改:? ?? ?? ?set serveroutput on size 1000000
? ?? ???column old_name new_value pname
? ?? ???set termout off
? ?? ???select lower(user) || '@' ||instance_name old_name from v$INSTANCE;
? ?? ???set sqlprompt '&pname> '
? ?? ???set termout on
? ?? ???通過這樣修改每次通過SQLPLUS登陸系統的時候會顯示username@instancname>更好地識別所要連接的數據庫。注意:連接用戶必須要有查看v$INSTANCE的 權限。
? ?? ???技巧二:在SQLPLUS 下執行操作系統 命令
? ?? ???在使用SQLPLUS的過程中,經常要執行一些操作系統方面的命令,可以通過兩種方法:
? ?? ???1)在SQLPLUS命令行下執行host命令,可以切換到操作系統命令行下,執行完后exit可以切換回SQLPLUS命令行下。
? ?? ???2)直接在SQLPLUS 下執行敲一個”!”后面跟上具體的命令行(但在windows下不支持)。
? ?? ???技巧三:在SQLPLUS修改sql語句:
? ?? ???使用SQLPLUS的過程中也經常需要修改sql語句,但是SQLPLUS下的修改sql語句的命令過于煩瑣不好記憶,可以通過定義相關變量達到很好的效果。
? ?? ???1)在UNIX 下可以定義define_editor=vi,如果需要修改sql語句,直接在命令行下用edit就可以進入vi環境,和vi操作 功能一樣,方便操作,設置辦法直接在sqlplus的命令行下敲:
? ?? ???Define_editor=vi;
? ?? ???在windows下可以定義define_editor=notepad,如果需要修改sql語句,直接在命令行下用edit就可以進入notepad編寫環境,windows下操作就方便多了;
? ?? ???技巧四:在SQLPLUS下查看sql語句的執行時間情況
? ?? ???1)可以通過直接在sqlplus命令行下執行命令set time on(打開sql語句的執行時間顯示);
? ?? ???2)在sqlplus命令行下執行命令 set timing on(統計sql語句的執行時間);
? ?? ???技巧五:在sqlplus 下查看SQL語句的執行計劃
? ?? ???在業務維護過程中,經常需要查看某個sql語句執行計劃,看是否使用到合適的索引等,可以通過下操作來完成? ?? ?? ?set autotrace traceonly exp
? ?? ???select * from cncdlp114.t_unit where unitcode='hwjsgs';
? ?? ???set autotrace off
? ?? ???執行完成后可以看到語句的執行計劃:
? ?? ???注意:執行操作前的前提該用戶下有plan_table表(一般都有),如果沒有可以通
? ?? ???過語句來建立? ?? ?? ? -- Create table
? ?? ???create table PLAN_TABLE
? ?? ???(
? ?? ?? ? STATEMENT_ID? ?? ?VARCHAR2(30),
? ?? ?? ? PLAN_ID? ?? ?? ???NUMBER,
? ?? ?? ? TIMESTAMP? ?? ?? ?DATE,
? ?? ?? ? REMARKS? ?? ?? ???VARCHAR2(4000),
? ?? ?? ? OPERATION? ?? ?? ?VARCHAR2(30),
? ?? ?? ? OPTIONS? ?? ?? ???VARCHAR2(255),
? ?? ?? ? OBJECT_NODE? ?? ? VARCHAR2(128),
? ?? ?? ? OBJECT_OWNER? ?? ?VARCHAR2(30),
? ?? ?? ? OBJECT_NAME? ?? ? VARCHAR2(30),
? ?? ?? ? OBJECT_ALIAS? ?? ?VARCHAR2(65),
? ?? ?? ? OBJECT_INSTANCE? ?INTEGER,
? ?? ?? ? OBJECT_TYPE? ?? ? VARCHAR2(30),
? ?? ?? ? OPTIMIZER? ?? ?? ?VARCHAR2(255),
? ?? ?? ? SEARCH_COLUMNS? ? NUMBER,
? ?? ?? ? ID? ?? ?? ?? ?? ? INTEGER,
? ?? ?? ? PARENT_ID? ?? ?? ?INTEGER,
? ?? ?? ? DEPTH? ?? ?? ?? ? INTEGER,
? ?? ?? ? POSITION? ?? ?? ? INTEGER,
? ?? ?? ? COST? ?? ?? ?? ???INTEGER,
? ?? ?? ? CARDINALITY? ?? ? INTEGER,
? ?? ?? ? BYTES? ?? ?? ?? ? INTEGER,
? ?? ?? ? OTHER_TAG? ?? ?? ?VARCHAR2(255),
? ?? ?? ? PARTITION_START? ?VARCHAR2(255),
? ?? ?? ? PARTITION_STOP? ? VARCHAR2(255),
? ?? ?? ? PARTITION_ID? ?? ?INTEGER,
? ?? ?? ? OTHER? ?? ?? ?? ? LONG,
? ?? ?? ? DISTRIBUTION? ?? ?VARCHAR2(30),
? ?? ?? ? CPU_COST? ?? ?? ? INTEGER,
? ?? ?? ? IO_COST? ?? ?? ???INTEGER,
? ?? ?? ? TEMP_SPACE? ?? ???INTEGER,
? ?? ?? ? ACCESS_PREDICATES VARCHAR2(4000),
? ?? ?? ? FILTER_PREDICATES VARCHAR2(4000),
? ?? ?? ? PROJECTION? ?? ???VARCHAR2(4000),
? ?? ?? ? TIME? ?? ?? ?? ???INTEGER,
? ?? ?? ? QBLOCK_NAME? ?? ? VARCHAR2(30)
? ?? ???)
? ?? ???結束語:
? ?? ???其實ORACLE的SQLPLUS功能是很強大的,如果想研究其它的一些功能可以參考
? ?? ???ORACLE的相關文檔,提高維護技能 From: http://www.ixpub.net/thread-870623-1-5.html
原文鏈接: http://blog.csdn.net/t0nsha/article/details/3639935
轉載于:https://my.oschina.net/dtec/blog/46841
總結
以上是生活随笔為你收集整理的SQLPLUS 使用的一些技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成为LINUX系统管理员几点规则
- 下一篇: vc++操作mysql数据库的技巧