Oracle數據庫備份、恢復及常見問題


通常我們都是使用PL/SQL Developer來對Oracle中的數據對象和數據進行管理。如果我們想方便快速還原或者部署Oracle到新機器上,怎么進行數據庫的備份、導入恢復呢?

這里我們必須要考慮的:如何創建Oracle表空間、創建Oracle數據庫;如何把Oracle對象、表數據導出到sql腳本中。

1、數據庫備份

(1)導出數據庫對象

Tools-->ExportUser Objects,選擇需要導出的數據庫對象,包括:表、序列、存儲過程、視圖、函數等。

(2)導出表數據

Tools-->Export Tables,導出數據到PL/SQL數據庫腳本中。

2、新建表空間和Oracle數據庫

File-->New-->SQL Window,打開SQL窗口輸入:

表空間、用戶名都為IGSC。

create tablespace IGSC datafile 'E:\IGSOracle\IGSC.dbf' size 10240M; 
--DROP TABLESPACE IGSC INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; 
create user IGSC identified by IGSC default tablespace IGSC; 
  
grant connect,resource to IGSC;  
grant dba to IGSC; 
--Revoke dba from IGSC;

點擊執行sql。此時,數據庫表空間、表結構、表數據齊全,可以開始遷移出一個完整的數據庫了。

3、導入數據庫及對象

Tools-->Import Tables,先導入數據庫對象,再導入表數據,此時,你的表數據文件可以分幾個文件導入也是不會報錯的,因為表結構已經存在。

執行過程中會出現如下界面:

到這,整個oracle數據庫的遷移工作已完成。注意:我們導出的Oracle對象和數據庫默認還是原來Oracle數據庫的表空間和數據庫用戶名。如果想在新的數據庫服務器中指定不同的表空間和數據庫用戶,則需要替換生成的sql腳本中的表空間和用戶名的設置,並且第二步指定合理的表空間和數據庫用戶。

4、常見問題

(1)就是上面說的注意

我遇到的問題:新環境的數據庫中存在IGS表空間,我導出的數據庫文件IGSOracle.sql表空間默認也為IGS,結果在導入數據庫對象到新表空間IGSC時,沒有導入成功,卻導入到了已存在的IGS表空間中。查看IGSOracle.sql:

發現導出的Oracle對象和數據庫默認還是原來Oracle數據庫的表空間和數據庫用戶名,我們要將表空間和用戶名都改為IGSC,重新導入。

(2)ORACLE initialization or shutdown in progress

想刪除不想要了的數據庫和dbf文件,停掉服務后刪除,重啟服務啟動數據庫實例時報錯。

 解決:

開始-->輸入,sqlplus /nolog

SQL> connect system/hope;

ERROR:
ORA-01033: ORACLE initialization or shutdown in progress【就是這個錯誤】
 
SQL> connect sys/hope as sysdba
已連接。
 
SQL> shutdown normal
ORA-01109: 數據庫未打開
已經卸載數據庫。
ORACLE 例程已經關閉。
 
SQL> start mount
SP2-0310: 無法打開文件 "mount.sql"
 
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area  612368384 bytes
Fixed Size                  1332348 bytes
Variable Size             183151492 bytes
Database Buffers          423624704 bytes
Redo Buffers                4259840 bytes
數據庫裝載完畢。
 
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01157: 無法標識/鎖定數據文件 8 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 8: 'C:\TYKM.DBF'
 
SQL> alter database datafile 8 offline drop;【8是數據文件中的8】
數據庫已更改。
 
SQL> alter database open;【一直循環這個語句,直至不再提示錯誤】
數據庫已更改。
 
SQL> shutdown normal
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
 
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area  612368384 bytes
Fixed Size                  1332348 bytes
Variable Size             187345796 bytes
Database Buffers          419430400 bytes
Redo Buffers                4259840 bytes
數據庫裝載完畢。
數據庫已經打開。
 (3)ORA-1658 無法為表空間的段創建initial區
 原因:表空間大小

  解決:因為表數據比較大,我這里將步驟二中的size改為了10240M。

(4)PL/SQL導入表數據報錯Error reading file

如果此文對您有幫助,微信打賞我一下吧~

當表數據文件很大時,選擇Use Command Window方式導入報錯。對大量數據的導入選擇Use SQL*Plus,前者不能讀取大文件,后者可以。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM