Oracle数据库需要专用的操作系统用户和组来隔离权限,确保数据库运行的安全性。
oinstall(安装组,用于Oracle软件安装)和dba(数据库管理员组,用于数据库管理操作)两个组。sudo groupadd oinstall
sudo groupadd dba
oracle的操作系统用户,将其加入oinstall和dba组,设置密码并指定主目录(如/home/oracle)。sudo useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle
sudo passwd oracle
Oracle需要访问安装目录、数据目录等,需正确设置所有权和权限,避免未授权访问。
/home/app/oracle为Oracle基目录,/home/app/oradata为数据文件目录)。sudo mkdir -p /home/app/oracle
sudo mkdir -p /home/app/oradata
oracle用户和oinstall组(oinstall组拥有读写执行权限,oracle用户为所有者)。sudo chown -R oracle:oinstall /home/app/oracle
sudo chown -R oracle:oinstall /home/app/oradata
755(所有者可读写执行,组和其他用户可读执行),确保Oracle用户能正常访问,其他用户无法修改。sudo chmod -R 755 /home/app/oracle
sudo chmod -R 755 /home/app/oradata
Oracle用户需配置环境变量,确保能正确启动数据库和相关工具。
.bash_profile文件:切换到oracle用户,编辑其家目录下的.bash_profile文件(如/home/oracle/.bash_profile)。sudo su - oracle
nano ~/.bash_profile
export ORACLE_BASE=/home/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1 # 根据实际版本调整
export ORACLE_SID=orcl # 数据库实例名
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
source命令使环境变量立即生效。source ~/.bash_profile
Oracle对系统资源(如共享内存、文件描述符)有较高要求,需调整内核参数以满足需求。
/etc/sysctl.conf文件:添加以下参数(根据服务器内存调整kernel.shmmax等值):kernel.shmmax = 2147483648 # 最大共享内存(单位:字节,建议为物理内存的一半)
kernel.shmmni = 4096 # 共享内存段最大数量
kernel.shmall = 524288 # 共享内存总页数(shmmax/页大小,页大小通常为4KB)
fs.file-max = 6815744 # 系统最大文件描述符数量
net.ipv4.ip_local_port_range = 9000 65500 # 本地端口范围(Oracle监听端口范围)
sysctl -p命令使配置立即生效。sudo sysctl -p
Oracle数据库权限分为系统权限(如创建会话、创建表)和对象权限(如对表的查询、插入),需合理分配以确保安全。
sqlplus以SYSDBA身份连接数据库(需切换到oracle用户)。sqlplus / as sysdba
myuser),并设置密码。CREATE USER myuser IDENTIFIED BY mypassword;
CONNECT、RESOURCE)。GRANT CONNECT, RESOURCE TO myuser;
employees表)的操作权限(如SELECT、INSERT)。GRANT SELECT, INSERT ON scott.employees TO myuser;
hr_manager),将常用权限授予角色,再将角色授予用户(减少重复授权)。CREATE ROLE hr_manager;
GRANT SELECT, INSERT, UPDATE ON scott.employees TO hr_manager;
GRANT hr_manager TO myuser;
/tmp目录)。sudo apt-get install apparmor
sudo aa-enforce /etc/apparmor.d/usr.sbin.mysqld # 示例,需根据Oracle路径调整
oracle用户无需密码执行Oracle相关命令(如lsnrctl、rman),简化日常操作。sudo visudo
在文件末尾添加:oracle ALL=(ALL) NOPASSWD: /home/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start,
/home/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl stop,
/home/app/oracle/product/19.0.0/dbhome_1/bin/rman target /
DBA权限)。/etc/passwd、/etc/group、Oracle用户环境变量文件和数据库权限表(如DBA_SYS_PRIVS),以便恢复。