Oracle对表进行备份
前言:
在实际开发中,我们常常需要对单张或多张表进行备份,以下博主就从这两个方面进行总结。如需转载,请标明来处,谢谢!
在备份前我们先创建表盒相关测试的数据
-- Create table
create table TBLUSER
(
id NUMBER(8) not null,
username VARCHAR2(100) not null,
sex VARCHAR2(2) default '男',
age NUMBER(3),
companyaddress VARCHAR2(1000),
homeaddress VARCHAR2(1000),
phone VARCHAR2(40),
tel VARCHAR2(40),
remark VARCHAR2(4000),
usercode VARCHAR2(40)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Add comments to the table
comment on table TBLUSER
is '用户表';
-- Add comments to the columns
comment on column TBLUSER.id
is '自动增长列';
comment on column TBLUSER.username
is '用户名';
comment on column TBLUSER.sex
is '性别';
comment on column TBLUSER.age
is '年龄';
comment on column TBLUSER.companyaddress
is '公司地址';
comment on column TBLUSER.homeaddress
is '家庭地址';
comment on column TBLUSER.phone
is '电话';
comment on column TBLUSER.tel
is '座机';
comment on column TBLUSER.remark
is '备注';
comment on column TBLUSER.usercode
is '用户代码';
-- Create/Recreate primary, unique and foreign key constraints
alter table TBLUSER
add primary key (ID)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
); --插入数据
insert into tbluser (ID, USERNAME, SEX, AGE, COMPANYADDRESS, HOMEADDRESS, PHONE, TEL, REMARK, USERCODE)
values (10003, '小明', '男', 24, '武汉xxx有限责任公司', '湖北省武汉市', '176xxxxxxx5', '027-001', null, 'XM001'); insert into tbluser (ID, USERNAME, SEX, AGE, COMPANYADDRESS, HOMEADDRESS, PHONE, TEL, REMARK, USERCODE)
values (10004, '小王', '男', 19, '武汉xxx有限责任公司', '湖北省武汉市', '176xxxxxxx5', '027-001', null, 'XW001'); insert into tbluser (ID, USERNAME, SEX, AGE, COMPANYADDRESS, HOMEADDRESS, PHONE, TEL, REMARK, USERCODE)
values (10005, '小红', '女', 20, '深圳xxx有限责任公司', '深圳市宝安区', '176xxxxxxx5', '075-001', null, 'XH001'); insert into tbluser (ID, USERNAME, SEX, AGE, COMPANYADDRESS, HOMEADDRESS, PHONE, TEL, REMARK, USERCODE)
values (10007, '小蓝', '男', 24, '武汉xxx有限责任公司', '湖北省武汉市', '176xxxxxxx5', '027-001', null, 'XL001'); insert into tbluser (ID, USERNAME, SEX, AGE, COMPANYADDRESS, HOMEADDRESS, PHONE, TEL, REMARK, USERCODE)
values (10009, '小芳', '女', 30, '长沙xxx有限责任公司', '湖南省长沙市', '123xxxxxxx5', '027-001', null, 'XF001'); insert into tbluser (ID, USERNAME, SEX, AGE, COMPANYADDRESS, HOMEADDRESS, PHONE, TEL, REMARK, USERCODE)
values (10011, '小黄', '男', 20, '武汉xxx有限责任公司', '湖北省武汉市', '176xxxxxxx5', '027-001', null, 'XH001'); insert into tbluser (ID, USERNAME, SEX, AGE, COMPANYADDRESS, HOMEADDRESS, PHONE, TEL, REMARK, USERCODE)
values (10013, '小琴', '男', 18, '北京xxx有限责任公司', '北京市西旗xxx', '176xxxxxxx5', '027-001', null, 'XQ001'); insert into tbluser (ID, USERNAME, SEX, AGE, COMPANYADDRESS, HOMEADDRESS, PHONE, TEL, REMARK, USERCODE)
values (10014, '小陈', '男', 19, '武汉xxx有限责任公司', '上海市xxx', '176xxxxxxx5', '027-001', null, 'XC001');
单张表的备份
--备份tbluser的数据到tbluser_bak中
create table tbluser_bak as select * from tbluser; --此处不加as也行
此处需要注意的是,此备份表通过对比SQL语句可以看出只备份了表的结构和数据,另外备份前,tbluser_bak不能在表中存在
--备份完后的tbluser_bakSQL语句
-- Create table
create table TBLUSER_BAK
(
id NUMBER(8),
username VARCHAR2(100) not null,
sex VARCHAR2(2),
age NUMBER(3),
companyaddress VARCHAR2(1000),
homeaddress VARCHAR2(1000),
phone VARCHAR2(40),
tel VARCHAR2(40),
remark VARCHAR2(4000),
usercode VARCHAR2(40)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
单张表数据恢复
方法一:此种方式是当原表结构存在,且新旧表的表结构一致的情况下,仅仅备份数据【同字段仅数据】
--删除备份表的数据
truncate table tbluser_bak; --还原表数据
insert into tbluser_bak select * from tbluser ; --查看数据是否恢复
select * from tbluser_bak;
查询结果如下

方法二:此种方式是当原表结构存在,但新旧表的字段不一致的情况下,仅仅备份指定字段的数据【不同的字段仅数据】
--删除备份表的数据
truncate table tbluser_bak; --修改表结构(删除表tbluser_bak中所有字段,把username,usercode改成uname,ucode) --还原表数据
insert into tbluser_bak(uname,ucode) select t.username,t.usercode from tbluser t ; --查询数据是否恢复
select * from tbluser_bak;
查询结果如下

多张表的备份
创建测试表及数据:
-- Create table
create table TBLSTUDENT
(
sno VARCHAR2(3) not null,
sname VARCHAR2(4) not null,
ssex VARCHAR2(2) not null,
sbirthday DATE,
class VARCHAR2(5)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
); --插入数据
insert into tblstudent (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
values ('', '曾华', '男', to_date('24-02-2011', 'dd-mm-yyyy'), ''); insert into tblstudent (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
values ('', '匡明', '男', to_date('02-10-1975', 'dd-mm-yyyy'), ''); insert into tblstudent (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
values ('', '王丽', '女', to_date('23-01-1976', 'dd-mm-yyyy'), ''); insert into tblstudent (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
values ('', '李军', '男', to_date('20-02-1976', 'dd-mm-yyyy'), ''); insert into tblstudent (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
values ('', '王芳', '女', to_date('20-02-1976', 'dd-mm-yyyy'), ''); insert into tblstudent (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
values ('', '陆君', '男', to_date('03-06-1974', 'dd-mm-yyyy'), '');
备份:多张表的备份可以用命令导出表(备份)到dmp文件中
操作方法:windows+r 在出现的运行窗口中直接输入以下命令进行备份
--exp [用户名]/[密码] tables=[表一],[表二] file=xxx\table.dmp
exp test/111111 tables=tbluser,tblstudent file=C:\Users\HUANG\Desktop\test\20200221.dmp --或者 exp test/test@orat file=C:\Users\HUANG\Desktop\test\20200221.dmp tables=(tb1,tb2,tb3,...)
exp test/111111@orat file=C:\Users\HUANG\Desktop\test\20200221.dmp tables=(tbluser,tblstudent)
其中:
“test/111111”是用户名和密码;“orat”是“网络服务名”。
file=c:\xx.dmp:是保存到本地的全文件路径。
tables=(tb1,tb2,tb3,...):“(tb1,tb2,tb3,...)”是你选择需要备份的那些表的名称。
因为,备份的时候一般都写一个日志备份文档,以方便以后查找,所以,原语句可以改写成
exp test/111111@orat file=C:\Users\HUANG\Desktop\test\20200221.dmp tables=(tbluser,tblstudent) log=C:\Users\HUANG\Desktop\test\20200221.text
导出结果如图所示

还原:windows+r 在出现的运行窗口中直接输入以下命令进行还原
imp test/111111@orat grants=y commit=y full=y ignore=y file=C:\Users\HUANG\Desktop\test\20200221.dmp log=C:\Users\HUANG\Desktop\test\20200221.text
--log后面表示记录日志,也可以只导数据不记录
还原前数据:


还原后数据


20200221.txt日志文件如下
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1. - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 经由常规路径由 EXPORT:V11.02.00 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 TEST 的对象导入到 TEST
. 正在将 TEST 的对象导入到 TEST
. . 正在导入表 "TBLUSER"导入了 行
. . 正在导入表 "TBLSTUDENT"导入了 行
成功终止导入, 没有出现警告。
Oracle对表进行备份的更多相关文章
- Oracle数据库的备份方法
1.引言 Oracle数据库的备份方法很多,无论使用那种备份方法,备份的目的都是为了在出现故障后能够以尽可能小的时间和代价恢复系统.比如使用export实用程序导出数据库对象.使用Oracle备份数据 ...
- Oracle DataGuard数据备份方案详解
Oracle DataGuard是一种数据库级别的HA方案,最主要功能是冗灾.数据保护.故障恢复等. 在生产数据库的"事务一致性"时,使用生产库的物理全备份(或物理COPY)创建备 ...
- [原创]Oracle 12c的备份和恢复策略
Oracle 12c的备份和恢复策略(RMAN备份[开启归档/控制文件/数据文件/归档日志]): 备份策略: * 每半年做一个数据库的全备份(包括所有的数据和只读表空间) * 每周做一次零级备份 * ...
- Oracle简单的备份和恢复-导出和导入(1)
ylbtech-Oracle:Oracle简单的备份和恢复-导出和导入(1) Oracle简单的备份和恢复-导出和导入 1. 用户导出自己的表(emp,dept)返回顶部 1.1, 我们启动Oracl ...
- Oracle简单的备份和恢复-导出和导入(2)
ylbtech-Oracle:Oracle简单的备份和恢复-导出和导入(2) 简单的备份和恢复-导出和导入(2) 1. 用户导入导出文件中的一张表(emp)返回顶部 0.1, 我们在sql plus中 ...
- Oracle简单的备份和恢复-导入和导出-目录
ylbtech-Oracle:Oracle简单的备份和恢复-导入和导出-目录 Oracle安全运行离不开良好的备份和恢复机制,因为我们不是DBA.所以我们也就不过多的讲解DBA的备份和恢复.作为程序员 ...
- Oracle之RMAN备份恢复1-基础篇
1,rman的作用与体系架构 1.1 什么是rman rman(recovery manager)是oracle8i以后dba的一重要工具一般位于$oracle_home/bin目录下,主要用来备份, ...
- Oracle Rman 增量备份与差异备份
一.增量与差异 关于Incremental增量备份级别: Oracle 9i 共有五种级别 0 1 2 3 4,0级最高-4级最低,0级是1级的基础以此类推. Oracle 10g官方文档明确指出增量 ...
- oracle 数据库数据备份
oracle 数据库数据备份 1.使用oracle用户应该就可以进行数据备份(不需要root用户):su oracle 查oracle实例名:echo $ORACLE_SID 例如查出来的 ...
随机推荐
- Jmeter系列(29)- 详解 JDBC Connection Configuration
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 发起 jdbc 请求前,需要有 ...
- python脚本中调用其他脚本
如果只关注脚本中调用他脚本直接看代码30行 PS:该脚本功能有:自动清理目录,创建目录,自动运行脚本,以此提升工作效率 import numpy as np import os from shutil ...
- 深入理解JVM(③)虚拟机的类加载器(双亲委派模型)
前言 先解释一下什么是类加载器,通过一个类的全限定名来获取描述该类的二进制字节流,在虚拟机中实现这个动作的代码被称为"类加载器(Class Loader)". 类与类加载器 类加载 ...
- org.hibernate.LazyInitializationException异常解决办法
org.hibernate.LazyInitializationException异常failed to lazily initialize a collection...的解决方案使用hiberna ...
- FRP+WoL实现远程开机+远程桌面
FRP+WoL实现远程开机+远程桌面 故事背景 这是一个很复杂而且很久远的故事,如果要讲的话,这个故事可以追溯到1981年(「都是废话,没有干货,如果不感兴趣请从第二章开始」),简单来说: 1981年 ...
- 看看有哪些 Web 攻击技术.
一.前言 HTTP 协议具有无状态.不连接.尽最大努力的特点,对于 Web 网站的攻击基本也是针对 HTTP 协议的这些特点进行的.比如无状态的特点,就要求开发者需要自行设计开发"认证&qu ...
- 二.3.token认证,jwt认证,前端框架
一.token: 铺垫: 之前用的是通过最基本的用户名密码登录我的运维平台http://127.0.0.1:8000/---这种用的是form表单,但是这种对于前后端分离的不适合.前后端分离,应该通过 ...
- SqueezeNet/SqueezeNext简述 | 轻量级网络
SqueezeNet系列是比较早期且经典的轻量级网络,SqueezeNet使用Fire模块进行参数压缩,而SqueezeNext则在此基础上加入分离卷积进行改进.虽然SqueezeNet系列不如Mob ...
- 【XJOI】NOIP2020模拟训练题2 总结
得分情况: 估分: 30(T1)+100(T2)+0(T3)=130; 实际: 30(T1)+60(T2)+10(T3)=100; QAQ 是我高看自己了 T1 友好数对: 题意: 如果一个 ...
- css3实现背景颜色渐变,文字颜色渐变,边框颜色渐变
css3的渐变可以使用2个或者多个指定的颜色之间显示平稳的过渡的效果.这篇文章主要介绍下css3实现背景颜色渐变,文字颜色渐变,边框颜色渐变的方法,以便大家学习参考! 1.css背景颜色渐变 代码: ...