當前位置:首頁 » 數據倉庫 » 備份資料庫的日誌尾部
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

備份資料庫的日誌尾部

發布時間: 2022-07-04 22:21:22

㈠ 誰能給點常用sql語句.隨便解釋下先謝謝各位大蝦們了!!!

以下內容都加了注釋了,可以保存為.sql文件,逐段執行

/*
建立一個由3個文件組成的資料庫,資料庫名稱為test。
主數據文件邏輯名稱為test_data,物理文件名c:\test_data.mdf;
輔助數據文件邏輯名稱為test_data2,物理文件名c:\test_data2.ndf;
日至文件邏輯名稱為test_log,物理文件名c:\test_log.ldf;
所有文件初始尺寸為3mb,可以自動增長,最大尺寸為15mb。
*/
create database test on
primary
(
name=test_data,
filename='c:\test_data.mdf',
size=3mb,
maxsize=15mb,
filegrowth=1mb
),
(
name=test_data2,
filename='c:\test_data2.ndf',
size=3mb,
maxsize=15mb,
filegrowth=1mb
)
log on
(
name=test_log,
filename='c:\test_log.ldf',
size=3mb,
maxsize=15mb,
filegrowth=1mb
)

/*
創建一個名為employees的表,該表由5個欄位組成:emp_id(員工編號)、ename(員工名稱)、
age(年齡)、title(職務)、salary(薪水)。其中emp_id為該表的主鍵。該表存放在主文件組。
*/
use test
go
CREATE TABLE employees(
emp_id char (4) primary key,
ename nvarchar (10) NOT NULL,
age tinyint NOT NULL,
title nvarchar (10) NULL,
salary money NULL,
) ON [PRIMARY]

--向employees表插入部分數據
insert into employees values('0001','楊建新','22','經理','3000')
insert into employees values('0002','楊建新','23','職員','4000')
insert into employees values('0003','楊建新','24','總經理','5000')
insert into employees values('0004','楊建新','26','職員','2000')

--創建備份設備test_bak,其位置為c:\backup\test_bak.bak
sp_admpdevice 'disk','test_bak','c:\backup\test_bak.bak'

--建立資料庫test的完整備份到備份設備test_bak,並命名為test_full_bak1
backup database test to test_bak with name='test_full_bak1'

--向employees表插入新數據
insert into employees values('0005','王建新','24','總經理','1000')
insert into employees values('0006','劉建新','26','職員','2000')

--執行test資料庫的事務日誌備份,該備份追加到備份設備test_bak,命名為test_log_bak1
backup log test to test_bak with name='test_log_bak1'

--截斷employees表,清空內容(記錄此時的時間)
truncate table employees

--備份資料庫的尾部日誌
use master
go
backup log test to test_bak with name='test_log_recovery',norecovery

--恢復資料庫的完整備份,並且不要執行還原進程(norecovery)
restore database test from test_bak with file=1,norecovery

--恢復第一個日誌備份,如果此時執行recovery,將得到所有數據
restore log test from test_bak with file=2,recovery

--如果執行上述語句時,使用norecovery選項,則可以繼續恢復第二個日誌備份,即尾部日誌
restore log test from test_bak with file=2,norecovery
restore log test from test_bak with file=3,recovery

--如果按照上述操作,則恢復完成後employees表中沒有任何數據,因為尾部日誌中包含清空表的操作
--若要恢復所有數據,也可以恢復到時間點到清空時間之前
restore log test from test_bak with file=3,stopat='2008-11-16 11:25:00'

㈡ sql server 資料庫備份後綴名是什麼

關於sql主數據文件次數據文件後綴區分默認情況和自定義情況
1:默認情況下
主數據文件的後綴是mdf
次數據文件的後綴是ndf
日誌文件的後綴是ldf
2:自定義方式
創建資料庫的時候自己指定主數據文件,次數據文件以及日誌文件的後綴
以字母開頭的任意有效的字元格式即可

CREATE DATABASE TEST
ON
PRIMARY --創建主資料庫文件
(
NAME='TEST',
FILENAME='E:\TEST.mdb',
SIZE=5MB,
MaxSize=20MB,
FileGrowth=1MB
)
LOG ON --創建日誌文件
(
NAME='HkTempLog',
FileName='E:\Databases\TestLOG.log',
Size=2MB,
MaxSize=20MB,
FileGrowth=1MB
)

㈢ 尚未備份資料庫 "test 的日誌尾部

原因分析:
這是因為在線還原的資料庫在最後備份後又產生了新的日誌,所以按照默認設置的備份選項,系統將提示備份日誌尾部以免造成事務中斷。
解決方法:
如果需要備份尾部日誌則進行備份。如果不需要,則可以在還原資料庫的的選項卡中選擇【覆蓋現有資料庫】復選框。

㈣ tail-log backup是什麼意思

tail log backup
尾日誌備份;
例句
1.Tail log backups capture the tail of the log even if the database is offline, damaged, or missing data files.
尾日誌備份可捕獲日誌尾部,即使資料庫離線、損壞或缺少數據文件。
2.Typically, the last log restored is the tail-log backup.
上一個還原的日誌通常是尾日誌備份。

㈤ MS SQL Server 如果資料庫死掉了,那麼它是怎麼保存資料庫死掉前的尾部日誌數據的呢

是可以保存死掉前的數據和日誌;但是有可能造成資料庫被置疑;也就是無法使用。所以以盡量定期的備份才是上上之策。如果真的遇到突然停電宕了;只能採用修復資料庫來操作了。

㈥ sql2008怎麼備份日誌文件

一、 結尾日誌備份的含義。
由於結尾日誌備份是SQLServer資料庫特有的一個內容。所以對於從其他資料庫轉型過來的管理員可能並不了解這個結尾日誌備份的含義。在大多數情況下,如在完成恢復模式或者大容量日誌恢復模式下,SQLServer資料庫要求管理員備份事務日誌的結尾部分以獲得尚未備份的日誌記錄。這個在還原操作之前對日誌尾部執行的日誌備份就叫做結尾日誌備份。對於SQLServer資料庫來說,在事務日誌恢復之前進行事務日誌的尾部備份是非常必要的。因為結尾日誌備份作業可以防止用戶修改數據的丟失並最終確保日誌鏈的完整性。在利用事務日誌將資料庫恢復到某一個指定的點,如資料庫故障點的時候,結尾日誌備份是恢復計劃中的最後一個相關備份。如果在還原之前無法備份日誌的尾部,那麼就只能夠將資料庫恢復為故障發生之前創建的最後一個備份。而不能夠恢復到故障發生的那一點。所以說,結尾日誌備份對於SQLServer資料庫非常的重要。
二、 在何時該進行結尾日誌備份?
從結尾日誌備份的含義中,我們也可以看出,並不是在任何情況下都需要作結尾日誌備份。也就是說,對於SQLServer資料庫來說,並非所有的還原方案都需要執行結尾日誌部分。如在資料庫恢復的時候,不需要恢復到故障的那一點,就不需要進行結尾日誌備份。同理,如果先前的日誌備份中已經包含了恢復點,或者說管理員准備覆蓋某個資料庫或者移動資料庫的時候,往往不需要進行結尾日誌備份。另外需要的是,在某些特定情況下即使資料庫管理員想進行事務日誌尾部備份都不行。如當事務日誌文件已經損壞時就無法繼續進行事務日誌尾部備份。此時雖然資料庫管理員任人可以在不使用結尾日誌備份的情況下恢復資料庫,但是已經不能夠恢復到故障發生的那一點。也就是說,最新日誌備份後進行的任何數據修改工作與資料庫結構調整工作都回丟失。
具體的來說,如果遇到如下兩種情況,需要先對馬上對事務日誌進行尾部備份。
一是需要對資料庫進行還原操作,而且是要還原到最近到的一個點時,那麼需要先對資料庫進行事務日誌尾部備份。即在資料庫處於聯機狀態時,如果資料庫管理員需要對資料庫進行的下一個操走就是還原操作,那麼就需要在還原操作之前進行事務日誌尾部備份。也就是說,在還原操作之前才能夠進行事務日誌尾部備份,即在事務日誌備份備份與資料庫還原之間不能夠再進行任何的資料庫修改作業。否則的話在還原後這個修改會丟失。另外需要注意的是,為了出現一些不必要的錯誤,最好在備份事務尾部日誌的時候,採用NORECOVERY選項。這個選項主要是為了確保資料庫事務日誌尾部備份之後資料庫不能夠再被修改。也就是說,可以保證事務日誌尾部備份到資料庫還原中間的時間間隔之內,不再發生任何的資料庫更改作業。以確保在利用事務日誌尾部備份進行資料庫還原的時候,能夠還原到一個最近的時點。而不會有任何數據的丟失。這是在最正常的情況下對事務日誌的尾部進行備份。

㈦ SQLServer2008資料庫怎樣備份還原和數據恢復

在完整恢復模式或大容量日誌恢復模式下,必須先備份活動事務日誌(稱為日誌尾部),然後才能在SQLServerManagementStudio中還原資料庫。有關詳細信息,請參閱如何備份事務日誌(SQLServerManagementStudio)。若要還原已加密的資料庫,您必須有權訪問用於加密資料庫的證書或非對稱密鑰。如果沒有證書或非對稱密鑰,資料庫將無法還原。

認識資料庫備份和事務日誌備份

資料庫備份與日誌備份是資料庫維護的日常工作,備份的目的是在於當資料庫出現故障或者遭到破壞時可以根據備份的資料庫及事務日誌文件還原到最近的時間點將損失降到最低點。

資料庫備份

資料庫備份可以手動備份和語句備份

一.手動備份資料庫

1.滑鼠右鍵選擇你要進行備份的資料庫-任務-備份

可以在常規選項頁面你可以選擇備份類型是進行完整資料庫備份還是差異資料庫備份

2.點擊添加選項,選擇資料庫文件的存放路徑

注意文件名記得加後綴.bak,便於恢復時的查找

3.你還可以在選項頁面是追加到現有的備份集,還是覆蓋所有的現有備份集,還可以選擇備份驗證完整性(建議選擇),還可以選擇是否壓縮備份等。

二.語句備份資料庫

use master goBACKUP DATABASE [test] TO DISK = N'D:Microsoft sql serverMSSQL10.MSSQLSERVERMSSQLBackup est.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO

資料庫日誌備份

首先需要注意,資料庫日誌的備份是基於資料庫完整備份,也就是說你備份資料庫日誌之前你首先要先對資料庫進行一次完整的備份,因為之間會涉及到堅持到檢查點 lsn, 這也是本文接下來要講的重點。

一.手動備份資料庫日誌

1.右鍵資料庫-任務-備份-選擇備份類型(事務日誌)

2.點添加,添加日誌文件備份存儲路徑

3.同資料庫完整備份一樣,你也可以選擇覆蓋現有備份集或者追加到現有備份集,這里現在覆蓋現有備份集、驗證完整性,然後確認備份

二.語句備份資料庫事務日誌

BACKUP LOG [test] TO DISK = N'D: est.trn' WITH NOFORMAT, INIT, NAME = N'test-事務日誌 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO

資料庫還原

右鍵資料庫-還原資料庫-添加需要進行還原的資料庫文件路徑

在還原源選項中你可以選擇『源資料庫』,『源設備』。1.選擇源資料庫工具會自動顯示該資料庫之前的一些備份,然後直接選擇需要還原的資料庫備份集。

2.選擇源設備點擊後面的...,添加需要還原的資料庫文件

2.點擊確認還原資料庫

資料庫恢復

資料庫恢復的前提是1.一個完整的資料庫備份2.包含這個完整資料庫備份的事務日誌備份3.完整備份之間也可以存在數個差異備份

對於資料庫維護空間始終是一個比較頭疼的問題,特別是對於大型資料庫而言,每天的日誌文件增長是龐大的,很多資料庫管理員會定時對資料庫日誌文件進行收縮,但是經常收縮會存在收縮完日誌文件還是不能減少,這是因為存在很多活動的日誌無法收縮可以用

DBCC LOGINFO('資料庫名稱')

我們看到
status=0的日誌,代表已經備份到磁碟的日誌文件;而
status=2的日誌還沒有備份。當我們收縮日誌文件時,收縮掉的空
間其實就是
status=0的空間,如果日誌物理文件無法減小,這里一
定能看到非常多status=2的記錄

解決辦法:1.可以分離要收縮的資料庫,然後手動刪除日誌文件,然後附加資料庫,資料庫就會產生一個很小的日誌文件(不推薦使用這種方法)

2.右鍵要出來的資料庫選擇「屬性」-"選項",將恢復模式改成"簡單",然後利用收縮工具可以講日誌文件收縮到很小,收縮完記得講恢復模式改成"完整"

也可以用語句進行處理(dbname是你要進行收縮的資料庫名,dbname_log是你要進行收縮的資料庫的邏輯日誌名稱)

USE [master]
GO ALTER DATABASE [dbname] SET recovery SIMPLE WITH NO_WAIT GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE --簡單模式
GO
USE [dbname]
GO
DBCC SHRINKFILE (N'dbname_log' , 11, TRUNCATEONLY) GO
USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE [dbname] SET RECOVERY FULL

對於第一種方法不贊同使用,首先對於資料庫的分離與附加有時候會破壞資料庫,造成資料庫無法還原,還有就是對於在線資料庫也不允許進行分離操作。

對於第二種方法是slq2008收縮日誌文件的一種方法,但是此方法也不能使用過於頻繁,因為進行資料庫恢復模式的更改會截斷事務日誌文件,這樣的話當時利用事務日誌文件進行恢復的時候檢查點不能包含資料庫文件,而且當你要對事務日誌進行備份的時候會重新提示你需要對資料庫進行完整備份。

舉個例子:比如你昨天晚上進行了一次完整備份,然後同時你也進行了一次日誌備份(提前日誌未被截斷),然後你每個小時進行過一次差異備份,最近的差異備份時間點是14點,如果此時資料庫錯誤修改了數據,你可以立馬備份一個日誌文件將資料庫恢復到日誌備份開始到日誌備份終點前的任意時間點 。

如果此時你進行了修改資料庫模式,截斷日誌進行了收縮,那麼你的數據只能恢復到昨天晚上備份的那個日誌備份時間前的任意時間點,也就是今天所做的資料庫更改無法再恢復了,因為日誌文件已經被截斷了,不知道這樣解釋是否明白

因為日誌文件的檢查點(lsn)是連續的,每一次日誌備份都是在上一次備份的基礎上lsn往後增加的,lsn的范圍也包括了資料庫文件的lsn,也只有日誌文件的lsn包括了資料庫文件的lsn,才能將資料庫文件進行回滾。

上圖中總共有三個備份文件,一個完整備份、一個差異備份、一個日誌備份,大家可以注意觀察完整備份的第一個lsn與最後一個lsn,和檢查點

第二個差異備份文件的的第一個lsn與最後一個lsn,和檢查點,最後的日誌備份的第一個lsn和最後一個lsn包含了前面兩個備份文件的lsn,這種情況資料庫就可以恢復到日誌文件備份前的任意時間點,如果日誌文件沒有包含資料庫文件的最後一個lsn也就無法恢復了。

㈧ oracle的資料庫文件 日誌文件 資料庫備份文件的後綴分別是什麼

數據文件 .dbf
重做日誌文件 .log
控制文件 .ctl
歸檔日誌 .arc
使用rman建立的備份集 .bkp