Oracle exp備份在表空間傳輸中的四個項目
Oracle exp備份在表空間傳輸中,你一定要注意在表空間傳輸?shù)膶?shí)際操作中要有四個項目是最值得你去注意的,以下的文章就是針對這四個項目進(jìn)行一個詳細(xì)的描述,如果你對Oracle exp備份在表空間傳輸?shù)膶?shí)際操作感興趣的話,不防一看。
Oracle exp備份在表空間傳輸
建議:10g以上使用,但我試了在9i沒有找到相對應(yīng)的檢查表空是否傳輸?shù)恼Z句,10g 支持跨平臺的表空間傳輸
注意:
l.索引在待傳輸表空間集中而表卻不在。(注意,如果表在待傳輸表空間集中,而索引不在并不違反自包含原則,當(dāng)然如果你堅持這樣傳輸?shù)脑挘瑫斐赡繕?biāo)庫中該表索引丟失)。
2.分區(qū)表中只有部分分區(qū)在待傳輸表空間集(對于分區(qū)表,要么全部包含在待傳輸表空間集中,要么全不包含)。
3.待傳輸表空間中,對于引用完整性約束,如果約束指向的表不在待傳輸表空間集,則違反自包含約束;但如果不傳輸該約束,則與約束指向無關(guān)。
4.對于包含LOB列的表,如果表在待傳輸表空間集中,而Lob列不在,也是違反自包含原則的。
a.查看表空間包含那些XML文件
select distinct p.tablespace_name
from dba_tablespaces p, dba_xml_tables x, dba_users u, all_all_tables t
where t.table_name = x.table_name
and t.tablespace_name = p.tablespace_name
and x.owner = u.username
b.檢測一個表空間是否符合傳輸標(biāo)準(zhǔn)的方法:
SQL > exec sys.dbms_tts.transport_set_check('tablespace_name',true);
SQL > select * from sys.transport_set_violations;
c.簡要使用步驟
1.設(shè)置表空間為只讀(假定表空間名字為APP_Data 和APP_Index)
SQL > alter tablespace app_data read only;
SQL > alter tablespace app_index read only;
2.發(fā)出EXP 命令
SQL> host exp userid='''sys/password as sysdba''' transport_tablespace=y
tablespaces=(app_data, app_index)
以上需要注意的是:(或則參考我自己寫的 表空間導(dǎo)入和導(dǎo)出例題)
·為了在SQL中執(zhí)行 EXP,USERID 必須用三個引號,在UNIX 中也必須注意避免"/"的使用
·在816 和以后,必須使用sysdba 才能操作
· 這個命令在SQL中必須放置在一行(這里是因?yàn)轱@示問題放在了兩行)
3.拷貝.dbf數(shù)據(jù)文件(以及.dmp 文件)到另一個地點(diǎn),即目標(biāo)數(shù)據(jù)庫可以是cp(unix)或copy(windows)或通過ftp 傳輸文件(一定要在bin方式)
4. 把本地的表空間設(shè)置為讀寫
$ alter tablespace app_data read write;
$ alter tablespace app_index read write;
5.在目標(biāo)數(shù)據(jù)庫附加該數(shù)據(jù)文件 (直接指定數(shù)據(jù)文件名)
(表空間不能存在,必須建立相應(yīng)用戶名或者用fromuser/touser)
$ imp file=expdat.dmp userid=”””sys/password as sysdba”””
transport_tablespace=y datafiles=(“c:\app_data.dbf,c:\app_index.dbf”)
tablespaces=app_data,app_index tts_owners=hr,oe
6.設(shè)置目標(biāo)數(shù)據(jù)庫表空間為讀寫
$ alter tablespace app_data read write;
$ alter tablespace app_index read write;
以上就是對Oracle exp備份在表空間傳輸相關(guān)的內(nèi)容的介紹,望你會有所收獲。
【編輯推薦】