国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

如何移動Oracle數據庫的表空間

2024-08-29 13:38:04
字體:
來源:轉載
供稿:網友

  在使用Oracle數據庫的過程中,經常會碰到將數據庫中的數據從一個數據庫移動到另一個數據庫的情況,假如移動的數據量不是太大,我們可以使用EXPORT/IMPORT將數據進行導出/導入。但假如需要搬移的數據量非常龐大,則用這種方法進行數據移動非常緩慢。 在Oracle8i版本中,提供了可以對表空間進行移動的方法,通過搬移表空間可大大降低數據遷移的速度,提高工作效率。
  對表空間進行移動時應注重以下幾點:(1)源數據庫和目標數據庫必須在相同硬件平臺上。例如我們可以在Sun Solaris平臺的Oracle數據庫之間搬移表空間,也可以在windows 2000平臺的Oracle數據庫之間搬移表空間,但是不能在Sun Solaris/Windows 2000之間搬移表空間。(2)源數據庫和目標數據庫的字符集和民族字符集必須相同。(3)不能將表空間搬移到具有同名表空間的目標數據庫中。(4)在Oracle8i之間搬移表空間時,源數據庫和目標數據庫的數據塊尺寸一定要相同。
  
  下面我們以Oracle8i(8.1.5) for Windows 2000為例說明移動表空間的具體方法。
  
  一、檢查要移動的表空間
  當搬移表空間時,假如被搬移表空間中的數據沒有和其它表空間中的數據有參照關系,則可直接對此表空間進行搬移;假如被搬移表空間中的數據與其它表空間中的數據有參照關系,那么在移動表空間時,凡與被移動表空間有參照關的表空間也應進行搬移,否則移動到目的地的表空間中的數據是不完整的。例如表空間local包含了表A1,而表空間local2包含了表A1的索引IDX_A1,此時假如要搬移表空間local,則也應同時搬移表空間local2,此時我們稱表空間local、local2為自包含的。在進行表空間搬移之前,可以用下列方法查看被搬移的表空間是否為自包含表空間。
  
  SQL>execute dbms_tts.transport_set_check(ts_list=>'local',
  incl_constraints=>TRUE);
  
  參數ts_list用于指定要搬移的表空間,incl_constraints用于指定是否檢查完整性約束。
  
  執行完過程dbms_tts.transport_set_check之后,系統將違反自包含表空間的信息存入臨時表transport_set_violations。查詢該表時,假如沒有返回任何信息,說明表空間是自包含的,否則會返回非自含表空間的原因,見下圖:
  
   如何移動Oracle數據庫的表空間
  
  二、導出表空間信息
  為保持數據文件的一致性,在導出自包含表空間數據字典信息之前,應首先將自包含表空間轉變為只讀狀態,作用是使表空間信息不會發生變化。
  
  SQL>alter tablespace local read only;
  
  SQL>alter tablespace local2 read only;
  
  將表空間設置為只讀關態時,會在表空間數據文件上發出檢查點,并且其內容不會發生任何變化,此時就可以導出表空間信息了。導出表空間僅僅是導出與其相關的數據字典信息,而不是導出表空間的任何數據,使用如下操作系統命令可導出表空間local和local2的信息。
  
  D:/>EXP transport_tablespace=y tablespaces=local,local2 file=
  
  expdat.dmp
  
  用戶名:internal/oracle@test as sysdba
  
  參數:transport_tablespace搬移表空間選項,Y表示導出表空間信息;tablespaces用于指定要導出的表空間;file用于指定存放導出信息的文件。
  
  導出表空間信息之后,使用操作系統命令將表空間數據文件和導出文件(expdat.dmp)復制到目標數據庫所在機器相應的目錄中。
  
  三、導入表空間
  在將表空間數據文件和導出文件復制到目標數據庫所在機器之后,就可以將表空間信息導入到目標數據庫中了。導入自包含表空間實際是將數據字典信息從導出文件裝載到目標數據中,如表空間名稱、表空間所對應數據文件以及數據對象名稱等。具體的操作系統命令如下:
  
  D:/>IMP transport_tablespace=y datafiles= 'd:/localdb/local1.dbf'
  
  ,'d:/localdb/local2.dbf’
  
  用戶名:internal/oracle@test as sysdba
  
  當執行完上述命令之后,會將表空間local和local2及其所包含的所有數據對象信息導入到目標數據庫中。
  
  注重:在Oracle8.1.5中搬移表空間時,源表空間中存放的所有數據對象的所有者在目標數據庫中必須存在,假如不存在,則應在導入表空間之前建立相應的用戶,然后再導入表空間。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绵竹市| 临清市| 盈江县| 永福县| 乌鲁木齐县| 会昌县| 文山县| 资溪县| 景洪市| 株洲县| 赫章县| 裕民县| 交口县| 陆川县| 禹州市| 阿瓦提县| 东辽县| 肇庆市| 齐河县| 本溪市| 成都市| 婺源县| 敦煌市| 嘉祥县| 五台县| 临颍县| 荥经县| 太和县| 彭山县| 关岭| 黄山市| 凌源市| 河曲县| 临泽县| 富民县| 普格县| 金昌市| 平顺县| 松滋市| 尼玛县| 昌图县|