當前位置:首頁 » 數據倉庫 » 導入資料庫報錯表空間不足
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

導入資料庫報錯表空間不足

發布時間: 2022-05-08 11:45:33

A. oracle導入資料庫時出現表空間不存在怎麼解決

  1. exp命令導出dmp文件

  2. exp備份資料庫中表結構

  3. PL/sql導出

  4. 、imp命令導入dmp文件

  5. mp命令導入表結構

  6. 導入csv文件

B. sql server 2008 導入數據時錯誤,提示磁碟空間不足,該如何處理

是不是資料庫不支持那麼大的?2008的沒用過,2005的資料庫免費版資料庫只支持4G,如果超過4G的時候會出現你說的這個提示的,解決方法就是安裝企業版或者開發者版資料庫軟體。

C. oracle導入數據出現問題怎麼解決

oracle在導入數據時報1659的錯誤的原因主要是資料庫表空間剩餘空間不足引起的。

分析原因
1、表空間剩餘空間不足。
使用下面語句,查看錶空間剩餘空間
select Upper(f.tablespace_name) "表空間名",
d.tot_grootte_mb "表空間大小(M)",
d.tot_grootte_mb - f.total_bytes "已使用空間(M)",
to_char(round((d.tot_grootte_mb - f.total_bytes) /
d.tot_grootte_mb * 100, 2),'990.99') || '%' "使用比",
f.total_bytes "空閑空間(M)",
f.max_bytes "最大塊(M)"
from (select tablespace_name,
round(sum(bytes) / (1024 * 1024), 2) total_bytes,
round(max(bytes) / (1024 * 1024), 2) max_bytes
from sys.dba_free_space
group by tablespace_name) f,
(select dd.tablespace_name,
round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb
from sys.dba_data_files dd
group by dd.tablespace_name) d
where d.tablespace_name = f.tablespace_name
order by f.tablespace_name;
表空間剩餘空間不足時,可以根據原資料庫表空間大小增加表空間。
alter tablespace 表空間名 add datafile '數據文件名' size 數據文件大小;
2、剩餘表空間還很多。
使用下面語句查看原資料庫表表定義,找到initial_extent值大的表,將這些表的
創建語句導出後修改initial_extent值,在目標資料庫中創建後再導入數據,導入時
增加參數ignore=y。
select table_name, initial_extent
from user_tables
where initial_extent is not null
order by initial_extent desc
如果找不到原資料庫,可以使用
imp userid/userid@service_name file=dmp文件名 indexfile=index文件名 rows=n full=Y
命令將dmp文件中創建表的語句導入到indexfile文件中,查看indexfile如下:
REM CREATE TABLE "TEST"."DM_KJKM_COPY" ("KJZDMB_DM" VARCHAR2(100)
REM ENABLE, "KMID" NUMBER(20, 0), "KMBM" VARCHAR2(100), "KMMC"
REM VARCHAR2(500), "KMQC" VARCHAR2(1000), "KMLB_DM" VARCHAR2(100),
REM ...
使用文本編輯工具,查找INITIAL將過大的初始值改為65536後,將REM去除後,在資料庫中創建後再使用exp導入數據,導入時增加參數ignore=y。

D. 當對資料庫進行海量級的數據插入時,資料庫出現報錯,錯誤原因可能有哪些

1:資料庫表空間不足,因為Oracle必須指定表空間的大小 更改表空間大小,如果裝有雙機熱備則必須對物理存貯文件進行手工更改
2:表死鎖 採用腳本形式對表解鎖
3:監聽丟失,重啟監聽解決

E. 數據無法導入怎麼辦 導入不了數據如何解決

導入數據時報1659的錯誤的原因主要是資料庫表空間剩餘空間不足引起的。
分析原因
1、表空間剩餘空間不足。
使用下面語句,查看錶空間剩餘空間
select Upper(f.tablespace_name) "表空間名",
d.tot_grootte_mb "表空間大小(M)",
d.tot_grootte_mb - f.total_bytes "已使用空間(M)",
to_char(round((d.tot_grootte_mb - f.total_bytes) /
d.tot_grootte_mb * 100, 2),'990.99') || '%' "使用比",
f.total_bytes "空閑空間(M)",
f.max_bytes "最大塊(M)"
from (select tablespace_name,
round(sum(bytes) / (1024 * 1024), 2) total_bytes,
round(max(bytes) / (1024 * 1024), 2) max_bytes
from sys.dba_free_space
group by tablespace_name) f,
(select dd.tablespace_name,
round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb
from sys.dba_data_files dd
group by dd.tablespace_name) d
where d.tablespace_name = f.tablespace_name
order by f.tablespace_name;
表空間剩餘空間不足時,可以根據原資料庫表空間大小增加表空間。
alter tablespace 表空間名 add datafile '數據文件名' size 數據文件大小;
2、剩餘表空間還很多。
使用下面語句查看原資料庫表表定義,找到initial_extent值大的表,將這些表的
創建語句導出後修改initial_extent值,在目標資料庫中創建後再導入數據,導入時
增加參數ignore=y。
select table_name, initial_extent
from user_tables
where initial_extent is not null
order by initial_extent desc
如果找不到原資料庫,可以使用
imp userid/userid@service_name file=dmp文件名 indexfile=index文件名 rows=n full=Y
命令將dmp文件中創建表的語句導入到indexfile文件中,查看indexfile如下:
REM CREATE TABLE "TEST"."DM_KJKM_COPY" ("KJZDMB_DM" VARCHAR2(100)
REM ENABLE, "KMID" NUMBER(20, 0), "KMBM" VARCHAR2(100), "KMMC"
REM VARCHAR2(500), "KMQC" VARCHAR2(1000), "KMLB_DM" VARCHAR2(100),
REM ...
使用文本編輯工具,查找INITIAL將過大的初始值改為65536後,將REM去除後,在資料庫中創建後再使用exp導入數據,導入時增加參數ignore=y。

F. oracle導入資料庫是出現表空間不存在怎麼解決

關於這個問題,IMPDP命令可以指定導入的表空間。比如你原來的表空間是A,想導入到表空間B中,可以用remap_tablespace=A:B來指定。
你出的這個錯誤可能是因為你導出的數據中有部分是保存在EMR_EMPTY表空間中的,你新的資料庫中沒有這個表空間。我建議:
1.你先確定你源資料庫中的表空間,然後在目標資料庫中創建相同的表空間。
2.或者用remap_tablespace參數來改變目標資料庫的表空間。

G. Oracle資料庫 如果導數據時 導到一半磁碟空間不足 提示終止導入 然後增大磁碟空間 還可以繼續導入么

可以忽略錯誤重新導入,但是如果沖突丟了數據再補就麻煩了。最好drop掉所有表,視圖,序列,重新導入。

H. 資料庫空間不足怎麼解決

一、用戶資料庫搬家
操作方法有以下兩種
方法1:在企業管理器中進行
(1)在企業管理器中選定要搬家的資料庫名,在其上單擊滑鼠右鍵,出現如圖1所示對話框。
(2)選中「所有任務」,在其子菜單中單擊「分離資料庫」。
(3)將該資料庫的數據文件和日誌文件從舊的位置(如D:\MSSQL\Data)拷貝到新的位置(如E:\SQLDataNew)。
(4)再在企業管理器中選中「資料庫」文件夾,在其上單擊滑鼠右鍵,在出現的對話框中選中「所有任務」,在其子菜單中單擊「附加資料庫」。
(5)在出現的「附加資料庫」對話框中,選擇資料庫的兩個文件的新位置。
方法2:用SQL系統存儲過程sp_detach_db/sp_attach_db實現
(1)使用下面語句分離資料庫:
USE master
GO
EXEC sp_detach_db 'mydb'
GO
(2)將該資料庫的數據文件和日誌文件從舊的位置拷貝到新的位置。
(3)使用下面語句重新附加資料庫:
USE master
GO
EXEC sp_attach_db
'mydb', 'E:\SQLDataNew\mydbdata.mdf', 'E:\SQLDataNew\mydblog.ldf''
GO
二、系統資料庫搬家
1.master資料庫搬家
(1)由於SQL Server每次啟動的時候都需要讀取master資料庫,因此必須在企業管理器中改變SQL Server啟動參數中master數據文件和日誌文件的路徑。
在 SQL Server屬性的「常規」選項卡下面有一個叫做「啟動參數」的按鈕,單擊後可以看到所示的界面。
其中,-d用來指定master資料庫文件的路徑,而–l用來指定master資料庫日誌文件的路徑。
刪除舊的master資料庫文件和日誌文件的路徑,添加新的master數據文件和日誌文件所在的路徑,如:
-dE:\ SQLDataNew \master.mdf
-lE:\ SQLDataNew \mastlog.ldf
(2)停止SQL Server服務,將master.mdf文件和mastlog.ldf文件拷貝到新的位置,如E:\ SQLDataNew文件夾中。
(3)重新啟動服務即可。
小技巧:如果在「啟動參數」添加的master資料庫文件和日誌文件的路徑或文件名有誤,就會造成SQL Server啟動不起來。而此時想改正錯誤又因SQL Server啟動不了而重設不了「啟動參數」。其實這兩個文件路徑和文件名是放置在注冊表HKEY_LOCAL_MACHINE\SOFWARE\Microsoft\Miccrosoft SQL Server\你安裝SQL伺服器的名\MSSQLServer\Parrmeters下的參數SQLArg1和SQLArg2中,修改這兩個參數的值即可。
2. msdb資料庫和model資料庫搬家
(1)對於msdb資料庫和model資料庫,我們不能在企業管理器中實現分離和附加,只能用sp_detach_db和sp_attach_db存儲過程來分離和附加這兩個資料庫。
其中,對於msdb資料庫,還應確保SQL Server代理當前沒有運行,否則sp_detach_db存儲過程將運行失敗,並返回如下消息:
「無法除去資料庫 'msdb' ,因為它當前正在使用。」
(2)調出如圖4所示的「啟動參數」對話框,添加新參數-T3608。這樣,啟動SQL Server,它就不會恢復除master之外的任何資料庫。
(3)重新啟動SQL Server,再用下面命令分離msdb或者model資料庫:
EXEC sp_detach_db 'msdb'
GO
(4)將數據文件和日誌文件移到新的位置,然後再用下面命令重新附加msdb資料庫或者model資料庫:
USE master
GO
EXEC sp_attach_db
'msdb', 『E:\SQLDataNew\msdbdata.mdf', ' E:\SQLDataNew\msdblog.ldf '
GO
(5)在企業管理器中,從「啟動參數」框中刪除-T3608跟蹤標記,再停止並重新啟動SQL Server。
3. tempdb資料庫搬家
對於tempdb資料庫,則可以直接使用ALTER DATABASE語句來為數據文件和日誌文件指定新的存放位置,如下所示:
USE master
GO
ALTER DATABASE tempdb MODIF
Y FILE (NAME=tempdev, FILENAME ='E:\SQLDataNew \tempdb.mdf')
GO
ALTER DATABASE tempdb MODIF
Y FILE(NAME=templog, FILENAME=
' E:\SQLDataNew \templog.ldf')
GO
至此,SQL Server 中資料庫全部搬家完成。

I. 資料庫表空間不足,怎麼解決

以MySQL 8.0 來說,通過查看 8.0 的官方文檔得知,8.0 的臨時表空間分為會話臨時表空間和全局臨時表空間,會話臨時表空間存儲用戶創建的臨時表和當 InnoDB 配置為磁碟內部臨時表的存儲引擎時由優化器創建的內部臨時表,當會話斷開連接時,其臨時表空間將被截斷並釋放回池中;也就是說,在 8.0 中有一個專門的會話臨時表空間,當會話被殺掉後,可以回收磁碟空間;而原來的 ibtmp1 是現在的全局臨時表空間,存放的是對用戶創建的臨時表進行更改的回滾段,在 5.7 中 ibtmp1 存放的是用戶創建的臨時表和磁碟內部臨時表;

也就是在 8.0 和 5.7 中 ibtmp1 的用途發生了變化,5.7 版本臨時表的數據存放在 ibtmp1 中,在 8.0 版本中臨時表的數據存放在會話臨時表空間,如果臨時表發生更改,更改的 undo 數據存放在 ibtmp1 中;

總結:在 mysql5.7 時,殺掉會話,臨時表會釋放,但是僅僅是在 ibtmp 文件里標記一下,空間是不會釋放回操作系統的。如果要釋放空間,需要重啟資料庫;在 mysql8.0 中可以通過殺掉會話來釋放臨時表空間。

J. ORACLE 空間不足

對新手來說,這種報錯還是經常遇到的o(∩_∩)o 。如果你確認了你的表空間足夠大,那麼,我認為多半就是你在做imp時建表的問題。這個問題怎麼產生的呢?可能是:
1、你在exp時使用了compress=y參數,這個參數乍一看是壓縮的意思,實際上它的作用是將建表時的initial值增大到該表在原資料庫中佔用的空間大小。也就是說如果原表水線比較高那直接導入數據的話基本上這個錯誤是無法避免的。
2、你原表的initail值本來設置較大,在新資料庫中雖然有空間但是這些空間並不連續。資料庫找不到合適的連續塊進行分配。
出現以上問題最快的解決辦法就是自己先在新庫中手工建立需要導入的對象,然後再進行數據導入就行。(別忘了使用 ignore=y 參數^^)

當然了還有一種比較特殊的情況,就是你的每一條數據的數據量都比較大,直接超出了一個數據塊的大小,那麼就會發生「行鏈接」的情況,這樣你導入的數據的大小將會遠超你看到的dmp包的大小,也會導致1658的錯誤發生。