SQLPlus本身不直接执行物理备份(如复制数据文件),但可通过内置命令调用Oracle数据泵工具expdp实现逻辑备份,适用于跨数据库迁移或选择性恢复。
以具有DBA权限的用户(如sys)登录:
sqlplus sys/密码@数据库服务名 as sysdba
在数据库中创建用于存储备份文件的逻辑目录(需对应操作系统实际路径):
CREATE DIRECTORY backup_dir AS '/path/to/backup/directory';
确保备份用户对目录有读写权限(如为用户scott授权):
GRANT READ, WRITE ON DIRECTORY backup_dir TO scott;
通过SQLPlus执行expdp命令,支持多种备份粒度:
FULL=Y,仅SYSDBA可执行):HOST expdp sys/密码@数据库服务名 DIRECTORY=backup_dir DUMPFILE=full_backup.dmp LOGFILE=full_backup.log FULL=Y
HOST expdp scott/密码@数据库服务名 DIRECTORY=backup_dir DUMPFILE=scott_backup.dmp LOGFILE=scott_backup.log OWNER=scott
HOST expdp scott/密码@数据库服务名 DIRECTORY=backup_dir DUMPFILE=table_backup.dmp LOGFILE=table_backup.log TABLES=(emp, dept)
注:
HOST是SQLPlus中调用操作系统命令的关键字,用于执行expdp。
逻辑恢复是将逻辑备份文件(.dmp)导入数据库的过程,适用于误删除对象、跨数据库迁移等场景。
以具有DBA权限的用户登录:
sqlplus sys/密码@数据库服务名 as sysdba
若备份目录与原环境不同,需创建新的逻辑目录:
CREATE DIRECTORY restore_dir AS '/path/to/restore/directory';
GRANT READ, WRITE ON DIRECTORY restore_dir TO 目标用户;
通过SQLPlus执行impdp命令,支持多种恢复场景:
FULL=Y,仅SYSDBA可执行):HOST impdp sys/密码@数据库服务名 DIRECTORY=restore_dir DUMPFILE=full_backup.dmp LOGFILE=full_restore.log FULL=Y
HOST impdp scott/密码@数据库服务名 DIRECTORY=restore_dir DUMPFILE=scott_backup.dmp LOGFILE=scott_restore.log FROMUSER=scott TOUSER=scott_new
IGNORE=Y):HOST impdp scott/密码@数据库服务名 DIRECTORY=restore_dir DUMPFILE=table_backup.dmp LOGFILE=table_restore.log TABLES=(emp) IGNORE=Y
注:
IGNORE=Y用于忽略表已存在的错误,适用于表结构变更后的恢复。
若需更高级的物理备份(如数据文件、控制文件),需使用Oracle Recovery Manager(RMAN)。SQLPlus可作为入口启动RMAN,但具体备份/恢复命令需在RMAN中执行:
rman target sys/密码@数据库服务名
BACKUP DATABASE PLUS ARCHIVELOG; -- 备份数据文件+归档日志
BACKUP CURRENT CONTROLFILE; -- 备份控制文件
RESTORE DATABASE; -- 恢复数据文件
RECOVER DATABASE; -- 应用归档日志
ALTER DATABASE OPEN; -- 打开数据库
注:物理备份是Oracle推荐的备份方式,支持增量备份、压缩等功能,适用于生产环境。
SYSDBA权限)。expdp.log、impdp.log),及时排查错误。