一、数据库中指定备份数据expdp目录创建

/**切换linux用户,建立相应的备份目录*/Root user: su - rootmkdir -p /dmpbackup/dumpmkdir -p /dmpbackup/scriptschown -R oracle:oinstall /dmpbackupchmod -R 755 /dmpbackup/**切换Oracle用户,分配目录Oracle相应的权限*/Oracle user:su - oraclesqlplus / as sysdbaSQL> create or replace directory dump as '/dmpbackup/dump';#新建dump目录SQL> Grant read,write on directory dump to ahs2yy;#授权SQL> alter ahs2yy set deferred_segment_creation = FALSE;#延迟分配参数

二、设置自动备份脚本,并自动删除三天前的备份数据

/**切换Oracle用户,创建脚本文件*/su - oracle cd /dmpbackup/scriptsvi db_backup.sh/**db_backup.sh 文件内容为下面脚本*/#!/bin/bash # 设置环境变量export ORACLE_HOME=/home/app/oracle/product/11.2.0#根据实际情况设置export ORACLE_SID=ORCL#根据实际情况设置export PATH=$ORACLE_HOME/bin:$PATH # 配置备份目录和文件名BACKUP_DIR=/dmpbackup/dump#根据1设置的dump目录DATE=$(date +%Y%m%d)BACKUP_FILE="expdp_${ORACLE_SID}_${DATE}.dmp"BACKUP_LOG="expdp_${ORACLE_SID}_${DATE}.log" # 使用expdp进行备份 expdp lirui/LRtech2022 directory=dump dumpfile=${BACKUP_FILE} logfile=${BACKUP_LOG} # 删除3天前的备份find ${BACKUP_DIR} -type f -mtime +3 -name "expdp_${ORACLE_SID}_*.dmp" -exec rm {} \;find ${BACKUP_DIR} -type f -mtime +3 -name "expdp_${ORACLE_SID}_*.log" -exec rm {} \;/**db_backup.sh 对脚本进行授权*/chmod +x db_backup.sh/**设置定时任务*/crontab -e/**定时任务,每天凌晨1点执行脚本*/0 1 * * * /dmpbackup/scripts/db_backup.sh

三、impdp导入,数据库恢复

/**切换到Oracle用户*/su - oraclesqlplus / as sysdba/**查询用户表空间文件的路径,然后在此目录下创建新的表空间*/select name from v$datafile;/**查询用户临时表空间文件的路径,然后在此目录下创建新的临时表空间*/select name from v$tempfile;/**创建默认表空间,关键字说明:tablespace后面的名称随便取;COM_ZHX.dbf名称随便取,后缀必须是.dbf,目录必须已经存在,如果不存在,在执行语句之前需要手动创建;size 10000M:代表初始分配大小;autoextend on next 1000M :代表当空间不够时,一次分配多大的空间。datafile:表空间存储文件的路径,一般指在服务器上的存储路径*/CREATE SMALLFILE TABLESPACE ttdmpDATAFILE '/home/app/oracle/oradata/orcl11g/ttdmp.dbf' SIZE 1000M AUTOEXTEND ON NEXT 200M MAXSIZE unlimitedLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;/**创建临时表空间,关键字说明:tablespace后面的名称随便取;COM_ZHX_tmp.dbf名称随便取,后缀必须是.dbf,目录必须已经存在,如果不存在,在执行语句之前需要手动创建;size 2000M:代表初始分配大小;autoextend on next 500M :代表当空间不够时,一次分配多大的空间。datafile:表空间存储文件的路径,一般指在服务器上的存储路径*/CREATE TEMPORARY TABLESPACE ttdmp_tmp TEMPFILE '/alidata1/oracle/oradata/mdb/ttdmp_tmp.dbf' SIZE 500M autoextend on next 100M maxsize 8000M;/**创建用户并指定默认临时表空间,并给予用户相应的权限*/create user test111 identified by test123 default tablespace ttdmp temporary tablespace ttdmp_tmp;grant connect,resource,dba to test111;/**创建相应导入的dmp文件存储目录并赋权*/create or replacedirectorydmpdiras'/oradata';grant read ,write on directory dmpdir to test111;/**切换root用户,赋予读写权限,并授予Oracle访问权*/mkdir/oradatachmod -R 777 /oradatachown -R oracle:oinstall /oradata

四、导入数据

/**备份数据DMP新建立的文件夹*/cp /dmpbackup/dump/expdp_ORCL_20230816.dmp /oradata/**切换到Oracle用户,执行导入*/impdp test111/test123 directory=dmpdir dumpfile=expdp_ORCL_20230816.dmpremap_schema=lirui:test111;/**删除用户*/drop user test111 cascade;/**删除表空间*/drop tablespace COM_ZHX including contents and datafiles cascade constraints;

五、参考文章

1.expdp/impdp 数据泵导入导出

2.linux环境中Oracle数据库通过shell脚本实现数据泵expdp定期备份数据

3.oracle备份恢复—分享RMAN定时全备份和增备脚本(0+1)

4.dmp文件导入数据库服务器

5.oracle创建表空间和修改用户默认表空间

6.Oracle数据库创建用户、指定默认(创建)表空间、赋权限(dba、ETL必备)

7.【Oracle】数据库登陆错误:ORA-28000:the account is locked解决方法