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
),以便恢復。