千家信息网

IMP/EXP,数据泵,SQL*Loader ,rman,oracle数据库备份

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,IMP/EXP,数据泵,SQL*Loader ,rman数据库的逻辑备份和恢复:exp和imp1.导库:导出和导入整个数据库2.导表空间:导出和导入表空间3.导表用户:导出和导入用户中所有对象4.导表
千家信息网最后更新 2026年11月03日IMP/EXP,数据泵,SQL*Loader ,rman,oracle数据库备份

IMP/EXP,数据泵,SQL*Loader ,rman

数据库的逻辑备份和恢复:exp和imp
1.导库:导出和导入整个数据库
2.导表空间:导出和导入表空间
3.导表用户:导出和导入用户中所有对象
4.导表:导出和导入表或表分区

(1)commit=y 插入并提交,频繁提交会影响数据库效率。提交数据库过大时可以添加。
(2)ignore=y/n 该参数表示忽略创建错误,并继续执行。
(3)full=y 是否完全导入。

1.导出导入表
备份测试表:
create tables emp_test as select * from emp_test;

exp导出数据库表:
exp scott/123456@orcl file=/oracle/bak_oracle/emp_test.dmp tables="emp_test"
按条件进行选择性导出
exp scott/123456@10.1.1.10:1521/orcl file=/oracle/bak_oracle/emp_test.dmp tables="emp_test" query=\"where sal between '1000' and '2000'\" log=/oracle/bak_oracle/emp_test.log
用有权限用户导出不同用户的不同表
exp \'sys/syste as sysdba\' file=/oracle/bak_oracle/emp_test.dmp tables="scott.emp_test,test.tab_test"

注:oracle用户登录并且配置了TNSNAME可以直接scott/123456
不是本机备份scott/123456@10.1.1.10:1521/orcl

删除测试表
drop table emp_test ;
参数purge

imp导入数据库表:
查询该用户存放数据的缺省表空间:select username,default_tablespace from dba_users where username = 'SCOTT';
在特殊情况下有些用户的数据需要放到特殊的表空间中,使用如下的命令进行修改。
修改该用户存放数据的缺省表空间:alter user scott default tablespace XXX;
imp scott/123456 file=/oracle/bak_oracle/emp_test.dmp
用有权限用户导出不同用户的不同表导入到一个用户表中
imp \'sys/system as sysdba\' file=/oracle/bak_oracle/emp_test.dmp fromuser=scott;

查询表是否删除和导入成功
select count(*) from emp_test;

2.导出导入用户
导出一个用户下面的数据
exp scott/123456 file=/oracle/bak_oracle/scott.dmp owner=scott;
删除一个用户
SQL> drop user scott cascade;
drop user scott cascade
*
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected
(1)查看是否有SQL语句在占用这张表
select sess.INST_ID, sess.machine,
sess.program, sess.sql_id,
sess.sid, sess.serial#,
sess.PROCESS
lo.oracle_username, lo.os_user_name,
lo.locked_mode,
ao.object_name, ao.object_type,
ao.status,
from gv$locked_object lo, dba_objects ao, gv$session sess
where ao.object_id = lo.object_id
and lo.session_id = sess.sid
and sess.username = 'SCOTT'
--杀掉进程 sid,serial#
alter system kill session'10,11562';

(2)查看是否有会话没有结束
SQL> select username,sid,serial#,paddr,status from v$session where username='SCOTT';
USERNAME SID SERIAL# PADDR STATUS


SCOTT 1 281 000000008E51C510 KILLED
SCOTT 20 362 000000008E491150 INACTIVE
SCOTT 21 175 000000008E48D050 INACTIVE
SCOTT 28 169 000000008E51C510 KILLED

SQL> select PROGRAM from v$process where addr='000000008E490110';
PROGRAM
oracle@master.example.com

--杀掉进程 sid,serial#
alter system kill session '1,281';
alter system kill session '20,362';
alter system kill session '21,175';
alter system kill session '28,169';
SQL> drop user scott cascade;
User dropped.
导入一个用户下面的数据
先授权(连接数据库和DBA的权限)再导入(用户SCOTT下面的所有表)
grant connect,resource to scott identified by 123456;
grant dba to scott;
imp scott/123456 file=/oracle/bak_oracle/scott.dmp full=y;

用有权限的用户导入表给用户
imp 'sys/system@10.1.1.10:1521/orcl as sysdba' file=/oracle/bak_oracle/scott.dmp fromuser=scott touser=scott
注:touser=可以给不同的用户

3.导入导出表空间

---未完待续

需要备份的数据量大时建议选择数据泵
数据库的逻辑备份和恢复:expdp和impdp
数据泵只能在数据库的服务器端使用
在服务器上面创建目录,用于导入导出时存放数据
create directory DATA_BAK as '/oracle';
为目录授权用户读和写的权限
grant read,write on directory DATA_BAK to TEST;
查看目录和拥有者、路径
select * from dba_directories


expdp 用户名/密码@IP/网络服务名 schemas=用户名 directory=创建的目录 dumpfile=数据表名.dmp logfile=数据表名.log
expdp test/test@10.1.1.10:1521/orcl schemas='TEST' directory='DATA_BAK' dumpfile=/oracle/xxx.dmp logfile=/oracle/xxx.log
schemas:用户名,directory:创建的存放数据的目录,dumpfile:将要导出的数据库备份dmp文件,logfile:存放导出日志文件,compression:导出时对文件进行压缩


用脚本文件导出数据库文件:
[oracle@master oracle]$ cat aa.par
userid=" test/test"
#userid=" / as sysdba" 用dba导出
directory=DATA_BAK
dumpfile=emp_test2.dmp
logfile=emp_test2.log
#parallel=5
compression=all
#nologfile=no
schemas=test
job_name=emp_test2_expdp
使用命令调用:
nohup expdp parfile=aa.par &

用命令导出数据库文件:
expdp test/test@10.1.1.10/orcl directory=DATA_BAK dumpfile=emp_test2.dmp logfile=emp_test2.log schemas=test

数据泵导入数据库语句:
impdp test/test@10.1.1.10:1521/orcl REMAP_SCHEMA = test:test table_exists_action = replace directory=DATA_BAK dumpfile=emp_test2.dmp logfile=emp_test2.log

数据库的批量导入:SQL*Loader
连接用户
查看表结构


控制文件:
[oracle@master oracle]$ cat EMP_LOADERTEST2.ctl
LOAD DATA
INFILE '/oracle/EMP_LOADERTEST2.ctl '
TRUNCATE INTO TABLE EMP_LOADERTEST2
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(EMPNO,ENAME,JOB)
数据文件:
[oracle@master oracle]$ cat EMP_LOADERTEST2.dat
11,a1,1,11,22,33,44,55
11,a2,2,11,22,33,44,55
11,a3,2,11,22,33,44,55
11,a4,3,11,22,33,44,55
导入时,数据文件中的数据,需要和控制文件中相对应
需要导入的表中的字段类型需要一致
sqlldr test/test control=/oracle/EMP_LOADERTEST2.ctl data=EMP_LOADERTEST2.dat

产生了sqlldr的日志文件

查看日志文件中数据库导入的情况


检查表中是否有数据

扩展表空间

系统表空间会自动扩大,如果系统表空间莫名其妙的大
1.查询审计功能是否开着,审计表内数据大影响的
查看审计功能是否打开
show parameter audit;
2.关闭审计功能命令
SQL> alter system set audit_sys_operations=FALSE scope=spfile;
System altered.
SQL> alter system set audit_trail=NONE scope=spfile;
System altered.
重启数据库生效

注:audit_sys_operations的参数设置:
none 禁用数据库审计
os 启用数据库审计,并将数据库审计记录定向到操作系统审计记录
db 启用数据库审计,并将数据库所有审计记录定向到数据库的SYS.AUD$表
xml 启用数据库审计,并将所有记录写到XML格式的操作系统文件中。
xml,extended 启用数据库审计,输出审计记录的所有列,包括SqlText和SqlBind的值。

3.查询统计信息是否过多
统计信息时间默认为31天,时间可以修改为10天或一周,过期的统计信息系统自动删除
SQL> select dbms_stats.get_stats_history_retention from dual;
SQL> conn / as sysdba
Connected.
SQL> exec dbms_stats.alter_stats_history_retention(10);

数据 数据库 用户 文件 审计 空间 备份 不同 权限 目录 系统 命令 查询 信息 功能 参数 日志 用户名 面的 并将 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 疫情对互联网科技公司影响 互联网科技有限公司图片 互联网科技公司发展 浩特互联网科技 蓝色互联网科技 华中科技有哪些互联网大佬 温州喔噻互联网科技有限公司 互联网科技项目计划书材料类 受益于互联网科技的高速发展 银川新华互联网科技学校联系电话 深圳艾果互联网通讯科技 四川慕妮娅互联网科技有限公司 长沙互联网科技 国大互联网教育科技有限公司薪资 互联网金融科技公司的优势 上海钢联属于互联网科技股吗 互联网硬科技公司 互联网公司属于科技吗 北京天晋互联网科技有限公司 互联网科技海报 河南云网互联网络科技有限公司 互联网科技活动banner 重庆科技学院互联网 恒生科技互联网指数分析 科技互联网大厂 阿里互联网科技企业 科技互联网海报 三亚科技创新互联网基地 北京瑞云互联网科技有限公司
0