資源描述:
《Oracle LOB字段移動》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、ORACLE修改表空間方法一、使用imp/exp。先導(dǎo)出源庫,再創(chuàng)建新庫把表空間創(chuàng)建好,然后再導(dǎo)入。(據(jù)說這樣可以,前提是新的庫里面不能有與源庫相同名字的表空間。有待驗(yàn)證?。┒?、使用腳本進(jìn)行修改。據(jù)目前所了解,正常情況下需要修改表的空間和表的索引的空間,如果涉及到BOLB字段的表,修改的方式又不一樣了!正常情況下的修改腳本:1.修改表的空間altertableTABLE_NAMEmovetablespaceTABLESPACENAME查詢當(dāng)前用戶下的所有表select'altertable'
2、
3、table_name
4、
5、'movetablespacetablespacename;'f
6、romuser_all_tables;2.修改表的索引的空間alterindexINDEX_NAMErebuildtablespaceTABLESPACENAME查詢當(dāng)前用戶下的所有索引select'alterindex'
7、
8、index_name
9、
10、'rebuildtablespacetablespacename;'fromuser_indexes;可以使用腳本執(zhí)行查詢的結(jié)果,這樣就可以批量處理!SQLScript:1.查看表空間管理類型2.selecttablespace_name,block_size,extent_management,segment_space_manage
11、ment,min_extentsfromdba_tablespaces;3..將數(shù)據(jù)字典管理轉(zhuǎn)變?yōu)楸镜毓芾?.executedbms_space_admin.tablespace_migrate_to_local(‘tbsdata’);5.4.將本地管理轉(zhuǎn)變?yōu)閿?shù)據(jù)字典管理6.executedbms_space_admin.tablespace_migrate_from_local(‘tbsdata’);不正常情況即含有BLOB字段的表:在移植看注意研究了下ORACLEALTERTABLEMOVE的語法:ALTERTABLEtable_nameMOVE[ONLINE]tablespa
12、ce_name;通過上面的語句可以移植表到新表空間,如果要移植LOB字典需要參考以下語法:ALTERTABLEtable_nameLOB(lob_item)STOREAS[lob_segment](TABLESPACEtablespace_name(STORAGE.....)ENABLE
13、DISABLESTORAGEINROWCHUNKintegerPCTVERSIONintegerRETENTIONFREEPOOLSintegerCACHE
14、NOCACHE
15、CACHEREADSINDEXlobindexname(TABLESPACEtablesapce_name((STORAGE
16、.....)))....注解:LOB(lob_item):表中的lob字段STOREAS[lob_segment]:每個(gè)lob字段在表創(chuàng)建后系統(tǒng)都會自動單獨(dú)創(chuàng)建一個(gè)段,可以通過這個(gè)參數(shù)手動指定一個(gè)段名tablespace_name:LOB字段新的存儲表空間(STORAGE.....):指定tablespace_name的存儲屬性ENABLESTORAGEINROW:如果設(shè)置了enablestorageinrow那么oracle會自動將小于4000bytes的數(shù)據(jù)存儲在行內(nèi),這是ORACLE的默認(rèn)值,對于大于4000字節(jié)的lob字段保存在lob段(同disablestorageinr
17、ow),在表段將保留36-84字節(jié)的控制信息。對于disablestorageinrow,Oracle將lob字段分開保存在lob段中,而僅僅在行位置保留20字節(jié)的指針。對于相當(dāng)于disablestorageinrow的這部分(也就是單獨(dú)保存在LOB段的這部分?jǐn)?shù)據(jù)),UNDO僅僅是記錄指針與相關(guān)lob索引改變,如果發(fā)生更新操作等DML操作,原始數(shù)據(jù)將保留在LOB段。DISABLESTORAGEINROW:如果DISABLE這個(gè)屬性,那么lob數(shù)據(jù)會在行外存儲,行內(nèi)只存儲該lob值得指針,而且這個(gè)屬性在表創(chuàng)建后只能在MOVE表時(shí)才可以被改變CHUNK:是一個(gè)很特別的屬性,對一次LOB
18、數(shù)據(jù)的操作(插入或更新),因該分配多少存儲空間,指定的值最好是數(shù)據(jù)庫塊的倍數(shù),而且指定的值不能大于表空間區(qū)間中NEXT的值,要不然ORACLE會return一個(gè)錯(cuò)誤,如果以前已經(jīng)設(shè)置這個(gè)值了,那么在后期指定的值是不能被改變的。storageas(CHUNKbytes)表示對于disablestorageinrow的這部分,最小的LOB塊的大小,必須是數(shù)據(jù)庫塊(DB_BLOCK_SIZE)的整數(shù)倍。一個(gè)chunk最多只保留一行LOB數(shù)據(jù),也就是說,如果你設(shè)置了32K的C