SQL *Plus 是基於命令行的 Oracle 管理工具,能夠用來執行 SQL
、PL/SQL
、 和 SQL*Plus
命令:html
支持查詢、插入和更新數據node
執行 PL/SQL
程序git
查看錶和對象的定義github
開發和執行批處理腳本sql
進行數據庫管理數據庫
直接登陸,輸入命令後會提示輸入用戶名密碼:oracle
$ sqlplus
使用用戶名和密碼:ide
$ sqlplus [username]/[user_password]
操做系統權限認證的 Oracle SYS 管理員登錄:工具
$ sqlplus / as sysdba
不在終端暴露密碼登陸:spa
$ sqlplus /nolog SQL> conn [username]/[user_password] # 或者 SQL > conn / as sysdba
退出登陸:
SQL> exit
一般狀況了咱們稱的 數據庫
,並不只指物理的數據集合,而是物理數據、內存、操做系統進程的組合體。
SQL> select name from v$database;
實例是訪問Oracle數據庫所需的一部分計算機內存和輔助處理後臺進程,是由進程和這些進程所使用的內存(SGA)所構成一個集合。
SQL> select instance_name from v$instance;
數據庫實例名用於對外部鏈接。在操做系統中要取得與數據庫的聯繫,必須使用數據庫實例名。好比咱們做開發,要鏈接數據庫,就得鏈接數據庫實例名,orcl
就爲數據庫實例名:
jdbc:oracle:thin:@localhost:1521:orcl
一個數據庫能夠有多個實例,在做數據庫服務集羣的時候能夠用到。
Oracle 使用 PROFILE
文件對用戶訪問資源的權限進行控制。
若不作特殊指定,建立用戶時用戶默認使用的 PROFILE
就是 DEFAULT
。
查看當前用戶:
SQL> show user
查看數據庫用戶:
SQL> select * from dba_users;
默認當密碼輸錯 10 次以後,用戶就會被鎖定:
ORA-28000: the account is locked
這個時候就須要管理員來解鎖:
$ sqlplus / as sysdba SQL> alter user [username] account unlock;
有解鎖確定就有鎖定:
SQL> alter user [username] account lock;
固然,也能夠本身修改最大密碼錯誤次數,最大錯誤次數存儲在 dba_profiles
表中。
首先根據 username 查看用戶使用的 PROFILE
:
SQL> SELECT PROFILE FROM DBA_USERS WHERE USERNAME='[username]'
而後根據 username 以及查詢到的 PROFILE
查看該用戶的最大密碼錯誤次數 FAILED_LOGIN_ATTEMPTS
:
SQL> SELECT * FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='FAILED_LOGIN_ATTEMPTS';
將錯誤次數修改成無限次:
SQL> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTSUNLIMITED;
Oracle 11g 默認用戶每三個月(180 天)就要修改一次密碼,快到密碼過時時間就會提醒:
ORA-28002: the password will expire within 7 days
這裏一樣要先查找到 PROFILE
再查看用戶密碼剩餘過時時間:
SQL> SELECT * FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='PASSWORD_LIFE_TIME';
修改密碼有效期(不受限):
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIMEUNLIMITED;
設置密碼過時:
SQL> alter user [username] password expire;
修改當前登陸用戶密碼:
SQL> password
修改某個用戶的密碼:
SQL> alter user [username] identified by [password];
Oracle 的表都是存儲在表空間裏面的。建立表以前須要先建立一個表空間。
查看用戶所擁有的表:
SQL> SELECT TABLE_NAME FROM USER_TABLES;
查看用戶可存取的表:
SQL> SELECT TABLE_NAME FROM ALL_TABLES;
數據庫中全部表:
SQL> SELECT TABLE_NAME FROM DBA_TABLES;
查看錶空間詳細數據文件:
SQL> SELECT FILE_NAME,TABLESPACE_NAME from DBA_DATA_FILES;
create tablespace [表空間名稱] datafile [表空間數據文件路徑 ] size [表空間大小] autoextend on;
例如:
SQL> create tablespace SoftwareManagement 2 datafile '/data/oracle/oradata/orcl/SoftwareManagement.dbf' 3 size 50m 4 autoextend on;
CREATE USER [用戶名] IDENTIFIED BY [密碼] DEFAULT TABLESPACE [表空間] (默認USERS) TEMPORARY TABLESPACE [臨時表空間] (默認TEMP)
例如:
SQL> create USER software 2 identified by 123456 3 default tablespace Softwaremanagement;
SQL> GRANT CONNECT TO [username]; SQL> GRANT RESOURCE TO [username]; SQL> GRANT DBA TO [username]; -- DBA爲最高級權限,能夠建立數據庫、表等。
到這裏,數據庫中的表空間、用戶以及用戶權限都建立並分配好了,接下來用戶就能夠在本身的表空間中建立表,而後進行開發。
在給用戶分配權限的時候,分配了 CONNECT
、RESOURCE
權限給用戶。這兩個權限究竟是什麼呢?
Oracle 中的權限分爲兩類:
系統權限:系統規定用戶使用數據庫的權限,系統權限是對用戶而言。
實體權限:某種權限的用戶對其餘用戶的表或視圖的存取權限,是針對表或者視圖而言。如 select
、update
、insert
、delete
、alter
、index
、all
,其中 all
包含全部的實體權限。
DBA:擁有所有特權,是系統最高權限,只有DBA才能夠建立數據庫結構。
RESOURCE:擁有resource權限的用戶只能夠建立實體,不能夠建立數據庫結構。
CONNECT:擁有connect權限的用戶只能夠登陸oracle,不能夠建立實體,不能夠建立數據庫結構。
建議:
對於普通用戶,授予CONNECT
、RESOURCE
權限;
對於DBA
管理用戶,授予CONNECT
、RESOURCE
、DBA
權限。
數據庫的導入導出也是一個很常見的需求。
$ exp [username]/[password]@[orcl] file=./database.dmp full=y
username
是數據庫用戶名
password
是數據庫用戶密碼
orcl
是數據庫實例名稱
file
後面的參數是導出的數據庫文件存放位置及文件名
full
其值爲 y
表示所有導出,默認爲 no
。
若是隻需導出某幾張表,能夠指定 tables
參數:tables='(tableName, tableName1)'
。
$ imp [username]/[password]@[orcl] file=./database.dmp
和導出數據庫語法同樣,只是關鍵字不同。
執行 SQL 文件的方法有不少種。以下:
使用 SQL PLUS 命令
$ sqlplus [username]/password@[orcl] @path/file.name
或者遠程執行:
$ sqlplus [username]/password@server_IP/service_name @path/file.name
若是sql腳本文件比較複雜,包含了begin end語句,就會不斷顯示行號,解決辦法就是在 sql 腳本的最後用 /
符號結尾。
在 SQL PLUS 中執行
SQL>start file_path
SQL>@ file_path
其中 file_path
是文件路徑。
參考
本文同步於個人博客 https://github.com/nodejh/nodejh.github.io/issues/31