Oracle:数据库的备份与恢复
逻辑备份与恢复
逻辑备份是指利用exp
命令进行备份,参数owner=(a,b);tables=(c,d),当参数中出现不存在变量时会出现警告,并自动跳过。恢复关键字imp
.
C:\Users\Administrator>exp scott/123456 file=C:\Users\Administrator\Desktop\a.dmp
Export: Release 11.2.0.1.0 - Production on 星期二 4月 14 13:50:58 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 SCOTT 的外部函数库名
. 导出 PUBLIC 类型同义词
. 正在导出专用类型同义词
. 正在导出用户 SCOTT 的对象类型定义
即将导出 SCOTT 的对象...
. 正在导出数据库链接
. 正在导出序号
. 正在导出簇定义
. 即将导出 SCOTT 的表通过常规路径...
. . 正在导出表 ACTIVITY导出了 5 行
.................
. 正在导出 post-schema 过程对象和操作
. 正在导出统计信息
成功终止导出, 没有出现警告。
C:\Users\Administrator>exp system/123456 owner=(scott,oracle) file=C:\Users\Administrator\Desktop\b.dmp
Export: Release 11.2.0.1.0 - Production on 星期二 4月 14 13:52:18 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的用户...
EXP-00010: ORACLE 是无效的用户名
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 SCOTT 的外部函数库名
. 导出 PUBLIC 类型同义词
. 正在导出专用类型同义词
. 正在导出用户 SCOTT 的对象类型定义
即将导出 SCOTT 的对象...
. 正在导出数据库链接
. 正在导出序号
. 正在导出簇定义
. 即将导出 SCOTT 的表通过常规路径...
......
. 正在导出统计信息
导出成功终止, 但出现警告。
C:\Users\Administrator>exp scott/123456 tables=(emp,dept) file=C:\Users\Administrator\Desktop\c.dmp
Export: Release 11.2.0.1.0 - Production on 星期二 4月 14 13:54:30 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径...
. . 正在导出表 EMP导出了 14 行
. . 正在导出表 DEPT导出了 4 行
成功终止导出, 没有出现警告。
C:\Users\Administrator>imp scott/123456 file=C:\Users\Administrator\Desktop\c.dmp
Import: Release 11.2.0.1.0 - Production on 星期二 4月 14 13:55:24 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
经由常规路径由 EXPORT:V11.02.00 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 SCOTT 的对象导入到 SCOTT
. 正在将 SCOTT 的对象导入到 SCOTT
IMP-00015: 由于对象已存在, 下列语句失败:
"CREATE TABLE "EMP" ("EMPNO" NUMBER(4, 0), "ENAME" VARCHAR2(10), "JOB" VARCH"
"AR2(9), "MGR" NUMBER(4, 0), "HIREDATE" DATE, "SAL" NUMBER(7, 2), "COMM" NUM"
"BER(7, 2), "DEPTNO" NUMBER(2, 0), "AGE" NUMBER) PCTFREE 10 PCTUSED 40 INIT"
"RANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 FREELIS"
"TS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) LOGGING NOCO"
"MPRESS"
IMP-00015: 由于对象已存在, 下列语句失败:
"CREATE TABLE "DEPT" ("DEPTNO" NUMBER(2, 0), "DNAME" VARCHAR2(14), "LOC" VAR"
"CHAR2(13)) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 6"
"5536 NEXT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DE"
"FAULT) LOGGING NOCOMPRESS"
成功终止导入, 但出现警告。
物理备份
常见术语
数据库的全备份:备份数据库的所有数据文件和控制文件,这也是最常用的备份方法。在数据全备份时,数据库可以处于关闭或者打开状态,但是在非归档模式下,数据库必须处于关闭状态
注:数据库运行非归档模式,即没有产生归档文件的情况下,Oracle无法保证在系统奔溃后所有提交的数据都能恢复。因为重做日志切换了一圈后提交的数据已经被覆盖。
Oracle默认就是运行在非归档模式下。
-- 获取数据库与归档相关的信息
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 467
当前日志序列 469
冷备份/恢复
冷备份是指在数据库关闭的状态下,备份所有的数据库文件,这些文件包括数据文件、所有控制文件、所有联机REDO LOG文件和Init.ora文件(可选)。
步骤:
(1)使用Oracle的数据字典或命令找到所有需要备份的文件:
使用v$contrilfile
找到所有的控制文件;
使用v$logfile
找到所有的重做日志文件;
使用dba_data_files
找到所有的数据文件,以及与表空间的对应关系;
使用v$tempfile
找到所有的数据文件,以及与临时表空间的对应关系
使用show parameter pfile
找到正文参数文件或二进制参数文件
(2)正常关闭数据库(shutdown immediate|transational|normal
)
(3)将所有的文件复制到备份硬盘或磁带上;
(4)重新启动数据库(startup
).
案例:最简单的备份
(1)首先以管理员身份登录数据库,并将数据库关闭
sqlplus / as sysdba;
shutdown normal
host copy 物理文件存放路径 新备份路径
恢复:只需要将备份的文件复制到原位置即可
重新启动数据库
sqlplus / as sysdba;
shutdown abort
startup;
运行反馈:
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 4月 14 14:22:40 2020
Copyright (c) 1982, 2010, Oracle. All rights reserved.
已连接。
SQL>
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 3307048960 bytes
Fixed Size 2180264 bytes
Variable Size 2382367576 bytes
Database Buffers 905969664 bytes
Redo Buffers 16531456 bytes
数据库装载完毕。
数据库已经打开。
热备份/恢复
热备份是指处于启动状态下的数据库进行备份。热备份要保证数据库运行于归档模式,然后备份表空间的数据文件,最后备份控制文件
--(1)在进行日志切换之前,必须将运行的数据库正常关闭。以管理员身份登录,并关闭数据库
conn / as sysdba;
shutdown immediate;
--(2)重新启动数据库实例,但是并不打开数据库。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 3307048960 bytes
Fixed Size 2180264 bytes
Variable Size 2382367576 bytes
Database Buffers 905969664 bytes
Redo Buffers 16531456 bytes
数据库装载完毕。
SQL> alter database archivelog
2 ;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 467
下一个存档日志序列 469
当前日志序列 469
SQL> alter tablespace users begin backup;
表空间已更改。
SQL> host copy F:\app\Administrator\oradata\orcl\USERS01.DBF F:\backup;
已复制 1 个文件。
SQL> alter tablespace users end backup;
表空间已更改。
SQL> alter database backup controlfile to 'F:\backup\orcl_backup' reuse;
数据库已更改。
SQL> alter database backup controlfile to trace;
数据库已更改。
-- F:\app\Administrator\product\11.2.0\dbhome_1\admin\sample\udump不知为什么没有生成新的控制文件的跟踪文件
--热备份结束
恢复:与备份过程比较类似。以表空间文件为例,删除原来的'F:\app\Administrator\oradata\orcl\USERS01.DBF',将备份的文件复制过去,
然后重新启动,会出现ORA-01113
和ORA-01110
错误。解决:做到介质同步
C:\Users\Administrator>sqlplus / as sysdba;
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 4月 14 15:46:29 2020
Copyright (c) 1982, 2010, Oracle. All rights reserved.
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 3307048960 bytes
Fixed Size 2180264 bytes
Variable Size 2382367576 bytes
Database Buffers 905969664 bytes
Redo Buffers 16531456 bytes
数据库装载完毕。
ORA-01113: 文件 4 需要介质恢复
ORA-01110: 数据文件 4: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF'
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 3307048960 bytes
Fixed Size 2180264 bytes
Variable Size 2382367576 bytes
Database Buffers 905969664 bytes
Redo Buffers 16531456 bytes
数据库装载完毕。
--该文件(F:\app\Administrator\oradata\orcl\USERS01.DBF)为备份文件,该操作用来同步控制文件中的标识与数据文件中的标识
SQL> recover datafile 'F:\app\Administrator\oradata\orcl\USERS01.DBF';
完成介质恢复。
--重启即可
SQL> alter database open;
数据库已更改。
===================================
参考:《21天学通Oracle》