SQL Plus 的常用命令


Ø  簡介

本文主要介紹 Oracle 中的 SQL Plus 的常用命令,包括以下內容:

1.   連接命令

2.   服務器命令

3.   數據庫命令

4.   用戶命令

5.   備份與還原數據庫

6.   修改用戶名

7.   刪除表空間

8.   文件操作命令

9.   執行 SQL 語句

10.  解決 SQL Plus 中文亂碼(以 Windows Server 2019 為例)

11.  其他

 

注意事項:

1.   當在 SQL Plus 中使用 SELECTINSERTDELETEUPDATE 語句等 SQL 語句時,需要以";"分號結尾,其他語句不需要。

 

1.   連接命令

1)   SYS 用戶

sys / as sysdba                                #連接默認數據庫

sys@orcl / as sysdba                           #連接指定數據庫

sys/syspwd@localhost:1521/orcl as sysdba        #連接指定端口

sys/syspwd@192.168.1.170:1521/orcl as sysdba    #連接指定IP

 

2)   SYSTEM / SCOTT / 普通用戶(以 SCOTT 用戶為例)

scott/tiger                                    #連接默認數據庫

scott/tiger@orcl                               #連接指定數據庫

scott/tiger@localhost:1521/orcl                #連接指定端口

scott/tiger@192.168.1.170:1521/orcl            #連接指定IP

 

Ø  說明以下幾點:

1)   當使用 cmd 命令終端連接時,只需在前面加上 sqlplus 即可,例如:

clip_image002

 

2)   連接時,SYS 與其他用戶(SYSTEMSCOTT、普通用戶)的區別:

1.   在任何時候,SYS 登錄最后必須跟上 as sysdba 或者 as sysoper   #sysdba sysoper 表示用戶角色

2.   Oracle 服務器以 as sysdba 登錄時,不會驗證用戶名和密碼的有效性,例如:

clip_image003

 

3)   cmd 命令終端與 SQL Plus 的一些區別:

1.   sqlplus / as sysdba     <-->        sys / as sysdba     #注意空格

2.   sqlplus "/as sysdba"    <-->        sys /as sysdba

3.   不支持                 <-->        sys as sysdba

 

4)   cmd 命令的另一種方式

1.   sqlplus /nolog

2.   conn / as sysdba        或者        conn scott/tiger

 

2.   服務器命令

1)   查看監聽狀態

lsnrctl status

 

2)   啟動監聽

lsnrctl start

 

3)   停止監聽

lsnrctl stop

 

4)   檢測遠程 listener(監聽)是否啟動

tnsping orcl                       #本機檢測

或者

tnsping 127.0.0.1:1521/orcl        #遠程檢測(+IP:端口號/數據庫名)

說明:如果顯示"OK"表示配置正確,並且監聽正常啟動:

clip_image004

 

3.   數據庫命令

1)   登錄數據庫

sqlplus "/as sysdba"

 

2)   啟動數據庫

startup

dbstart     #啟動所有數據

 

3)   立即關閉數據庫

shutdown immediate

立即關閉數據庫時,在語句被發出以后,不允許新的連接,也不允許新的事務啟動。任何未提交的事務被回滾。在這種模式下關閉。數據庫的下一次啟動時將不需要任何實例恢復過程。

 

4)   正常關閉數據庫

shutdown normal

正常的數據庫關閉語句被發出以后,不允許重新連接。並且在數據庫被關閉以前,Oracle等所有的當前被連接的用戶從數據庫斷開。在這種模式下關閉,數據庫的下次啟動時將不需要任何實例恢復過程。

dbshut      #關閉所有數據庫

 

5)   查看數據庫狀態

select open_mode from v$database;   #讀寫模式表示數據庫可以被操作

 

6)   查看數據庫日志

select * from v$diag_info;  #將顯示數據庫日志路徑:d:\oracle\diag\rdbms\orcl\orcl\trace

 

7)   查看數據庫文件路徑

select name from v$datafile;

 

8)   查看表/視圖結構

desc table_name/view_name;

 

4.   用戶命令

1)   查看當前用戶所在實例名

show parameter instance_name;

 

2)   查看登錄用戶

show user;

 

3)   切換用戶

conn[ect] sys/syspwd@orcl as sysdba

注意:所有用戶以這種方式登錄必須指定密碼;並一定要跟上實例名。

 

4)   斷開連接/退出登錄

disc[connect]

 

5)   重置/修改用戶密碼

注意:只能高權限用戶可以重置權限用戶的密碼;自身修改密碼必須輸入舊密碼。

1.   方法一

conn system/syspwd@orcl        #登錄管理員用戶(sys 或者 system

passw[ord] scott               #指定需要重置密碼的用戶

新口令:                        #輸入新密碼

2.   方法二

conn system/syspwd@orcl        #登錄管理員用戶(sys 或者 system

ALTER USER scott IDENTIFIED BY newpwd;  #可更改 SYSSYSTEM 用戶

 

6)   斷開連接,並退出 SQL Plus 窗口

exit | quit

 

7)   鎖定用戶

alter user learn account lock;

 

8)   解鎖用戶

alter user learn account unlock;

 

5.   備份與還原數據庫

1)   備份數據庫

 

2)   還原數據庫

imp itpux/itpux file=/tmp/itpuxsql.dmp log=/tmp/itpuxsql.log ignore=y full=y

參數解釋:

ignore=y, 表示忽略重復的表、存儲過程、函數等;

full=y, 表示將所有的對象(如:表、存儲過程、函數)全部導入。

 

6.   修改用戶名

1)   打開 Oracle 服務端 SQL Plus

clip_image005

 

2)   SYS 用戶登錄

sys@orcl as sysdba

clip_image006

 

3)   查詢現有的用戶列表

SELECT user#, name FROM user$;

 

4)   修改用戶名,並提交

UPDATE USER$ SET NAME='USER01' WHERE user#=91;      #注意:登錄時用戶名(USER01)不分大小寫,但是這里必須為大寫,否則將找不到用戶名!

COMMIT;

 

5)   強制刷新(緩存)

ALTER SYSTEM CHECKPOINT;

ALTER SYSTEM FLUSH SHARED_POOL;

 

7.   刪除表空間

DROP TABLESPACE tablespace_name;    --刪除表空間,不包含物理文件

DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;   --刪除表空間包含物理文件

DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINT;   --刪除表空間包含物理文件

 

8.   文件操作命令

1)   執行外部文件

start E:\dept.sql

注意:可以不以 *.sql 為后綴的文件,但是文件中的內容必須為可執行的 SQL 語句。

 

2)   打開外部的腳本文件

edit E:\dept.sql       #打開文件,編輯后保存

 

3)   輸入命令窗口內容到指定文件中

spool E:\dept.sql   #如果文件存在則清空內容;否則創建該文件

SQL> select * from dept where deptno=30;    #執行語句以及查詢結果(屏幕中的內容)都將寫入指定的文件中

spool off       #執行該語句,或中途執行了其他命令,將開始保存屏幕內容

 

9.   執行 SQL 語句

1)   &變量的使用

select * from dept where dname='&dname';

說明:執行該語句后,會提示輸入 &dname 變量的值,然后再進行查詢。

 

10.  解決 SQL Plus 中文亂碼(以 Windows Server 2019 為例)

該問題,通常是因為操作系統或者 SQL Plus 使用的字符集,與 Oracle 數據庫實例的字符集不一致導致。以為我之前將數據庫字符集設置為"SIMPLIFIED CHINESE_CHINA.AL32UTF8",與操作系統或者 SQL Plus 使用的字符集不一致。

 

通常情況下國內常用的還是 ZHS16GBKGBK 16-bit Simplified Chinese)能夠支持繁體中文,所以不是操作系統或者 SQL Plus 字符集有問題,而是因為數據庫實例的字符集不常用(UTF8)。設置數據庫實例字符集參考:https://www.cnblogs.com/abeam/p/12038894.html

 

解決辦法,改變數據庫實例的字符集就行了。而不用改操作系統或 SQL Plus 的字符集,如果非要使用 UTF8 字符集,那就可以參考下面步驟:

 

clip_image008

1)   首先,查看 Oracle 所使用的字符集

1.   cmd 命令:sqlplus "/as sysdba"

2.   執行SQLselect userenv('language') from dual;

clip_image010

可以看到,數據庫是使用的 SIMPLIFIED CHINESE_CHINA.AL32UTF8 的字符集編碼。該字符集與操作系統字符集不一致,所以導致中文亂碼。

 

2)   設置系統環境變量

添加名為“NLS_LANG”值為“SIMPLIFIED CHINESE_CHINA.AL32UTF8”的環境變量

clip_image012

 

3)   區域設置

打開控制面板 -> 區域 -> 管理 -> 更改系統區域設置 -> 勾選“使用 Unicode UTF-8 提供全球語言支持”,點擊確定

clip_image014

確定后重啟服務器即可。

 

4)   再次打開 SQL Plus

clip_image016

 

11.  其他

1)   清除屏幕

SQL Plus

host cls

dos 窗口進入 SQL Plus

host cls 或者 clear scr 或者 clear screen

 

2)   監聽日志路徑

D:\Oracle\diag\tnslsnr\T580-Abeam\listener\trace

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM