1. 程式人生 > 實用技巧 >Oracle sqlplus基礎

Oracle sqlplus基礎

前提條件:

CentOS7.6

已安裝Oracle 11g R2

擁有使用者Oracle

一、安裝rlwrap

Linux下sqlplus不能使用游標箭頭,解決辦法:安裝rlwrap。

獲取rlwrap

# wget https://github.com/hanslub42/rlwrap/releases/download/v0.43/rlwrap-0.43.tar.gz

安裝readline*(rlwrap依賴)

# yum -y install readline*

解壓安裝rlwrap包

# tar -xzvf rlwrap-0.43.tar.gz
# cd rlwrap-0.43
# ./configure
# make
# make install

切換Oracle,新增sqlplus別名

# su - oracle
$ cd
$ vim .bash_profile

在檔案中新增
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
:wq

$ source .bash_profile    #立即生效

這樣在sqlplus中就敲命令就很方便了,類似mysql。

二、oracle使用者sys和system

Oracle安裝會自動的生成sys使用者和system使用者
(1)、sys使用者是超級使用者,具有最高許可權,具有sysdba角色,有create database的許可權,該使用者預設的密碼是change_on_install

(2)、system使用者是管理操作員,許可權也很大。具有sysoper角色,沒有create database的許可權,預設的密碼是manager
(3)、一般講,對資料庫維護,使用system使用者

sys和system這兩個使用者最大的區別是在於有沒有create database的許可權。

三、sqlplus工具簡介

Oracle的sql*plus是與oracle進行互動的客戶端工具。在sql*plus中,可以執行sql*plus命令與sql語句。

我們通常所說的DML、DDL、DCL語句都是sql語句,它們執行完後,都可以儲存在一個被稱為sql buffer的記憶體區域中,

並且只能儲存一條最近執行的sql語句,我們可以對儲存在sql buffer中的sql語句進行修改,然後再次執行,sql*plus一般都與資料庫打交道。

除了sql語句,在sql*plus中執行的其它語句我們稱之為sql*plus命令。它們執行完後,不儲存在sql buffer的記憶體區域中,

它們一般用來對輸出的結果進行格式化顯示,以便於製作報表。

四、sqlplus常用命令

連線命令

1.conn[ect]
用法:conn 使用者名稱/密碼@網路服務名 [as sysdba/sysoper]
說明:當用特權使用者身份連線時,必須帶上as sysdba或是as sysoper
例如:

SQL> show user
USER 為 "SCOTT"
SQL> conn system/oracle@orcl
已連線。
SQL> show user
USER 為 "SYSTEM"

LINUX中以系統身份連線:
SQL>connect / as sysdba
或者
# sqlplus / as sysdba

以上命令實現類似切換使用者的效果
2.disc/disconn/disconnect
說明: 該命令用來斷開與當前資料庫的連線
3.pssw[ord]
說明: 該命令用於修改使用者的密碼,如果要想修改其它使用者的密碼,需要用sys/system登入。
例如:

SQL> conn scott/oracle
已連線。
SQL> passw
更改 SCOTT 的口令
舊口令:
新口令:
重新鍵入新口令:
口令已更改
SQL>

4.show user
說明: 顯示當前使用者名稱
5.exit
說明: 該命令會斷開與資料庫的連線,同時會退出sql*plus
5.clear screen
清空螢幕

檔案操作命令

1.start和@
說明: 執行sql指令碼
案例:

sql>@ /home/oracle/a.sql
或是
sql>start /home/oracle/a.sql

2.edit
說明: 該命令可以編輯指定的sql指令碼
案例:

sql>edit /home/oracle/a.sql

這樣會把/home/oracle/a.sql這個檔案開啟

3.spool
說明:該命令可以將sql*plus螢幕上的內容輸出到指定檔案中去。

案例:

sql>spool /home/oracle/a.sql
sql>select * from emp; 
sql>spool off 

參考

https://www.cnblogs.com/muhehe/p/7816808.html

https://www.cnblogs.com/wdx8927304/p/7927613.html