Oracle 数据库用户管理完整指南
本文首次创作于 2025-01-24,最后更新于 2025-05-23,距离上次更新已经过了 11 天,文章内容可能已经过时。
Oracle 数据库用户管理完整指南
一、用户创建基础语法
Oracle 创建用户的核心语法结构如下:
CREATE USER 用户名
IDENTIFIED BY 密码
[DEFAULT TABLESPACE 默认表空间]
[TEMPORARY TABLESPACE 临时表空间]
[QUOTA 空间配额 ON 表空间]
[PROFILE 配置文件]
[PASSWORD EXPIRE]
[ACCOUNT {LOCK | UNLOCK}];
二、用户创建实战示例
1. 基础创建示例
-- 最简形式(仅用户名密码)
CREATE USER basic_user IDENTIFIED BY "Temp123!";
-- 推荐生产环境使用
CREATE USER app_user
IDENTIFIED BY "P@ssw0rd_2023"
DEFAULT TABLESPACE user_data
TEMPORARY TABLESPACE temp
QUOTA 1G ON user_data
QUOTA 200M ON indexes
PROFILE app_profile
PASSWORD EXPIRE
ACCOUNT UNLOCK;
2. 多表空间配额分配
CREATE USER data_user
IDENTIFIED BY "Data_secure1"
DEFAULT TABLESPACE user_data
TEMPORARY TABLESPACE temp
QUOTA 2G ON user_data
QUOTA 500M ON report_data
QUOTA 300M ON indexes;
三、参数详解
四、权限管理
创建用户后必须授予适当权限:
-- 基础连接权限
GRANT CREATE SESSION TO app_user;
-- 开发常用权限包
GRANT CONNECT, RESOURCE TO dev_user;
-- 精细化权限控制
GRANT SELECT, INSERT, UPDATE ON hr.employees TO report_user;
GRANT EXECUTE ON pkg_utilities TO app_user;
-- 角色授权
GRANT read_only_role TO analyst_user;
五、多租户环境注意事项
12c及以上版本需注意:
-- 切换到目标PDB
ALTER SESSION SET CONTAINER = orclpdb;
-- 在PDB中创建用户
CREATE USER pdb_user IDENTIFIED BY "Pdb123#"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
-- 授予PDB权限
GRANT CREATE SESSION, RESOURCE TO pdb_user CONTAINER = CURRENT;
六、用户管理维护
1. 查询用户信息
SELECT username, account_status, created,
default_tablespace, temporary_tablespace
FROM dba_users
WHERE username = 'APP_USER';
-- 查看配额使用情况
SELECT tablespace_name, bytes/1024/1024 MB_used, max_bytes/1024/1024 MB_max
FROM dba_ts_quotas
WHERE username = 'APP_USER';
2. 修改用户属性
-- 修改密码
ALTER USER app_user IDENTIFIED BY "NewPass123!";
-- 修改表空间配额
ALTER USER app_user QUOTA 2G ON user_data;
-- 锁定/解锁账户
ALTER USER app_user ACCOUNT LOCK;
ALTER USER app_user ACCOUNT UNLOCK;
3. 安全删除用户
-- 检查用户对象
SELECT object_type, COUNT(*)
FROM dba_objects
WHERE owner = 'APP_USER'
GROUP BY object_type;
-- 级联删除用户及对象
DROP USER app_user CASCADE;
七、最佳实践建议
密码策略:
使用复杂密码(大小写字母+数字+特殊字符)
定期修改密码(通过PROFILE配置)
避免使用默认密码
权限管理:
遵循最小权限原则
使用角色管理权限组
定期审计权限分配
资源控制:
合理设置表空间配额
为不同应用创建专用用户
监控资源使用情况
多租户环境:
明确区分CDB和PDB用户
使用CONTAINER参数控制授权范围
为每个PDB维护单独的用户体系
八、常见问题解决方案
问题1:ORA-65096: 公用用户名或角色名无效
-- 原因:12c+版本在CDB$ROOT创建了不符合规定的用户名
-- 解决方案:
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
CREATE USER legacy_user IDENTIFIED BY password;
ALTER SESSION SET "_ORACLE_SCRIPT"=false;
问题2:ORA-01950: 表空间'USERS'无权限
-- 原因:用户缺少表空间配额
-- 解决方案:
ALTER USER app_user QUOTA 100M ON users;
问题3:ORA-28000: 账户被锁定
-- 解决方案:
ALTER USER locked_user ACCOUNT UNLOCK;
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Noah
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果