Oracle數據庫驗證IMP導入元數據是否會覆蓋歷史表數據


場景: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

此時導入的只是表結構、觸發器、過程、函數等這些對象,
最后驗證下是否覆蓋上一步已導入的表數據?
最終結論是沒有覆蓋已導入的表數據,之前未導入的過程、函數、觸發器也都成功導入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM