- 首页 >
- 问答 >
-
云计算 >
- Ubuntu Oracle权限设置如何进行
Ubuntu Oracle权限设置如何进行
小樊
37
2025-12-04 22:33:54
Ubuntu 上 Oracle 权限设置实操指南
一 系统层权限准备
- 创建操作系统用户与组,用于隔离安装与运行权限:
- 创建组:oinstall(软件属主)、dba(管理员)
- 创建用户:oracle,主组为 oinstall,附加组为 dba
- 设置密码:passwd oracle
- 创建 Oracle 基目录并修正属主与权限(示例:/u01/app/oracle)
- 目录建议:/u01/app/oracle、/u01/app/oradata
- 权限建议:目录属主 oracle:oinstall,权限 755/775(按最小权限原则细化)
- 设置内核参数与资源限制(示例为 Oracle 11g XE 常用值,按实际内存与版本调整)
- 内核参数:fs.file-max=6815744、kernel.sem=250 32000 100 128、kernel.shmmax=4163487744、net.core.rmem_default=262144、net.core.rmem_max=4194304、net.core.wmem_default=262144、net.core.wmem_max=1048576、fs.aio-max-nr=1048576、net.ipv4.ip_local_port_range=9000 65000
- 资源限制(/etc/security/limits.conf):oracle soft/hard nproc 2047/16384、soft/hard nofile 1024/65536、soft stack 10240
- 使内核参数生效:sudo sysctl -p
- 说明:以上为 Ubuntu 上安装与运行 Oracle 的常见前置条件,能避免后续“权限不足/资源受限”等问题。
二 数据库层权限配置
- 以管理员身份登录数据库:
- 创建业务用户与默认表空间(示例用户:appuser,表空间:app_ts)
- 创建表空间:
- CREATE TABLESPACE app_ts DATAFILE ‘/u01/app/oradata/app_ts01.dbf’ SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
- 创建用户并指定默认表空间与临时表空间:
- CREATE USER appuser IDENTIFIED BY StrongPass_01 DEFAULT TABLESPACE app_ts TEMPORARY TABLESPACE temp;
- 授予最小必要权限(按“最小权限原则”分配)
- 登录权限:GRANT CREATE SESSION TO appuser;
- 对象创建:GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO appuser;
- 表空间配额(更安全的替代“无限配额”):ALTER USER appuser QUOTA 500M ON app_ts;
- 如确需放开:GRANT UNLIMITED TABLESPACE TO appuser;(谨慎使用)
- 对象级授权与回收
- 授予某表的查询权限:GRANT SELECT ON schema.table TO appuser;
- 授予跨用户对象权限:GRANT SELECT, INSERT, UPDATE, DELETE ON schema.table TO appuser;
- 回收权限:REVOKE privilege ON schema.table FROM appuser;
- 角色与系统权限
- 授予 DBA(仅限受控场景):GRANT DBA TO appuser;
- 撤销:REVOKE DBA FROM appuser;
- 常用查询
- 查看当前用户系统权限:SELECT * FROM user_sys_privs;
- 查看对象权限:SELECT * FROM user_tab_privs;、SELECT * FROM user_col_privs;
- 提示:生产环境避免使用 GRANT DBA 与 UNLIMITED TABLESPACE,按业务最小权限分配,并通过角色统一管理。
三 监听器与远程访问权限
- 启动/停止监听器(以 oracle 用户执行):
- 启动:lsnrctl start
- 停止:lsnrctl stop
- 状态:lsnrctl status
- 远程访问与安全
- 监听端口:默认 1521;如需对外访问,确保云安全组/防火墙放行 TCP 1521
- 如需限制本地执行管理命令,可通过 sudoers 精细化授权(示例:允许 oracle 无密执行 lsnrctl)
- 执行:sudo visudo
- 添加:oracle ALL=(ALL) NOPASSWD: /u01/app/oracle/product//dbhome_/bin/lsnrctl
- 说明:Ubuntu 上可直接使用 lsnrctl 管理监听;如需更严格的系统级管控,可结合 sudoers/ACL/AppArmor 实现命令级授权与访问控制。
四 快速验证与常见问题
- 验证清单
- 系统层:检查目录属主与权限(如 /u01 为 oracle:oinstall)、内核参数与 limits 是否生效
- 监听层:lsnrctl status 能看到监听端口 1521 与实例
- 数据库层:以新建用户登录(sqlplus appuser/StrongPass_01),执行 SELECT 1 FROM DUAL;
- 常见报错与处理
- 登录被拒(ORA-01045):缺少 CREATE SESSION,执行:GRANT CREATE SESSION TO appuser;
- 创建表失败(ORA-01950):对表空间无配额,执行:ALTER USER appuser QUOTA 500M ON app_ts; 或临时:GRANT UNLIMITED TABLESPACE TO appuser;
- 权限不足/命令不可用:确认以 oracle 用户执行,或按需配置 sudoers 授权
- 运维建议
- 定期审计用户权限与对象授权,回收不再使用的权限
- 避免使用 PUBLIC 授予广泛权限,遵循最小权限原则。