我從一個數據庫中導出來的dmp文件,它的表空間是user,現在我想導入到另一個數據庫中去,在那個數據庫中我建立了一個aaa的用戶,使用的是aaa 的表空間。可用aaa用戶導入dmp文件后發現那些表使用的仍然是user表空間,我該怎么辦呢?能在導入的時候就指定為aaa的表空間嗎? ?
改變數據庫表的表空間的方法有沒有比較簡單的方法?不用卸載表,然后修改sql語句那么麻煩的動作??? ?
方法其實很簡單,如下: ?
1、先不要授予你這個新的aaa這個用戶太高的權限,比如dba的角色及quota ? unlimited ? tablespace這個系統權限。 ?
2、只授予aaa在aaa表空間的unlimited權限,在user表空間沒使用權限 ?
sql>alter ? user ? aaa ? quota ? unlimited ? on ? aaa; ?
sql>alter ? user ? aaa ? quota ? 0 ? on ? user; ?
3、在你做imp時指ignore=y選項就可以了,這樣imp進來的表就使用aaa的默認表空間了。
當然有辦法改變一個表存儲表空間,使用以下命令即可: ?
alter ? table ? table_name ? move ? tablespace ? tablespace_name;
使用命令得到移動表空間的語句 ?
select ? 'alter ? table ? '||table_name||' ? move ? tablespace ? aaa;' ? from ? all_tables ? where ? tablespace_name= ? 'user' ? and ? owner= ? 'aaa'; ?
然后執行生成的語句即可 ?
當然,一般還需要在新的表空間中重建索引 ?
select ? 'alter ? index ? '||index_name ? ||' ? rebuild ? tablespace ? aaa_index;' ? from ? dba_indexs ? where ? tablespace_name= ? 'user' ? and ? owner= ? 'aaa'; ?
然后執行生成的語句即可
改變數據庫表的表空間的方法有沒有比較簡單的方法?不用卸載表,然后修改sql語句那么麻煩的動作??? ?
方法其實很簡單,如下: ?
1、先不要授予你這個新的aaa這個用戶太高的權限,比如dba的角色及quota ? unlimited ? tablespace這個系統權限。 ?
2、只授予aaa在aaa表空間的unlimited權限,在user表空間沒使用權限 ?
sql>alter ? user ? aaa ? quota ? unlimited ? on ? aaa; ?
sql>alter ? user ? aaa ? quota ? 0 ? on ? user; ?
3、在你做imp時指ignore=y選項就可以了,這樣imp進來的表就使用aaa的默認表空間了。
當然有辦法改變一個表存儲表空間,使用以下命令即可: ?
alter ? table ? table_name ? move ? tablespace ? tablespace_name;
使用命令得到移動表空間的語句 ?
select ? 'alter ? table ? '||table_name||' ? move ? tablespace ? aaa;' ? from ? all_tables ? where ? tablespace_name= ? 'user' ? and ? owner= ? 'aaa'; ?
然后執行生成的語句即可 ?
當然,一般還需要在新的表空間中重建索引 ?
select ? 'alter ? index ? '||index_name ? ||' ? rebuild ? tablespace ? aaa_index;' ? from ? dba_indexs ? where ? tablespace_name= ? 'user' ? and ? owner= ? 'aaa'; ?
然后執行生成的語句即可
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
