DBA(数据库管理员)常用的 Linux 命令
DBA(数据库管理员)常用的 Linux 命令
作为数据库管理员(DBA),熟练掌握 Linux 命令对于日常的数据库管理、维护和故障排除至关重要。以下是分类整理的一些常用 Linux 命令,涵盖文件管理、进程管理、性能监控、网络管理等多个方面,帮助 DBAs 高效地完成工作。
1. 文件和目录管理
列出文件和目录
-
ls
:列出目录内容。ls -l
:以长格式显示详细信息。ls -a
:显示所有文件,包括隐藏文件。
ls -la /home/dbuser/
切换目录
-
cd
:更改当前工作目录。cd /var/lib/oracle/
复制、移动和删除文件
-
cp
:复制文件或目录。cp -r
:递归复制目录。
cp /home/dbuser/file1.txt /backup/
-
mv
:移动或重命名文件或目录。mv oldname.txt newname.txt
-
rm
:删除文件或目录。rm -r
:递归删除目录及其内容。rm -f
:强制删除,不提示确认。
rm -f /tmp/tempfile.log
查找文件
-
find
:在文件系统中查找文件。find /var/log -name "*.log" -mtime -7
-
grep
:在文件中搜索指定模式。grep "ORA-" /var/log/oracle/alert.log
查看和编辑文件
-
cat
:连接并显示文件内容。cat /etc/passwd
-
more
/less
:分页查看文件内容。less /var/log/oracle/alert.log
-
vi
/vim
:编辑文本文件。vi /home/dbuser/init.ora
2. 文件权限和所有权
查看文件权限
-
ls -l
:查看文件权限、所有者和所属组。ls -l /home/dbuser/
修改文件权限
-
chmod
:更改文件或目录的权限。chmod 750 /home/dbuser/datafile.dbf
更改文件所有者
-
chown
:更改文件或目录的所有者和所属组。chown oracle:oinstall /home/dbuser/datafile.dbf
-
chgrp
:仅更改文件的所属组。chgrp dba /home/dbuser/
3. 进程管理
查看进程
-
ps
:显示当前运行的进程。ps -ef
:显示所有进程的详细信息。
ps -ef | grep ora_
-
top
/htop
:实时监控系统的进程和资源使用情况。top
管理进程
-
kill
:终止指定的进程。kill -9 12345
-
pkill
:按进程名称终止进程。pkill -f ora_pmon
-
killall
:终止所有具有指定名称的进程。killall -u oracle
4. 网络管理
查看网络接口
-
ifconfig
或ip
:查看和配置网络接口。ip addr show
检测网络连接
-
ping
:测试与目标主机的连通性。ping -c 4 dbserver.example.com
-
traceroute
:追踪数据包的路由路径。traceroute target_host
查看网络端口和连接
-
netstat
或ss
:显示网络连接、路由表和网络接口。netstat -tulnp
安全远程访问
-
ssh
:通过 SSH 连接到远程主机。ssh oracle@dbserver.example.com
-
scp
:在本地和远程主机之间复制文件。scp /home/dbuser/backup.sql oracle@dbserver:/backup/
-
rsync
:高效同步本地与远程文件。rsync -avz /home/dbuser/data/ oracle@dbserver:/data_backup/
5. 性能监控
系统资源使用
-
top
/htop
:实时查看系统资源使用情况。top
-
vmstat
:报告虚拟内存统计信息。vmstat 5 10
-
iostat
:监控系统输入/输出设备和 CPU 性能。iostat -xz 5 3
-
free
:查看内存使用情况。free -m
磁盘使用
-
df
:显示文件系统的磁盘空间使用情况。df -h
-
du
:查看目录或文件的磁盘使用情况。du -sh /home/dbuser/
查看打开的文件
-
lsof
:列出当前打开的文件。lsof | grep oracle
6. 用户和组管理
用户管理
-
添加用户
useradd -m dbadmin
-
修改用户信息
usermod -aG dba dbadmin
-
删除用户
userdel -r dbadmin
组管理
-
添加组
groupadd dba
-
修改组
groupmod -n dbadmins dba
-
删除组
groupdel dbadmins
7. 服务管理
系统服务控制
-
systemctl
:控制和管理 systemd 服务。systemctl start oracle-db systemctl status oracle-db systemctl restart oracle-db
-
service
:传统的服务管理命令(适用于非 systemd 系统)。service oracle-db status service oracle-db stop
8. 备份与恢复
备份
-
tar
:打包和压缩文件。tar -czvf backup_home.tar.gz /home/dbuser/
-
rsync
:同步和备份文件。rsync -avz /home/dbuser/ /backup/dbuser/
恢复
-
解压缩和解包
tar -xzvf backup_home.tar.gz -C /restore/path/
9. 日志管理
查看日志
-
tail
:查看文件的最后几行。tail -f
:实时跟踪文件新增内容。
tail -f /var/log/oracle/alert.log
-
grep
:在日志中搜索特定关键词。grep "ORA-" /var/log/oracle/alert.log
日志轮转
-
logrotate
:管理日志文件的轮转和压缩。- 编辑配置文件
/etc/logrotate.conf
或/etc/logrotate.d/
中的相关文件。
- 编辑配置文件
10. 环境变量管理
查看环境变量
-
env
或printenv
env | grep ORACLE
设置环境变量
-
export
:设置或修改环境变量。export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 export PATH=$PATH:$ORACLE_HOME/bin
-
永久设置:编辑用户的
~/.bash_profile
或~/.bashrc
文件,添加上述export
语句。
11. 压缩与解压
压缩文件
-
gzip
gzip logfile.log
-
bzip2
bzip2 logfile.log
解压缩文件
-
gunzip
gunzip logfile.log.gz
-
bunzip2
bunzip2 logfile.log.bz2
12. 软件包管理
基于 RPM 的系统(如 CentOS、RedHat)
-
安装软件包
yum install oracle-database-preinstall-19c
-
更新软件包
yum update
-
移除软件包
yum remove package-name
基于 DEB 的系统(如 Debian、Ubuntu)
-
安装软件包
apt-get install oracle-database-preinstall-19c
-
更新软件包
apt-get update && apt-get upgrade
-
移除软件包
apt-get remove package-name
13. 调度任务
cron
:定时任务调度
-
编辑当前用户的 crontab
crontab -e
-
示例:每天凌晨2点执行数据库备份脚本
0 2 * * * /home/dbadmin/scripts/backup.sh >> /var/log/backup.log 2>&1
查看和管理 crontab
-
查看 crontab 任务
crontab -l
-
删除 crontab 任务
crontab -r
14. 网络安全与防火墙
管理防火墙
-
firewall-cmd
(在使用 Firewalld 的系统上)-
开放端口 1521(Oracle 默认端口)
firewall-cmd --permanent --add-port=1521/tcp firewall-cmd --reload
-
-
iptables
(传统防火墙管理)-
允许端口 1521
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT service iptables save
-
SELinux 管理
-
查看 SELinux 状态
sestatus
-
暂时禁用 SELinux
setenforce 0
-
永久禁用 SELinux:编辑
/etc/selinux/config
文件,将SELINUX=enforcing
改为SELINUX=disabled
,然后重启系统。
15. 其他实用命令
查找磁盘中的大文件
find / -type f -size +100M -exec ls -lh {} \; | awk '{ print $NF ": " $5 }'
监控实时数据库日志
tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/alert/log.xml
统计表空间使用情况
du -sh /u01/app/oracle/oradata/
查看数据库实例状态
ps -ef | grep pmon
查看系统启动时间和运行时间
uptime
查看当前登录用户
who
16. 实用技巧与最佳实践
使用别名简化命令
编辑 ~/.bashrc
或 ~/.bash_profile
,添加常用命令的别名,如:
alias ll='ls -la'
alias dbstatus='ps -ef | grep ora_'
alias backup='tar -czvf backup_$(date +%F).tar.gz /home/dbuser/'
脚本自动化
编写 Shell 脚本自动化常见任务,如数据库备份、日志清理等。例如,创建一个每日备份脚本 backup.sh
:
#!/bin/bash
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
BACKUP_DIR=/backup/oradata/$(date +%F)
mkdir -p $BACKUP_DIR
rman target / <<EOF
RUN {
BACKUP DATABASE PLUS ARCHIVELOG;
BACKUP CURRENT CONTROLFILE;
}
EOF
tar -czvf $BACKUP_DIR/db_backup.tar.gz $ORACLE_HOME
权限最小化
仅赋予必要的权限给数据库用户和脚本,遵循最小权限原则,增强系统安全性。
定期更新和补丁管理
保持系统和数据库的最新补丁,修复已知漏洞和问题,提高系统稳定性和安全性。
监控与报警
配置系统监控工具(如 Nagios、Zabbix)监控关键指标,并设置报警机制,及时响应系统异常。
17. 参考资料
- Linux Command Reference
- Oracle 官方文档
- CentOS 文档
- Ubuntu 文档
- UNIX 和 Linux 系统管理手册
通过掌握以上常用 Linux 命令,DBA 可以更加高效地管理数据库系统,监控系统性能,执行维护任务,并快速响应和解决问题。建议在实际工作中不断练习和积累,根据具体需求深入学习相关命令和工具,提升管理和优化数据库系统的能力。