欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么修復Oracle 怎么修復小石子崩掉的車漆

重裝系統(tǒng)后,怎么恢復oracle數(shù)據(jù)庫?

任何軟件都有可能在有意或無意的情況下被重新安裝,如Oracle重裝后數(shù)據(jù)庫怎么恢復呢?情況發(fā)生在你是無意的情況下!ORACLE數(shù)據(jù)庫恢復的方法我們經(jīng)常會用到,下面就為您介紹重裝系統(tǒng)后ORACLE數(shù)據(jù)庫恢復的方法,希望對您學習ORACLE數(shù)據(jù)庫恢復方面能有所幫助。\x0d\x0a\x0d\x0a我的電腦突然掛了,不得不重裝系統(tǒng),不過我的ORACLE裝在了D盤,所有的文件都還在,我相信一定能夠恢復,直到搞定工作,我才開始整我的數(shù)據(jù)庫,花了兩天時間,終于恢復了,慶祝一下,同時總結(jié)一下,希望有遇到同樣問題的朋友能夠快速搞定此類問題\x0d\x0a\x0d\x0a第一種:\x0d\x0a\x0d\x0a首先,備份數(shù)據(jù)庫(X:\oracle\oradata)下的數(shù)據(jù)文件,重新命名即可(否則裝數(shù)據(jù)庫的時候會提示sid已存在)。重新安裝數(shù)據(jù)\x0d\x0a庫,當然數(shù)據(jù)庫的名字就是你要恢復的名字。安裝完成后,打開控制面板,停止oracle的服務(wù)。把(X:\oracle\oradata)下新生成的文件\x0d\x0a改名,把原先目錄下的文件恢復名字。再重新啟動oracle服務(wù)和監(jiān)聽。用sys/as dba \x0d\x0a登陸數(shù)據(jù)庫,可能會提示權(quán)限不夠(ora-01031)修改(X:\oracle\ora92\network\admin \x0d\x0a)文件夾下的sqlnet.ora文件,添加SQLNET.AUTHENTICATION_SERVICES= \x0d\x0a(NTS),增加權(quán)限。登陸進去后,打開table提示不能打開。打開common頁,執(zhí)行命令alert database \x0d\x0aopen;這時再刷新table,發(fā)現(xiàn)原先的表可以打開了?;謴统晒α?。再用原先數(shù)據(jù)庫的普通用戶進入。發(fā)現(xiàn)一切正常。至此,大功告成。\x0d\x0a\x0d\x0a第二種:\x0d\x0a\x0d\x0a1、首先,將原來的ORACLE文件夾改名,原來的路徑是D:/oracle.我暫時改成D:/oracle_old.找來ORACLE(我用\x0d\x0a的是ORACLE 9I)安裝光盤,將ORACLE安裝在原來安裝的目錄下,這樣恢復起來更加方便,主要是注冊表的內(nèi)容不用修改。\x0d\x0a\x0d\x0a2、安裝完了之后,系統(tǒng)中又有一個可以使用的ORACLE了。這個時候要做的就是將原來的文件和數(shù)據(jù)恢復過來。第一步,先關(guān)閉ORACLE的所\x0d\x0a有已經(jīng)啟動的項目,在"服務(wù)"里面逐一關(guān)閉。然后,將安裝目錄改名。我現(xiàn)在用的是D:/oracle.改成D:/oracle_new.再將D:\x0d\x0a/oracle_old改成D:/oracle. \x0d\x0a這樣理論上說從物理層面恢復了ORACLE了。但是我們發(fā)現(xiàn),現(xiàn)在還不能啟動ORACLE的監(jiān)聽程序和服務(wù)程序。我們還要從邏輯上解決。\x0d\x0a\x0d\x0a3、在dos環(huán)境下執(zhí)行一個刪除命令:oradim -delete -sid mm,其中mm為創(chuàng)建oracle時候創(chuàng)建的實例 \x0d\x0a建議執(zhí)行這個命令后重新啟動機器,重啟后就可以建立和原來實例名相同的實例。當然你懶,不重新啟動也可以,但是你的實例名就不能和原來的一樣了。\x0d\x0a\x0d\x0a4、在dos環(huán)境下執(zhí)行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmm.ora "創(chuàng)建一個新的實例,其中 "mm"為新數(shù)據(jù)庫的名稱。\x0d\x0a\x0d\x0a5、啟動服務(wù),先打開數(shù)據(jù)庫,然后可以用以前的用戶名和密碼登陸進去。 \x0d\x0a要補充的是,一般的ORACLE數(shù)據(jù)庫的監(jiān)聽程序都是用電腦的名稱來識別地址的,而不是127.0.0.1或者localhost.所以,如果我們安裝系\x0d\x0a統(tǒng)的時候用的是不同的電腦名稱(比如我原來用的是wm_mm.重新安裝后用的是wenming_mm),那么我們還有一個工作要做,就是修改文件 \x0d\x0alistener.ora.將里面的相關(guān)的東西改過來就可以了。\x0d\x0a\x0d\x0a需要耐心、細心,可能在一步里有一個細小的差別就會出些古怪的錯誤提示,有時需要根據(jù)錯誤提示采取策略,總之原理是,先裝一個一模一樣的ORACLE,安裝目錄、數(shù)據(jù)庫名稱都一樣,這樣保證注冊表里不用更改;再覆蓋物理文件,最后重新實例化,打開數(shù)據(jù)庫就可以進去了。

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

重裝操作系統(tǒng),ORACLE怎么恢復?

不知道你重裝前都備份了哪些文件,只要你那五種文件都有備份,恢復起來不是很難。主要歸納為以下幾步:

1.將原來的oracle文件夾重命名,比如oracle_old;然后重新安裝oracle

到原目錄,即跟重裝操作系統(tǒng)前同一目錄,假設(shè)為d:\oracle;安裝過程選擇"只安裝軟件"

即不創(chuàng)建數(shù)據(jù)庫,這樣可以節(jié)省很多時間.

注:恢復必須要有以下文件

a、初始化參數(shù)文件INIT.ORA

b、所有數(shù)據(jù)文件 .dbf

c、所有重做日志文件(聯(lián)機日志、歸檔日志)redo

d、所有控制文件 crtl

e、internal密碼文件

2.配置listener和tns:

運行l(wèi)snrctl start,即可在創(chuàng)建監(jiān)聽服務(wù);

使用net manager配置tns,但不要測試(數(shù)據(jù)庫沒有起來肯定測試不通過的);

3.將oradata文件夾拷貝回原目錄(如d:oracleoradata);

4.將spfile拷貝回原目錄(如d:oracleora92database);

5.創(chuàng)建實例服務(wù):

oradim -new -sid orcl -startmode auto

6.重建口令文件:或是復制原來的pwdorcl.ora yhy9為實例名

orapwd file=d:oracleora92database password=orcl entries=5

7.重啟監(jiān)聽和實例.

8.如果數(shù)據(jù)庫沒有啟動就進入sqlplus手工打開數(shù)據(jù)庫

sqlplus /nolog

sqlconn sys/orcl@orcl as sysdba

sqlstartup;

一定要有提示成功打開,否則重復以上辦法解決。

9.如果數(shù)據(jù)庫順利打開,整個實例恢復過程即完成.

經(jīng)驗證通過以上操作,完全可以恢復成功。需要的是耐心、細心。

如果中間有報錯,則一步步根據(jù)報錯到網(wǎng)上查找解決辦法。

Oracle認證:Oracle控制件文件修復

Oracle認證:Oracle控制件文件修復

查看文件頭SCN號:

SQL select file#, checkpoint_change# from v;

FILE# CHECKPOINT_CHANGE#

1 18120070

2 18120070

3 18120070

4 18120070

5 18120070

6 18120070

7 18120070

8 18120070

9 18120070

10 18120070

11 18121207

FILE# CHECKPOINT_CHANGE#

12 18121196

12 rows selected.

查看控制文件SCN號:

SQL select file#, checkpoint_change# from v;

FILE# CHECKPOINT_CHANGE#

1 18120070

2 18120070

3 18120070

4 18120070

5 18120070

6 18120070

7 18120070

8 18120070

9 18120070

10 18120070

11 18121207

FILE# CHECKPOINT_CHANGE#

12 18121196

12 rows selected.

SQL

當數(shù)據(jù)文件SCN號大于控制文件scn號,即會發(fā)生控制文件太久的提示,

當數(shù)據(jù)文件SCN號小于控制文件scn號時, 則提示mediea recovery提示

當數(shù)據(jù)文件sCN號等于控制文件scn號,正常啟動實例

SQL alter database backup controlfile to trace as '/u01/Oracle/admin/ora9i/udump/c.trc';

Database altered.

SQL

/u01/Oracle/oradata/ora9i

[oracle@test ora9i]$ rm control0*

[oracle@test ora9i]$

SQL shutdown immediate;

ORA-00210: cannot open the specified controlfile

ORA-00202: controlfile: '/u01/Oracle/oradata/ora9i/control01.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

SQL shutdown abort;

ORACLE instance shut down.

SQL

修改備份c.trc文件使用第一個sql

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ORA9I" NORESETLOGS ARCHIVELOG

MAXLOGFILES 50

MAXLOGMEMBERS 5

MAXDATAFILES 100

MAXINSTANCES 1

MAXLOGHISTORY 226

LOGFILE

GROUP 1 '/u01/Oracle/oradata/ora9i/redo01.log' SIZE 100M,

GROUP 2 '/u01/Oracle/oradata/ora9i/redo02.log' SIZE 100M,

GROUP 3 '/u01/Oracle/oradata/ora9i/redo03.log' SIZE 100M

DATAFILE

'/u01/Oracle/oradata/ora9i/system01.dbf',

'/u01/Oracle/oradata/ora9i/undotbs01.dbf',

'/u01/Oracle/oradata/ora9i/cwmlite01.dbf',

'/u01/Oracle/oradata/ora9i/drsys01.dbf',

'/u01/Oracle/oradata/ora9i/example01.dbf',

'/u01/Oracle/oradata/ora9i/indx01.dbf',

'/u01/Oracle/oradata/ora9i/odm01.dbf',

'/u01/Oracle/oradata/ora9i/tools01.dbf',

'/u01/Oracle/oradata/ora9i/users01.dbf',

'/u01/Oracle/oradata/ora9i/xdb01.dbf',

'/u01/Oracle/oradata/ora9i/app2.dbf',

'/u01/Oracle/oradata/ora9i/app1_01.dbf'

CHARACTER SET ZHS16GBK

;

# Configure RMAN configuration record 1

VARIABLE RECNO NUMBER;

EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');

# Recovery is required if any of the datafiles are restored backups,

# or if the last shutdown was not normal or immediate.

RECOVER DATABASE

# All logs need archiving and a log switch is needed.

ALTER SYSTEM ARCHIVE LOG ALL;

# Database can now be opened normally.

ALTER DATABASE OPEN;

# Commands to add tempfiles to temporary tablespaces.

# Online tempfiles have complete space information.

# Other tempfiles may require adjustment.

ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/Oracle/oradata/ora9i/temp01.dbf' REUSE;

# End of tempfile additions.

# ;

oracle 數(shù)據(jù)庫修復 要如何實施呢?

Oracle數(shù)據(jù)恢復專題

備份恢復是Oracle中永恒的話題, 只要有數(shù)據(jù) 就有備份恢復的需求。 而在國內(nèi)對于備份以及備份的可用性往往被企業(yè)所忽視。這造成了再數(shù)據(jù)庫恢復上存在著東西方的差異。 更多的老外DBA把經(jīng)歷花在對Oracle內(nèi)部原理和性能優(yōu)化的研究上。

oracle data block structure

而我們國內(nèi) DBA似乎必須要精通一門額外的技術(shù)==》 在沒有任何備份的情況下 恢復Oracle數(shù)據(jù)庫中數(shù)據(jù)的技術(shù)! 雖然這在大多數(shù)情況下是屠龍之技, 但很多時候卻又變成了衡量一個DBA技術(shù)水準的標準了,(這樣不好.. 不好)。

當然也并不是說 這種無備份下的數(shù)據(jù)恢復是無技術(shù)含金量的,實際上它們很需要對Oracle數(shù)據(jù)文件、數(shù)據(jù)塊及其數(shù)據(jù)結(jié)構(gòu)的理解,以及對數(shù)據(jù)字典構(gòu)成的了解。

這里我們總結(jié)Oracle數(shù)據(jù)恢復專題的專題,包括一些在無備份情況下的數(shù)據(jù)恢復:例如DUL和BBED工具恢復等技術(shù)。

【數(shù)據(jù)恢復】利用構(gòu)造ROWID實現(xiàn)無備份情況下繞過ORA-1578、ORA-8103、ORA-1410等邏輯/物理壞塊問題

【數(shù)據(jù)恢復】ORA-600[kccpb_sanity_check_2]一例

Oracle rman中set newname可能很慢

如何清除Oracle控制文件中的無用記錄,例如v$archived_log中的deleted歸檔日志記錄

如何找回被create or replace覆蓋的PL/SQL對象

Archivelog Completed Before VS UNTIL TIME

ASM丟失disk header導致ORA-15032、ORA-15040、ORA-15042 Diskgroup無法mount

Overcome ORA-600[4xxx] open database

數(shù)據(jù)恢復:解決ORA-600[kghstack_free2][kghstack_err+0068]一例

清理RMAN Catalog恢復目錄

如何rename datafile name中存在亂碼的數(shù)據(jù)文件

11g新特性recover corruption list

解決ORA-01578錯誤一例

Script:收集介質(zhì)恢復診斷信息

如何重建SYSAUX表空間上的對象

Oracle數(shù)據(jù)恢復:解決ORA-00600:[4000] ORA-00704: bootstrap process failure錯誤一例

Script:檢查數(shù)據(jù)庫當前是否有備份操作在執(zhí)行中

數(shù)據(jù)恢復:模擬2個邏輯壞塊

Script:收集Oracle備份恢復信息

Oracle備份恢復:Rman Backup緩慢問題一例

了解rman catalog的兼容性

Oracle內(nèi)部錯誤:ORA-00600[2608]一例

使用bbed解決ORA-01189錯誤

Fractured block found during backing up datafile

手動遞增SCN號的幾種方法:How to increase System Change Number by manual

DBMS_REPAIR example

Oracle的損壞/壞塊 主要分以下幾種:

ORA-1578

ORA-8103

ORA-1410

ORA-1499

ORA-1578

ORA-81##

ORA-14##

ORA-26040

ORA-600 Errors

Block Corruption

Index Corruption

Row Corruption

UNDO Corruption

Control File

Consistent Read

Dictionary

File/RDBA/BL

如何修復安裝oracle

一種方法是重裝數(shù)據(jù)庫后用IMP來導入原來的數(shù)據(jù),但使用這種方法的前提是你有以前數(shù)據(jù)的備份,并且這種方法還有許多不足的地方,如備份過舊,可能會丟失許多數(shù)據(jù)、導入數(shù)據(jù)太長等。

一般情況下我們可以采用重用原來的數(shù)據(jù)庫的方法來恢復。在講步驟前先說說這種方法的原理。

數(shù) 據(jù)庫與實例對應(yīng),當數(shù)據(jù)庫服務(wù)啟動后,我們可以用SQLPLUS "/AS SYSDBA"方法連接到一個空閑的例程,當執(zhí)行startup啟動數(shù)據(jù)庫時,首先會在%ORACLE_HOME%/database下找當前SID對應(yīng) 的參數(shù)文件(PFILE或者SPFILE)和密碼文件,然后啟動例程;接著根據(jù)參數(shù)文件記錄的信息找到控制文件,讀取控制文件的信息,這就是mount數(shù) 據(jù)庫了;最終根據(jù)控制文件的信息打開數(shù)據(jù)庫。這個過程相當于對數(shù)據(jù)庫著了一次冷備份的恢復。

下面的具體步驟:(我們假設(shè)原庫的所有相關(guān)文件都存在)1、安裝數(shù)據(jù)庫軟件只需安裝同版本的數(shù)據(jù)庫軟件即可,不需要創(chuàng)建數(shù)據(jù)庫。最好安裝在和原來數(shù)據(jù)庫同樣的%ORACLE_HOME%下,省得還要修改參數(shù)文件路徑等。(直接覆蓋原來的oracle即可)再次強調(diào),只安裝軟件,不創(chuàng)建數(shù)據(jù)庫,否則將數(shù)據(jù)庫軟件安裝在同樣的目錄下舊的部分數(shù)據(jù)文件會被覆蓋,這樣數(shù)據(jù)庫也不能被恢復了。

2、新建一個實例在cmd窗口執(zhí)行oradim -new -sid xinhai注意,這個SID名稱最好與你以前的SID一樣,否則在啟動的數(shù)據(jù)需要指明pfile,并且需要重建密碼文件,比較麻煩。(當然,如果你就不想用原來的SID也可以,把參數(shù)文件、密碼文件的名稱都改成與新SID對應(yīng)的名稱)。

3、啟動數(shù)據(jù)庫做完以上兩步,就可以啟動數(shù)據(jù)庫了。用net start 檢查oracle服務(wù)是否已經(jīng)啟動,如果oracle服務(wù)沒有啟動,則在cmd下運行如下命令:net start oracleservicexinhai然后設(shè)定必要的環(huán)境變量,在cmd窗口運行set ORACLE_SID=xinhai

接著連接數(shù)據(jù)庫sqlplus "/as sysdba"startup

如果正常的話,數(shù)據(jù)庫應(yīng)該就能起來了

4、啟動監(jiān)聽lsnrctl start

5、后續(xù)工作經(jīng)過以上幾步后,基本上就可以使用oracle了,但是使用起來有點不方便,如每次在cmd中啟動數(shù)據(jù)庫都需要先SET ORACLE_SID、在本機連接數(shù)據(jù)庫也都需要加上@TNSNAME等。我們可以修改注冊表,添加ORACLE_SID的信息,避免這些麻煩。

在注冊表的HKEY_LOCAL_MACHINESOFTWAREORACLE下新建字符串值,名稱為ORACLE_SID,值為xinhai。也可以將以下內(nèi)容保持成一個后綴名為reg的文件(文件名隨便起),然后雙擊,即可將信息導入到注冊表中。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREORACLE]"ORACLE_SID"="xinhai"

注意,以上步驟都是在%ORACLE_HOME%、%ORACLE_SID%都與原庫一樣的情況下討論的,雖然%ORACLE_HOME%和%ORACLE_SID%可以與原庫不一樣,但為了減少麻煩和出錯的幾率,建議不要改變則兩個值。

6、如果系統(tǒng)啟動時 還不能啟動oracle就增加以下

編輯一個oracle_startup.bat文檔 內(nèi)容為:

set sid=xinhailsnrctl starte:/oracle_startuplog.logsqlplus /nolog @e:oracle_startupsql.txte:/ oracle_startuplog.log

在e盤下增加文檔oracle_startuplog.log,內(nèi)容為:

connect / as sysdba;startup nomount;alter database mount;alter database open;quit

然后把oracle_startup.bat放到系統(tǒng)啟動項里面,這樣每次啟動系統(tǒng)時oracle就自動啟動了。

oracle存儲過程失效重啟后恢復正常

根據(jù)oracle數(shù)據(jù)庫的特點和提供的工具,主要方法有以下幾種方法:

利用邏輯備份使用import工具丟失數(shù)據(jù)的表

利用物理備份來通過還原數(shù)據(jù)文件并進行不完全恢復

利用dbms_logmnr包從redo log文件中恢復

利用flashback特性恢復數(shù)據(jù)

前提

為了方便使用方法的介紹,上述恢復方法都將基于以下場景進行:系統(tǒng)管理員在前一天晚上11點用export對數(shù)據(jù)庫做了全庫邏輯備份,然后對所有數(shù)據(jù)文件進行了熱備份。第二天上午10點,系統(tǒng)管理員在修改表TFUNDASSET的數(shù)據(jù)時,由于修改語句的條件寫錯了,導致一批記錄(幾千條)的ztm字段被修改成了錯誤的值,而且已經(jīng)提交。這個表是資產(chǎn)表,相對而言數(shù)據(jù)變化不頻繁。

一、利用邏輯備份使用import工具恢復丟失的數(shù)據(jù)

export/import是oracle提供的用于對數(shù)據(jù)庫進行邏輯備份的工具。該工具適用于備份那些數(shù)據(jù)量不大、業(yè)務(wù)量不多的數(shù)據(jù)庫系統(tǒng)。因為如果在前一天晚上11點用export做了邏輯備份,那么當今天上午10點數(shù)據(jù)庫意外崩潰時,從備份起到數(shù)據(jù)庫崩潰的這段時間里的數(shù)據(jù)修改操作(包括DDL和DML)都會丟失。如果丟失數(shù)據(jù)內(nèi)的表上的數(shù)據(jù)是相對比較穩(wěn)定,也就是說該表上基本沒有DML操作,例如標準代碼表、分區(qū)表里的歷史數(shù)據(jù),那么采用import來導入該表可以比較完整的恢復數(shù)據(jù)。如果該表是經(jīng)常變化的業(yè)務(wù)表,那么這些丟失的數(shù)據(jù)只能根據(jù)業(yè)務(wù)情況從紙質(zhì)記錄恢復,或者其他途徑恢復。

▲示例如下:這個表是一個資產(chǎn)表。相對來說,今天系統(tǒng)運行中修改的數(shù)據(jù)較少,丟失的數(shù)據(jù)量可以承受或者可以從別的途徑恢復。那就可以用import來恢復。

方法一:

1、把這個表的數(shù)據(jù)備份到另一個表:

8bef9890242e5d20d09563896cef1471.png

2、刪除該表的記錄:

625dfa5d5986ca5c37dd5017953407cb.png

3、執(zhí)行下面的命令:

3754d50cc473bd44236d927f00196d24.png

這個命令中在關(guān)鍵字tables中指定需要導入的表名字,ignore=y表示忽略表已經(jīng)存在的錯誤。

4、導入結(jié)束后,檢查表中的記錄,并用適當?shù)姆椒ɑ謴彤斕斓男薷摹?/p>

方法二:

1、 把需要恢復的表導入到另一個用戶下面:

33806d1216df5ae9c45890d3d45930ee.png

2、檢查數(shù)據(jù)以后,把原表記錄刪除:

fe23a8a4602702e951e5ab48a7460e3b.png

3、然后從另一用戶表中插入回去:

729976810ef459046df40b791a6ca773.png

4、 數(shù)據(jù)量比較大時可以采用如下方法:

e377d10ff07132f160185cb1ba119cfc.png

二、利用物理備份來通過還原數(shù)據(jù)文件并進行不完全恢復

如果數(shù)據(jù)庫運行在歸檔模式下,那么可以通過使用以前的數(shù)據(jù)文件備份進行還原,然后利用歸檔日志進行前滾,直到回滾到錯誤操作的時間點前,然后重置日志文件打開數(shù)據(jù)庫。

可以通過下列方法確認是否是運行在歸檔模式:

c8406e42aef7ccc8ef232cfdd535e825.png

如果是如上所示,那么就是運行在歸檔模式了。

▲假定在前一天晚上11點做了全庫物理備份,那么可以考慮如下恢復:

1、關(guān)閉數(shù)據(jù)庫:

由于數(shù)據(jù)庫的不完全恢復必須在一個關(guān)閉的數(shù)據(jù)庫上實施,利用一個舊的數(shù)據(jù)庫的備份還原,然后用日志根據(jù)需要逐步前滾,而不能還原一個新的備份,再回退到某個時間點。

通知各客戶端數(shù)據(jù)庫將關(guān)閉,然后發(fā)出:

401f68e89cbfa03388f5913bf5f1ecfd.png

數(shù)據(jù)庫已經(jīng)關(guān)閉。

已經(jīng)卸載數(shù)據(jù)庫。

ORACLE 例程已經(jīng)關(guān)閉。

2、確定錯誤操作的時間:

可以根據(jù)操作員的估計來確定不完全恢復需要前滾停止的時間,也可以利用LogMiner來分析日志文件(這個工具將在后面介紹),找出錯誤操作的準確時間。

3、還原數(shù)據(jù)文件:

先對當前的數(shù)據(jù)庫文件進行備份,然后再用以前的最近一次備份覆蓋現(xiàn)有數(shù)據(jù)文件。注意:不覆蓋現(xiàn)有的控制文件。

4、基于時間點恢復,啟動數(shù)據(jù)庫到裝配狀態(tài):

8802043c250eb2a060285be160f48c36.png

這樣數(shù)據(jù)庫就恢復到了2015年10月20日的9點58分零秒。

然后再利用業(yè)務(wù)資料補充這段時間內(nèi)的數(shù)據(jù)。

三、利用dbms_logmnr包從log文件中恢復

這個包是由Oracle提供,與dbms_logmnr_d包配合使用可以方便地分析聯(lián)機日志文件和歸檔日志文件,從這些日志文件中提取出所有對數(shù)據(jù)庫的更改操作。

在使用這個包之前,需要先做一些設(shè)置和修改:

1、打開initorcl.ora,修改初始化參數(shù)utl_file_dir,設(shè)置dbms_logmnr_d包將要使用的數(shù)據(jù)字典文件的放置目錄。

eb6dad504d6f5841641cbd02c5f6dee1.png

然后重啟數(shù)據(jù)庫使參數(shù)生效。

2、以sys用戶連接到數(shù)據(jù)庫執(zhí)行dbmslmd.sql腳本重建dbms_logmnr_d這個包。

應(yīng)用Logminer分析重做日志文件的操作主要有以下步驟:

● 使用dbms_logmnr_d里的存儲過程build創(chuàng)建一個外部數(shù)據(jù)字典文件;

● 使用dbms_logmnr里的存儲過程add_logfile添加要分析的日志文件;

● 使用dbms_logmnr里的存儲過程start_logmnr啟動分析;

● 查詢與dbms_logmnr相關(guān)的幾個視圖來獲取日志文件內(nèi)容;

● 使用dbms_logmnr里的存儲過程end_logmnr結(jié)束分析。

▲下面詳細講述使用的過程

1、使用dbms_logmnr_d里的存儲過程build創(chuàng)建一個外部數(shù)據(jù)字典文件:

a0975e25f5049f1ffdfdd49ad7ae943d.png

2、使用dbms_logmnr里的存儲過程add_logfile添加要分析的日志文件到待分析文件列表:

d16ea343204a3a15b29bc6b94985d48d.png

如果沒有運行在歸檔模式,那么由于重做日志文件的循環(huán)使用可能導致日志文件被覆蓋而無法獲取到所要尋找的恢復條目。如果運行在歸檔模式,則可以通過查看$ORACLE_HOMEadminorclbdump目錄下的alert_orcl.log里日志文件歸檔的時間和錯誤操作的時間來確定加入哪些歸檔日志文件到待分析的文件列表中去。

eff89b61175131d3edda456d8d9bc18e.png

注意:執(zhí)行以上過程時logfilename參數(shù)需要寫日志文件的全路徑,否則會報錯。重復以上操作直到把所有需要分析的文件都加到列表中去。這樣就可以啟動進行分析。

3、使用dbms_logmnr里的存儲過程start_logmnr啟動分析;

3630359ea5afa57b5ea51c89da5b8c41.png

這樣就可以通過下面的查詢來獲取日志文件的內(nèi)容了。

4、查詢與dbms_logmnr相關(guān)的幾個視圖來獲取日志文件內(nèi)容;

3f8098efdbe50d4b5b4a5311eab6b5d0.png

這樣就可以找出要恢復所需的語句。注意:v$logmnr_contents只對執(zhí)行dbms_logmnr.start_logmnr的會話有效,如果通過其他會話或者使用dbms_logmnr.end_logmnr終止了分析,都將不能訪問v$logmnr_contents的數(shù)據(jù)。如果要使其他會話也能獲取到這些數(shù)據(jù),可以通過另外建表來實現(xiàn),如:

create table undo_sql as select * from v$logmnr_contents。

再對undo_sql進行授權(quán),其他用戶就可以訪問v$logmnr_contents的數(shù)據(jù)了。

5、使用dbms_logmnr里的存儲過程end_logmnr結(jié)束分析。

使用完成以后用下面的命令來結(jié)束分析活動:exec dbms_logmnr.end_logmnr;

這樣就釋放了分配給logminer的資源(內(nèi)存和數(shù)據(jù)結(jié)構(gòu))。

從上面的過程可知,如果是更新的數(shù)據(jù)量比較大,而日志文件比較小,就可能會導致日志文件的切換。如果沒有及時去挖掘日志文件(沒有運行在歸檔模式),那么可能會由于日志文件的循環(huán)使用而導致數(shù)據(jù)不可恢復。如果運行在歸檔模式,也可能由于需要分析的日志文件比較多而時間較長。

四、利用flashback新特性恢復數(shù)據(jù)

Oracle9i 開始提供了閃回查詢(Flashback Query)功能,對于誤刪除或者誤更新并且已經(jīng)commit了的情況提供了簡便快捷的恢復方法;而在Oracle 提供閃回查詢之前,碰到這種情況只能通過備份來進行基于時間點的恢復或者使用logmnr挖掘日志來恢復,無疑這比閃回查詢要麻煩而且費時。

使用這個Flashback Query特性的前提條件:

1. 數(shù)據(jù)庫必須處于Automatic Undo Management 狀態(tài)。

9d9facd0a8d3e8675284d38f601525d1.png

2. 最大可以閃回查詢的時間段由UNDO_RETENTION 初始化參數(shù)(單位為秒)指定

b7a419e2f47bd4d31005ca2d9b4a7c58.png

可以通過ALTER SYSTEM SET UNDO_RETENTION = ;來動態(tài)修改參數(shù)值。

▲如何使用Flashback Query來恢復數(shù)據(jù)呢?

1. 通過SQL

28b1053a806762ec87261e80f0e8751f.png

使用SELECT 語句的AS OF 來進行閃回查詢,語法如下:

使用AS OF 關(guān)鍵字來對表,視圖或者物化視圖進行Flashback Query,如果指定了SCN,那么expr 部分必須是一個數(shù)字,如果指定了TIMESTAMP,那么expr 必須是一個timestamp類型的值。查詢結(jié)果將返回在指定的SCN 或者時間點上的數(shù)據(jù)。

下面我們使用scott 方案來作一個實驗。

24547dbf2f8f3515319435d98acc0f10.png

如果想在update 的子查詢部分使用AS OF,那么該查詢只能返回一條記錄,否則將會報錯。

可以通過添加一個臨時表作為中轉(zhuǎn),然后再作更新,如下:

5605ae591ab357c7148787937df03e17.png

2.通過DBMS_FLASHBACK包來恢復

DBMS_FLASHBACK 包提供了以下幾個函數(shù):

ENABLE_AT_TIME:設(shè)置當前SESSION 的閃回查詢時間

ENABLE_AT_SYSTEM_CHANGE_NUMBER:設(shè)置當前SESSION 的閃回查詢SCN

GET_SYSTEM_CHANGE_NUMBER:取得當前數(shù)據(jù)庫的SCN

DISABLE:關(guān)閉當前SESSION 的閃回查詢

當將一個SESSION 設(shè)置為閃回查詢模式之后,后續(xù)的查詢都會基于那個時間點或者SCN 的數(shù)據(jù)庫狀態(tài),如果SESSION 結(jié)束,那么即使沒有明確指定DISABLE,閃回查詢也會自動失效。

當SESSION 運行在閃回查詢狀態(tài)時,不允許進行任何DML 和DDL 操作。如果要用DML操作來進行數(shù)據(jù)恢復就必須使用PL/SQL 游標。

▲示例:

fbaf8acfe357d8f21039d588c8b658df.png

通過上面的例子可以看出,只要這個修改的時間不早于sysdate- (UNDO_RETENTION指定的秒數(shù)),就可通過這種方式來恢復數(shù)據(jù)。

e93c4d7b11cf4e7c8ed9a0d27c79ea80.png

對于問題中的批量數(shù)據(jù),可以寫個過程來完成獲取到更改前的數(shù)據(jù):

然后再用這個臨時表里的數(shù)據(jù)來更新TFUNDASSET就可以了。

五、總結(jié)

比較以上幾種恢復數(shù)據(jù)的方法的使用過程,我們可以看出:

● exp/imp只適合于數(shù)據(jù)變化不大的表的數(shù)據(jù)丟失的情況,即使用這種方法處理后也需要從業(yè)務(wù)辦理資料中修正數(shù)據(jù),否則導致數(shù)據(jù)丟失;

● 采用基于時間點的不完全恢復可以恢復丟失的數(shù)據(jù),但是需要關(guān)關(guān)閉數(shù)據(jù)庫,減少系統(tǒng)可用時間,而且也會丟失恢復時間點以后的數(shù)據(jù);

● 使用LogMiner可以較好的恢復數(shù)據(jù),但是要求數(shù)據(jù)庫盡可能運行在歸檔模式,否則也可能導致數(shù)據(jù)丟失。好處是不用關(guān)閉系統(tǒng),能夠從日志文件中得到所有的數(shù)據(jù)。

● 使用Flashback最方便和簡潔,可以直接得到修改前的數(shù)據(jù),但是需要依賴系統(tǒng)設(shè)置,并且需要占用大量的回滾表空間。

因此選擇什么樣的方法來恢復數(shù)據(jù),取決于你的系統(tǒng)環(huán)境和具體情況,不能生搬硬套。采用正確的方法才能最大程度的減少數(shù)據(jù)的丟失。

當然,最好是不需要用到這些恢復的辦法。前提是,你必須做好以下的工作:

1、 為不同環(huán)境創(chuàng)建不同的數(shù)據(jù)庫用戶、不同密碼(如果不能用戶不同,一定要密碼不同);

2、 將owner和應(yīng)用用戶分開,并做適度授權(quán);

3、 在做DML前,先用同樣的條件做查詢,看根據(jù)結(jié)果集是否符合預期。

文章標題:怎么修復Oracle 怎么修復小石子崩掉的車漆
網(wǎng)址分享:http://aaarwkj.com/article18/hhjpgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、網(wǎng)站營銷、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
中文字幕熟妇人妻av在线| 国产91美女黄色在线观看| 亚洲大片色一区在线观看| 亚洲午夜福利啪啪啪| 91亚洲熟妇国产熟妇肥婆| 亚洲三级伦理中文字幕| 麻豆av永久地址久久精品| 精品人妻一区二区三区| 久久亚洲春色中文字幕| 国产av白浆一区二区色爽黄| 日本加勒比系列在线播放| 欧美日韩亚洲视频二区| 免费av在线网址网站| 日本一区二区视频播放网站| 亚洲熟妇av一区二区| 国产精品国产三级区| 97精品少妇一区二区三区| 亚洲成人高清在线视频| 中文字幕91在线播放| 国产一区二区av免费| 亚洲中文字幕在线乱码| 美女露脸口爆吞精视频| 欧美日韩在线一区二区| 亚洲国产欧美日韩在线| 日韩精品视频一区二区在线观看| 成人做爰片免费看视频| 亚洲第一中文字幕久久| 区二区三区毛片乱码免费| 亚洲av乱码专区国产乱码| 精品av一区二区在线| av久久精品在线观看| 人妻少妇偷人精品免费看| 麻豆av久久一区二区| 麻豆国产国语精品三级在线观看| 91最新精品丝袜国产在线| 亚洲av成人噜噜网站| 欧美一区二区三区有限公司| 国产欧美又粗又猛又爽老| 91亚洲精品国产一区| 91精品人妻二区三区| 国产精品中文字幕有码|