Debian如何使用sqlplus进行数据库维护
导读:在 Debian 上使用 SQL*Plus 进行 Oracle 数据库维护 一 安装与连接 安装 Instant Client(推荐方式,无需安装完整数据库) 下载适用于 Linux x86-64 的 Basic 与 SQL*Plus...
在 Debian 上使用 SQL*Plus 进行 Oracle 数据库维护
一 安装与连接
- 安装 Instant Client(推荐方式,无需安装完整数据库)
- 下载适用于 Linux x86-64 的 Basic 与 SQL*Plus 包(ZIP),解压到统一目录(如:/usr/local/sqlplus),创建 lib 目录并软链可执行文件,配置 LD_LIBRARY_PATH 后即可使用。示例(以 21.5 为例):
- unzip instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip -d /usr/local
- unzip instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip -d /usr/local
- mv /usr/local/instantclient_21_5 /usr/local/sqlplus
- cd /usr/local/sqlplus & & mkdir lib & & mv .so lib
- chmod +x sqlplus & & ln -s /usr/local/sqlplus/sqlplus /usr/local/bin/sqlplus
- echo ‘export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/sqlplus/lib’ > > ~/.bashrc & & source ~/.bashrc
- 如必须使用 RPM 包,可在 Debian 上用 alien 转换为 DEB 后安装,并同样设置环境变量与依赖库(如 libaio1)。示例:
- sudo apt-get install alien libaio1
- alien oracle-instantclient*.rpm & & sudo dpkg -i oracle-instantclient*.deb
- 配置 ORACLE_HOME、TNS_ADMIN、PATH、LD_LIBRARY_PATH 等环境变量
- 下载适用于 Linux x86-64 的 Basic 与 SQL*Plus 包(ZIP),解压到统一目录(如:/usr/local/sqlplus),创建 lib 目录并软链可执行文件,配置 LD_LIBRARY_PATH 后即可使用。示例(以 21.5 为例):
- 连接数据库
- 简易连接:sqlplus username/password@//host:port/service
- 本机 SYSDBA:sqlplus / as sysdba
- 使用 TNS 别名:在 $ORACLE_HOME/network/admin/tnsnames.ora 配置别名后,sqlplus username/password@alias
二 日常维护高频操作
- 启停实例(需 SYSDBA)
- 启动:startup(或 sqlplus / as sysdba 后执行 startup)
- 关闭:shutdown immediate(优先选择,安全快速)
- 监听与服务
- 查看监听:lsnrctl status
- 启动/停止监听:lsnrctl start | stop
- 会话与对象
- 查看当前用户:show user
- 查看对象:desc table_name
- 编译失效对象:ALTER PROCEDURE|FUNCTION|PACKAGE|BODY … COMPILE
- 查看错误:show error(编译或执行后定位问题)
- 常用输出与脚本
- 静默执行与日志:sqlplus -S /nolog < < ‘EOF’ … EOF
- 报表导出:SPOOL /path/file.lst;…;SPOOL OFF
- 常用 SET:set heading off、set feedback off、set linesize、set pagesize、set timing on、set serveroutput on
三 备份与恢复
- 逻辑导出导入(适合迁移/部分对象恢复)
- 传统导出工具 exp 与数据泵 expdp(推荐):在 SQL*Plus 或 shell 中调用,配合脚本与 cron 做定时备份;Data Pump 需先在数据库内创建 DIRECTORY 对象并赋权。示例:
- 创建目录对象:CREATE DIRECTORY dmp AS ‘/u01/dmp’; GRANT READ,WRITE ON DIRECTORY dmp TO system;
- 导出:expdp system/pwd DIRECTORY=dmp DUMPFILE=expdp_full_%U.dmp LOGFILE=expdp_full.log PARALLEL=2
- 导入:impdp system/pwd DIRECTORY=dmp DUMPFILE=expdp_full_01.dmp LOGFILE=impdp.log REMAP_SCHEMA=src:dst
- 备份文件建议压缩并 rsync/scp 到异地存储,定期做还原演练验证可用性
- 传统导出工具 exp 与数据泵 expdp(推荐):在 SQL*Plus 或 shell 中调用,配合脚本与 cron 做定时备份;Data Pump 需先在数据库内创建 DIRECTORY 对象并赋权。示例:
- 物理备份(适合灾难恢复与快速恢复)
- 使用 RMAN 执行全库/增量/归档日志备份;可在 SQL*Plus 中将数据库置于 ARCHIVELOG 模式后实施热备。RMAN 支持块级校验与智能恢复,是生产首选方案
- 策略建议
- 生产环境优先“RMAN 物理备份 + Data Pump 逻辑备份”的组合:前者用于快速拉起实例,后者便于跨库迁移与细粒度恢复
四 自动化脚本示例
- 定时全量导出(Data Pump)
- 创建脚本 /opt/scripts/expdp_full.sh
- #!/bin/bash
. ~/.bashrc
export ORACLE_SID=orcl
DMPDIR=/u01/dmp
TS=$(date +%F)
expdp system/pwd@orcl DIRECTORY=dmp DUMPFILE=full_${
TS}
%U.dmp LOGFILE=full${
TS}
.log PARALLEL=2 COMPRESSION=ALL
gzip ${
DMPDIR}
/full_${
TS}
_*.dmp
可选:rsync 到备份服务器
rsync -avz ${ DMPDIR} / ${ BACKUP_HOST} :/backup/oracle/
- #!/bin/bash
. ~/.bashrc
export ORACLE_SID=orcl
DMPDIR=/u01/dmp
TS=$(date +%F)
expdp system/pwd@orcl DIRECTORY=dmp DUMPFILE=full_${
TS}
%U.dmp LOGFILE=full${
TS}
.log PARALLEL=2 COMPRESSION=ALL
gzip ${
DMPDIR}
/full_${
TS}
_*.dmp
- 加入 crontab(每日 02:00)
- 0 2 * * * /opt/scripts/expdp_full.sh > > /var/log/expdp_full.log 2> & 1
- 创建脚本 /opt/scripts/expdp_full.sh
- 静默巡检与日志
- 巡检脚本 /opt/scripts/health.sql
- set heading off feedback off pagesize 0 linesize 200 whenever sqlerror exit failure select name, open_mode from v$database; select instance_name, status from v$instance; exit
- 执行:sqlplus -S /nolog @/opt/scripts/health.sql
- 巡检脚本 /opt/scripts/health.sql
五 常见问题与排错
- 缺少依赖库:安装 libaio1(Debian 常见缺失项)
- 环境变量未生效:确认 LD_LIBRARY_PATH 包含 Instant Client 的 lib 目录,并执行 source 使配置生效
- 连接失败:核对 host/port/service、监听状态(lsnrctl status)、以及 tnsnames.ora 配置
- 权限与目录对象:使用 expdp 前需创建 DIRECTORY 并授予读写权限
- 备份文件安全:对导出的 DMP/GZ 文件进行 GPG 加密 与严格的文件系统权限控制,定期做还原验证
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian如何使用sqlplus进行数据库维护
本文地址: https://pptw.com/jishu/785834.html
