Oracle XE是Oracle的免費版,跟收費版相比,自然有些限制。
但是,在教學,自學等場合,還是很好的。
筆者在本機Windows10上裝了Oracle XE 18c,然後就開始一頓折騰了。
1,DBA賬戶
這個就是在安裝的時候,讓你輸入密碼的,只輸入一個密碼,但是是3個賬戶公用。
就是System,Sys,PDBAdmin。
2,創建完之後使用SqlDeveloper或Sqlplus登錄
--SqlDeveloper--
連接類型:Basic
角色:Default
主機名:填localhost或自己的IP
SID:xe
如果用Sqlplus的話,那就是 Sqlplus System/password@localhost:1523
※注意這裏的端口是1523
這張圖可能是大家想要的吧,安裝完,就tm沒了,貼一下:
3,創建新用戶
基本步驟就是1)創建表空間; 2)創建臨時表空間 3)創建用戶 4)賦權限
1)創建表空間
CREATE TABLESPACE S100D
DATAFILE 'c:\usr\lib\oracle\xe\S100D.dbf' SIZE 100M
SEGMENT SPACE MANAGEMENT AUTO;
坑來啦,居然出錯了:
ORA-02236: 文件名無效。
02236. 00000 - "invalid file name"
*Cause: A character string literal was not used in the filename list
of a LOGFILE, DATAFILE, or RENAME clause.
*Action: Use correct syntax.
如果你直接創建角色或用戶的話,會出以下錯誤:
ORA-65096: 共通用戶或角色名無效。
這是爲啥呢,Oracle 12c開始呢,Oracle導入了多租戶結構,我們使用System的時候,就是默認登入了這個多租戶Session。
玩salesforce等系統的朋友都知道,多租戶的話,有個特點,就是牽一髮而動全身,你影響別人,那肯定不行,所以就不是那麼簡單的建用戶了。
對於我們學習者來說,用不了那麼高級的,要把這個多租戶切換爲可插拔session,然後就可以所心所欲的建了。
a) 確認Session類型:
show con_name;
CON_NAME
------------------------------
CDB$ROOT 這就是多租戶
b)切換爲可插拔Session
alter session set container = XEPDB1;
Session已經變更。
※這個XEPDB1是什麼呢,就是默認給你建好的一個DB的服務名。
Sessoin變更之後,再執行一遍創建表空間的SQL語句,就可以了。
TABLESPACE S100D創建成功。
2)創建臨時表空間
CREATE TEMPORARY TABLESPACE S001T
TEMPFILE 'c:\usr\lib\oracle\xe\S001T.dbf' SIZE 100M
AUTOEXTEND ON;
TABLESPACE S100T創建成功。
修改默認臨時表空間:默認是Tmp,這個其實改不改都行吧。
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE S100T;
3)創建用戶
--創建共通角色
CREATE ROLE "XE_CONNECT";
GRANT ALTER SESSION TO "XE_CONNECT";
GRANT CREATE CLUSTER TO "XE_CONNECT";
GRANT CREATE DATABASE LINK TO "XE_CONNECT";
GRANT CREATE SEQUENCE TO "XE_CONNECT";
GRANT CREATE SESSION TO "XE_CONNECT";
GRANT CREATE SYNONYM TO "XE_CONNECT";
GRANT CREATE TABLE TO "XE_CONNECT";
GRANT CREATE VIEW TO "XE_CONNECT";
ALTER DATABASE SET TIME_ZONE = 'Asia/Shanghai';
※話說這個TimeZone怎麼不用Beijing用Shanghai啊,我對上海充滿仰慕之情,但是這個感覺怪怪的哈。
--設置Password永不過期
ALTER PROFILE DEFAULT
LIMIT PASSWORD_LIFE_TIME UNLIMITED;
--創建賬戶
CREATE USER S001
IDENTIFIED BY E3Q4RRVN
DEFAULT TABLESPACE S001D
TEMPORARY TABLESPACE S001T
QUOTA UNLIMITED ON S001D;
--設置用戶權限 ※當然啦,這只是我認爲需要的權限,還需要其他的請自行添加。
-- ■Grant Role S001 User
GRANT "XE_CONNECT" TO S001 ;
GRANT ALTER SESSION TO S001 ;
GRANT ALTER SYSTEM TO S001 ;
GRANT CREATE ANY PROCEDURE TO S001 ;
GRANT CREATE CLUSTER TO S001 ;
GRANT CREATE DATABASE LINK TO S001 ;
GRANT CREATE MATERIALIZED VIEW TO S001 ;
GRANT CREATE ROLE TO S001 ;
GRANT CREATE SEQUENCE TO S001 ;
GRANT CREATE SESSION TO S001 ;
GRANT CREATE SYNONYM TO S001 ;
GRANT CREATE TABLE TO S001 ;
GRANT CREATE TRIGGER TO S001 ;
GRANT CREATE VIEW TO S001 ;
GRANT DEBUG ANY PROCEDURE TO S001 ;
GRANT DEBUG CONNECT SESSION TO S001 ;
GRANT SELECT ANY DICTIONARY TO S001 ;
GRANT SELECT ANY TABLE TO S001 ;
GRANT UNLIMITED TABLESPACE TO S001 ;
GRANT DBA TO S001 ;
GRANT EXP_FULL_DATABASE TO S001 ;
GRANT IMP_FULL_DATABASE TO S001 ;
GRANT RESOURCE TO S001 ;
GRANT SELECT_CATALOG_ROLE TO S001 ;
4)登錄剛剛創建好的用戶
這步就有問題咯。請不要忘記多租戶哦。
使用Sqlplus:sqlplus s001/password@localhost:1523/XEPDB1
使用SqlDeveloper的話,
連接類型:Basic
角色:Default
主機名:填localhost或自己的IP
SID:xe -------------------NG啦
要用ServiceName:XEPDB1
大家看下面這篇大神寫的文章:
https://www.cnblogs.com/hello-wei/p/10179313.html