ORACLE备份和恢复

<1>逻辑备份
不用去拷贝数据库的物理文件
备份逻辑上的结构
外部的工具:导出和导入的工具
DOS下的命令 cmd下执行
导出exp export缩写形式

查看帮助 exp help=y

使用参数文件导出
exp parfile=c:\abc.par
>>>abc.par的内容
a)scott用户连接导出自己的所有对象
userid=scott/tiger --连接的用户scott
file=c:\a1.dmp --导出的文件的名字a1.dmp
--导出了scott用户的所有对象

b)用system连接来导出scott下的所有对象
exp parfile=c:\sys.par
>>>>sys.par的内容
userid=system/manager
file=c:\b1.dmp
owner=(scott) --导出scott用户的所有对象
导出多个用户的数据
建立一个测试用户 test

grant connect,resource
to test identified by t123;

alter user test
default tablespace users
temporary tablespace temp;

create table student(
stu_id number(4) primary key,
stu_name varchar2(20),
stu_score number(2)
);
insert into student values (1000,
'Mike',95);
insert into student values (1001,
'John',90);

导出scott和test下的所有对象????
>>>userid=system/manager
file=c:\st.dmp
owner=(scott,test)

导出scott下的emp,dept表????
>>>userid=system/manager
file=c:\st.dmp
tables=(scott.emp,scott.dept,test.student)

导出整个数据库(备份整个数据库)
必须用超级用户 system ,sys
exp system/manager file=c:\system.dmp full=y feedback=1000
或者
exp parfile=c:\sys.par
>>>sys.par
userid=system/manager
file=c:\system.dmp
full=y

比较全的一个导出的参数文件
>>>sys.par
userid=system/manager
file=c:\aa.dmp
buffer=1024000 --缓冲
rows=y --是否导出记录
compress=y --extent是否压缩
grants=y --grant语句是否导出
indexes=y --导出索引
full=y --全库导出
feedback=3 --显示导出进度每3行

导出表scott.dept中部门编号是40的记录
>>>sys.par
userid=system/manager
file=c:\sys.dmp
tables=(scott.emp)
query="where deptno=10"

导出表scott.emp中的记录
>>>sys.par
userid=system/manager
file=c:\sys.dmp
tables=(scott.emp)
feedback=3 --每3行记录显示一个点进度

如何把导出的数据导入到数据库中进行恢复??
imp import缩写形式
dos命令
imp help=y 查看帮助

<1>把scott下的表emp导出 ,
然后删除表中的内容(truncate table emp),
利用导出的文件来恢复??
a)导出
exp parfile=c:\sys.par
>>> sys.par
userid=system/manager
file=c:\emp.dmp
tables=(scott.emp)

b)删除
truncate table emp; --删数据
或者
drop table emp; --删除结构

( delete from emp; --删数据可以恢复)

c)恢复
imp prafile=c:\im.par;
>>>im.par
userid=system/manager
file=c:\emp.dmp
fromuser=scott --从哪个用户来恢复
show=y --显示导入文件中的SQL语句

<2>scott下的对象全部复制到test用户下
(克隆用户scott)
a)导出scott用户
exp parfile=c:\sys.par
>>>sys.par
userid=system/manager
file=c:\scott.dmp
owner=(scott)

b)导入scott.dmp文件中的内容到test用户下
imp parfile=c:\im.par
>>>im.par
userid=system/manager
file=c:\scott.dmp
fromuser=scott
touser=test

<3>scott用户导出数据后
用户scott被删除了
怎么来恢复??????
a)导出scott用户
exp parfile=c:\sys.par
>>>sys.par
userid=system/manager
file=c:\scott.dmp
owner=(scott)

b)删除scott用户
drop user scott cascade;


c)恢复
先建立用户scott
grant connect,resource to scott
identified by tiger;

alter user scott
default tablespace users
temporary tablespace temp;

然后导入
imp parfile=c:\im.par
>>im.par
userid=system/manager
file=c:\scott.dmp
fromuser=scott

<4>如何进行全库导入
imp system/manager
file=c:\all.dmp full=y ignore=y
full ---全库
ignore ---忽略导入过程中的错误

如何建立一个新的数据库 ?????
使用DATABASE CONFIGURATION ASSISTANT

备份的第二种模式 物理备份
拷贝数据文件
数据文件 + 归档日志文件 = 整个数据库
在数据库不关闭的情况下备份(热备份)
<1>数据库可以关闭的物理备份(冷备份)
a)关闭数据库
b)拷贝数据文件
c)打开数据库
数据库工作在归档和非归档模式都可以
a)关闭数据库
connect system/manager

shutdown immediate;

b)拷贝文件
数据文件 v$DATAFILE
控制文件 v$controlfile
日志文件 v$
临时数据文件


c)打开数据库
startup;

写一个脚本文件 执行上述功能
cold_back.txt

如何用冷备份来恢复数据库
用备份的文件来覆盖原来的文件,就OK

<2>数据库不能关闭的情况下作热备份
(24x7运行的系统)
a)设置数据库工作在归档模式下
b)备份表空间
c)作一次日志切换 (把在热备份过程中产生的数据写到归档日志中)
d)备份归档日志文件

--数据库有哪些表空间
select tablespace_name from dba_tablespaces
where status <> 'READ ONLY';
--每个表空间对应的数据文件
select file_name from dba_data_files
where tablespace_name='SYSTEM';

--要拷贝SYSTEM表空间所对应的数据文件
--使表空间system处于热备份状态
alter tablespace system begin backup;
--拷数据文件
host copy D:\ORACLE\ORADATA\ACCP\SYSTEM01.DBF c:\backup
--关闭热备份状态
alter tablespace system end backup;

--
recover database;

--数据库损坏的情况下来恢复
recover database datafile 4;
恢复第4个数据文件

优质内容筛选与推荐>>
1、git bash 中文乱码
2、代码审计 phpcmsv9 url模式
3、数据的偏度和峰度——df.skew()、df.kurt()
4、Linux运维工程师必备的十个技能点
5、imageView简单的动画


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号