新聞中心
隨著互聯(lián)網和云計算的快速發(fā)展,數(shù)據(jù)庫已成為企業(yè)和個人存儲和處理數(shù)據(jù)的重要工具。然而,隨著數(shù)據(jù)泄露事件和黑客攻擊的不斷增多,安全問題也成為數(shù)據(jù)管理面臨的嚴峻挑戰(zhàn)。許多數(shù)據(jù)庫采取了不同的安全措施保護數(shù)據(jù)安全,如訪問控制、加密、備份等。在這種背景下,當數(shù)據(jù)庫遇到被保護的情況,如何重置被保護的數(shù)據(jù)庫成為了一項重要的技能。

1.了解賬戶權限
在重置被保護的數(shù)據(jù)庫之前,首先需要了解當前賬戶的權限。因為有些數(shù)據(jù)庫可能對特定操作有限制,比如創(chuàng)建新數(shù)據(jù)庫、備份數(shù)據(jù)等操作。因此,在重置之前,我們需要確認當前賬戶是否有足夠的權限執(zhí)行我們計劃中的操作。如果沒有足夠的權限,我們需要通過管理員賬戶或其他有權限的賬戶來進行操作。
2.備份
在重置被保護的數(shù)據(jù)庫之前,必須先備份所有的數(shù)據(jù)和日志文件。備份可以幫助我們在操作數(shù)據(jù)庫時防止數(shù)據(jù)丟失或數(shù)據(jù)庫損壞。因此,注意備份數(shù)據(jù)庫信息是重置前必須考慮到的。
3.關閉數(shù)據(jù)庫
在開始重置被保護的數(shù)據(jù)庫之前,必須先關閉所有數(shù)據(jù)庫進程。關閉數(shù)據(jù)庫可以減少損壞的風險,并確保重置過程中的數(shù)據(jù)一致性。關閉數(shù)據(jù)庫后,我們進行重置的操作將無法訪問或損壞當前數(shù)據(jù),更大化地保護了我們的數(shù)據(jù)安全。
4.刪除舊版本的數(shù)據(jù)庫
刪除舊版本的數(shù)據(jù)庫可以釋放磁盤空間,并避免出現(xiàn)意外的訪問和更改。我們可以通過SQL命令行、SQL Server Management Studio(SS)等工具來刪除舊版本的數(shù)據(jù)庫,并確保刪除的數(shù)據(jù)庫不會影響其他操作,如備份和升級。
5.清空數(shù)據(jù)庫
在刪除舊版本的數(shù)據(jù)庫后,需要清空新數(shù)據(jù)庫中的所有數(shù)據(jù)。我們可以使用SQL命令行、SQL Server Management Studio(SS)等工具來清空數(shù)據(jù)庫。此處要注意,清空數(shù)據(jù)庫后將無法恢復任何數(shù)據(jù),應謹慎操作。
6.重建數(shù)據(jù)庫
在清空數(shù)據(jù)庫后,需要使用 SQL 命令行、SS 等工具來重建數(shù)據(jù)庫。在這一步中,我們可以指定新數(shù)據(jù)庫的名稱、大小、數(shù)據(jù)類型等信息。這里,我們可以使用之前備份的數(shù)據(jù)進行恢復,也可以開始一個新的、全新的數(shù)據(jù)庫。
7.恢復備份文件
一旦刪除了舊版本的數(shù)據(jù)庫并清除了數(shù)據(jù)庫,我們就可以恢復之前備份的數(shù)據(jù)。可以通過使用 SQL Server 或 SS 恢復備份文件,還可以使用其他數(shù)據(jù)庫恢復工具。 確?;謴偷臄?shù)據(jù)和備份的數(shù)據(jù)是同一版本,以確保數(shù)據(jù)的一致性。
8.測試新數(shù)據(jù)庫
在恢復備份文件后,我們需要測試所有新數(shù)據(jù)庫以確保它們正常運行。測試是否能夠正確地執(zhí)行所有操作,檢查所有的權限和配置,確保數(shù)據(jù)庫可被安全地使用。
在這之后,你就可以順利地完成了一次數(shù)據(jù)庫的重置,并且可以在之后完成其他需要的操作。對于每一個處理數(shù)據(jù)文件,良好的安全措施是非常重要的。不管是個人還是公司,您可以依靠明智的數(shù)據(jù)管理來保護您的數(shù)據(jù),抵御潛在的網絡攻擊。
相關問題拓展閱讀:
- Oracle數(shù)據(jù)庫的備份及恢復策略研究
- sql2023數(shù)據(jù)庫緊急模式如何恢復
- 如何解決無法打開數(shù)據(jù)庫,恢復操作已將數(shù)據(jù)標記為suspect。
Oracle數(shù)據(jù)庫的備份及恢復策略研究
多工聯(lián)機重作日志文件
每個數(shù)據(jù)庫實例都有其自己的聯(lián)機重作日志組 在操作數(shù)據(jù)庫時 Oracle首先將數(shù)據(jù)庫的全部改變保存在重作日志緩沖區(qū)中 隨后日志記錄器進程(LGWR)將數(shù)據(jù)從系統(tǒng)共用區(qū)SGA(System Global Area)的重作日志緩沖區(qū)寫機重作日志文件 在磁盤崩潰或實例失敗時 可以通過與之相關的聯(lián)機重作日志來保護數(shù)據(jù)庫 將損失降至更低 但Oracle在默認的方式下只創(chuàng)建一組重作日志文件(每一組只有一個項目文件) 為了減少丟失這些重要的重作日志文件的危險 因此需要對其進行鏡像拷貝
在Oracle級多工聯(lián)機重作日志文件 即增加多個文件到每個組以便鏡像數(shù)據(jù) 這樣I/O故障或寫丟失只損壞一個拷貝 從而保證了LGWR后臺進程至少能夠向一個成員寫入信息 數(shù)據(jù)庫仍然可以繼續(xù)運行 同時應保證日志組的成員不應駐存在同一物理設備上 因為這將削弱多重日志文件的作用
鏡像拷貝控制文件
控制文件描述通用的數(shù)據(jù)庫結構 它存儲了大量數(shù)據(jù)庫狀態(tài)信息 包括物理結構和聯(lián)機重作日志文件在當時的名稱 位置 狀態(tài) 控制文件在數(shù)據(jù)庫啟動時被Oracle實例讀取 保持打開并隨著操作而文件內容更新 直到實例關閉為止 在它打開的過程中能夠同步需要恢復的信息 包括檢查點信息 因此若損壞或丟失了控制文件 Oracle將不能繼續(xù)工作 因此應在系統(tǒng)中保持控制文件的多個拷貝 且這些拷貝應置于安裝于不同磁盤控制器下的不同磁盤設備中
由于Oracle沒有提供對控制文件多工的完整支持 因此應在對控制文件使用操作系統(tǒng)或硬件鏡像 即在修改初始化文件的control_files參數(shù)后重新啟動數(shù)據(jù)庫前 應將控制文件復制到定義的新位置 否則數(shù)據(jù)庫啟動時將會出錯
激活歸檔進程
當數(shù)據(jù)庫運行于NOARCHIVELOG模式下時 只能在完全關閉數(shù)據(jù)庫后進行數(shù)據(jù)庫的一致備份 并且同時禁用了聯(lián)機重作日志的存檔 這樣在Oracle實例失敗時只能將數(shù)據(jù)庫修復到最近的完整數(shù)據(jù)庫備份時的那一點上 不能在失效點處對實例進行恢復 而在ARCHIVELOG模式下 數(shù)據(jù)庫不僅可以進行一致備份 還可以在數(shù)據(jù)庫打開的情況下進行聯(lián)機備份 通過數(shù)據(jù)庫的備份和聯(lián)機與存檔的重作日志文件 用戶可以恢復所有已提交的事務 并允許將數(shù)據(jù)庫恢復到指定的時間 SCN或日志系列號處 增大了恢復的靈活性 減少了故障時的數(shù)據(jù)丟失 因此數(shù)據(jù)庫應運行于ARCHIVELOG模式
在ARCHIVELOG模式下為了防止文件損壞和介質故障 應把日志歸檔到不同的磁盤上 這可以通過在初始化文件中為歸檔重作日志指定多個目標實現(xiàn)
數(shù)據(jù)庫實施較大改變時備份
因為控制文件中保存了數(shù)據(jù)庫的模式結構信息 因此在對數(shù)據(jù)庫進行較大改變(包括改變表結構 增加 刪除日志文件或數(shù)據(jù)文件等)時應立即備份控制文件及相應的數(shù)據(jù)文件
使用RESETLOGS選項打開數(shù)據(jù)庫后進行備份
在以RESETLOGS選項打開數(shù)據(jù)庫后 應對整個數(shù)據(jù)庫進行脫機或聯(lián)機的備份 否則將不能恢復重置日志后的改變
當以RESETLOGS選項打開數(shù)據(jù)庫時 Oracle將拋棄恢復中沒有應用的重復信息 并確保永遠不再運用 同時還將初始化控制文件中關于聯(lián)機日志和重作線程的信息 清除聯(lián)機日志中的內容 因此 RESETLOGS前的歸檔日志的序列號將與RESETLOGS后的Oracle控制文件的要求值不相符(備份文件中的檢查點比控制文件中的檢查點舊) 即在恢復中不能應用以前的歸檔日志文件 從而導致RESETLOGS操作之前的備份在新形體中無用
避免備份聯(lián)機重作日志文件
由于文中提出了多工聯(lián)機重作日志文件且數(shù)據(jù)庫運行于ARCHIVELOG模式 ARCH進程能夠將聯(lián)機重作日志歸檔 因此不必對其進行備份 若用備份的聯(lián)機重作日志文件重建它 可能會引起日志文件序列號的混亂 從而破壞數(shù)據(jù)庫 得到適得其反的結果
重置聯(lián)機日志
在進行了不完全恢復或用備份控制文件進行恢復后 應重置聯(lián)機日志
為了確保數(shù)據(jù)庫的一致性 必須保證在恢復后所有數(shù)據(jù)文件都恢復到同一個時間點 但不完全恢復可能導致數(shù)據(jù)文件中具有一個與其它文件不同的檢查點 導致數(shù)據(jù)庫的一致性受到破壞 同樣 備份的控制文件中保存的SCN和計數(shù)器與當前日志文件中的值可能不同 從而也破壞了數(shù)據(jù)庫的一致性 因此應在進行完上述兩項操作后重置聯(lián)機日志
數(shù)據(jù)庫的邏輯備份
以上所述備份都為物理備份 是實際物理數(shù)據(jù)庫文件從一處拷貝到另一處的備份 除此之外還可使用Oracle提供的導出實用程序進行數(shù)據(jù)庫的邏輯備份 Oracle同時還提供了相應的導入實用程序重建邏輯備份中保存的信息
邏輯備份只拷貝數(shù)據(jù)庫中的數(shù)據(jù) 而不記錄數(shù)據(jù)位置的備份過程 它利用SQL語句 從數(shù)據(jù)庫中導出數(shù)據(jù)到一個存放在合適位置的外部文件中 同時并可檢測到數(shù)據(jù)塊的損壞 因此可用其作為物理備份的補充
備份策略
考慮到如今大部分信息系統(tǒng)每周的業(yè)務是 × 操作 因此采用聯(lián)機備份 否則可每隔一定時間進行一次脫機備份
應用上述規(guī)則 可得出下述典型的備份策略
?、夔R像拷貝重作日志文件
?、阽R像拷貝控制文件
?、奂せ顨w檔進程 即以ARCHIVELOG模式操作數(shù)據(jù)庫
?、苊刻爝M行數(shù)據(jù)庫的部分聯(lián)機備份(每天進行數(shù)據(jù)庫的完全熱備份將無畏地增加數(shù)據(jù)庫的負擔且沒有必要 同時也增加了數(shù)據(jù)庫恢復時的靈活性)
?、菝扛粢恢芑驇字苓M行一次數(shù)據(jù)庫的邏輯備份
實際項目應用
當數(shù)據(jù)庫中的文件達到一定數(shù)量后 DBA可能記不住該備份的文件的名或位置 因此 若能使備份過程自動化可有效地減輕DBA的負擔 同時不會遺漏應備份的文件 應用自動批處理文件及腳本文件可實現(xiàn)備份 恢復的自動化 下面簡介了在實際項目開發(fā)中應用本文所提出的自動備份 恢復策略 通過實際應用 證明了該策略的正確性和可行性
?。?)下述腳本實現(xiàn)聯(lián)機重作日志的多工
connect 賬戶名/密碼 alter database ktgis add logfile member 日志文件的存儲位置 to group 聯(lián)機日志組號; shutdown immediate startup pfile=初始化文件的存放位置 exclusive mount; 裝載數(shù)據(jù)庫且不打開 alter database archivelog; 激活歸檔進程 alter database open; exit
?。?)下列VB代碼自動建立聯(lián)機備份的批處理文件及相應的腳本文件
Set adoTmp = objConnect Execute( select tablespace_name from sys dba_data_files ) 得到數(shù)據(jù)庫中的表空間名 Dim lnum As Long Dim lnum As Long lNum = FreeFile Open 自動備份批處理文件路徑 For Binary As lNum lnum = FreeFile Open onlinebegin sql For Binary As lnum onlinebegin sql為設置表空間進入熱備份模式的腳本文件文件名 lnum = FreeFile Open onlineend sql For Binary As lnum onlinebegin sql為結束表空間熱備份模式的腳本文件文件名 strTmp = connect 賬戶名/密碼 & Chr( ) & Chr( ) Put lnum strTmp strTmp = shutdown immediate & Chr( ) & Chr( ) Put lnum strTmp strTmp = startup pfile=初始化文件的存放位置exclusive mount; & Chr( ) & Chr( ) Put lnum strTmp strTmp = alter database archivelog; & Chr( ) & Chr( ) Put lnum strTmp strTmp = alter database open; & Chr( ) & Chr( ) Put lnum strTmp strTmp = connect 賬戶名/密碼 & Chr( ) & Chr( ) Put lnum strTmp strTmp = Oracle服務管理器路徑 & @ & onlinebegin sql & Chr( ) & Chr( ) 在服務管理器中執(zhí)行腳本文件onlinebegin sql Put lNum strTmp Do While Not adoTmp EOF Set adoTmp = objConnect Execute( select file_name from sys dba_data_files where tablespace_name= & adoTmp Fields( ) & ) 得到當前表空間所對應的所有數(shù)據(jù)文件名 通過循環(huán)即可得到所有表空間所對應數(shù)據(jù)文件名 若只備份指定的表空間 可指定表空間名從而得到其對應的物理數(shù)據(jù)文件 strTmp = alter tablespace & adoTmp Fields( ) & begin backup; & Chr( ) & Chr( ) 將表空間置于熱備份模式 Put lnum strTmp strTmp = Oracle的ocopy exe工具全路徑 & adoTmp Fields( ) & & 備份文件存放路徑 & Chr( ) & Chr( ) Put lNum strTmp strTmp = alter tablespace & adoTmp Fields( ) & end backup; & Chr( ) & Chr( ) 表空間恢復正常模式 Put lnum strTmp adoTmp MoveNext Loop strTmp = Oracle服務管理器路徑 & @ & onlineend sql & Chr( ) & Chr( ) 在服務管理器中執(zhí)行腳本文件onlineend sql Put lNum strTmp strTmp = exit & Chr( ) & Chr( ) 退出服務管理器 Put lnum strTmp strTmp = alter system switch logfile; & Chr( ) & Chr( ) 強制日志轉換 使Oracle創(chuàng)建一個歸檔日志文件 Put lnum strTmp strTmp = exit & Chr( ) & Chr( ) Put lnum strTmp Close Set adoTmp = Nothing Set adoTmp = Nothing
運行得到的自動批處理文件 即可自動進行數(shù)據(jù)庫的聯(lián)機備份
?。?)在從備份中恢復數(shù)據(jù)文件后 執(zhí)行下列腳本將數(shù)據(jù)庫的恢復程序
connect賬戶名/密碼 shutdown abort startup mount pfile=初始化文件的存放位置; 裝載數(shù)據(jù)庫 set autorecovery on; 打開自動恢復 recover database; alter database open; 打開數(shù)據(jù)庫
結束語
lishixinzhi/Article/program/Oracle/202311/18527
sql2023數(shù)據(jù)庫緊急模式如何恢復
use master
go
exec sp_configure ‘allow updates’,1 RECONFIGURE WITH OVERRIDE /* 打開修改系統(tǒng)表的開關 */
go
update sysdatabases set status=32768 where name=’jiax’ /* 設置數(shù)據(jù)庫狀態(tài)*/
go
update sysdatabases set status=0 where name=’jiax’ /* 重置數(shù)據(jù)庫狀態(tài) */
go
exec sp_configure ‘allow updates’,0 RECONFIGURE WITH OVERRIDE /* 關閉打開修改系統(tǒng)表的開關 */
/*一條一條執(zhí)行語句,起作用的是set status=0那句,其中jiax是數(shù)據(jù)庫名字*/
如何解決無法打開數(shù)據(jù)庫,恢復操作已將數(shù)據(jù)標記為suspect。
5. 釋放磁盤空間并且重新運行恢復操作,按照下面的步驟收縮日志。
sp_resetstatus 關閉數(shù)據(jù)庫的置疑標志,但是原封不動地保持數(shù)據(jù)庫的其它選項。
為從根本上解決這樣的問題,你可以按下面的操作配置SQLSERVER:
a.如果不需要恢復到指定的時間點,你可以將數(shù)據(jù)庫的恢復模式配置為簡單,這樣
UPDATE,DELETE,SELECT就不會記錄日志,日志就不會增加的很大:
USE MASTER
GO
ALTER DATABASE DB_NAME SET RECOVERY SIMPLE
b.如果你的恢復模式是全部,你一定要配置日志字段收縮:
USE MASTER
GO
sp_dboption ‘databasename’,’trunc. log on chkpt.’,true
sp_dboption ‘databasename’,’autoshrink’,true
c.通過每日備份將日志收縮:
BACKUP DATABASE DATABASE_NAME TO BACKUP_DEVICES
BACKUP LOG DATABASE_NAME TO LOG_DEVICES
OR
BACKUP LOG DATABASE_NAME with truncate_only
**檢查日志的容量:DBCC SQLPERF (LOGSPACE) 這時日志并沒有收縮!
d.每天在備份數(shù)據(jù)庫完成之后,重新啟動MS SQLSERVER SERVICE.
USE DATABASE_NAME
go
DBCC SHRINKFILE(2,truncateonly)
**檢查日志的容量:DBCC SQLPERF (LOGSPACE) 這時日志已經收縮!
e.手動快速收縮日志:
/ *run below script,you will shrink you database log files
immediately, in my experience,you need to run the script foror
minutes before stopping it manually */
use databasename
dbcc shrinkfile(2,notruncate)
dbcc shrinkfile(2,truncateonly)
create table t1(char1 char(4000))
go
declare @i int
select @i=0
while(1=1)
begin
while(@i
begin
INSERT INTO T1 VALUES (‘A’)
SELECT @I=@I+1
END
TRUNCATE table T1
BACKUP LOG youdatabasename with truncate_only
end
GO
注意 只有在您的主要支持提供者指導下或有疑難解答建議的做法時,才可以使用
sp_resetstatus。否則,可能會損壞數(shù)據(jù)庫。
由于該過程修改了系統(tǒng)表,系統(tǒng)管理員必須在運行 sp_resetstatus這個過程前,啟用系統(tǒng)表更新。要
啟 用更新,使用下面的過程:
USE master
GO
sp_configure ‘allow updates’,
GO
RECONFIGURE WITH OVERRIDE
GO
過程創(chuàng)建后,立即禁用系統(tǒng)表更新:
sp_configure ‘allow updates’,
GO
RECONFIGURE WITH OVERRIDE
GO
只有系統(tǒng)管理員才能執(zhí)行 sp_resetstatus。執(zhí)行該過程后,立即關閉 SQL Server。
SQL Server事務日志可能會被填滿,這會阻止之后的數(shù)據(jù)庫操作,
包括UPDATE, DELETE, INSERT 和CHECKPOINT。
事務日志填滿會導致1105錯誤:
Can’t allocate space for object syslogs in database dbname because
the logsegment is full。 If you ran out of space in syslogs, dump
the transaction log。 Otherwise use ALTER DATABASE or
sp_extendsegment to increase the size of the segment。
這種現(xiàn)象可能出現(xiàn)于任何一個數(shù)據(jù)庫中,包括Master和TempDB。一些難以預見的因素可能
消耗日志空間。 例如:
一個大型事務, 尤其像批量數(shù)據(jù)更新、插入或刪除。
一個未提交的事務。
檢查點處理程序截除時所需的帶寬過大。
截除時超過閾值
上述各種條件互相作用的結果。
用于發(fā)布的標記事務沒有被日志讀取程序讀走
下面是修復的步驟和收縮日志的步驟:
1.在命令提示符下運行以下命令啟動 SQL Server:
SQLSERVER -f -m
備注:-m 開關以單用戶模式啟動 SQL Server。在單用戶模式下,只能成功建立一個連接。
請注意是否有任何其他客戶機或服務可能會在您通過 SQL Server 查詢分析器建立連接前使
用那個連接。
2. 重置置疑數(shù)據(jù)庫的狀態(tài)。
sp_resetstatus ‘database_name’
下面是結果集:
Database’database_name’status reset!
WARNING: You must reboot SQL Server prior to accessing this database!
3. 用 ALTER DATABASE 向數(shù)據(jù)庫添加一個數(shù)據(jù)文件或日志文件:
USE master
GO
CREATE DATABASE db_name ON
(
NAME = dbname_dat1,
FILENAME = ‘D:\MSSQL\Data\dbname_dat1.ndf’,
SIZE =MB,
FILEGROWTH = 50MB
)
GO
–更改該數(shù)據(jù)庫以添加一個 2GB 大小的新數(shù)據(jù)文件
ALTER DATABASE db_name
ADD FILE
(
NAME = dbname_dat2,
FILENAME = ‘F:\MSSQL\DATA\dbname_dat2.ndf’,
SIZE =MB,
FILEGROWTH = 50MB
)
GO
–更改該數(shù)據(jù)庫以添加一個1GB 大小的新日志文件
ALTER DATABASE db_name
ADD LOG FILE
( NAME = db_name_log2,
FILENAME = ‘F:\MSSQL\Data\db_name_log2.ldf’,
SIZE =MB,
FILEGROWTH = 20MB),
GO
4. 停止并重新啟動 SQL Server:
用新的數(shù)據(jù)文件或日志文件所提供的額外空間,SQL Server 應該能完成數(shù)據(jù)庫的恢復。
如果 SQL Server 因為磁盤可用空間不足,而不能完成數(shù)據(jù)庫的恢復
那么 SQL Server會返回錯誤并且將 sysdatabases 中的 status 列設為置疑。
你可以看到在SQLSERVER 的ERROR LOG 和OS的應用程序日志中應該有1105的錯誤信息:
關于重置被保護數(shù)據(jù)庫的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網、IDC服務、應用軟件開發(fā)、網站建設推廣的公司,為客戶提供互聯(lián)網基礎服務!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務器和獨立服務器。創(chuàng)新互聯(lián)——四川成都IDC機房服務器托管/機柜租用。為您精選優(yōu)質idc數(shù)據(jù)中心機房租用、服務器托管、機柜租賃、大帶寬租用,高電服務器托管,算力服務器租用,可選線路電信、移動、聯(lián)通機房等。
網頁名稱:如何重置被保護的數(shù)據(jù)庫?(重置被保護數(shù)據(jù)庫)
文章路徑:http://m.5511xx.com/article/dheodpe.html


咨詢
建站咨詢
