日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
數(shù)據(jù)庫表空間丟失,數(shù)據(jù)丟失怎么辦?(數(shù)據(jù)庫表空間丟了)

隨著數(shù)據(jù)庫應(yīng)用越來越廣泛,數(shù)據(jù)庫作為企業(yè)數(shù)據(jù)存儲管理的主要方式,它的數(shù)據(jù)穩(wěn)定性以及安全性變得越來越重要。雖然現(xiàn)在數(shù)據(jù)庫廠商有很多解決方案和辦法在數(shù)據(jù)丟失時找回數(shù)據(jù),但是在實際的應(yīng)用過程中,仍然難免出現(xiàn)數(shù)據(jù)的丟失。數(shù)據(jù)庫表空間丟失,數(shù)據(jù)丟失這種情況極大地影響了企業(yè)的正常運營。那么在這種情況下,我們應(yīng)該如何處理呢?

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了嘉黎免費建站歡迎大家使用!

一、數(shù)據(jù)丟失原因

在正式開始解決數(shù)據(jù)丟失問題之前,必須先明確其根本原因。數(shù)據(jù)丟失的原因可能包括以下因素:

1.硬件故障:硬盤故障、硬盤壞道等硬件問題可能會導(dǎo)致數(shù)據(jù)的丟失。

2.軟件故障:操作系統(tǒng)升級、數(shù)據(jù)庫軟件故障也可能導(dǎo)致數(shù)據(jù)的丟失。

3.非法操作:不當(dāng)?shù)膭h除和修改、腳本錯誤和非法的操作等原因也可能導(dǎo)致數(shù)據(jù)的丟失。

4.惡意攻擊:黑客攻擊或者病毒感染等安全問題也可能導(dǎo)致數(shù)據(jù)的丟失。

二、解決方法

1.備份數(shù)據(jù)

對于數(shù)據(jù)庫中重要的數(shù)據(jù),建議至少備份三份,分別存儲在不同的設(shè)備中。在數(shù)據(jù)丟失時,我們可以通過備份數(shù)據(jù)來恢復(fù)數(shù)據(jù)。

2.數(shù)據(jù)恢復(fù)

在數(shù)據(jù)丟失時,首先要確認(rèn)數(shù)據(jù)是否有備份,如果有備份,可以直接通過備份數(shù)據(jù)來恢復(fù)數(shù)據(jù)。如果沒有備份,則需要通過恢復(fù)工具進行數(shù)據(jù)恢復(fù)。目前市面上有很多恢復(fù)工具可以使用,用戶可以根據(jù)自己的需求選擇適合自己的工具進行數(shù)據(jù)恢復(fù)。

3.聯(lián)系數(shù)據(jù)庫廠商技術(shù)支持

如果用戶在使用數(shù)據(jù)庫過程中遇到數(shù)據(jù)丟失問題,建議之一時間聯(lián)系數(shù)據(jù)庫廠商技術(shù)支持。數(shù)據(jù)庫廠商技術(shù)支持人員有著專業(yè)的知識和技能,可以幫助用戶快速解決問題。

除此之外,為了避免數(shù)據(jù)丟失,我們應(yīng)該采取一些措施來提高數(shù)據(jù)的穩(wěn)定性和安全性。

1.定期備份數(shù)據(jù)

建議用戶定期備份數(shù)據(jù)庫中的重要數(shù)據(jù),至少每周備份一次。

2.使用合適的硬件設(shè)備

在選擇硬件設(shè)備時,應(yīng)該選擇一些抗震、防潮、耐用的硬盤,這樣可以降低硬盤故障的幾率。

3.數(shù)據(jù)庫權(quán)限管理

建議管理員對數(shù)據(jù)庫中的權(quán)限進行適當(dāng)?shù)目刂?,只授?quán)給必須的人員。這樣可以避免非法操作導(dǎo)致的數(shù)據(jù)丟失。

4.加強數(shù)據(jù)庫安全管理

建議管理員對數(shù)據(jù)庫進行加密和備份,加強安全措施,確保數(shù)據(jù)不被惡意攻擊和病毒感染。

在面對數(shù)據(jù)庫表空間丟失、數(shù)據(jù)丟失的情況時,我們應(yīng)該冷靜分析原因,采取合適的方法來解決問題,并加強數(shù)據(jù)庫的安全管理,防止數(shù)據(jù)丟失再次發(fā)生。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,響應(yīng)式網(wǎng)站制作,設(shè)計師量身打造品牌風(fēng)格,熱線:028-86922220

mysql數(shù)據(jù)庫被刪除怎么恢復(fù)

1 找個別的機器安裝個同版本的mysql或從已安裝同版本的其他機器上(非同版本的也可以試下):

拷貝 mysql/data/mysql 目錄到你的mysql/data/ 下吧

2 試著啟動mysql服務(wù),如果能啟動了,理論上應(yīng)該丟失的只有用戶、授權(quán)等一些系統(tǒng)掘槐信息,不影響你的使用的數(shù)據(jù);

如果不能啟動,看錯誤日志,爭取啟動了。

3 趕緊把數(shù)據(jù)備份一份出來,重新把判滲友所有喊兄庫(只是你后來創(chuàng)建的業(yè)務(wù)相關(guān)的庫,不包括mysql庫)都刪了,重新導(dǎo)入一遍。理論上不這樣也可以,但只是非生產(chǎn)重要的環(huán)境下。

4 重新做用戶授權(quán)。

每個 DBA 是不是粗皮都有過刪庫的經(jīng)歷?刪庫了沒有備份怎么辦?備份恢復(fù)后無法啟動服務(wù)什么情況?表定義損壞數(shù)據(jù)無法讀取怎么辦?逗凳液

我曾遇到某初創(chuàng)互聯(lián)網(wǎng)企業(yè),因維護人員不規(guī)范的備份恢復(fù)操作,導(dǎo)致系統(tǒng)表空間文件被初始化,上萬張表無法讀取,花了數(shù)小時才搶救回來。

當(dāng)你發(fā)現(xiàn)數(shù)據(jù)無法讀取時,也許并非數(shù)據(jù)丟失了,可能是 DBMS 找不到描述數(shù)據(jù)的信息。

背景

先來了解下幾張關(guān)鍵的 InnoDB 數(shù)據(jù)字典表,它們保存了部分表定義信息,在我們恢復(fù)表結(jié)構(gòu)時需要用到。

SYS_TABLES 描述 InnoDB 表信息CREATE TABLE `SYS_TABLES` (`NAME` varchar(255) NOT NULL DEFAULT ”,  表名`ID` bigint(20) unsigned NOT NULL DEFAULT ‘0’,  表id`N_COLS` int(10) DEFAULT NULL,`TYPE` int(10) unsigned DEFAULT NULL,`MIX_ID` bigint(20) unsigned DEFAULT NULL,`MIX_LEN` int(10) unsigned DEFAULT NULL,`CLUSTER_NAME` varchar(255) DEFAULT NULL,`SPACE` int(10) unsigned DEFAULT NULL,   表空間idPRIMARY KEY (`NAME`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_INDEXES 描述 InnoDB 索引信息CREATE TABLE `SYS_INDEXES` (  `TABLE_ID` bigint(20) unsigned NOT NULL DEFAULT ‘0’, 與sys_tables的id對應(yīng)山物  `ID` bigint(20) unsigned NOT NULL DEFAULT ‘0’,  索引id  `NAME` varchar(120) DEFAULT NULL,索引名稱  `N_FIELDS` int(10) unsigned DEFAULT NULL, 索引包含字段的個數(shù)  `TYPE` int(10) unsigned DEFAULT NULL,  `SPACE` int(10) unsigned DEFAULT NULL,  存儲索引的表空間id  `PAGE_NO` int(10) unsigned DEFAULT NULL,  索引的root page id  PRIMARY KEY (`TABLE_ID`,`ID`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_COLUMNS 描述 InnoDB 表的字段信息CREATE TABLE `SYS_COLUMNS` (  `TABLE_ID` bigint(20) unsigned NOT NULL, 與sys_tables的id對應(yīng)  `POS` int(10) unsigned NOT NULL,     字段相對位置  `NAME` varchar(255) DEFAULT NULL,    字段名稱  `MTYPE` int(10) unsigned DEFAULT NULL,  字段編碼  `PRTYPE` int(10) unsigned DEFAULT NULL, 字段校驗類型  `LEN` int(10) unsigned DEFAULT NULL,  字段字節(jié)長度  `PREC` int(10) unsigned DEFAULT NULL, 字段精度  PRIMARY KEY (`TABLE_ID`,`POS`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_FIELDS 描述全部索引的字段列CREATE TABLE `SYS_FIELDS` (  `INDEX_ID` bigint(20) unsigned NOT NULL,  `POS` int(10) unsigned NOT NULL,  `COL_NAME` varchar(255) DEFAULT NULL,  PRIMARY KEY (`INDEX_ID`,`POS`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;./storage/innobase/include/dict0boot.h 文件定義了每個字典表的 index id,對應(yīng) id 的 page 中存儲著字典表的數(shù)據(jù)。

這里我們需要借助 undrop-for-innodb 工具恢復(fù)數(shù)據(jù),它能讀取表空間信息得到 page,將數(shù)據(jù)從 page 中提取出來。

# wget yum install -y gcc flex bison# make# make sys_parser

# ./sys_parser 讀取表結(jié)構(gòu)信息

sys_parser databases/table

stream_parser 讀取 InnoDB page 從 ibdata1 或 ibd 或分區(qū)表

# ./stream_parserYou must specify file with -f optionUsage: ./stream_parser -f  Where:    -hPrint this help    -V or -g   – Print debug information    -s size    – Amount of memory used for disk cache (allowed examples 1G 10M). Default 100M    -Tretrieves only pages with index id = NM (N – high word, M – low word of id)    -t size    – Size of InnoDB tablespace to scan. Use it only if the parser can’t determine it by himself.

c_parser 從 innodb page 中讀取記錄保存到文件

# ./c_parserError: Usage: ./c_parser -4|-5|-6 -f -t table.sql  Where    -f — InnoDB page or directory with pages(all pages should have same index_id)    -t — CREATE statement of a table    -o — Save dump in this file. Otherwise print to stdout    -l — Save SQL statements in this file. Otherwise print to stderr    -h  — Print this help    -d  — Process only those pages which potentially could have deleted records (default = NO)    -D  — Recover deleted rows only (default = NO)    -U  — Recover UNdeleted rows only (default = YES)    -V  — Verbose mode (lots of debug information)innodb_datafile is in REDUNDANT formatinnodb_datafile is in COMPACT formatinnodb_datafile is in MySQL 5.6 format    -T  — retrieves only pages with index id = NM (N – high word, M – low word of id)    -b — Directory where external pages can be found. Usually it is pages-XXX/FIL_PAGE_TYPE_BLOB/    -i — Read external pages at their offsets from .    -p prefix — Use prefix for a directory name in LOAD DATA INFILE command

接下來,我們演示場景的幾種數(shù)據(jù)恢復(fù)場景。

場景1:drop table

是否啟用了 innodb_file_per_table 其恢復(fù)方法有所差異,當(dāng)發(fā)生誤刪表時,應(yīng)盡快停止MySQL服務(wù),不要啟動。若 innodb_file_per_table=ON,更好只讀方式重新掛載文件系統(tǒng),防止其他進程寫入數(shù)據(jù)覆蓋之前塊設(shè)備的數(shù)據(jù)。

如果評估記錄是否被覆蓋,可以表中某些記錄的作為關(guān)鍵字看是否能從 ibdata1 中篩選出。

# grep WOODYHOFFMAN ibdata1

Binary file ibdata1 matches

也可以使用 bvi(適用于較小文件)或 hexdump -C(適用于較大文件)工具

以表 sakila.actor 為例CREATE TABLE `actor` (`actor_id` allint(5) unsigned NOT NULL AUTO_INCREMENT,`first_name` varchar(45) NOT NULL,`last_name` varchar(45) NOT NULL,`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`actor_id`),KEY `idx_actor_last_name` (`last_name`)) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8

首先恢復(fù)表結(jié)構(gòu)信息1. 解析系統(tǒng)表空間獲取 page 信息

./stream_parser -f /var/lib/mysql/ibdata1

2. 新建一個 schema,把系統(tǒng)字典表的 DDL 導(dǎo)入

cat dictionary/SYS_* | mysql recovered

3. 創(chuàng)建恢復(fù)目錄

mkdir -p dumps/default

4. 解析系統(tǒng)表空間包含的字典表信息,

./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/01.page -t dictionary/SYS_TABLES.sql > dumps/default/SYS_TABLES 2> dumps/default/SYS_TABLES.sql./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/02.page -t dictionary/SYS_COLUMNS.sql > dumps/default/SYS_COLUMNS 2> dumps/default/SYS_COLUMNS.sql./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/03.page -t dictionary/SYS_INDEXES.sql > dumps/default/SYS_INDEXES 2> dumps/default/SYS_INDEXES.sql./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/04.page -t dictionary/SYS_FIELDS.sql > dumps/default/SYS_FIELDS 2> dumps/default/SYS_FIELDS.sql

5. 導(dǎo)入恢復(fù)的數(shù)據(jù)字典

cat dumps/default/*.sql | mysql recovered

6. 讀取恢復(fù)后的表結(jié)構(gòu)信息

./sys_parser -pmsandbox -d recovered sakila/actor

由于 5.x 版本 innodb 引擎并非完整記錄表結(jié)構(gòu)信息,會丟失 AUTO_INCREMENT 屬性、二級索引和外鍵約束, DECIMAL 精度等信息。

若是 mysql 5.5 版本 frm 文件被從系統(tǒng)刪除,在原目錄下 touch 與原表名相同的 frm 文件,還能讀取表結(jié)構(gòu)信息和數(shù)據(jù)。若只有 frm 文件,想要獲得表結(jié)構(gòu)信息,可使用 mysqlfrm –diagnostic /path/to/xxx.frm,連接 mysql 會顯示字符集信息。

innodb_file_per_table=OFF

因為是共享表空間模式,數(shù)據(jù)頁都存儲在 ibdata1,可以從 ibdata1 文件中提取數(shù)據(jù)。

1. 獲取表的 table id,sys_table 存有表的 table id,sys_table 表 index id 是1,所以從01.page 獲取表 id./c_parser -4Df pages-ibdata1/FIL_PAGE_INDEX/01.page -t dictionary/SYS_TABLES.sql | grep sakila/actorB28  2AD4D  SYS_TABLES  “sakila/actor”  0   “”B28  2AD4D  SYS_TABLES  “sakila/actor”  0   “”  0

2. 利用 table id 獲取表的主鍵 id,sys_indexes 存有表索引信息,innodb 索引組織表,找到主鍵 id 即找到數(shù)據(jù),sys_indexes 的 index id 是3,所以從03.page 獲取主鍵 id

./c_parser -4Df pages-ibdata1/FIL_PAGE_INDEX/03.page -t dictionary/SYS_INDEXES.sql | grepBABCA  SYS_INDEXES”PRIMARY”BAC3C  SYS_INDEXES”idx_actor_last_name”BABCA  SYS_INDEXES”PRIMARY”BAC3C  SYS_INDEXES”idx_actor_last_name”

3. 知道了主鍵 id,就可以從對應(yīng) page 中提取表數(shù)據(jù),并生成 sql 文件。

./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/76.page -t sakila/actor.sql > dumps/default/actor 2> dumps/default/actor_load.sql

4. 最后導(dǎo)入恢復(fù)的數(shù)據(jù)

cat dumps/default/*.sql | mysql sakila

更多詳細(xì)情況點擊

網(wǎng)頁鏈接

關(guān)于Oracle表空間移動后需要介質(zhì)恢復(fù)的問題!

問題已經(jīng)解決了,都是在網(wǎng)上找的!

把這過程中遇到的問及解決辦法和大家分享一下!

首先出現(xiàn)問題的過程如上所說!然后我試圖找到恢復(fù)介質(zhì)的辦法!

網(wǎng)上有朋友說是數(shù)據(jù)庫為非歸檔模式造成的,要將其改為歸檔模式:

1.cmd;

2.sqlplus/nolog;

4.connect/as sysdba;

這時報了一個錯:協(xié)議適配器錯誤

造成此問題的原因可能有三個:(此方法網(wǎng)上有)

a.監(jiān)聽服務(wù)沒有起起來。windows平臺個一如下操作:開始—程序—管理工具—服務(wù),打開服務(wù)面板,啟動oraclehome92TNSlistener服務(wù)。

b.database instance沒有起起來。windows平臺如下操作:開始—程序—管理工具—服務(wù),打開服務(wù)面板,啟動oracleserviceXXXX,XXXX就是你的database SID

c.注冊表問題。regedit,然后進入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0將該環(huán)境變量ORACLE_SID設(shè)置為XXXX,XXXX就是你的database SID.或者右?guī)孜业碾娔X,屬性–高級–環(huán)境變量—系統(tǒng)變量–新建,變量名=oracle_sid,變量值=XXXX,XXXX就是你的database SID.或者進入sqlplus前,在command line下輸set oracle_sid=XXXX,XXXX就是你的database SID

此時“協(xié)議適配器錯誤 ”應(yīng)該就能解決了!

5.若數(shù)據(jù)庫是打開的,首先關(guān)閉卸載數(shù)據(jù)庫。shotdown;

這時可能出現(xiàn)長時間等待,可以把Oracle服務(wù)重新啟動一下再重復(fù)上面的步驟即可!

6.以mount模式打開數(shù)據(jù)庫:STARTUP MOUNT;

7.查詢當(dāng)前歸檔模式:ARCHIVE LOG LIST;

如果數(shù)據(jù)庫日志模式為非存檔模式則更改歸檔模式為ARCHIVELOG:ALTER DATABASE ARCHIVELOG;

再查詢一下:ARCHIVE LOG LIST=》數(shù)據(jù)庫日志模式 存檔模式

如果要更改為非歸檔模式:ALTER DATABASE NOARCHIVELOG;

8.再打開數(shù)據(jù)庫: ALTER DATABASE OPEN;

歸檔模式更改完畢!

9.第九步也是最關(guān)鍵的一步:恢復(fù)介質(zhì)

recover datafile ‘新的數(shù)據(jù)文件路徑’;

10. alter tablespace xxxx online; SQL》表空間已更改。

使用alter database 移動數(shù)據(jù)文件時,在執(zhí)行完alter database rename to 命令之后,再試圖打開數(shù)據(jù)庫:alter database open??赡軙箢愃迫缦碌腻e:

ORA-01113:文件7需要介質(zhì)恢復(fù)

ORA-01110:數(shù)據(jù)文件7:’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’。

這是由于數(shù)據(jù)庫認(rèn)為這個數(shù)據(jù)文件遭到破壞了,需要使用recover命令通過備份、日志信息來恢復(fù)。數(shù)據(jù)庫的備份恢復(fù)是個比較復(fù)雜的問題,但是這個實例的解決辦法還是比較簡單的。

執(zhí)行命令:

recover datafile ’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’

提示完成介質(zhì)恢復(fù),再打開數(shù)據(jù)庫:alter database open。一切正常。

通過該alter database open;命令查看是否有其他數(shù)據(jù)文件損壞,依次進行恢復(fù),直至所有文件正常。

Oracle DBA神器:PRM-DUL災(zāi)難恢復(fù)工具可以直接從這種受損的Oracle數(shù)據(jù)庫中將數(shù)據(jù)拯救出來。

當(dāng)你的數(shù)據(jù)庫因為ORA-00600/ORA-07445或其他ORA-報錯,或丟失關(guān)鍵的system表空間數(shù)據(jù)文件,或A diskgroup損壞時均可以考慮采用PRM-DUL來做恢復(fù)。PRM-DUL采用獨創(chuàng)的DataBridge恢復(fù)技術(shù),直接從數(shù)據(jù)文件中抽取數(shù)據(jù)后可以像DBLINK那樣直接插入到新建數(shù)據(jù)庫中,而無需數(shù)據(jù)落地成為DMP文件占用空間。

關(guān)于數(shù)據(jù)庫表空間丟了的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計,高端小程序APP定制開發(fā),成都網(wǎng)絡(luò)營銷推廣等一站式服務(wù)。


分享題目:數(shù)據(jù)庫表空間丟失,數(shù)據(jù)丟失怎么辦?(數(shù)據(jù)庫表空間丟了)
網(wǎng)址分享:http://www.dlmjj.cn/article/codoigo.html