oracle 数据泵 imp,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/[email protected] file=/oracle/bak_oracle/emp_test.dmp tables="emp_test"

按条件进行选择性导出

exp scott/[email protected]: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/[email protected]: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

[email protected]

--杀掉进程 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/[email protected]:1521/orcl as sysdba‘ file=/oracle/bak_oracle/scott.dmp fromuser=scott touser=scott

注:touser=可以给不同的用户

3.导入导出表空间

---未完待续

扩展表空间

系统表空间会自动扩大,如果系统表空间莫名其妙的大

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值