㈠ 資料庫表空間不足,怎麼解決
以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 中可以通過殺掉會話來釋放臨時表空間。
㈡ SQL 資料庫存儲空間不足
一、可能是資料庫的MDF文件存放的物理磁碟空間已滿,這種問題比較棘手,必須要轉移資料庫文件到其它磁碟
二、可能是在建立資料庫時MDF指定了最大空間限制,打開企業管理器,在指定的資料庫上選擇屬性,在數據文件中設定為文件增長不受限制或大一點數據就可以了!
我還沒碰到過其它的情況,以上兩點僅供參考!
㈢ oracle資料庫用imp命令導入資料庫時報1659的錯誤,怎麼解決
oracle在導入數據時報1659的錯誤的原因主要是資料庫表空間剩餘空間不足引起的。
分析原因
1、表空間剩餘空間不足。
使用下面語句,查看錶空間剩餘空間
selectUpper(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(selecttablespace_name,
round(sum(bytes)/(1024*1024),2)total_bytes,
round(max(bytes)/(1024*1024),2)max_bytes
fromsys.dba_free_space
groupbytablespace_name)f,
(selectdd.tablespace_name,
round(sum(dd.bytes)/(1024*1024),2)tot_grootte_mb
fromsys.dba_data_filesdd
groupbydd.tablespace_name)d
whered.tablespace_name=f.tablespace_name
orderbyf.tablespace_name;
表空間剩餘空間不足時,可以根據原資料庫表空間大小增加表空間。
altertablespace表空間名adddatafile'數據文件名'size數據文件大小;
2、剩餘表空間還很多。
使用下面語句查看原資料庫表表定義,找到initial_extent值大的表,將這些表的
創建語句導出後修改initial_extent值,在目標資料庫中創建後再導入數據,導入時
增加參數ignore=y。
selecttable_name,initial_extent
fromuser_tables
whereinitial_extentisnotnull
orderbyinitial_extentdesc
如果找不到原資料庫,可以使用
impuserid/userid@service_namefile=dmp文件名indexfile=index文件名rows=nfull=Y
命令將dmp文件中創建表的語句導入到indexfile文件中,查看indexfile如下:
REMCREATETABLE"TEST"."DM_KJKM_COPY"("KJZDMB_DM"VARCHAR2(100)
REM ENABLE,"KMID"NUMBER(20,0),"KMBM"VARCHAR2(100),"KMMC"
REMVARCHAR2(500),"KMQC"VARCHAR2(1000),"KMLB_DM"VARCHAR2(100),
REM ...
使用文本編輯工具,查找INITIAL將過大的初始值改為65536後,將REM去除後,在資料庫中創建後再使用exp導入數據,導入時增加參數ignore=y。
㈣ 怎麼查看資料庫表空間足不足oracle
這個方法很多吧,可以使用語句查詢,也可以使用oracle資料庫工具查看,還可以用EM。
我這有個自己寫的sql腳本,是平時自己看公司資料庫表空間狀態時用的。你可以參考下:
.查看所有表空間的碎片程度(值在30以下表示碎片很多)
select tablespace_name,sum(bytes),sum(free),sum(free)*100/sum(bytes) from (select
b.file_id file_ID,
b.tablespace_name tablespace_name,
b.bytes Bytes,
(b.bytes-sum(nvl(a.bytes,0))) used,
sum(nvl(a.bytes,0)) free,
sum(nvl(a.bytes,0))/(b.bytes)*100 Percent
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id) group by tablespace_name order by sum(free)*100/sum(bytes);
查看錶空間是否自動擴展
select file_name,autoextensible,increment_by from dba_data_files;
表空間自動擴展
alter database datafile 'path:\datafile name' autoextend on next 1M maxsize 100M;
表空間大小
select tablespace_name,count(*),sum(blocks),sum(bytes)/1024/1024
from dba_data_files
group by tablespace_name;
使用情況
select df.tablespace_name "表空間名",totalspace "總空間M",freespace "剩餘空間M",round((1-freespace/totalspace)*100,2) "使用率%"
from
(select tablespace_name,round(sum(bytes)/1024/1024) totalspace
from dba_data_files
group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace
from dba_free_space
group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name;
㈤ 資料庫空間不足怎麼解決
一、用戶資料庫搬家
操作方法有以下兩種
方法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 中資料庫全部搬家完成。
㈥ oracle10g資料庫如何擴充表空間
oracle10g資料庫擴充表空間是通過增加數據文件的大小來實現的。
如果發現某個表空間存儲空間不足時,可以為表空間添加新的數據文件,擴展表空間大小。但是一般建議預先估計表空間所需的存儲空間大小,然後為它建立若干適當大小的數據文件。
以下是擴大TBS_TR_IND這個表空間的sql命令:
ALTER TABLESPACE TBS_TR_IND
ADD DATAFILE '/oradata/rTBS_TR_IND_002.dbf' --給rTBS_TR_IND_002.dbf這個數據文件增加32G空間
SIZE 32G
AUTOEXTEND OFF;
SQL> ALTER TABLESPACE TBS_EDS_DAT
ADD DATAFILE 'G:\datafile\TBS_EDS_DAT01.DBF' --給TBS_EDS_DAT01.DBF增加100M空間
SIZE 100M
㈦ linux下創建資料庫磁碟空間不足
. 追加硬碟
關閉VM中的Linux操作系統,然後點擊「編輯虛擬機設置」,然後追加一塊硬碟(我試過了,好像追加的硬碟不能超過4GB,我追加了一塊3.5GB的)
2. 給追加的硬碟分區並格式化
a. 啟動VM中的Linux
b. 假定Linux中已經有一塊硬碟/dev/sda,那麼新增一塊硬碟就是/dev/sdb,再增加一塊就是/dev/sdc ...... 以此類推,
c. 以root用戶登錄
d. 使用 fdisk 命令對硬碟進行分區
fdisk /dev/sdb
p 列印分區表
t 轉換分區表
w 寫進分區表
n 新建分區 (最多4個主分區,第一個分區是/dev/sdb1,第二個是/dev/sdb2 ...... 以此類推)
d 刪除分區
v 檢查分區
e. 對新建的分區格式化
mkfs - 支持ext2,ext3,vfat,msdos,jfs,reiserfs等
用法1:mkfs -t
例:#mkfs -t ext3 /dev/sdb1
用法2:mkfs.
例:#mkfs.vfat /dev/sdb1
mke2fs-支持ext2/ext3文件系統
用法:mke2fs [-j]
例:#mke2fs -j /dev/sdb1
註: mke2fs加上-j的話,意思是加日誌,就是ext3的分區。
3. 把追加的硬碟掛載到文件系統
mount /dev/sdb1 /oracledata
註: /oracledata目錄要預先建好,如果前面的操作都成功了 df -am 命令就可以看到新掛載的硬碟了,這時候就可以正常使用了