场景:imp导入数据时,最终触发器报错退出,并未导入存储过程、触发器、函数。

现在exp单独导出元数据,然后imp导入元数据,验证是否会影响已导入的表数据。

测试环境:CentOS 6.7 + Oracle 11.2.0.4

构造实验环境:

1.导出scott用户的表和数据

导出scott用户的表和数据,此时并没有触发器、过程、函数这些对象:
```
exp scott/tiger OWNER=scott BUFFER=10240000 STATISTICS=none RESUMABLE=y FILE=scott_exp.dmp LOG=scott_exp.log
```

2.scott用户创建过程、函数、触发器

scott用户创建过程:
```
create or replace procedure pro_insert_dept is
begin
insert into dept values (99, 'xx_dept_name', 'Beijing');
end;
/
```
scott用户创建函数:
```
create or replace function sp_fun1(spName varchar2) return number is
yearSal number(7, 2);
begin
select sal * 12 + nvl(comm, 0) * 12 into yearSal from emp where ename = spName; return yearSal;
end;
/
```
scott用户触发器:
```
--创建序列
CREATE SEQUENCE seq_del_id;

--创建表

CREATE TABLE emp_del_info(

autoid number primary key,

deptno number,

empno number,

ename varchar2(20),

del_rq date);

--创建触发器

CREATE OR REPLACE TRIGGER trg_del_emp_info

BEFORE DELETE

ON emp

FOR EACH ROW

DECLARE

-- local variables here

BEGIN

INSERT INTO emp_del_info(autoid,deptno,empno,ename,del_rq)

VALUES(seq_del_id.NEXTVAL,:OLD.deptno,:OLD.empno,:OLD.ename,sysdate);

END;

/

<h1 id="3">3.导出scott元数据</h1>
导出scott元数据:

exp scott/tiger OWNER=scott ROWS=n BUFFER=10240000 STATISTICS=none RESUMABLE=y FILE=scott_metadata_exp.dmp LOG=scott_metadata_exp.log

此时导出的元数据,是有触发器、过程、函数这些对象的。
<h1 id="4">4.删除scott用户</h1>确认没有scott用户登录的session:

select 'alter system kill session '''||sid||','||serial#||''''||';' from v$session where username='SCOTT';

如果上述查询有结果,那么直接把查出的结果复制执行即可kill掉scott用户登录的session。

删除scott用户:

SQL> drop user scott cascade;

User dropped.

<h1 id="5">5.导入scott表和数据</h1>
先创建用户并赋权:

SQL> create user scott identified by tiger default tablespace users;

User created.

SQL> grant connect, resource to scott;

Grant succeeded.

导入表和数据:

imp scott/tiger BUFFER=10240000 RESUMABLE=y FILE=scott_exp.dmp LOG=imp_scott_exp.log IGNORE=y FULL=y

此时导入的只是表和表数据,没有触发器、过程、函数这些对象。
<h1 id="6">6.导入Scott元数据</h1>

imp scott/tiger BUFFER=10240000 RESUMABLE=y FILE=scott_metadata_exp.dmp LOG=imp_scott_metadata_exp.log IGNORE=y FULL=y

此时导入的只是表结构、触发器、过程、函数等这些对象,
最后验证下是否覆盖上一步已导入的表数据?
最终结论是没有覆盖已导入的表数据,之前未导入的过程、函数、触发器也都成功导入。

最新文章

  1. datagrid界面,链接数据库读取数据
  2. 【POJ 2653】Pick-up sticks 判断线段相交
  3. Eclipse程序员要掌握的常用快捷键
  4. axure rp extension的下载
  5. java.lang.Runtime类总结 【转】
  6. hdu 1849 Rabbit and Grass 博弈论
  7. 横竖屏事件响应(viewWillLayoutSubviews和通知)两种方式
  8. LINQ 多条件写法
  9. extjs中rowEditing动态编辑
  10. IOS 设备信息读取
  11. SQLite学习手册(目录)
  12. kali nessus 安装插件失败解决方法
  13. UI设计规范
  14. CMDB服务器管理系统【s5day91】:数据库表结构补充
  15. python全栈开发 * css 选择器 浮动 * 180808
  16. Windows7下Jupyter Notebook使用入门
  17. js 中数字与字符串之间的转换
  18. C++ static 静态变量&amp;静态成员函数
  19. html中用href 实现点击链接弹出文件下载对话框
  20. WCF服务寄宿Windows

热门文章

  1. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
  2. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
  3. Shell替换
  4. iframe用法
  5. Spring之初体验
  6. bzoj3208--记忆化搜索
  7. Flyweight(享元模式)
  8. GOF23设计模式归类
  9. __Block与__Weak区别
  10. WINDOWS系统下MYSQL安装过程中的注意事项