1.場景描述
? ? ? ? 今天工作中,同事說建了一個用戶,往里面導入數據時提示表空間不存在,建了表空間后,部分仍然導不進去。期望幫忙創建表空間,并指定默認表空間,成功將數據導入。
?(1)創建好的用戶 是USERS空間的,用戶如下:
? (2)導入的dmp 是exp方式的備庫,導入命令:
imp NH_CPL/SZNX_nh_cpl_03@192.168.3.14/orclpdb1 file=/home/oracle/NH_CPL_20230901_nodata.dmp full=y
? ?(3)導入時報錯ORA-00959,如下:
2.解決辦法
(1)創建表空間
A.通過以下語句查詢表空間、表空間文件的情況:
SELECT * FROM DBA_TABLESPACES; SELECT * FROM DBA_DATA_FILES;
?查詢結果:
B.創建表空間語句:CPL_DATA 和 NH_CPL_DATA
CREATE TABLESPACE CPL_DATA datafile '/home/u01/app/oracle/oradata/ORCL/orclpdb1/cpl_data001.dbf' size 100M AUTOEXTEND ON?
NEXT 20M MAXSIZE UNLIMITED;CREATE TABLESPACE NH_CPL_DATA datafile '/home/u01/app/oracle/oradata/ORCL/orclpdb1/nh_cpl_data001.dbf' size 100M AUTOEXTEND on;
查詢結果:創建成功 ok?
(2)給用戶分配默認表空間
ALTER USER nh_cpl DEFAULT TABLESPACE NH_CPL_DATA;
查看結果: 默認表空間 改為 NH_CPL_DATA
(3)給用戶分配其他表空間
ALTER USER nh_cpl QUOTA UNLIMITED ON CPL_DATA;
?查看結果: 另一個表空間 改為 CPL_DATA
或
select * from dba_ts_quotas t where t.username ='NH_CPL';
(4)再次導入
imp NH_CPL/*@192.168.3.14/orclpdb1 file=/home/oracle/NH_CPL_20230901_nodata.dmp full=y
導入時提示:IMP-00032: SQL statement exceeded buffer length
解決:看到有分區表,因此增加參數???buffer=100000000,重新導入
成功,ok.
?