标签 备份 下的文章

Oracle RMAN控制文件备份

进入RMAN界面

rman target /
 
RMAN>
修改控制文件备份方式为自动备份
RMAN > configure controlfile autobackup on;
查看控制文件备份是否为自动备份
RMAN > show controlfile autobackup;
查看控制文件自动备份路径
RMAN> show controlfile autobackup format;
修改控制文件自动备份路径
RMAN > configure controlfile autobackup format for device type disk to '/backup/orcl/%F';
注意%F是DBID+日期,可以用来识别时间及DBID

Oracle在非归档模式下RMAN的备份和恢复

1、Oracle数据库在非归档模式下的备份:

[oracle@dbnode1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on 星期三 8月 8 21:24:39 2018

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> archive log list;   #查看是否启用归档模式
Database log mode           No Archive Mode
Automatic archival           Disabled
Archive destination           /home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence     31004
Current log sequence           31006

登录到rman下:

[oracle@dbnode1 ~]$ rman target /   #登录rman

Recovery Manager: Release 11.2.0.3.0 - Production on 星期三 8月 8 21:29:02 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1351645873)
RMAN> shutdown immediate   #停掉数据库

using target database control file instead of recovery catalog
database closed
database dismounted
Oracle instance shut down
RMAN>startup mount    #启动并挂载数据库,但是不打开

connected to target database (not started)
Oracle instance started
database mounted

Total System Global Area   25120276480 bytes

Fixed Size                     2240016 bytes
Variable Size              19193135600 bytes
Database Buffers            5905580032 bytes
Redo Buffers                  19320832 bytes
开始全量备份
RMAN> run
2> {
3> allocate channel t1 type disk;
4>  backup database format '/bak/rmanbak/20180808/df_%t_%s_%p.bak';
5> }

allocated channel: t1
channel t1: SID=518 device type=DISK

Starting backup at 08-8月 -18
channel t1: starting full datafile backup set
channel t1: specifying datafile(s) in backup set
input datafile file number=00005 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/nnc_data01.dbf
input datafile file number=00003 name=/home/oracle/app/oracle/oradata/ORCL/undotbs01.dbf
input datafile file number=00010 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/nnc_index03.dbf
input datafile file number=00007 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/nnc_data03.dbf
input datafile file number=00008 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/nnc_index01.dbf
input datafile file number=00013 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/nnc_data01b.dbf
input datafile file number=00006 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/nnc_data02.dbf
input datafile file number=00001 name=/home/oracle/app/oracle/oradata/ORCL/system01.dbf
input datafile file number=00012 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/nnc_data01a.dbf
input datafile file number=00002 name=/home/oracle/app/oracle/oradata/ORCL/sysaux01.dbf
input datafile file number=00009 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/nnc_index02.dbf
input datafile file number=00011 name=/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/IUFO.dbf
input datafile file number=00004 name=/home/oracle/app/oracle/oradata/ORCL/users01.dbf
channel t1: starting piece 1 at 08-8月 -18
channel t1: finished piece 1 at 08-8月 -18
piece handle=/bak/rmanbak/20180808/df_983655480_2_1.bak tag=TAG20180808T213800 comment=NONE
channel t1: backup set complete, elapsed time: 00:18:16
channel t1: starting full datafile backup set
channel t1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel t1: starting piece 1 at 08-8月 -18
channel t1: finished piece 1 at 08-8月 -18
piece handle=/bak/rmanbak/20180808/df_983656576_3_1.bak tag=TAG20180808T213800 comment=NONE
channel t1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-8月 -18
released channel: t1
RMAN> alter database open;   #打开数据库

database opened

RMAN> 

2、非归档模式数据库恢复

RMAN> shutdown immediate    #停止数据库

database closed
database dismounted
Oracle instance shut down

RMAN> startup mount   #启动挂载数据库

connected to target database (not started)
Oracle instance started
database mounted

Total System Global Area 535662592 bytes

Fixed Size 1375792 bytes
Variable Size 411042256 bytes
Database Buffers 117440512 bytes
Redo Buffers 5804032 bytes

RMAN> restore database;    #恢复数据库

Starting restore at 03-NOV-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=133 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
channel ORA_DISK_1: restoring datafile 00002 to D:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
channel ORA_DISK_1: restoring datafile 00004 to D:\ORACLE\ORADATA\ORCL\USERS01.DBF
channel ORA_DISK_1: restoring datafile 00005 to D:\ORACLE\ORADATA\ORCL\TEST01.DBF channel ORA_DISK_1: restoring datafile 00006 to D:\ORACLE\ORADATA\ORCL\UNDOTBS02.DBF
channel ORA_DISK_1: reading from backup piece E:\RMAN_BAK\20111103\DF_766235030_5_1.BAK
channel ORA_DISK_1: piece handle=E:\RMAN_BAK\20111103\DF_766235030_5_1.BAK tag=TAG20111103T110349
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:35
Finished restore at 03-NOV-11

RMAN> recover database;   #恢复数据库

Starting recover at 03-NOV-18
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 3246 is already on disk as file D:\ORACLE\ORADATA\ORCL\REDO03.LOG archived log for thread 1 with sequence 3247 is already on disk as file D:\ORACLE\ORADATA\ORCL\REDO01.LOG
archived log file name=D:\ORACLE\ORADATA\ORCL\REDO03.LOG thread=1 sequence=3246
archived log file name=D:\ORACLE\ORADATA\ORCL\REDO01.LOG thread=1 sequence=3247
media recovery complete, elapsed time: 00:00:09
Finished recover at 03-NOV-18
打开数据库进行读/写操作时,会立即完成刚刚执行的还原。因此,先先在READ ONLY模式下打开数据库并查看某些数据,检查恢复操作是否符合预期结果。
RMAN> SQL 'ALTER DATABASE OPEN READ ONLY';
#如对恢复结果感到满意,则使用RESETLOGS选项打开数据库
RMAN> alter database open resetlogs;   

database opened

VIA: https://blog.csdn.net/rlhua/article/details/12346829

PostgreSQL备份与恢复

postgresql数据库的备份和还原命令pg_dump
单个库纯文本SQL格式的备份:

pg_dump -U postgres -d myDBname -f dump.sql

还原:

psql -U username -f filename dbname 

使用pg_dumpall备份:

pg_dumpall -U postgres > alldbs.pgsql

恢复所有数据库:

psql -f filename

备份和恢复单个表
备份:从一个名为mydb的数据库中备份mytable一个表。

pg_dump -U postgres -d mydb -t mytable > mydb-mytable.pgsql

还原:单表备份到数据库中还原。请确保您的备份文件包含要恢复唯一的单表备份。

psql -U postgres -d mydb 
pg_dump 把一个数据库转储为纯文本文件或者是其它格式.

用法:
  pg_dump [选项]... [数据库名字]

一般选项:
  -f, --file=FILENAME          输出文件或目录名
  -F, --format=c|d|t|p         输出文件格式 (定制, 目录, tar)
                               明文 (默认值))
  -j, --jobs=NUM               执行多个并行任务进行备份转储工作
  -v, --verbose                详细模式
  -V, --version                输出版本信息,然后退出
  -Z, --compress=0-9           被压缩格式的压缩级别
  --lock-wait-timeout=TIMEOUT  在等待表锁超时后操作失败
  -?, --help                   显示此帮助, 然后退出

控制输出内容选项:
  -a, --data-only              只转储数据,不包括模式
  -b, --blobs                  在转储中包括大对象
  -c, --clean                  在重新创建之前,先清除(删除)数据库对象
  -C, --create                 在转储中包括命令,以便创建数据库
  -E, --encoding=ENCODING      转储以ENCODING形式编码的数据
  -n, --schema=SCHEMA          只转储指定名称的模式
  -N, --exclude-schema=SCHEMA  不转储已命名的模式
  -o, --oids                   在转储中包括 OID
  -O, --no-owner               在明文格式中, 忽略恢复对象所属者

  -s, --schema-only            只转储模式, 不包括数据
  -S, --superuser=NAME         在明文格式中使用指定的超级用户名
  -t, --table=TABLE            只转储指定名称的表
  -T, --exclude-table=TABLE    不转储指定名称的表
  -x, --no-privileges          不要转储权限 (grant/revoke)
  --binary-upgrade             只能由升级工具使用
  --column-inserts             以带有列名的INSERT命令形式转储数据
  --disable-dollar-quoting     取消美元 (符号) 引号, 使用 SQL 标准引号
  --disable-triggers           在只恢复数据的过程中禁用触发器
  --enable-row-security        启用行安全性(只转储用户能够访问的内容)
  --exclude-table-data=TABLE   不转储指定名称的表中的数据
  --if-exists              当删除对象时使用IF EXISTS
  --inserts                    以INSERT命令,而不是COPY命令的形式转储数据
  --no-security-labels         不转储安全标签的分配
  --no-synchronized-snapshots  在并行工作集中不使用同步快照
  --no-tablespaces             不转储表空间分配信息
  --no-unlogged-table-data     不转储没有日志的表数据
  --quote-all-identifiers      所有标识符加引号,即使不是关键字
  --section=SECTION            备份命名的节 (数据前, 数据, 及 数据后)
  --serializable-deferrable   等到备份可以无异常运行
  --snapshot=SNAPSHOT          为转储使用给定的快照
  --strict-names               要求每个表和/或schema包括模式以匹配至少一个实体
  --use-set-session-authorization
                               使用 SESSION AUTHORIZATION 命令代替
  ALTER OWNER 命令来设置所有权

联接选项:
  -d, --dbname=DBNAME       对数据库 DBNAME备份
  -h, --host=主机名        数据库服务器的主机名或套接字目录
  -p, --port=端口号        数据库服务器的端口号
  -U, --username=名字      以指定的数据库用户联接
  -w, --no-password        永远不提示输入口令
  -W, --password           强制口令提示 (自动)
  --role=ROLENAME          在转储前运行SET ROLE

如果没有提供数据库名字, 那么使用 PGDATABASE 环境变量的数值.

Oracle使用exp完整备份脚本

目前使用的是exp完整备份,回头整理个expdp备份的,先导入oracle的环境变量,然后按时间导出dmp文件,最后压缩、删除,完整备份脚本如下:

#!/bin/sh
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=fuzhou
export ORACLE_OWNER=fuzhou
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export LANG=en_US.gbk
export NLS_LANG=american_america.ZHS16GBK
export PATH
D=$(date +%Y%m%d%H%M%S)
export D
echo ${D}'start backup'
cd /data/oracle_bak
exp plxxx/xxxxx@fuzhou file=/data/oracle_bak/plxxx_${D}.dmp log=/data/oracle_bak/plas_${D}.log grants=y ;
echo 'plxxx ok'
exp poxxx/xxxxx@fuzhou file=/data/oracle_bak/poxxx_${D}.dmp log=/data/oracle_bak/powerdesk_${D}.log full=y grants=y ;
end=$(date +%Y%m%d%H%M%S)
tar zcvf plxxx_${D}.tar.gz plas_${D}.dmp
tar zcvf poxxx_${D}.tar.gz powerdesk_${D}.dmpp
rm plxxx_${D}.dmp poxxx_${D}.dmp -rf
echo ${end}' powerdesk ok, backup end'

最后加入oracle用户定时任务:

10 01 * * * sh /data/oracle_bak/oracle_bak.sh >> /tmp/oracle_backup.log 2>&1
#每天凌晨1点10分开始备份

GTID备份恢复注意事项

MySQL工作在GTID模式做备份恢复的时候,有时需要恢复出来的 MySQL 实例可以作为从库连上原来的主库继续复制,这就要求从备份恢复出来的 MySQL 实例拥有和主数据库数据一致的 gtid_executed 值。这也是通过设置 gtid_purged实现的,下面看下 mysqldump 做备份的例子。

通过mysqldump在主库上做一个全量备份
这里使用 --all-databases选项是因为基于 GTID 的复制会记录全部的事务, 所以要构建一个完整的dump备份

/usr/local/mysql/bin/mysqldump --user=root --host=localhost --default-character-set=utf8 --socket=/data/mysql/mysql.sock -p'xxxxxx' --extended-insert=false  --all-databases --single-transaction  --triggers --routines --events > /tmp/alldatabase.sql

在备份的alldatabase.sql中有GTID_PURGED语句

SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;

--
-- GTID state at the beginning of the backup 
--

SET @@GLOBAL.GTID_PURGED='91a08937-7b0b-11e7-9575-52540061843d:1-6';

在slave上恢复前需要清空 gtid_executed 变量

reset master;        #清空gtid_executed
source /tmp/alldatabase.sql;  #导入备份

或者

mysql -h127.0.0.1 --user=root -pxxxxxx < /tmp/alldatabase.sql  #导入

此时恢复出的 MySQL 实例的 GTID_EXECUTED 和在主库备份时的一致:
可以直接进行主从同步了·

Oracle导出数据库 expdp命令参数详解

Oracle备份方式主要分为数据泵导出备份、热备份与冷备份三种,今天首先来实践一下数据泵备份与还原。数据泵导出/导入属于逻辑备份,热备份与冷备份都属于物理备份。oracle10g开始推出了数据泵(expdp/impdp),可以使用并行参数选项,因此,相对于传统的exp命令来说,执行效率更高。

---阅读剩余部分---

最新

分类

归档

评论

  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...
  • aliang: 默认不屏蔽估计开发团...
  • 山野愚人居: PHP既然允许直接使...
  • aliang: 最下面有github地址·

其它