温馨提示×

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=6815744kernel.sem=250 32000 100 128kernel.shmmax=4163487744net.core.rmem_default=262144net.core.rmem_max=4194304net.core.wmem_default=262144net.core.wmem_max=1048576fs.aio-max-nr=1048576net.ipv4.ip_local_port_range=9000 65000
    • 资源限制(/etc/security/limits.conf):oracle soft/hard nproc 2047/16384soft/hard nofile 1024/65536soft stack 10240
    • 使内核参数生效:sudo sysctl -p
  • 说明:以上为 Ubuntu 上安装与运行 Oracle 的常见前置条件,能避免后续“权限不足/资源受限”等问题。

二 数据库层权限配置

  • 以管理员身份登录数据库:
    • 命令:sqlplus / as sysdba
  • 创建业务用户与默认表空间(示例用户: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 DBAUNLIMITED 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 实现命令级授权与访问控制。

四 快速验证与常见问题

  • 验证清单
    • 系统层:检查目录属主与权限(如 /u01oracle: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 授予广泛权限,遵循最小权限原则。

0