CentOS下postgres怎么恢复数据库.bak文件_有关ORACLE数据库备份的总结

使用EXP、IMP进行数据库备份

  • 特点
exp、imp主要针对数据表的数据导入,导出,其原理是讲数据库转化为SQL语句后导出,在导入时,重新执行SQL语句,从而实现数据库还原的效果。
- 缺点:
1. 数据量较大时,速度慢。
2. 需要保证导入前,数据表清空,否则重复数据导入会报错。
  • 参数说明

导出:

exp
[ USERID=name/passwd] 用户名密码相关信息
[ BUFFER=xx byte] 数据缓冲区大小
[ File=输出文件全路径] 导出的文件输出路径
[ TABLES=需要导出的表名,表名间已 ' , ' 分隔] 导出的数据表
[ COMPRESS=Y/N 导入到一个区]
[ RECORDLENGTH=xx] IO记录的长度,单位byte
[ INDEXES=Y/N] 导出索引
[ DIRECT=Y/N] 直接路径
[ LOG=日志文件路径] 屏幕输出的日志文件
[ ROWS=Y/N] 是否导出数据行,默认为Y,若为N,则只导出表结构
[ CONSISTENT=Y/N] 交叉表的一致性
[ FILESIZE=xx byte] 每个转储文件的最大大小,当导出的文件大小超过该值时,会生产新的文件。 [QUERY="where 条件语句" ] 用户导出表的子集的select子句,用于导出部分数据,该参数在 Windows、Linux下是不同的。Linux下需要添加''转义符。 [CONSTRAINTS=Y/N ] 是否导出约束条件 [GRANTS=Y/N ] 是否导出授权信息 [STATISTICS=NONE/COMPUTE/ESTIMATE ] 分析对象

导入:

imp
参数与EXP类似,
[ USERID]
[ BUFFER]
[ FROMUSER=用户列表] 所有者用户列表
[ TOUSER=用户列表] 导入的目标用户列表,与fromuser相对应
[ FILE=输入文件的路径信息]
[ TABLES=导入的表名信息]
[ IGNORE=Y/N] 是否忽略错误信息,若忽略,则无论导入的数据库是否有重复数据都会将数据导入,且无错误信息。
[ COMMIT=Y/N] 提交数组插入。默认为N,表示导完一张表后就进行提交;若设为Y,则表示,只有当缓冲区数据满时,才会提交,建议为Y,这样可以减少回滚段大小。
[ GRANTS=Y/N] 是否导入权限信息
[ STATISTICS=ALWAYS/NONE/SAFE/RECALCULATE] 统计信息,统计导入过程的相关信息
[ INDEXES=Y/N] 导出索引
[ RECORDLENGTH=xx] IO记录的长度,单位byte
[ ROWS=Y/N] 是否导入数据行,默认为Y,若为N,则只导入表结构 [CONSTRAINTS=Y/N ] 是否导入约束条件
  • 语句案例
exp scott/scott file=/home/oracle/work/emp_exp_imp.dmp buffer=100000 tables=table1,table2 compress=N indexes=N direct=N rows=Y grants=Y consistent=N constraints=Y log=/home/oracle/work/emp_exp_imp.log query="where EMPNO > 7600"
imp scott/scottpwd@mydb file=/data/test.dmp.tmp buffer=100000 fromuser=user1 touser=user1 commit=Y tables=(etl_test_0,etl_test_1) ignore=Y indexes=N rows=Y grants=Y constraints=Y log=/data/imp.log
  • 参考链接
Oracle的Export用法 - toughhou - 博客园​www.cnblogs.com Oracle import命令使用浅解​www.360doc.com
6a117e0b3265d755abf427bfa060d329.png

手工备份

  • 查看备份文件路径信息
# 查询数据文件位置信息 SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/oracledb/system01.dbf
/u01/app/oracle/oradata/oracledb/sysaux01.dbf
/u01/app/oracle/oradata/oracledb/undotbs01.dbf
/u01/app/oracle/oradata/oracledb/users01.dbf
/u01/app/oracle/oradata/oracledb/example01.dbf # 查询日志文件位置信息 SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/oracledb/redo03.log
/u01/app/oracle/oradata/oracledb/redo02.log
/u01/app/oracle/oradata/oracledb/redo01.log # 查询控制文件位置信息 SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/oracledb/control01.ctl
/u01/app/oracle/flash_recovery_area/oracledb/control02.ctl # 查询spfile文件位置 SQL> select value from v$parameter where name='spfile';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/product/11.2.0/db_1/dbs/spfileoracledb.ora
  • 新建备份文件压缩脚本
# 在linux 下新建文档 'backup_db.sh',如下脚本内容,该脚本是无法正常执行的,需要去除每行最后的换行符:在第一行最后添加多个空格后,将鼠标移至第一行最后,在vi 默认模式下,按 shift + j,将会一次去除行尾的换行符 tar -zcvf db_cold_bak.tar /u01/app/oracle/oradata/oracledb/system01.dbf /u01/app/oracle/oradata/oracledb/sysaux01.dbf /u01/app/oracle/oradata/oracledb/undotbs01.dbf /u01/app/oracle/oradata/oracledb/users01.dbf /u01/app/oracle/oradata/oracledb/example01.dbf /u01/app/oracle/oradata/oracledb/redo03.log /u01/app/oracle/oradata/oracledb/redo02.log /u01/app/oracle/oradata/oracledb/redo01.log /u01/app/oracle/oradata/oracledb/control01.ctl /u01/app/oracle/flash_recovery_area/oracledb/control02.ctl /u01/app/oracle/product/11.2.0/db_1/dbs/spfileoracledb.ora
  • 开始备份
# 备份前需要关闭数据库 SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
--------------------------------------------------------------------------------- # 之后只要执行脚本 backup_db.sh 即可,便会在当前目录下,生成相关数据库的备份压缩文件 sh backup_db.sh
--------------------------------------------------------------------------------- # 之后若要还原数据库,只需要将压缩文件解压后,还原至对应位置即可,需要保证文件的所属者等信息不要发生变动

归档模式下的手动备份、恢复

  • 归档模式
oracle数据库存在联机重做日志,该日志负责记录数据库的相关增、删、改、查操作记录,一般情况下会有两个以上的日志记录任务相互切换记录,若开启归档模式,则每个日志进程记录满载后会将数据归档到本地文件,否则,记录将会被遗弃。
而重做记录的作用主要用于数据还原。若无该日志记录,则数据库是能还原到上次备份的数据库。
  • 归档模式开启
sqlplus登录状态下: SQL > archive log list; #查看当前备份日志信息
Database log mode No Archive Mode #代表当前没有开启归档模式
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 28
Current log sequence 30 -------------------------------------------- # 关闭数据库 SQL > shutdown immediate;
Datebase closed.
Database dismounted.
ORACLE instance shut down. # 将数据库重启到mount阶段: SQL > startup mount;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 553651280 bytes
Database Buffers 276824064 bytes
Redo Buffers 2371584 bytes
Database mounted. # 开启归档和闪回模式 SQL > alter database archivelog;
Database altered. SQL > alter database flashback on;
Database altered. # 开启数据库 SQL > alter database open;
  • 如何进行手动备份还原
SQL > alter tablesspace USERS(具体表空间名) begin backup;
# 可查看表空间对应的备份文件信息 SQL > select file_id,file_name from dba_data_files where tablespace_name=USERS(表空间名); # 备份后,去对应的目录下拷贝文件至其他目录下 ,用于下次还原 SQL > !cp 具体文件路径 备份文件目录; # 结束备份操作 SQL > alter tablesspace USERS(具体表空间名) end backup; -------------------------------------------------------------------- # 还原操作 # 先将需要还原的表空间进行下线操作 SQL > alter tablespace USERS(具体表空间名) offline immediate; # 将备份文件拷贝并覆盖到对应表空间数据存放目录下 SQL > !cp 备份文件路径 表空间数据存放路径; # 进行数据恢复 SQL > recover tablespace USERS(具体表空间名); # 将表空间上线 SQL > alter tablespace USERS(具体表空间名) online;

使用RMAN进行备份

  • 什么是RMAN
用于备份(backup)、还原(restore)和恢复(recover)数据库的 ORACLE 工具。
  • 如何进入RMAN
# 通过命令行登录RMAN, [oracle@ctos6 ~ ] rman target / # 等价于 rman target sys/密码@数据库名
  • RMAN相关参数说明
RMAN> show all;
RMAN configuration parameters for database with db_unique_name ORACLEDB are: # 备份文件的保存策略,包括:'基于冗余的保存策略'、'基于恢复窗口的保存策略'
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;
# RMAN的备份自动优化是否开启
CONFIGURE BACKUP OPTIMIZATION ON;
# 备份文件的存储类型,默认是DISK
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
# 控制文件是否自动备份
CONFIGURE CONTROLFILE AUTOBACKUP ON;
# 控制文件自动备份后命名格式设置
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
# 磁盘备份并行度设置
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
# 备份设备为磁盘时,数据文件默认的备份数量为1
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
# 备份设备为磁盘时,归档日志文件的默认备份数量为1
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
# 备份集文件的大小,默认为无限
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
# 备份文件是否加密
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
# 备份文件的加密算法
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
# 是否启用备份压缩
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
# 归档日志的删除策略
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
# 生成控制文件快照时,该快照文件存放的位置及名称
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_oracledb.f'; # default
  • 如何使用RMAN进行备份利用RMAN备份数据文件
# 查看数据文件信息,查看相关表空间对应文件编号 SQL> select file#, name from v$datafile;
FILE# NAME
----- --------------------------------------------------
1 /u01/app/oracle/oradata/oracledb/system01.dbf
2 /u01/app/oracle/oradata/oracledb/sysaux01.dbf
3 /u01/app/oracle/oradata/oracledb/undotbs01.dbf
4 /u01/app/oracle/oradata/oracledb/users01.dbf
5 /u01/app/oracle/oradata/oracledb/example01.dbf RMAN> backup datafile 1,2,3,4,5;
Starting backup at 30-APR-19
using channel ORA_DISK_1
skipping datafile 5; already backed up 1 time(s)
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set # 需要保存的文件
input datafile file number=00001 name=/u01/app/oracle/oradata/oracledb/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/oracledb/sysaux01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/oracledb/undotbs01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/oracledb/users01.dbf
channel ORA_DISK_1: starting piece 1 at 30-APR-19
channel ORA_DISK_1: finished piece 1 at 30-APR-19 # 数据文件备份后的输出路径 piece handle=/u01/app/oracle/flash_recovery_area/ORACLEDB/backupset/2019_04_30/o1_mf_nnndf_TAG20190430T023148_gdhtynfp_.bkp tag=TAG20190430T023148 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
Finished backup at 30-APR-19 # 会自动备份控制文件和 spfile 类型文件
Starting Control File and SPFILE Autobackup at 30-APR-19 # 备份文件的保存路径,是在闪存区并且以日期为文件夹保存 piece handle=/u01/app/oracle/flash_recovery_area/ORACLEDB/autobackup/2019_04_30/o1_mf_s_1006914733_gdhtzg5o_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 30-APR-19
  • 备份表空间
RMAN> backup tablespace system, sysaux, users;
  • 备份控制文件
RMAN> backup current controlfile;
  • 备份 spfile
RMAN> backup spfile;
  • 备份归档日志
RMAN> backup archivelog all;
  • 备份数据库中的所有数据文件
RMAN> backup database;
  • 备份所有数据文件信息
RMAN> backup database plus archivelog;
  • 备份文件的维护和检查
# 检查已有备份文件信息 RMAN> list backup summary;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
9 B A A DISK 30-APR-19 1 1 NO TAG20190430T033732
10 B F A DISK 30-APR-19 1 1 NO TAG20190430T033739
11 B A A DISK 30-APR-19 1 1 NO TAG20190430T033815
12 B F A DISK 30-APR-19 1 1 NO TAG20190430T045748 # 查看哪些copy方式的备份文件 RMAN> list copy; # 查看归档日志备份文件 RMAN> list archivelog all. # 交叉检测备份文件是否是否可用 RMAN> crosscheck backup; # 列出过期的备份文件 RMAN> list expired backup; # 删除过期的备份文件 RMAN> delete noprompt expired backup;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值