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

首頁 > 數據庫 > Oracle > 正文

移動Oracle的表空間

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

  如何移動Oracle數據庫的表空間
  
   在使用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中搬移表空間時,源表空間中存放的所有數據對象的所有者在目標數據庫中必須存在,假如不存在,則應在導入表空間之前建立相應的用戶,然后再導入表空間。 right">(出處:清風軟件下載學院)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 社旗县| 修水县| 调兵山市| 砚山县| 南华县| 安福县| 凌云县| 平乐县| 休宁县| 澄城县| 秭归县| 阿巴嘎旗| 航空| 南澳县| 灯塔市| 石渠县| 司法| 中方县| 河池市| 新源县| 苏尼特右旗| 新泰市| 安福县| 天津市| 长白| 伊宁市| 郓城县| 射阳县| 台湾省| 托里县| 余江县| 紫金县| 寿宁县| 富蕴县| 株洲县| 曲水县| 墨江| 丽江市| 中宁县| 凤庆县| 湘潭市|