CREATE TEMPORARY TABLESPACE bbs_temp
TEMPFILE 'E:\Oracledata\bbs.dbf'
SIZE 32M
AUTOEXTEND ON NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
關鍵:TEMPFILE 必須指定、LOCAL 區管理、UNIFORM SIZE 固定區大小提升效能。
CREATE TABLESPACE bbs_table
LOGGING
DATAFILE 'E:\Oracledata\bbs_true.dbf'
SIZE 32M
AUTOEXTEND ON NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
關鍵:DATAFILE 必須指定、AUTOALLOCATE 適合混合負載、ASSM (AUTO) 取代 freelists 減少爭用。
DROP USER bbs CASCADE;
CASCADE 強制刪除用戶擁有的所有物件 (表、索引、序列等),否則有物件時會報錯無法刪除。
CREATE USER bbs IDENTIFIED BY password
DEFAULT TABLESPACE bbs_table
TEMPORARY TABLESPACE bbs_temp
QUOTA UNLIMITED ON bbs_table
PASSWORD EXPIRE ACCOUNT UNLOCK;
建議明確指定 QUOTA 避免佔滿 SYSTEM 表空間,PASSWORD EXPIRE 強制首次登入修改密碼。
-- 基礎連線與建表權限 (傳統角色)
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO bbs;
-- 或授予預定義角色 (含上述權限)
GRANT CONNECT, RESOURCE TO bbs;
-- 進階 DBA 權限 (謹慎授予)
GRANT CREATE ANY TABLE, DROP ANY TABLE, ALTER ANY TABLE, SELECT ANY TABLE TO bbs;
-- 建立角色
CREATE ROLE app_read_only;
GRANT SELECT ON schema.table TO app_read_only;
-- 授予角色給用戶
GRANT app_read_only TO bbs;
-- 查詢用戶擁有的角色
SELECT * FROM USER_ROLE_PRIVS;
SELECT * FROM DBA_ROLE_PRIVS WHERE grantee = 'BBS';
| 查詢目的 | 視圖 (USER_ 當前用戶 / ALL_ 可存取 / DBA_ 全庫需權限) |
|---|---|
| 所有用戶 | DBA_USERS / ALL_USERS / USER_USERS |
| 系統權限 | DBA_SYS_PRIVS / USER_SYS_PRIVS |
| 物件/角色權限 | DBA_TAB_PRIVS / ALL_TAB_PRIVS / USER_TAB_PRIVS |
| 所有角色 | DBA_ROLES |
| 用戶/角色擁有的角色 | DBA_ROLE_PRIVS / USER_ROLE_PRIVS |
-- 查詢用戶表空間配額使用情況
SELECT tablespace_name, bytes/1024/1024 used_mb, max_bytes/1024/1024 quota_mb
FROM dba_ts_quotas WHERE username = 'BBS';
-- 查詢角色包含的系統權限
SELECT * FROM ROLE_SYS_PRIVS WHERE role = 'RESOURCE';
-- 查詢角色包含的物件權限
SELECT * FROM ROLE_TAB_PRIVS WHERE role = 'APP_READ_ONLY';