第一篇:MSSql2008數據庫恢復過程記錄
信息平臺采用RoseHA8.5 for SQL Server 2008雙機熱備的存儲解決方案,在應用過程中,由于roseHa的切換界面簡易,操作簡單,適用于但應用層的管理,有時候雙機切換會造成數據丟失甚至數據庫損壞。
最常見的是Msdb損壞出現如下錯誤
通過百度、google搜索無法打開數據庫 'msdb'。恢復操作已將該數據庫標記為 SUSPECT。有關詳細信息,請參閱 SQL Server 錯誤日志。(Microsoft SQL Server,錯誤: 926)解決方式
第一種:把其他電腦中中的msdb數據庫的mdf和ldf文件拷貝到自己的目錄中,但是這種方法的缺點是:造成一部分數據丟失,尤其是代理的相關作業丟失。msdb是系統數據庫,里面記錄調度警報和作業以及操作員的信息,如果沒有用到這些內容,直接用備份恢復就可以的。在單用戶模式下,停掉SQL server服務,在另一臺機裝同版本sqlserver,把msdb覆蓋過來。第二種:執行下面的SQL命令(在單用戶模式修復數據庫)USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的數據庫名' Go
sp_dboption '置疑的數據庫名', 'single user', 'true'
Go
DBCC CHECKDB('置疑的數據庫名')
Go
update sysdatabases set status =28 where name='置疑的數據庫名' Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '置疑的數據庫名', 'single user', 'false'
Go
其中置疑的數據庫名就是有問題的數據庫 操作后:
經過測試只有結合兩種方案來解決。
首先是停止生產運行的sql服務,拷貝啟動正常的MSdb庫到生產環境中替換損壞的庫,啟動生產環境Sql服務,運行上述T-Sql修復msdb數據庫執行命令。
第三步分別執行下面T-sql 此步驟同樣能解決裝完SQL Server后修改計算機名不能執行代理作業
use master go select @@servername select serverproperty('servername')如果這兩個結果不一致,說明機器改過名字
--要修復此問題
--執行下面的語句,完成后重新啟動SQL服務
if serverproperty('servername')<> @@servername begin declare @server sysname set @server = @@servername exec sp_dropserver @server = @server set @server = cast(serverproperty('servername')as sysname)exec sp_addserver @server = @server , @local = 'LOCAL' end 最后重新啟動服務
第四步,新建維護計劃(備份數據庫)測試是否能運行。運行前請檢查Sql代理服務是否啟動。如果不能運行 執行下面T-sql SELECT [subsystem] ,[subsystem_dll]
FROM[msdb].[dbo].[syssubsystems] GO
查看原來是配置里的指定Dll文件路徑不對,一般共享存儲無D盤,一般是E盤
執行命令替換D:為E: Update [msdb].[dbo].[syssubsystems] set subsystem_dll=replac(subsystem_dll,’D:’,’E:’);
如果生產環境數據庫實例名跟拷貝的msdb數據庫實例名不一致 請執行
Update[msdb].[dbo].[syssubsystems]setsubsystem_dll=replace(subsystem_dll,'MSSQLSERVER','XXServer')'MSSQLSERVER'為拷貝msdb的數據庫實例名 'XXServer'為生產環境的數據庫實例名
重啟生產環境Sql服務和代理服務即可。
第二篇:MSSQL 2005 數據庫變成可疑狀態處理辦法
MSSQL 2005 數據庫變成可疑狀態處理辦法
發現黃色頁面,日志報錯,無法鏈接,打開SQL一看,數據庫變成了“三角驚嘆號+數據庫名+(可疑)”
1、修改數據庫為緊急模式
ALTER DATABASE 數據庫名 SET EMERGENCY
2、使數據庫變為單用戶模式
ALTER DATABASE 數據庫名 SET SINGLE_USER
3、修正數據庫日志重新生成,此命令檢查的分配,結構,邏輯完整性和所有數據庫中的對象不正確。當您指定“REPAIR_ALLOW_DATA_LOSS”作為DBCC CHECKDB命令參數,該程序將檢查和修正報告的不正確。但是,這些修正可能會導致一些數據丟失。
DBCC CheckDB(數據庫名 , REPAIR_ALLOW_DATA_LOSS)
4、使數據庫變回為多用戶模式
ALTER DATABASE 數據庫名 SET MULTI_USER
第三篇:虛擬主機中MSSQL和Access數據庫數據傳輸簡單總結
虛擬主機中MSSQL和Access數據庫數據傳輸簡單總結
所謂的數據傳輸,其實是指SQLServer訪問Access間的數據。
由于歷史的原因,客戶以前的數據很多都是在存入在文本數據庫中,如Acess現在系統升級及數據庫服務器如SQLServer后,經常需要訪問文本數據庫中的數據,所以就會產生這樣的需求。
要完成標題的需要,在SQLServer中是一件非常簡單的事情。
通常的可以有3種方式:
1、BCP
2、分布式查詢.分別以查、增、刪、改作為簡單的例子: 下面,直接以T-SQL的形式表現出來。
一、SQLServer和Access1、查詢Access中數據的方法:
select * from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')
或
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=“c:DB2.mdb”;User ID=Admin;Password=')...serv_user2、從SQLServer向Access寫數據:
insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from Accee表')select * from SQLServer表
或用BCP
master..xp_cmdshell'bcp “serv-htjs.dbo.serv_user” out “c:db3.mdb”-c-q-S“.”-U“sa”-P“sa”' 上面的區別主要是:OpenRowSet需要mdb和表存在,BCP會在不存在的時候生成該mdb3、從Access向SQLServer寫數據:有了上面的基礎,這個就很簡單了
insert into SQLServer表 select * from
OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from Accee表')
或用BCP
master..xp_cmdshell'bcp “serv-htjs.dbo.serv_user” in “c:db3.mdb”-c-q-S“.”-U“sa”-P“sa”'
4、刪除Access數據:
delete from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')
where lock=05、修改Access數據:
update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:db2.mdb','select * from serv_user')set lock=1
第四篇:個人所得稅備份恢復數據庫步驟
1.先找到這三個文件
2.備份這三個文件到桌面或指定盤
●具體操作如下
一、數據備份的方法:
請您右擊桌面桌面金稅三期個人所得稅圖標→→屬性→→“打開文件位置”(Win7系統)/“查找目標”(XP系統),1、打開Data文件夾,把里面的AppData.db、EPAccount.db復制粘貼到桌面上;
2、左上角“后退”按鈕點擊一下,打開AppModules→→GRSDS→→Data,把里面的Data.db復制粘貼到桌面上。
3、當前目錄下如存在“XX.db-wal”和“XX.db-shm”兩個擴展名文件,需同時與“XX.db”一起備份; 例如:Data.db-wal和Data.db-shm,要與Data.db一起復制拷貝、壓縮打包。
溫馨提醒:請將復制的文件妥善保管,以備后期恢復數據庫使用。
二、數據恢復的方法:
步驟一:請先關閉個稅軟件,右擊桌面金稅三期個人所得稅圖標→→“屬性”→→“打開文件位置”(Win7系統)/“查找目標”(XP系統)
1、打開“data文件夾”,將之前備份的appdata.db和epaccount.db復制并替換進來;
2、左上角“后退”按鈕點擊一下,打開“AppModules文件夾”→→“GRSDS文件夾”→→打開“data文件夾”,將之前備份的Data.db復制并替換進來,數據庫就恢復好了。
3、恢復操作前,請確認當前目錄是否存在“XX.db-wal”和“XX.db-shm”兩個擴展名文件,如存在請先刪除此文件,然后再進行數據庫恢復;
例如:先刪除Data.db-wal和Data.db-shm兩個文件,再恢復Data.db。
溫馨提醒:數據只能覆蓋,不能合并;您在恢復數據前,請先確認新軟件中沒有報稅的數據再操作。
第五篇:Oracle數據庫備份和恢復論文
摘要:本文從Oracle的體系結構開始,由原理到實踐,論述了Oracle數據庫備份的方式和策略。包括IMp/EXp,RMAN,OS備份等。
Abstract: Starting from the architecture of ORACLE, this paper discusses the backup method and strategy of database Oracle, including IMp/EXp, pMAN and OS theoretically and practically.關鍵字:Oracle, 備份, 恢復, RMAN
Keywords: Oracle;Backup;Restoration;RMAN
概述
在大型軟件運行系統中,存在著很多備份策略,如RAID技術,CLUSTER技術等等。很多時候,這些系統的備份就能夠解決數據庫備份的問題。但是,這種備份成本很高。同時,硬件的備份有時根本滿足不了現實的需要,如果用戶不小心誤刪了一個表,又想恢復的時候,數據庫的備份就變的重要了。
Introduction: In the running system of some big software, there exist many backup strategies such as RAID technology and CLUSTER technology etc.In most cases, these system backup strategies can fulfill the database backup.However the cost is rather high.At the same time, hardware backup sometimes is far from the actual requirement.The database backup becomes very important when a table is deleted by accident and needs to be restored.Oracle的運行方式
Oracle數據庫有兩種運行方式:一是歸檔方式(ARCHIVELOG),歸檔方式的目的是當數據庫發生故障時最大限度恢復數據庫,可以保證不丟失任何已提交的數據;二是不歸檔方式(NOARCHIVELOG),只能恢復數據庫到最近的回收點(冷備份或是邏輯備份)。根據數據庫的高可用性和用戶可承受丟失的工作量的多少,對于實時性要求高的數據庫,強烈要求采用為歸檔方式;不歸檔方式只用在那些開發和調試的數據庫等。
如何改變數據庫的運行方式,在創建數據庫時,作為創建數據庫的一部分,就決定了數據庫初始的存檔方式。一般情況下為NOARCHIVELOG方式。當數據庫創建好以后,根據我們的需要把需要運行在歸檔方式的數據庫改成ARCHIVELOG方式。操作如下。
1.關閉數據庫,備份已有的數據,改變數據庫的運行方式是對數據庫的重要改動,所以要對數據庫做備份,對可能出現的問題作出保護。
2.修改初試化參數,使能自動存檔。
修改(添加)初始化文件init[SID].ora參數:
log_archive_start=true #啟動自動歸檔
log_archive_format=ARC%T%S.arc #歸檔文件格式
log_archive_dest=/archdir/arch #歸檔路徑
在8i中,可以最多有五個歸檔路徑,并可以歸檔到其它服務器,如備用數據庫(standby database)服務器。
3.啟動Instance到Mount狀態,即加載數據庫但不打開數據庫。
$> svrmgrl
SVRMGRL> connect internal
SVRMGRL> startup mount
SVRMGRL> alter database archivelog;// 使數據庫運行在歸檔方式
SVRMGRL> alter database open;
Oracle的備份方案
按照備份的方式,可以分為邏輯備份、冷備份(脫機備份)、熱備份(聯機備份),其中冷備份與熱備份又可以合稱為物理備份。按照備份的工具,可以分為EXp/IMp備份、操作系統備份、RMAN、第三方工具備份,如VERITAS等。下面分別介紹Oracle本身提供的幾種備份工具和操作。
1.EXp/IMp備份(邏輯備份)
EXp/IMp屬于邏輯備份的范疇,邏輯備份是指只備份數據庫中的數據但不記錄數據物理位置的一種備份。導出為數據庫作一個二進制的備份,并且這個備份只能由其姊妹程序imp(import)來讀取。具體的使用方法如下。(因為EXp和IMp使用上參數基本相同,所以只以EXp為例。)
EXp的命令格式和參數
格式:KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例程: EXp SCOTT/TIGER GRANTS=Y TABLES=(EMp,DEpT,MGR)
USERID 必須是命令行中的第一個參數
關鍵字 說明(默認)關鍵字 說明(默認)
USERID 用戶名/口令 FULL 導出整個文件(N)
BUFFER 數據緩沖區的大小 OWNER 所有者用戶名列表
FILE 輸出文件(EXpDAT.DMp)TABLES 表名列表
COMpRESS 導入一個范圍(Y)RECORDLENGTH IO記錄的長度
GRANTS 導出權限(Y)INCTYpE 增量導出類型
INDEXES 導出索引(Y)RECORD 跟蹤增量導出(Y)
ROWS 導出數據行(Y)pARFILE 參數文件名
CONSTRAINTS 導出限制(Y)CONSISTENT 交叉表一致性
LOG 屏幕輸出的日志文件 STATISTICS 分析對象(ESTIMATE)
DIRECT 直接路徑(N)TRIGGERS 導出觸發器(Y)
FEEDBACK 顯示每 x 行(0)的進度 FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句
注:可以通過exp -help命令查看exp的使用方法;imp-help命令查看imp的使用方法.2.操作系統備份(冷備份和熱備份)
操作系統備份有兩類,冷備份(Cold backup)和熱備份(Hot backup)。操作系統備份和上面的邏輯備份有本質的區別,它將拷貝整個的數據文件。
冷備份
在文件級備份開始前數據庫必須徹底關閉。關閉操作必須用帶有normal、immediate、transaction選項的shutdown來執行。
數據庫使用的每個文件都被備份下來,這些文件包括: 所有數據文件、所有控制文件、所有聯機重做日志文件和INIT.ORA文件(建議)。
作冷備份一般步驟是:
1)正常關閉要備份的實例(instance);
2)備份整個數據庫到一個目錄
3)啟動數據庫
即:
SVRMGRL>connect internal
SVRMGRL >shutdown immediate
SVRMGRL >!cp
or
SVRMGRL >!tar cvf /dbbak/fullbk.tar /u01/oracle/oradata/dbname
SVRMGRL >startup
熱備份
熱備份是當數據庫打開時的操作系統備份。熱備份只能用于ARCHIVELOG方式的數據庫。熱備份沒有必要備份聯機日志,但必須是歸檔狀態,在實例恢復的時候,可能需要用到歸檔日志。當前聯機日志一定要保護好或是處于鏡相狀態,當前聯機日志的損壞,對于數據庫的損壞是巨大的,只能以數據的丟失來進行數據庫的恢復工作。對于臨時表空間,存放的是臨時信息,在熱備份是也可以考慮不用備份,如果臨時文件發生故障,可以刪除該數據文件與表空間,重建一個臨時表空間。
熱備份備份的內容和冷備份備份的內容一樣,操作一般步驟是:
1)備份的表空間通過使用ALTER TABLESpACE …… BEGIN BACKUp使表空間進入熱備份方式。
2)用類似冷備份的操作系統命令對組成表空間的數據文件進行拷貝。
3)使用ALTER TABLESpACE …… END BACKUp命令使表空間脫離熱備份方式。
4)使用ALTER DATABSE …… BACKUp CONTROLFILE命令備份控制文件。
即:
SVRMGRL>connect internal;
SVRMGRL>alter tablespace User begin backup;
SVRMGRL>!cp /u01/oradata/dbname/user01.ora /dbbak/user01.ora
SVRMGRL>alter tablespace User end backup;
SVRMGRL>alter database backup controlfile to
or
SVRMGRL>alter database backup controlfile to trace;
注意:因為熱備份的時候,用戶還在操作數據庫,所以最好是讓每個表空間處于備份狀態的時間最短,這樣就要求一個表空間一個表空間的備份,不要一起使表空間處于備份狀態而同時拷貝數據文件。
3.RMAN
Recovery Manager(RMAN)是一個使DBA能很方便地對數據庫執行備份和恢復任務的Oracle應用工具,能夠提供DBA對企業數據庫備份與恢復操作的集中控制。RMAN只能用于ORACLE8或更高的版本中。它能夠備份整個數據庫或數據庫部件,其中包括表空間、數據文件,控制文件和歸檔文件。RMAN可以按要求存取和執行備份和恢復。
RMAN支持六種不通的類型的備份,經常用到的有兩種:
FULL 數據庫全備份,包括所有的數據塊。
INCREMENTAL 增量備份,是指只備份在同級別或更低級別上進行的前一次備份之后的作過改動的那些數據塊。這其中需要一個0級的增量作為增量的基礎,它備份包括全部曾經被數據庫使用過的數據塊(但不是完全數據庫備份)。RMAN共可以支持7級增量。
BACKUp,RESTORE,RECOVER是RMAN最基本的三個命令,分別可以進行數據庫的備份,復原以及恢復操作。restore命令用于恢復來自備份集或映像拷貝的數據文件、控制文件或歸檔重做日志。recovery命令用于進行介質恢復應用重做日志文件。
RMAN的備份信息一般保存在恢復目錄中,恢復目錄也是一個數據庫,只不過這個數據庫用來保存備份信息,一個恢復目錄可以用來保存多個數據庫的備份信息。RMAN也可以在沒有恢復目錄(NOCATALOG)下運行,這個時候備份信息保存在控制文件。這種情況比較危險,因為一旦控制文件被破壞,將導致所有數據庫備份信息的丟失和恢復的失敗,而且,沒有恢復目錄,很多RMAN的命令將不被支持。所以對于重要的數據庫,建議創建恢復目錄。
創建恢復目錄一般有以下步驟。(例子數據庫為db)
1)為目錄創建一個單獨的表空間
SQL>create tablespace tsrman datafile ’/dbbak/rman/rsrman.dbf’ size 50M;
2)創建RMAN用戶
SQL>create user rman identified by rman default tablespace rsrman temporary tablespace temp;
3)給RMAN授予權限
SQL>grant connect, resource, recovery_catalog_owner to rman;
4)打開RMAN
$rman
5)連接恢復目錄數據庫
RMAN>connect catalog rman/rman@db
6)創建恢復目錄
RMAN>create catalog tablespace tsrman 在對某個數據庫進行備份之前,必須先在恢復目錄上注冊該數據庫,這一過程操作如下(假定目標數據庫連接字符串為db100)。
1)連接到恢復目錄數據庫
$rman rman/rman@db
2)在RMAN中連接到目標數據庫(即要進行備份的數據庫)
RMAN>connect target sys/change_on_install@db100
3)注冊數據庫
RMAN>register database;
注冊完數據庫后,就可以進行數據庫的備份了。有完全數據庫備份、表空間備份、控制文件備份、和歸檔日志備份等。操作分別如下。
1)完全數據庫備份
要求:ARCHIVELOG模式,在DB OpEN的情況下進行數據庫完全備份。
RMAN>run{
allocate channel c1 type=disk;
backup database;
release channel c1;
}
2)表空間備份
要求:ARCHIVELOG模式
RMAN>run{
allocate channel c1 type=disk;
backup tablespace “ts_users” filesperset 3 format ‘aatst_%t%s.%p’;
release channel c1;
}
3)控制文件備份
RMAN>run{
allocate channel c1 type=disk;
backup current controlfile tag=weekly_sat_backup;
release channel c1;
}
在對數據庫進行完全備份時,控制文件自動包含其中。也可以在表空間或數據文件的備份中包含一個控制文件。
RMAN>run{
allocate channel c1 type=disk;
backup tablespace “ts_users”
filesperset 3 format ‘aatst_%t%s.%p’;
include current controlfile;
release channel c1;
}
4)歸檔日志備份
通過查詢數據字典表V$ARCHIVED_LOG獲取要備份的日志序列號,然后執行命令:
RMAN>run{
allocate channel c1 type=disk;
backup archivelog low logseq 3 high logseq 10 thread 1;
release channel c1;
}
Oracle的備份策略
正確的備份策略不僅能保證數據庫服務器的24*7的高性能的運行,還能保證備份與恢復的快速性與可靠性。我們將以RMAN的多級增量備份作為一個備份策略的例子來討論。采用多級備份就是為了減少每天備份所需要的時間,而又保證系統有良好的恢復性。恢復時間與備份時間要有一個權衡。比如只要進行一個數據庫的全備份,然后就只備份歸檔也可以保證能把數據庫恢復到最新的狀態,但是這樣的恢復時間將是不可容忍的。多級備份也正是為了解決這種問題,結合某些應用的特點,可以采用如下的備份策略:
每個月做一個數據庫的全備份(包括所有的數據和只讀表空間);
每個星期一做一次零級備份(不包含只讀表空間);
每個星期三做一次一級備份;
每天做一次二級備份。
每天做一次恢復目錄的熱備份。
任何數據庫的更改需要重新同步CATALOG目錄并重新備份(如添加數據文件)或重新備份(如修改表空間為只讀)。
每次備份后都可以備份歸檔日志或定期備份歸檔日志。如果可能,可以直接備份到磁帶上。
Oracle的恢復
下面的操作約定恢復目錄存儲在db118中,目標數據庫是db100。
1.數據庫恢復
1)啟動SQL*pLUS,使用正確的init.ora文件,使用NOMOUNT選項啟動目標數據庫實例。
2)啟動RMAN并連接到恢復目錄,如下:
$rman catalog rman/rman@db118
恢復管理器: Release 9.2.0.1.0production
Copyright(c)1995, 2002, Oracle Corporation.All rights reserved.連接到恢復目錄數據庫
RMAN>
3)連接到目標數據庫
RMAN>connect target internal/oracle@demo.oracle
連接到目標數據庫: db(DBID=1142471523)
4)一旦連接到目標數據庫,執行restore命令恢復控制文件
RMAN>run{
2>allocate channel c1 type disk;
3>restore controlfile;
4>}
小結
保證Oracle數據庫的安全是系統安全的重要組成部分,必須要設計完善的數據庫備份和恢復方案。Oracle提供的各種工具結合起來使用能夠使數據庫的備份和恢復變得簡單。在實際的Oracle數據庫的備份和恢復中,會有許多不通的和復雜的情況出現,針對不同的情況,要本著使數據具有最大的可恢復性和恢復時間最短的原則去進行數據庫的恢復,這需要大量的實踐和經驗積累。
參考文獻
[1] Oracle8i Backup and Recovery Guide Oracle Document
[2] Oracle8i Recovery Manager User’s Guide and Reference Oracle Document
[3] Oracle9i:A Beginner’s Guide(美)Michael Abbey Michael Corey Ian Abramson 2002.3 機械工業出版社
[4] Oracle8i備份與恢復手冊(美)Rama Velpuri Anand Adkoli 蔣蕊 王磊等譯 2001.9 機械工業出版社