關於Oracle 9i匯入/匯出效果的測試報告

jackson198574發表於2013-12-13
測試目的:

  確定在資料庫匯入、匯出過程中資料(尤其是BLOB型別資料)是否能正常訪問和使用。

 

測試環境:

源資料庫:Oracle 9i on windows 2003 32bit

目的資料庫:Oracle 9i on Red Hat Linux 4 32bit

 

測試思路:

將源資料庫整庫匯出,然後分使用者匯入資料,其中,資料中包括有BLOB型別的資料。匯入完成之後檢視資料是否能訪問,BLOB欄位中的圖片是否可讀。

 

測試步驟:

1.建立基礎環境:

確保資料庫和系統能正常使用。

Windows資料庫中建立測試使用者TOM和表空間TOM

 

----------------建立使用者表空間-----------------

create tablespace TOM

datafile '/opt/ora10g/oradata/jssbook/jssbook/TOM01.dbf'

size 50 M

extent management local

uniform size 1M;

-----------------建立使用者-------------------------

create user TOM

identified  by jackson

default tablespace TOM

account unlock

profile default

 

--------------確定使用者建立成功--------------------

select * from dba_users where username = 'TOM'

 

 

-----TOM登陸執行如下命令!------

select  * from user_objects

 

create table test1 as select * from user_objects;

 

create table testblob (id int,photo blob);

 

commit;

 

Linux中建立對應的使用者和表空間。但不插入資料。

2.testblob表中插入圖片,方法如下:

a,linux oracle 使用者建一個資料夾,從windows client傳幾個圖片過去,(資料夾許可權讀寫,owner oracle)

b,規範檔名,小心有重名被替換而丟失

[oracle@test imgs]$ ls

11.gif  12.gif  19.gif  1.gif  31.gif  8.gif

[oracle@test imgs]$ i=100;for img in *.gif;do ((i++)); mv "$img" ${i}.gif;done

[oracle@test imgs]$ ls

101.gif  102.gif  103.gif  104.gif  105.gif  106.gif

c,匯入資料庫

SQL> conn TOM/password

Connected.

SQL> create table testblob(id int,photo blob);

 

Table created.

 

SQL> create or replace directory imgpath as C:\imgs';

create or replace directory imgpath as 'C:\imgs'

*

ERROR at line 1:

ORA-01031: insufficient privileges

 

SQL> conn system/password

Connected.

SQL> create or replace directory imgpath as 'C:\imgs';

 

Directory created.

SQL> grant read,write on directory imgpath to TOM;

 

Grant succeeded.

 

SQL> conn TOM/password

Connected.

 

SQL> declare

  2  l_blob blob;

  3  l_bfile bfile;

  4  begin

  5  for i in 101..106 loop

  6  insert into testimg(id,photo)

  7  values(1,empty_blob())

  8  returning photo into l_blob;

  9  l_bfile :=bfilename('IMGPATH',i||'.gif');

 10  dbms_lob.fileopen(l_bfile);

 11  dbms_lob.loadfromfile(l_blob,l_bfile,dbms_lob.getlength(l_bfile));

 12  dbms_lob.fileclose(l_bfile);

 13  end loop;

 14  commit;

 15  end;

 16  /

 

PL/SQL procedure successfully completed.

 

SQL> select id,dbms_lob.getlength(photo) blen from testblob;

 

        ID       BLEN

---------- ----------

         1        700

         1       6371

         1        699

         1        552

         1        493

         1        659

 

6 rows selected.

 

 

3.整庫匯出源資料庫:

exp  system/password full=y  file=FULL20120604.dmp  log=FULL20120604_exp.log  buffer=20480000

透過作業系統命令將exp出來的dmp檔案複製到目的資料庫中。

4.按照使用者匯入資料:

imp  system/password  fromuser=TOM   touser=TOM  file= FULL20120604.dmp  log= FULL20120604_imp.log

5.驗證資料完整性和可用性:

select * from test1;

select * from testblob;

可以看到圖片和資料都存在。

(由於源資料庫和目的資料庫的使用者和表空間都一樣,所以筆者截圖意義不大)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20802110/viewspace-1063169/,如需轉載,請註明出處,否則將追究法律責任。

相關文章