第一種:網上搜索到的大多解決方法是說導出文件時使用的Oracle版本不一致問題,需要修改dmp文件的版本號。如果確定版本號確實不一樣,請自行搜索一下解決方法。
第二種:備份dmp文件時,備份的語句可能使用的是expdp命令備份的文件,如果是用expdp備份的文件,使用imp導入命令也是會報這樣的錯誤。
所以:導出dmp文件時,如果使用的是expdp命令導出文件時,應該使用impdp命令導入。如果使用的exp命令導出文件時,應該使用imp命令導入。
第二種具體解決步驟:
1、 一般導入都是先建立表空間、實例、用戶名
2、用impdp命令導入
(1) 使用sqlplus或者Oracle客戶端(PL/SQL) 鏈接到相應的Oracle數據庫實例.
(2)創建邏輯目錄,該命令不會在操作系統創建真正的目錄,最好以system等管理員創建。
create directory dpdata1 as ‘d:\test\dump’; (查看服務器上若沒有存在d:\test\dump目錄,則手動新建,把dmp備份文件放到d:\test\dump目錄下面)
(3)impdp導入數據
impdp bbcj/bbcj@orcl directory=dpdata1 dumpfile=ERMS_20190923.dmp FULL=y;
註:
還需要根據導出的dmp,使用的表空間、用戶名。(需要提前通過sys/tsingsoft 創建好了)
創建表空間:
create tablespace SEA_A2 datafile 'D:\app\Administrator\product\tablebase\data_1.dbf' size 10000M;
-- 一定要設置自動增長
alter database datafile 'D:\app\Administrator\product\tablebase\data_1.dbf' autoextend on;
oracle刪除非空的表空間:
drop tablespace tablespaceName including contents;
查看每個表空間的大小 和查看剩餘表空間大小
Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name;
SELECT tablespace_name 表空間,sum(blocks*8192/1000000) 剩餘空間M FROM dba_free_space GROUP BY tablespace_name;
系統正忙,使用此方法Kill掉。
/*查詢已經鎖住的對象的SessionId*/
SELECT SESSION_ID FROM V$LOCKED_OBJECT;
/*查詢從session中查詢相應的連接的用戶和SERIAL*/
SELECT SID, SERIAL#, USERNAME, OSUSER FROM V$SESSION WHERE SID IN(
99
);
/*殺掉相應的session,格式:SID,SERIAL#*/
ALTER SYSTEM KILL SESSION '99,12';
創建函數索引
create index idx_char_P on TMP_ZHENGD_DY_P_20201120 (TO_CHAR(data_date,'yyyymmdd'));
commit;
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/252573.html