核心檔案結構速查
DESC V$CONTROLFILE; -- 控制檔
DESC V$DATAFILE; -- 資料檔
DESC V$LOGFILE; -- 重做日誌檔
SQL*Plus 基礎操作
- 執行腳本:
@C:\sql\store_schema.sql
- 切換用戶:
CONNECT system/manager@oracle
- DUAL 表測試:
SELECT SYSDATE FROM DUAL;
- 語句終結符:分號
;
表空間與用戶建立全流程
-- 1. 建立表空間(自動擴展)
CREATE TABLESPACE yyaccp
DATAFILE 'D:\oracle\oradata\Oracle\yyaccp.dbf'
SIZE 5M AUTOEXTEND ON;
-- 2. 建立用戶並指定預設/臨時表空間
CREATE USER yyaccp IDENTIFIED BY yyaccp
DEFAULT TABLESPACE yyaccp
TEMPORARY TABLESPACE temp;
-- 3. 授予建立會話權限(連線門檻)
GRANT CREATE SESSION TO yyaccp;
-- 4. 連線驗證
CONNECT yyaccp/yyaccp@oracle;
密碼管理三種方式
| 方式 | 指令 | 適用場景 |
| ALTER USER | ALTER USER yyaccp IDENTIFIED BY accp; | DBA 重設他人密碼 |
| PASSWORD 命令 | 登入後輸入 PASSWORD,互動式修改 | 一般用戶自助修改 |
| 初始密碼過期 | CREATE USER ... PASSWORD EXPIRE | 強制首次登入修改 |
用戶刪除與權限回收
-- 刪除用戶(含級聯物件)
DROP USER yyaccp CASCADE;
-- 撤銷系統權限
REVOKE DBA FROM yyaccp;
系統權限授予體系
常用系統權限速查
CREATE SESSION -- 連線
CREATE TABLE -- 建表
CREATE SEQUENCE -- 序列
CREATE VIEW -- 視圖
CREATE PROCEDURE -- 程序/函數/套件
CREATE USER -- 建用戶
DROP ANY TABLE -- 刪除任意表
EXECUTE ANY PROCEDURE -- 執行任意程序
授予選項進階
WITH ADMIN OPTION:受權者可再授予該系統權限
TO PUBLIC:授予所有現有/未來用戶
GRANT EXECUTE ANY PROCEDURE TO yyaccp WITH ADMIN OPTION;
GRANT EXECUTE ANY PROCEDURE TO PUBLIC;
查詢已授予系統權限
SELECT * FROM USER_SYS_PRIVS; -- 當前用戶
SELECT * FROM DBA_SYS_PRIVS; -- DBA 檢視所有
表空間配額管理:解決 ORA-01536
-- 三種方式任選一
ALTER USER yyaccp QUOTA 100M ON yyaccp;
ALTER USER yyaccp QUOTA UNLIMITED ON yyaccp;
GRANT UNLIMITED TABLESPACE TO yyaccp; -- 所有表空間無限制
角色:權限集合的容器
-- 建立角色
CREATE ROLE employees2_manager;
-- 授予物件權限給角色
GRANT SELECT, INSERT, UPDATE, DELETE ON yyaccp.employees2 TO employees2_manager;
-- 將角色授予用戶
GRANT employees2_manager TO some_user;
物件權限:細粒度存取控制
| 權限 | 允許操作 |
| SELECT | 查詢 |
| INSERT | 新增 |
| UPDATE | 修改 |
| DELETE | 刪除 |
| EXECUTE | 執行程序 |
欄位級授權
GRANT UPDATE (name, address) ON yyaccp.tusertable TO tuser;
授予選項與查詢
WITH GRANT OPTION:受權者可再授予該物件權限
USER_TAB_PRIVS_MADE:查詢我授予他人的表權限
USER_COL_PRIVS_MADE:查詢我授予他人的欄位權限
同義詞:簡化物件引用
私有同義詞
GRANT CREATE SYNONYM TO tuser;
CONNECT tuser/tuser;
CREATE SYNONYM tusertable FOR yyaccp.tusertable;
-- 之後直接 SELECT * FROM tusertable;
公共同義詞
GRANT CREATE PUBLIC SYNONYM TO yyaccp;
CONNECT yyaccp/accp;
CREATE PUBLIC SYNONYM sttable FOR yyaccp.sttable;
-- 所有用戶可直接 SELECT * FROM sttable;
撤銷物件權限
REVOKE INSERT ON sttable FROM tuser;
新手避坑清單
- 建表前確認表空間配額,否則噴 ORA-01536
- 外鍵欄位務必手動建索引,避免父表操作鎖死子表
- 大量授權用
ROLE,單一授權用直接 GRANT
- 同義詞不改變權限,僅簡化名稱引用
- 生產環境嚴禁
GRANT ... TO PUBLIC 敏感權限
熟練掌握上述核心操作,即可勝任 Oracle 初級 DBA/開發日常 90% 的權限與空間管理工作。
- 上一篇文章: Oracle SQL 進階查詢技巧:日期、集合運算、分析函數與層次查詢
- 下一篇文章: Oracle 多線程併發抽取實戰:FOR UPDATE NOWAIT + REF CURSOR 實現高吞吐資料搬運
Copyright ©
程式碼之家 All Rights Reserved