達夢資料庫的聯機備份頗花了我不少時間,關鍵是附帶的文件感覺說得不清楚。不過測試出來後覺得達夢的這個設計還是比較簡明的。
為了讓後面學習的人不用花我這麼多時間,把測試流程整理了下放在下面:
主要測試了:
1. 不包含歸檔的聯機全備
2. 包含歸檔的聯機全備
3. 不包含歸檔的聯機全備的恢復
4. 不包含歸檔的聯機全備檔案加上歸檔日誌的恢復
5. 包含歸檔的聯機全備的恢復
測試版本: v7.1.2.215-build(2013.11.08-36626trunc)
一。檢查並設定資料庫為歸檔模式
聯機備份必須處在歸檔模式下,可用下面兩條sql檢視資料庫當前狀態--檢視歸檔是否開啟
select arch_mode from v$database;
--檢視歸檔日誌資訊
select arch_name,arch_type,arch_dest from v$dm_arch_ini;
二。建立測試資料
-- 建立表空間test_data(資料檔案test_data01.dbf大小為50m)
create tablespace test_data datafile 'c:\dmdbms\data\dameng\test_data01.dbf' size 50;
-- 增加使用者
create user "testuser" identified by "111111" default tablespace "test_data";
-- 授權
grant "dba" to "testuser";
-- 建立模式
create schema test_sch authorization testuser;
-- 建立 表
create table test_sch.t1(id int primary key ,name varchar(20)) storage(on test_data)
-- 插入資料
insert into test_sch.t1 values(1,'aaa');
insert into test_sch.t1 values(2,'bbb');
-- 檢索資料
select * from test_sch.t1;
三。備份資料庫
1. 不包含歸檔的聯機全備
-- 僅備份資料庫,不備份日誌
backup database full to dmbkname03_noarc bakfile 'c:\xcl\online_noarc\dmbkname03_noarc.bak' backupinfo '測試全庫聯機備份不包含歸檔' maxsize 50 without log ;
2. 再次插入資料
insert into test_sch.t1 values(3,'dmbkname03_noarc');
3. 包含歸檔的聯機全備
-- 備份資料庫,幷包含日誌
backup database full to dmbkname04 bakfile 'c:\xcl\online\dmbkname04.bak' backupinfo '測試全庫聯機備份' maxsize 50 ;備份完成的後續工作:
1. 繼續插入一筆資料
-- 插入資料
insert into test_sch.t1 values(4,'dmbkname04');
-- 檢索資料
select * from test_sch.t1;
sql> select * from test_sch.t1;
行號 id name
---------- ----------- ----------------
1 1 aaa
2 2 bbb
3 3 dmbkname03_noarc
4 4 dmbkname04
已用時間: 1.245(毫秒). 執行號:99.2 將歸檔備份乙份到另乙個目錄
3. 在"dm服務檢視器"中停掉對應的例項服務"dmservicedmserver"
4. 將dm.ini 備份乙份到另乙個目錄
5. 刪除資料庫目錄
在"c:\dmdbms\data"目錄下刪除資料庫所在目錄"dameng".此時資料庫就被刪除了。
這時,你去"dm服務檢視器"重新整理下,就看不到"dmservicedmserver"這個服務了
四。恢復測試
達夢資料庫的恢復通常分兩步走.
第一,通過dminit重新初始化出乙個和備份資料庫相同的名字的庫
第二. 執行恢復命令恢復.
a. 不包含歸檔的聯機全備的恢復
1. 初始化資料庫
c:\dmdbms\bin>dminit.exe path=c:\dmdbms\data db_name=dameng instance_name=dmserver2.恢復資料庫
-- 不包含歸檔
c:\dmdbms\bin> dmrestore ini_path=c:\xcl\dm.ini file=c:\xcl\online_noarc\dmbkname03_noarc.bak3. 啟動服務,進入資料庫檢視恢復結果
sql>select * from test_sch.t1;
行號 id name
---------- ----------- ----
1 1 aaa
2 2 bbb
已用時間: 60.990(毫秒). 執行號:3.
b. 不包含歸檔的聯機全備檔案加上歸檔日誌的恢復
1. 初始化資料庫
--再次用不包含歸檔的備份測試,但指定歸檔日誌目錄
dminit.exe path=c:\dmdbms\data db_name=dameng instance_name=dmserver2.恢復資料庫
dmrestore ini_path=c:\xcl\dm.ini file=c:\xcl\online_noarc\dmbkname03_noarc.bak archive_dir=c:\xcl\online_noarc\arc23. 啟動服務,進入資料庫檢視恢復結果
sql>select * from test_sch.t1;
行號 id name
---------- ----------- ----------------
1 1 aaa
2 2 bbb
3 3 dmbkname03_noarc
4 4 dmbkname04
已用時間: 62.247(毫秒). 執行號:3.
sql>
c.包含歸檔的聯機全備的恢復
1. 初始化資料庫
dminit.exe path=c:\dmdbms\data db_name=dameng instance_name=dmserver2.恢復資料庫
-- 資料庫全庫備份,幷包含日誌
dmrestore ini_path=c:\xcl\dm.ini file=c:\xcl\online\dmbkname04.bak3. 啟動服務,進入資料庫檢視恢復結果
sql>select * from test_sch.t1;
行號 id name
---------- ----------- ----------------
1 1 aaa
2 2 bbb
3 3 dmbkname03_noarc
已用時間: 62.508(毫秒). 執行號:3.
五.總結
達夢資料庫的文件中並沒有說明,dmrestore命令即能恢復離線備份,也能恢復聯機備份。導致我在執行backup命令後,
誤以為要有resotre恢復。但資料庫被破壞後,又沒法進disql執行restore.後測試才知,dmrestore命令通殺離線和聯機兩種恢復方式。
從上面的測試可看出,基本上達夢的備份流程就是發命令,生成備份檔案,並同時備份dm.ini。有些情況下還要備份歸檔日誌。
然後恢復是用dminit重新初始化乙個庫再用dmrestore恢復。 在達夢資料庫中dm.ini非常重要,備份時一定要記得把這個也一同備份。
mail: [email protected]
blog:
達夢資料庫備份與恢復
首先切換使用者到dmdba,如不知道密碼可以先登入root再切換到dmdba 使用ps ef grep dmserv檢視達夢資料庫是否執行 進入達夢資料庫對應的bin目錄,即第二步是dmserver所在的目錄 登入資料庫.disql sysdba sysdba 使用backup database f...
達夢資料庫備份恢復小結
三 總結 資料庫系統在執行過程中可能會發生一些故障。造成故障的原因多種多樣,包括磁碟崩 潰 電源故障 軟體錯誤,甚至人為破壞。這些情況一旦發生,就可能會丟失資料,資料庫 系統將無法正常執行。因此,故障恢復是資料庫系統必不可少的組成部分,即資料庫系統必 須保證即使發生故障,也可以保障資料的完整性和一致...
達夢資料庫高效備份恢復策略
資料庫備份是 dba 日常最重要的工作內容。備份的主要目的是資料容災,保證資料的安全性,在資料庫發生故障時,通過還原備份集,將資料恢復到可用狀態。disql 工具 聯機資料備份與還原,包括庫備份 不包括庫還原,全庫還原需使用dmrman離線還原 表空間備份與還原 表備份與還原 dmrman 工具 離...