IMP資料到指定的表空間

2021-07-10 15:55:17 字數 2566 閱讀 3807

一直以來,我都認為只要指定使用者的預設表空間,向該使用者匯入資料時,會自動進入到預設表空間。後來發現從system匯出的dmp檔案在匯入時,即使指定新使用者的預設表空間,還是要往system表空間中導資料。

上網搜了一下,還是有解決方法的,常見的方法如下:

create

user myhuang identified by myhuang default tablespace myhuang;

grant resource,connect

to myhuang;

grant dba to myhuang;//賦dba許可權

revoke unlimited tablespace from myhuang;//撤銷此許可權

alter

user myhuang quota 0

on system;//將使用者在system表空間的配額置為0

alter

user myhuang quota unlimited on myhuang;//設定在使用者在myhuang表空間配額不受限。

經過上述設定後,就可以用imp匯入資料,資料將會進入指定的myhuang表空間:

imp system/123456

@vdb fromuser=lnxh tous

er=myhuang file=g:\myhuang\lnxh.dmp ignore=y grants=n

順便說兩個小問題:

(1)imp-00003: 遇到 oracle 錯誤 1658

ora-01658: 無法為表空間 myhuang 中的段建立 initial 區

通常這個問題可以通過resize增加表空間資料檔案大小來解決。

(2)刪除表空間

drop tablespace myhuang including contents and datafiles;
在10g中實驗,drop表空間之後,仍然需要手動去刪除資料檔案。

該方法較好

create tablespace  datafile 『』 size

500m autoextend on

next

10m;

create

user identified by default tablespace quota unlimited on ;

grant

connect,imp_full_database to ;

imp /@ fromuser= touser= file= ignore=y tablespaces=;

此方法不需要授予新使用者dba許可權。

此方法的存在的問題是:可能導致包含blob、clob欄位的表匯入失敗,這種情況下可以先用sql指令碼將表結構建立起來,再匯入相應的資料。

create

user atf_ygj identified by mas123 default tablespace ygj_atf_data temporary tablespace ygj_atf_temp quota unlimited on ygj_atf_data ;

使用者已建立。

grant

connect,imp_full_database to atf_ygj;

授權成功。

imp atf_ygj/mas123@orcl_192.168.6.19 fromuser=atf_back touser=atf_ygj file=d:/atf_back20090927.dmp ignore=y tablespaces=ygj_atf_data;
以後以該使用者登入,建立的任何資料庫物件都屬於test_temp 和test_data表空間,這就不用在每建立乙個物件給其指定表空間了。

**********=== 移動資料到表空間 ***************==

查詢需要移動的表所在的表空間

select tt.table_name,tt.tablespace_name  from user_all_tables tt where tt.tablespace_name like

'%ygj%'

移動表到指定表空間

alter

table employees move tablespace ygj_data;

查詢要移動的索引所在的表空間

select ii.index_name,ii.table_name,ii.tablespace_name,ii.temporary

from user_indexes ii where index_name like

'%emp_pk%'

移動(重建)索引到指定表空間

alter index emp_pk rebuild tablespace ygj_data;

IMP資料到指定的表空間

一直以來,我都認為只要指定使用者的預設表空間,向該使用者匯入資料時,會自動進入到預設表空間。後來發現從 system 匯出的dmp 檔案在匯入時,即使指定新使用者的預設表空間,還是要往 system 表空間中導資料。上網搜了一下,還是有解決方法的,常見的方法如下 sql create user my...

imp匯入到指定表空間

sql create user myhuang identified by myhuang default tablespace myhuang 先建立乙個使用者 sql grant resource,connect to myhuang sql grant dba to myhuang 賦 dba...

資料庫基礎系列之七 IMP資料到指定的表空間

一直以來,我都認為只要指定使用者的預設表空間,向該使用者匯入資料時,會自動進入到預設表空間。後來發現從 system 匯出的dmp 檔案在匯入時,即使指定新使用者的預設表空間,還是要往 system 表空間中導資料。上網搜了一下,還是有解決方法的,常見的方法如下 sql create user my...