收縮資料庫
一般情況下,SQL資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大
1、設置資料庫模式為簡單模式:打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的伺服器-->雙擊打開資料庫目錄-->選擇你的資料庫名稱(如論壇資料庫Forum)-->然後點擊右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇「簡單」,然後按確定保存
2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的默認設置不用調整,直接點確定
3、收縮資料庫完成後,建議將您的資料庫屬性重新設置為標准模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據
2. SQL資料庫文件太大怎麼處理
如果是MSSQL在任務里選資料庫收縮,可以縮小很多。
不然只能把數據導出來減小資料庫了。
3. sql資料庫伺服器,內存佔用過大怎麼辦
SqlServer系統內存管理在沒有配置內存最大值,很多時候我們會發現運行SqlServer的系統內存往往居高不下。這是由於他對於內存使用的策略是有多少閑置的內存就佔用多少,直到內存使用慮達到系統峰值時(預留內存根據系統默認預留使用為准,至少4M),才會清除一些緩存釋放少量的內存為新的緩存騰出空間。
這些內存一般都是SqlServer運行時候用作緩存的,例如你運行一個select語句,執行個存儲過程,調用函數;
1.數據緩存:執行個查詢語句,SqlServer會將相關的數據頁(SqlServer操作的數據都是以頁為單位的)載入到內存中來,下一次如果再次請求此頁的數據的時候,就無需讀取磁碟了,大大提高了速度。
2.執行命令緩存:在執行存儲過程,自定函數時,SqlServer需要先二進制編譯再運行,編譯後的結果也會緩存起來,再次調用時就無需再次編譯。
在我們執行完相應的查詢語句,或存儲過程,如果我們不在需要這些緩存,我可以將它清除,DBCC管理命令緩存清除如下:
--清除存儲過程緩存
DBCCFREEPROCCACHE
--註:方便記住關鍵字FREEPROCCACHE可以拆解成FREE(割捨,清除)PROC(存儲過程關鍵字簡寫),CACHE(緩存)
--清除會話緩存
DBCCFREESESSIONCACHE
--註:FREE(割捨,清除)SESSION(會話)CACHE(緩存)
--清除系統緩存
DBCCFREESYSTEMCACHE('All')
--註:FREESYSTEMCACHE
--清除所有緩存
DBCCDROPCLEANBUFFERS
--註:DROPCLEANBUFFERS
4. SQL資料庫太大怎麼辦
我有個大的 SQL 文件要回放,需要馬上做,但又怕壓死業務,怎麼辦?
先來建一個測試庫:
可以看到 CPU 已經非常冷靜,並且緩慢的處理數據。
💡小貼士:pv 工具既可以用於顯示文件流的進度,也可以用於文件流的限速。在本實驗中,我們用 PV 來限制 SQL 文件發到 MySQL client 的速度,從而限制 SQL 的回放速度,達到不影響其他業務的效果。
5. SQL資料庫太大怎麼辦
--1.日常要做資料庫壓縮
--壓縮日誌及資料庫文件大小
/*--特別注意
請按步驟進行,未進行前面的步驟,請不要做後面的步驟
否則可能損壞你的資料庫.
--*/
1.清空日誌
DUMP TRANSACTION 庫名 WITH NO_LOG
2.截斷事務日誌:
BACKUP LOG 資料庫名 WITH NO_LOG
3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小
企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件
--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
--選擇數據文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
也可以用SQL語句來完成
--收縮資料庫
DBCC SHRINKDATABASE(客戶資料)
--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from sysfiles
DBCC SHRINKFILE(1)
4.為了最大化的縮小日誌文件(如果是sql 7.0,這步只能在查詢分析器中進行)
a.分離資料庫:
企業管理器--伺服器--資料庫--右鍵--分離資料庫
b.在我的電腦中刪除LOG文件
c.附加資料庫:
企業管理器--伺服器--資料庫--右鍵--附加資料庫
此法將生成新的LOG,大小隻有500多K
或用代碼:
下面的示例分離 pubs,然後將 pubs 中的一個文件附加到當前伺服器。
a.分離
EXEC sp_detach_db @dbname = 'pubs'
b.刪除日誌文件
c.再附加
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
5.為了以後能自動收縮,做如下設置:
企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"
--SQL語句設置方式:
EXEC sp_dboption '資料庫名', 'autoshrink', 'TRUE'
6.如果想以後不讓它日誌增長得太大
企業管理器--伺服器--右鍵資料庫--屬性--事務日誌
--將文件增長限制為xM(x是你允許的最大數據文件大小)
--SQL語句的設置方式:
alter database 資料庫名 modify file(name=邏輯文件名,maxsize=20)
6. mysql配置過大內存導致無法啟動怎麼辦 如何解決
查看 /proc/meminfo
Tips:
「大內存頁」也稱傳統大頁、大頁內存等有助於 Linux 進行虛擬內存的管理,標準的內存頁為 4KB,這里使用「大內存頁」最大可以定義 1GB 的頁面大小,碧纖嫌在系統啟動期間可以使用「大內存頁」為應用程序預留一部分內存,這部分內存被佔用且永遠不會被交換出內存,它會一直保留在那裡,直到改變配置。(詳細介紹請看下面鏈接官方解釋)
那麼這么大頁內存是分配給誰的呢?
查詢一下:
shell> /proc/sys/vm/hugetlb_shm_group
27
shell> id 27
uid=27(mysql) gid=27(mysql) groups=27(mysql)
hugetlb_shm_group 文件里填的是指定大頁內存使用的用戶組 id,這里查看到是 MySQL 組 id,那既然是給 MySQL 的為什麼 free 等於 total,並且 mysql 還只有 20 多 G 實際使用內存呢?
原來在 MySQL 中還有專門啟用大內存頁的參數,在 MySQL 大內存頁稱為 large page。
查看 MySQL 配置文件
發現配置文件悔手中確實有 large-page 配置,但出於禁用狀態。
後與業務確認,很早之前確實啟用過 mysql 的 large page,不過後面禁用了。排查到這基本就有了結論。
結論
這套環境之前開啟了 20000 的大內存頁,每頁大小為 2MB,佔用了 40G 內存空間,給 MySQL 使用,並且 MySQL 開啟了 large page,但後來不使用的時豎橋候,只關閉了 MySQL 端的 large page 參數,但沒有實際更改主機的關於大內存頁的配置,所以導致,實際上主機上的還存在 20000 的大內存頁,並且沒在使用,這一部分長期空閑,並且其他程序不能使用。
所以 MySQL 在使用 20G 內存左右,整個主機內存就飽和了,然後在部分條件下,就觸發了 OOM,導致 mysqld 被 kill,但主機上又有 mysqld_safe 守護程序,所以又再次給拉起來,就看到了文章初的偶爾連接不上的現象。
7. sql資料庫伺服器,內存佔用過大怎麼辦
1、1.選擇逗開始
>
所有程序
>
microsoft
sql
server
2008
r2
>
sql
server
management
studio地。系統顯示逗連接到伺服器地界面。
2、2.輸入各項數據,單輪派渣擊連接
3、3.系羨姿統顯示逗對象資源管理器地界面
4、4.上圖單擊右鍵,在彈出的快捷菜單中選擇逗屬性地。
5、5.在左側導航欄中選擇逗內存地,將右側逗最大伺服器臘悄內存地的值設置為物理內存的60%,本例以8g內存為例
6、6.最後單擊確定,設置完成
8. 資料庫滿了怎麼辦
問題一:資料庫空間滿了怎麼處理 1:分離資料庫 企業管理器->伺服器->資料庫->右鍵->分離資料庫
2:刪除LOG文件
3:附加資料庫 企業管理器->伺服器->資料庫->右鍵->附加資料庫
此法生成新的LOG,大小隻有500多K
再將此資料庫設置自動收縮
或用代碼分離 pubs,然後將 pubs 中的一個文件附加到當前伺服器:
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
問題二:資料庫滿了怎麼辦? 資料庫是只讀的(Readonly),也即不可以修改(增加\刪除\修改都不行)
問題三:SQL server資料庫日誌滿了怎麼處理? 解決方法
日誌文件滿而造成SQL資料庫無法寫入文件時,可用兩種方法:
一種方法:清空日誌。
1.打開查詢分析器,輸入命令
DUMP TRANSACTION 資料庫名 WITH NO_LOG
2.再打開企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了。
另一種方法有一定的風險性,因為SQL SERVER的日誌文件不是即時寫入資料庫主文件的,如處理不當,會造成數據的損失。
1: 刪除LOG
分離資料庫 企業管理器->伺服器->資料庫->右鍵->分離資料庫
2:刪除LOG文件
附加資料庫 企業管理器->伺服器->資料庫->右鍵->附加資料庫
此法生成新的LOG,大小隻有500多K。
注意:建議使用第一種方法。
如果以後,不想要它變大。
SQL2000下使用:
在資料庫丁點右鍵->屬性->選項->故障恢復-模型-選擇-簡單模型。
或用SQL語句:
alter database 資料庫名 set recovery simple
另外,如上圖中資料庫屬性有兩個選項,與事務日誌的增長有關:
Truncate log on checkpoint
(此選項用於SQL7.0,SQL 2000中即故障恢復模型選擇為簡單模型)
當執行CHECKPOINT 命令時如果事務日誌文件超過其大小的70% 則將其內容清除在開發資料庫時時常將此選項設置為True
Auto shrink
定期對資料庫進行檢查當資料庫文件或日誌文件的未用空間超過其大小的25%時,系統將會自動縮減文件使其未用空間等於25% 當文件大小沒有超過其建立時的初始大小時不會縮減文件縮減後的文件也必須大於或等於其初始大小對事務日誌文件的縮減只有在對其作備份時或將Truncate log on checkpoint 選項設為True 時才能進行。
注意:一般立成建立的資料庫默認屬性已設好,但碰到意外情況使資料庫屬性被更改,請用戶清空日誌後,檢查資料庫的以上屬性,以防事務日誌再次充滿。
問題四:資料庫空間滿了怎麼處理 各資料庫空間滿處理方法
wenku./...YexzIW
問題五:網站的虛擬空間,資料庫滿了怎麼辦? 肯定有影響啦,你自己說的,每天發很多文章,最終資料庫滿了,就是說文章保存在資料庫中,一般來說資料庫保存釘東西都是內存不是很大的東西,除了網站cms所必要的數據和系統日誌之外,就是你文章的文字啦,至於圖片和視頻等等佔用空間很多的東西就保存在網頁空間裡面了,和數據沒有關系。
就如樓上的所說,問題不大,增加資料庫的容量就行了,現在一般的IDC都會提供這樣的服務,對你現在的網站不會有影響的。此外聯系客服也很重要的。祝你早日解決問題!
問題六:SQL數據磁碟滿了怎麼解決? -- 清空日誌
--壓縮日誌及資料庫文件大小
/*--特別注意
請按步驟進行,未進行前面的步驟,請不要做後面的步驟
否則可能損壞你的資料庫.
--*/
select*fromsysfiles
--1.清空日誌
DUMPTRANSACTIONusernameWITHNO_LOG
--2.截斷事務日誌:
BACKUPLOGusernameWITHNO_LOG
--3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小
-- 企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件
--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
--選擇數據文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
-- 也可以用SQL語句來完成
--收縮資料庫
DBCCSHRINKDATABASE(username)
--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select*fromsysfiles
DBCCSHRINKFILE(2)
--4.為了最大化的縮小日誌文件(如果是sql7.0,這步只能在查詢分析器中進行)
-- a.分離資料庫:
-- 企業管理器--伺服器--資料庫--右鍵--分離資料庫
-- b.在我的電腦中刪除LOG文件
-- c.附加資料庫:
-- 企業管理器--伺服器--資料庫--右鍵--附加資料庫
-- 此法將生成新的LOG,大小隻有500多K
-- 或用代碼:
-- 下面的示例分離username,然後將username中的一個文件附加到當前伺服器。
execsp_dboptionusername,'singleuser',true
a.分離
[email protected] ='username'
b.刪除日誌文件
execmaster..xp_cmdshell'delD:\ProgramFiles\SQL\database\username_LOG.ldf'
c.再附加
[email protected] ='username',
@physname='D:\ProgramFiles\SQL\database\username_Data.MDF'
--5.為了以後能自動收縮,做如下設置:
-- 企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇自動收縮
--SQL語句設置方式:
EXECsp_dboption'資料庫名','autoshrink','TRUE'
--6.如果想以後不讓它日誌增長得太大
-- 企業管理器--伺服器--右鍵數據......>>
問題七:資料庫日誌已滿,如何處理? 先提供一種復雜的方法壓縮日誌及資料庫文件如下:1.清空日誌 mp transaction 庫名 with no_log2.截斷事務日誌: backup log 資料庫名 with no_log3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小 企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件 --選擇日誌文件--在收縮方式里選擇收縮至xxm,這里會給出一個允許收縮到的最小m數,直接輸入這個數,確定就可以了 --選擇數據文件--在收縮方式里選擇收縮至xxm,這里會給出一個允許收縮到的最小m數,直接輸入這個數,確定就可以了 也可以用sql語句來完成 --收縮資料庫 dbcc shrinkdatabase(客戶資料) --收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from sysfiles dbcc shrinkfile(1)4.為了最大化的縮小日誌文件(如果是sql 7.0,這步只能在查詢分析器中進行) a.分離資料庫: 企業管理器--伺服器--資料庫--右鍵--分離資料庫 b.在我的電腦中刪除log文件 c.附加資料庫: 企業管理器--伺服器--資料庫--右鍵--附加資料庫 此法將生成新的log,大小隻有500多k 或用代碼: 下面的示例分離 pubs,然後將 pubs 中的一個文件附加到當前伺服器。 a.分離 e x e c sp_detach_db @dbname = 'pubs' b.刪除日誌文件 c.再附加 e x e c sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\program files\microsoft sql server\mssql\data\pubs.mdf'5.為了以後能自動收縮,做如下設置: 企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇自動收縮 --sql語句設置方式: e x e c sp_dboption '資料庫名', 'autoshrink', 'true'6.如果想以後不讓它日誌增長得太大 企業管理器--伺服器--右鍵資料庫--屬性--事務日誌 --將文件增長限制為xm(x是你允許的最大數據文件大小) --sql語句的設置方式: alter database 資料庫名 modify file(name=邏輯文件名,maxsize=20) 我來完善答案完善答案通過審核後,可獲得3點財富值最新回答:2012-06-20 05:01 版本:1個歷史版本
問題八:如何從根本上解決SQL資料庫日誌已滿的問題 1、你設置了日誌文件的最大數,資料庫的恢復模式是完整恢復模式,所有的針對資料庫的改動都會記錄到日誌,不僅僅是你的改動資料庫,資料庫本身的操作也有記錄到日誌,所以,日誌文件才會不斷增長。
2、那是因為大部分的電腦上的資料庫,基本沒怎麼變過,但生產用的資料庫經常變動,所以日誌記錄也變得巨大,我見過資料庫200MB,但是日誌文件50GB,因為本來資料庫有10GB,因為測試需要刪除了大部分的數據,結果導致日誌文件增長到了50GB。
3、定時備份日誌並收縮日誌文件。
4、通過備份日誌,並收縮日誌文件,這個語句你自己網路。
5、日誌是一個以事務編號連續的記錄,比如,我第一次備份的日誌事務編號為1-1000,那麼日誌就會被截斷,並從1001開始,之後的日誌備份就從1001開始了,所以,初始備份一直到最後一次備份都不能刪除,否則使用日誌恢復時會出現問題。
問題九:oracle資料庫空間占滿了,怎麼辦 1、刪除無用文件或數據,騰空間。
2、將空間緊張的數據移到其他空閑空間。
3、增加新存儲空間。
問題十:如何清理sql server 已滿的資料庫日誌 SQLSERVER的資料庫日誌佔用很大的空間,下面提供三種方法用於清除無用的資料庫日誌文件
方法一:
1、打開查詢分析器,輸入命令
backup log database_name WITH NO_log
2、再打開企業管理器--右鍵要壓縮的資料庫--所有任務--收縮資料庫--收縮文件--選擇日誌文件--在收縮方式里選擇收縮至xxm,這里會給出一個允許收縮到的最小m數,直接輸入這個數,確定就可以了。
方法二:
設置檢查點,自動截斷日誌
一般情況下,SQL資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大
1、設置資料庫模式為簡單模式:打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的伺服器-->雙擊打開資料庫目錄-->選擇你的資料庫名稱(如用戶資料庫cwbase1)-->然後點擊右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇「簡單」,然後按確定保存
2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的默認設置不用調整,直接點確定
3、收縮資料庫完成後,建議將您的資料庫屬性重新設置為標准模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據
方法三:通過SQL收縮日誌
把代碼復制到查詢分析器里,然後修改其中的3個參數(資料庫名,日誌文件名,和目標日誌文件的大小),運行即可
SET NOCOUNT on
DECLARE @logicalFileName sysname,
@MaxMinutes int,
@NewSize int
USE tablename -- 要操作的資料庫名
select @logicalFileName = 'tablename_log', -- 日誌文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想設定的日誌文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
select @OriginalSize = size
from sysfiles
WHERE name = @logicalFileName
select 'Original Size of ' + db_name() + ' log is ' +
ConVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
ConVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'mb'
from sysfiles
WHERE name = @logicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter int,
@StartTime DATETIME,
@Trunclog VARCHAR(255)
select @StartTime = getdate(),
@Trunclog = 'backup log ......>>
9. 如何解決Symantec Endpoint Protection資料庫過大的問題
最近被SEP11病毒伺服器的內置資料庫增升過快搞得頭大,找了好多人,網路了好幾天,也沒答案,終於在官網上找到這篇文章,並加以在真實攜明環境下驗證成功。
進行以下方案之前,請保證您的 SEPM 安裝盤(默認是 C: 盤)最少有 1G 或者以上清隱碼的空間(建議留出至少 2G 空間)
1 停止答哪「Symantec Endpoint Protection Manager」服務;
2 停止「Symantec Embedded Database」服務,復制 C:\Program Files\Symantec\Symantec
Endpoint Protection Manager\db\ 裡面的所有文件復制到其它目錄備份
這個動作是以防不測);「c:\」取決於你安裝的路徑。
3啟動「Symantec Embedded Database」服務,進入 C:\Program Files\Symantec Endpoint Protection Manager\ASA\Win32 目錄,雙擊打開"dbisqlc.exe";
4 在 Login 的窗口,在 "User ID" 輸入 dba,在 「password」 輸入您的資料庫的密碼
此密碼是你安裝的時候設置的密碼,一般和您的控制台的登陸密碼相同,但是如果控制台後來有改密碼則兩個密碼是不一樣的,資料庫的密碼還是安裝的時候設的密碼,這個密碼一般不會去改。
5 在"Data Source Name ",選擇 SymantecEndpointSecurityDSN,確定;
6 進入資料庫的命令行,輸入以下命令:
Delete From Binary_file where type='DownloadedContentFile'
然後點擊「執行」。
7 退出資料庫的命令行窗口,重啟 Symantec Embedded Database 服務;
8 在 開始-> 運行輸入 CMD ,點擊確認進入 Windows命令行, 然後輸入以下命令
cd C:\Program Files\Symantec\Symantec Endpoint Protection Manager\ASA\win32
dbunload -c "uid=dba;pwd=password_set_ring_install" -ar
注意:請把 password_set_ring_install 替換為您實際的資料庫密碼
回車後執行,該命令行將自動收縮資料庫;
9 收縮完成後,重新啟動 Symantec Embedded Database 服務。
10 重新啟動Symantec Endpoint Protection Manager 服務。
11 單擊「開始 -> 所有程序 -> Symantec Endpoint Protection Manger」,選擇「配置伺服器向
導」,重新配置 SEPM 伺服器.
10. SharePoint 配置資料庫和日誌資料庫過大,有什麼好辦法么
如下:
1.清空日誌
mp transaction 庫名明螞 with no_log
2.截斷事務日誌:
backup log 資料庫名 with no_log
3.收縮數梁槐高據庫文件(如果不壓縮,資料庫的文件不會減小
企業管理器--右鍵橡尺你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件!