linux环境下Oracle数据库通过shell脚本实现数据泵expdp定期备份数据,并impdp导入恢复数据库

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

/**切换linux用户,建立相应的备份目录*/
Root user:
 
su - root

mkdir -p /dmpbackup/dump
mkdir -p /dmpbackup/scripts

chown -R oracle:oinstall /dmpbackup
chmod -R 755 /dmpbackup

/**切换Oracle用户,分配目录Oracle相应的权限*/
Oracle user:
su - oracle
sqlplus / as sysdba

SQL> 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/scripts

vi 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 - oracle

sqlplus / 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 ttdmp
DATAFILE '/home/app/oracle/oradata/orcl11g/ttdmp.dbf' SIZE 1000M AUTOEXTEND ON NEXT 200M MAXSIZE unlimited
LOGGING 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 replace  directory  dmpdir  as  '/oradata';

grant read ,write on directory dmpdir to test111;


/**切换root用户,赋予读写权限,并授予Oracle访问权*/

mkdir    /oradata
chmod -R 777 /oradata

chown -R oracle:oinstall /oradata

四、导入数据

/**备份数据DMP新建立的文件夹*/

cp /dmpbackup/dump/expdp_ORCL_20230816.dmp /oradata

/**切换到Oracle用户,执行导入*/

impdp test111/test123 directory=dmpdir dumpfile=expdp_ORCL_20230816.dmp  remap_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解决方法

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库提供了expdpimpdp命令用于备份恢复数据库。这两个命令的使用方式如下: 1. expdp命令 expdp命令用于备份Oracle数据库,它能够将某个schema或整个数据库导出到一个二进制文件中。具体命令格式如下: ``` expdp username/password@connect_string DIRECTORY=directory_name DUMPFILE=dumpfile_name.dmp SCHEMAS=schema_name ``` 其中: - `username/password@connect_string`:指定连接Oracle数据库的用户名、密码和连接字符串。 - `DIRECTORY=directory_name`:指定备份文件的目录。 - `DUMPFILE=dumpfile_name.dmp`:指定备份文件的名称。 - `SCHEMAS=schema_name`:指定要备份的schema名称,多个schema可以用逗号分隔。 执行命令后,Oracle数据库会将指定的schema或整个数据库导出到一个二进制文件中。 2. impdp命令 impdp命令用于恢复Oracle数据库,它能够将之前导出的二进制文件导入数据库中。具体命令格式如下: ``` impdp username/password@connect_string DIRECTORY=directory_name DUMPFILE=dumpfile_name.dmp SCHEMAS=schema_name ``` 其中: - `username/password@connect_string`:指定连接Oracle数据库的用户名、密码和连接字符串。 - `DIRECTORY=directory_name`:指定备份文件所在的目录。 - `DUMPFILE=dumpfile_name.dmp`:指定备份文件的名称。 - `SCHEMAS=schema_name`:指定要恢复的schema名称,多个schema可以用逗号分隔。 执行命令后,Oracle数据库会将指定的schema或整个数据库备份文件中恢复出来。 需要注意的是,expdpimpdp命令需要在Oracle数据库服务器上执行,而不是在客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值