DBA(数据库管理员)常用的 Linux 命令

DBA(数据库管理员)常用的 Linux 命令

作为数据库管理员(DBA),熟练掌握 Linux 命令对于日常的数据库管理、维护和故障排除至关重要。以下是分类整理的一些常用 Linux 命令,涵盖文件管理、进程管理、性能监控、网络管理等多个方面,帮助 DBAs 高效地完成工作。


1. 文件和目录管理

列出文件和目录

  • ls:列出目录内容。

    • ls -l:以长格式显示详细信息。
    • ls -a:显示所有文件,包括隐藏文件。
    bash 复制代码
    ls -la /home/dbuser/

切换目录

  • cd:更改当前工作目录。

    bash 复制代码
    cd /var/lib/oracle/

复制、移动和删除文件

  • cp:复制文件或目录。

    • cp -r:递归复制目录。
    bash 复制代码
    cp /home/dbuser/file1.txt /backup/
  • mv:移动或重命名文件或目录。

    bash 复制代码
    mv oldname.txt newname.txt
  • rm:删除文件或目录。

    • rm -r:递归删除目录及其内容。
    • rm -f:强制删除,不提示确认。
    bash 复制代码
    rm -f /tmp/tempfile.log

查找文件

  • find:在文件系统中查找文件。

    bash 复制代码
    find /var/log -name "*.log" -mtime -7
  • grep:在文件中搜索指定模式。

    bash 复制代码
    grep "ORA-" /var/log/oracle/alert.log

查看和编辑文件

  • cat:连接并显示文件内容。

    bash 复制代码
    cat /etc/passwd
  • more / less:分页查看文件内容。

    bash 复制代码
    less /var/log/oracle/alert.log
  • vi / vim:编辑文本文件。

    bash 复制代码
    vi /home/dbuser/init.ora

2. 文件权限和所有权

查看文件权限

  • ls -l:查看文件权限、所有者和所属组。

    bash 复制代码
    ls -l /home/dbuser/

修改文件权限

  • chmod:更改文件或目录的权限。

    bash 复制代码
    chmod 750 /home/dbuser/datafile.dbf

更改文件所有者

  • chown:更改文件或目录的所有者和所属组。

    bash 复制代码
    chown oracle:oinstall /home/dbuser/datafile.dbf
  • chgrp:仅更改文件的所属组。

    bash 复制代码
    chgrp dba /home/dbuser/

3. 进程管理

查看进程

  • ps:显示当前运行的进程。

    • ps -ef:显示所有进程的详细信息。
    bash 复制代码
    ps -ef | grep ora_
  • top / htop:实时监控系统的进程和资源使用情况。

    bash 复制代码
    top

管理进程

  • kill:终止指定的进程。

    bash 复制代码
    kill -9 12345
  • pkill:按进程名称终止进程。

    bash 复制代码
    pkill -f ora_pmon
  • killall:终止所有具有指定名称的进程。

    bash 复制代码
    killall -u oracle

4. 网络管理

查看网络接口

  • ifconfigip:查看和配置网络接口。

    bash 复制代码
    ip addr show

检测网络连接

  • ping:测试与目标主机的连通性。

    bash 复制代码
    ping -c 4 dbserver.example.com
  • traceroute:追踪数据包的路由路径。

    bash 复制代码
    traceroute target_host

查看网络端口和连接

  • netstatss:显示网络连接、路由表和网络接口。

    bash 复制代码
    netstat -tulnp

安全远程访问

  • ssh:通过 SSH 连接到远程主机。

    bash 复制代码
    ssh [email protected]
  • scp:在本地和远程主机之间复制文件。

    bash 复制代码
    scp /home/dbuser/backup.sql oracle@dbserver:/backup/
  • rsync:高效同步本地与远程文件。

    bash 复制代码
    rsync -avz /home/dbuser/data/ oracle@dbserver:/data_backup/

5. 性能监控

系统资源使用

  • top / htop:实时查看系统资源使用情况。

    bash 复制代码
    top
  • vmstat:报告虚拟内存统计信息。

    bash 复制代码
    vmstat 5 10
  • iostat:监控系统输入/输出设备和 CPU 性能。

    bash 复制代码
    iostat -xz 5 3
  • free:查看内存使用情况。

    bash 复制代码
    free -m

磁盘使用

  • df:显示文件系统的磁盘空间使用情况。

    bash 复制代码
    df -h
  • du:查看目录或文件的磁盘使用情况。

    bash 复制代码
    du -sh /home/dbuser/

查看打开的文件

  • lsof:列出当前打开的文件。

    bash 复制代码
    lsof | grep oracle

6. 用户和组管理

用户管理

  • 添加用户

    bash 复制代码
    useradd -m dbadmin
  • 修改用户信息

    bash 复制代码
    usermod -aG dba dbadmin
  • 删除用户

    bash 复制代码
    userdel -r dbadmin

组管理

  • 添加组

    bash 复制代码
    groupadd dba
  • 修改组

    bash 复制代码
    groupmod -n dbadmins dba
  • 删除组

    bash 复制代码
    groupdel dbadmins

7. 服务管理

系统服务控制

  • systemctl:控制和管理 systemd 服务。

    bash 复制代码
    systemctl start oracle-db
    systemctl status oracle-db
    systemctl restart oracle-db
  • service:传统的服务管理命令(适用于非 systemd 系统)。

    bash 复制代码
    service oracle-db status
    service oracle-db stop

8. 备份与恢复

备份

  • tar:打包和压缩文件。

    bash 复制代码
    tar -czvf backup_home.tar.gz /home/dbuser/
  • rsync:同步和备份文件。

    bash 复制代码
    rsync -avz /home/dbuser/ /backup/dbuser/

恢复

  • 解压缩和解包

    bash 复制代码
    tar -xzvf backup_home.tar.gz -C /restore/path/

9. 日志管理

查看日志

  • tail:查看文件的最后几行。

    • tail -f:实时跟踪文件新增内容。
    bash 复制代码
    tail -f /var/log/oracle/alert.log
  • grep:在日志中搜索特定关键词。

    bash 复制代码
    grep "ORA-" /var/log/oracle/alert.log

日志轮转

  • logrotate:管理日志文件的轮转和压缩。

    • 编辑配置文件 /etc/logrotate.conf/etc/logrotate.d/ 中的相关文件。

10. 环境变量管理

查看环境变量

  • envprintenv

    bash 复制代码
    env | grep ORACLE

设置环境变量

  • export:设置或修改环境变量。

    bash 复制代码
    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
    export PATH=$PATH:$ORACLE_HOME/bin
  • 永久设置 :编辑用户的 ~/.bash_profile~/.bashrc 文件,添加上述 export 语句。


11. 压缩与解压

压缩文件

  • gzip

    bash 复制代码
    gzip logfile.log
  • bzip2

    bash 复制代码
    bzip2 logfile.log

解压缩文件

  • gunzip

    bash 复制代码
    gunzip logfile.log.gz
  • bunzip2

    bash 复制代码
    bunzip2 logfile.log.bz2

12. 软件包管理

基于 RPM 的系统(如 CentOS、RedHat)

  • 安装软件包

    bash 复制代码
    yum install oracle-database-preinstall-19c
  • 更新软件包

    bash 复制代码
    yum update
  • 移除软件包

    bash 复制代码
    yum remove package-name

基于 DEB 的系统(如 Debian、Ubuntu)

  • 安装软件包

    bash 复制代码
    apt-get install oracle-database-preinstall-19c
  • 更新软件包

    bash 复制代码
    apt-get update && apt-get upgrade
  • 移除软件包

    bash 复制代码
    apt-get remove package-name

13. 调度任务

cron:定时任务调度

  • 编辑当前用户的 crontab

    bash 复制代码
    crontab -e
  • 示例:每天凌晨2点执行数据库备份脚本

    bash 复制代码
    0 2 * * * /home/dbadmin/scripts/backup.sh >> /var/log/backup.log 2>&1

查看和管理 crontab

  • 查看 crontab 任务

    bash 复制代码
    crontab -l
  • 删除 crontab 任务

    bash 复制代码
    crontab -r

14. 网络安全与防火墙

管理防火墙

  • firewall-cmd(在使用 Firewalld 的系统上)

    • 开放端口 1521(Oracle 默认端口)

      bash 复制代码
      firewall-cmd --permanent --add-port=1521/tcp
      firewall-cmd --reload
  • iptables(传统防火墙管理)

    • 允许端口 1521

      bash 复制代码
      iptables -A INPUT -p tcp --dport 1521 -j ACCEPT
      service iptables save

SELinux 管理

  • 查看 SELinux 状态

    bash 复制代码
    sestatus
  • 暂时禁用 SELinux

    bash 复制代码
    setenforce 0
  • 永久禁用 SELinux :编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled,然后重启系统。


15. 其他实用命令

查找磁盘中的大文件

bash 复制代码
find / -type f -size +100M -exec ls -lh {} \; | awk '{ print $NF ": " $5 }'

监控实时数据库日志

bash 复制代码
tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/alert/log.xml

统计表空间使用情况

bash 复制代码
du -sh /u01/app/oracle/oradata/

查看数据库实例状态

bash 复制代码
ps -ef | grep pmon

查看系统启动时间和运行时间

bash 复制代码
uptime

查看当前登录用户

bash 复制代码
who

16. 实用技巧与最佳实践

使用别名简化命令

编辑 ~/.bashrc~/.bash_profile,添加常用命令的别名,如:

bash 复制代码
alias ll='ls -la'
alias dbstatus='ps -ef | grep ora_'
alias backup='tar -czvf backup_$(date +%F).tar.gz /home/dbuser/'

脚本自动化

编写 Shell 脚本自动化常见任务,如数据库备份、日志清理等。例如,创建一个每日备份脚本 backup.sh

bash 复制代码
#!/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 命令,DBA 可以更加高效地管理数据库系统,监控系统性能,执行维护任务,并快速响应和解决问题。建议在实际工作中不断练习和积累,根据具体需求深入学习相关命令和工具,提升管理和优化数据库系统的能力。

相关推荐
BreezeDove15 分钟前
【linux】服务器限制客户端ssh访问
linux·服务器·ssh
中东大鹅15 分钟前
Linux的Shell编程
linux·运维·服务器
Liii40344 分钟前
Java学习——数据库查询操作
java·数据库·学习
m0_694845572 小时前
美国站群服务器租用应该怎么选?
linux·运维·服务器·云计算·ddos
kyle~2 小时前
Linux---用户组
linux·运维·服务器
勇敢牛牛_2 小时前
【Rust交叉编译】在x86_64架构下交叉编译aarch64-linux-musl版的rust-opencv
linux·opencv·rust·aarch64
huangjiazhi_2 小时前
ubuntu 没有网卡的解决方案
linux·运维·ubuntu
thatyimjune2 小时前
Ubuntu启动不了Terminal
linux·ubuntu
bestsun9992 小时前
Oraclelinux问题-/var/log/pcp/pmlogger/目录超大
linux·运维
Databend2 小时前
从 Snowflake 到 Databend Cloud:全球游戏平台借助 Databend 实现实时数据处理
数据库