CentOS 下 SQL*Plus 权限设置指南
一 环境准备与最小权限原则
二 数据库侧权限配置步骤
CREATE TABLESPACE users_data
DATAFILE '/u01/app/oradata/ORCL/users01.dbf' SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
CREATE USER app_user IDENTIFIED BY StrongPass_01
DEFAULT TABLESPACE users_data
TEMPORARY TABLESPACE temp;
ALTER USER app_user QUOTA 100M ON users_data;
-- 方案A:使用内置角色(快速入门)
GRANT CONNECT, RESOURCE TO app_user;
-- 方案B:精细授权(推荐)
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE TRIGGER TO app_user;
-- 授予查询与更新,并允许转授
GRANT SELECT, UPDATE ON SCOTT.EMP TO app_user WITH GRANT OPTION;
-- 如确需跨用户建表等,才考虑(谨慎)
-- GRANT CREATE ANY TABLE TO app_user;
CREATE ROLE app_role;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO app_role;
GRANT app_role TO app_user;
-- 回收示例
REVOKE app_role FROM app_user;
-- 撤销对象权限
REVOKE SELECT, UPDATE ON SCOTT.EMP FROM app_user;
-- 解锁账户
ALTER USER app_user ACCOUNT UNLOCK;
-- 修改密码
ALTER USER app_user IDENTIFIED BY NewPass_2025;
-- 当前用户拥有的系统权限
SELECT * FROM USER_SYS_PRIVS;
-- 当前用户对表的权限
SELECT * FROM USER_TAB_PRIVS;
-- DBA 视角(需 DBA 权限)
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'APP_USER';
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'APP_USER';
-- 以 DBA 执行:创建 Oracle Directory 对象(指向服务器本地目录)
CREATE OR REPLACE DIRECTORY expdp_dir AS '/u01/expdp';
-- 授予读写
GRANT READ, WRITE ON DIRECTORY expdp_dir TO app_user;
-- 导出示例(在 OS 执行,非 SQL*Plus)
-- expdp app_user/StrongPass_01 DIRECTORY=expdp_dir DUMPFILE=app_20251215.dmp LOGFILE=app_20251215.log
三 OS 层与网络安全配置
export ORACLE_HOME=/opt/oracle/instantclient_21
export LD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
四 常见报错与排查要点