SQL*Plus常用指令

1.如何鏈接數據庫
操作系統驗證方式:

SQL>conn?/?as?sysdba

由數據庫驗證方式

SQL>CONN?username/password?@databaseIdentified?AS?sysdba

databaseIdentified是鏈接標識符,和數據庫無關,可以自由命名。
AS 后面是角色
2. 如何執行一個SQL腳本文件

SQL>start?file_name?  SQL>@?file_name

我們可以將多條sql語句保存在一個文本文件中,這樣當要執行這個文件中的所有的sql語句時,用上面的任一命令即可,這類似于dos中的批處理。
?
3. 重新運行上一次運行的sql語句

SQL>?run

?
4. 將顯示的內容輸出到指定文件

SQL>?SPOOL?file_name

在屏幕上的所有內容都包含在該文件中,包括你輸入的sql語句。
?
5. 關閉spool輸出

SQL>?SPOOL?OFF

只有關閉spool輸出,才會在輸出文件中看到輸出的內容。
?
6.顯示一個表的結構

SQL>?desc?table_name

?
7. COL命令:
我之用格式化的方法

COL?columnname?format?a20

?
改變缺省的列標題

COLUMN?column_name?HEADING?column_heading?  For?example:?  Sql>select?*?from?dept;?  DEPTNO?DNAME?LOC

———- —————————- ———
10 ACCOUNTING NEW YORK

sql>col?LOC?heading?location?  sql>select?*?from?dept;?  DEPTNO?DNAME?location

——— —————————- ———–
10 ACCOUNTING NEW YORK
8. Set 命令:
我一般之用
set linesize 1000
set wrap off
當SQL語句的長度大于LINESIZE時,是否在顯示時截取SQL語句。

SQL>?SET?WRA[P]?{ON|OFF}

當輸出的行的長度大于設置的行的長度時(用set linesize n命令設置),當set wrap on時,輸出行的多于的字符會另起一行顯示,否則,會將輸出行的多于字符切除,不予顯示。
9.修改sql buffer中的當前行中,第一個出現的字符串

C[HANGE]?/old_value/new_value?  SQL>?l?  1*?select?*?from?dept?  SQL>?c/dept/emp?  1*?select?*?from?emp

10.顯示sql buffer中的sql語句,list n顯示sql buffer中的第n行,并使第n行成為當前行

L[IST]?[n]

?
10.在sql buffer的當前行下面加一行或多行

I[NPUT]

?
11.將指定的文本加到sql buffer的當前行后面

A[PPEND]?  SQL>?select?deptno,?  2?dname?  3?from?dept;?  DEPTNO?DNAME

———- ————–

10?ACCOUNTING?  20?RESEARCH?  30?SALES?  40?OPERATIONS?  ?  SQL>?L?2?  2*?dname?  SQL>?a?,loc?  2*?dname,loc?  SQL>?L?  1?select?deptno,?  2?dname,loc?  3*?from?dept?  SQL>?/?  ?  DEPTNO?DNAME?LOC?  ----------?--------------?-------------?  10?ACCOUNTING?NEW?YORK?  20?RESEARCH?DALLAS?  30?SALES?CHICAGO?  40?OPERATIONS?BOSTON

12.再次執行剛才已經執行的sql語句

RUN?  or  /

13.執行一個存儲過程

EXECUTE?procedure_name

14.顯示sql*plus命令的幫助

HELP

15.顯示sql*plus系統變量的值或sql*plus環境變量的值

Syntax?  SHO[W]?option

1) . 顯示當前環境變量的值:

Show?all

2) . 顯示當前在創建函數、存儲過程、觸發器、包等對象的錯誤信息

Show?error

當創建一個函數、存儲過程等出錯時,變可以用該命令查看在那個地方出錯及相應的出錯信息,進行修改后再次進行編譯。
3) . 顯示初始化參數的值:

show?PARAMETERS?[parameter_name]

4) . 顯示數據庫的版本:

show?REL[EASE]

5) . 顯示SGA的大小

show?SGA

6) 顯示當前的用戶名

show?user

?
?
******************************************
ORA-00054: resource busy and acquire with NOWAIT specified
癥狀:
?????? locked_mode為2,3,4不影響DML(insert,delete,update,select)操作,
  但DDL(alter,drop等)操作會提示ora-00054錯誤。   
  有主外鍵約束時 update / delete … ; 可能會產生4,5鎖。  
  DDL語句時是6的鎖。  
處理方法: 
  以DBA角色, 查看當前數據庫里鎖的情況可以用如下SQL語句:
  select object_id,session_id,locked_mode from v$locked_object;
或select t2.username,t2.sid,t2.serial#,t2.logon_time
  from v$locked_object t1,v$session t2
  where t1.session_id=t2.sid order by t2.logon_time;
  如果有長期出現的一列,可能是沒有釋放的鎖。 ?
  我們可以用下面SQL語句殺掉長期沒有釋放非正常的鎖:
  alter system kill session ‘sid,serial#’;
最后恢復正常.

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享