還原oracle資料庫-九五小龐
- 建立表空間及使用者
Microsoft Windows [版本 6.1.7601]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
C:\Users\pxy>sqlplus/nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期日 8月 30 15:54:19 2020
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> select name from v$datafile;
SP2-0640: 未連線
SQL> conn/as sysdba
已連線。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\APP\PXY\ORADATA\PXY\SYSTEM01.DBF
E:\APP\PXY\ORADATA\PXY\SYSAUX01.DBF
E:\APP\PXY\ORADATA\PXY\UNDOTBS01.DBF
E:\APP\PXY\ORADATA\PXY\USERS01.DBF
SQL> create temporary tablespace RIS_TEMP
2 tempfile 'E:\APP\PXY\ORADATA\PXY\RIS_TEMP.dbf'
3 size 200m
4 autoextend on
5 next 200m maxsize 20480m
6 extent management local;
表空間已建立。
SQL> create tablespace RIS_DATA
2 logging datafile 'E:\APP\PXY\ORADATA\PXY\RIS_DATA.dbf'
3 size 200m autoextend on
4 next 200m maxsize 20480m
5 extent management local;
表空間已建立。
SQL> create user ris identified by jfris_1234
2 ACCOUNT UNLOCK
3 default tablespace RIS_DATA
4 temporary tablespace RIS_TEMP;
使用者已建立。
SQL> grant connect,resource,dba to ris;
授權成功。
SQL> commit;
提交完成。
SQL>
- 還原資料庫
(1)imp匯入dmp檔案
imp 使用者名稱/密碼@127.0.0.1/orcl file=E:\yxb\yx_base.dmp log= E:\yxb\yx_base.log owner=使用者名稱
(2)impdp ris/jfris_1234@orcl dumpfile=ris20200830.DMP directory=mydata remap_tablespace=RIS_DATA:RIS_DATA remap_schema=RIS:RIS logfile=RIS20200830.log table_exists_action=replace
table_exists_action引數說明
使用imp進行資料匯入時,若表已經存在,要先drop掉表,再進行匯入。
而使用impdp完成資料庫匯入時,若表已經存在,有四種的處理方式:
1) skip:預設操作
2) replace:先drop表,然後建立表,最後插入資料
3) append:在原來資料的基礎上增加資料
4) truncate:先truncate,然後再插入資料
2020年5月的一天,某客戶將資料庫中的業務核心使用者NC65匯入資料庫中。不幸的是事情就註定要發生,匯入的目標資料庫是當前執行的生產資料庫,並且在impdp匯入時,添加了table_exists_action=replace選項(此選項時到impdp匯入物件時,如發現物件已經存在,就會先刪除物件,再建立物件)。來了,不幸的事情發生了,生產環境的NC65使用者資料被還原到備份時的狀態,最近幾天新產生的資料被清空,慘了,要被領導批了。此生產環境中資料庫還無rman備份、在匯入前也沒有做expdp備份,不幸的事情真是這麼相似。但幸運的是資料庫執行在歸檔模式,並且有完整的最近7天的歸檔日誌。此時可以在歸檔日誌上面動動手腳,利用歸檔日誌來手動前滾資料庫。 恢復思路