Oracle数据文件的备份与恢复
Oracle數據文件的備份與恢復
數據文件中包含數據庫中的用戶數據或應用程序數據。是oracle體系結構中非常重要要的一部分。因此對數據文件的備份與恢復時每一位DBA的必修課。
本次測試的思路是分為4個步驟1.通過增加數據文件的大小,向表空間中添加新表新數據來調整數據庫結構。2.備份數據文件和控制文件。3.刪除數據文件,然后進行恢復。4.確認恢復過來的數據文件中是否完整,先前添加的表和數據是否完整。
第一步:1.增加表空間大小。
首先我們先查看一下每個表空間的大小。
SQL> selecttablespace_name,sum(bytes/1024/1024) as FreeSize
2 ?from dba_free_space
3 ?group by tablespace_name;
TABLESPACE_NAME ? ? ? ? ? ? ? ? ?FREESIZE
------------------------------ ----------
SYSAUX ? ? ? ? ? ? ? ? ? ? ? ? ? ?31.1875
UNDOTBS1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?77.75
USERS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .5625
SYSTEM ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6.5625
EXAMPLE ? ? ? ? ? ? ? ? ? ? ? ? ? ? 21.25
由上可知:目前5個表空間基本空間都不足,因為我們基本不會使用example例子表空間,所以接下來只為其他4個表空間添加數據文件。
我們先查一下每一個表空間和數據文件的對應關系和位置。
SQL> Select tablespace_name, file_namefrom dba_data_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
-------------------------------------------------------------------------------
EXAMPLE
C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
USERS
C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
UNDOTBS1
C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
TABLESPACE_NAME
------------------------------
FILE_NAME
-------------------------------------------------------------------------------
SYSAUX
C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
SYSTEM
C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
接下來就開始添加128M數據文件。
SQL> alter tablespace system add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SY
STEM02.DBF ' size 128M;
altertablespace system add datafile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM0
2.DBF
*
第 1 行出現錯誤:
ORA-01119: 創建數據庫文件 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM02.DBF
' 時出錯
ORA-27040: 文件創建錯誤, 無法創建文件
OSD-04002: 無法打開文件
O/S-Error: (OS 123) 文件名、目錄名或卷標語法不正確。
實際操作時容易出現了如上錯誤,原因是:'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SY
STEM02.DBF ' 兩個單引號之間(尤其是頭和尾)存在空格,所以在word編輯后再往數據庫中執行時一定要格外小心。
接下來就很順利了
SQL> alter tablespace system add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM02.DBF' size 128M;
Tablespace altered.
SQL> alter tablespace sysaux add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX02.DBF' size 128M;
Tablespace altered.
SQL> alter tablespace undotbs1 add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS02.DBF' size 128M;
Tablespace altered.
SQL> alter tablespace users add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS02.DBF' size 128M;
Tablespace altered.
查看一下表空間是否已經變大。
SQL> selecttablespace_name,sum(bytes/1024/1024) as FreeSize
2 ?from dba_free_space
3 ?group by tablespace_name;
TABLESPACE_NAME ? ? ? ? ? ? ? ? ?FREESIZE
------------------------------ ----------
SYSAUX ? ? ? ? ? ? ? ? ? ? ? ? ? ? 157.75
UNDOTBS1 ? ? ? ? ? ? ? ? ? ? ? ? ? 205.75
USERS ? ? ? ? ? ? ? ? ? ? ? ? ? ?127.5625
SYSTEM ? ? ? ? ? ? ? ? ? ? ? ? ? 133.5625
EXAMPLE ? ? ? ? ? ? ? ? ? ? ? ? ? ? 21.25
由上結果可知:已經添加數據文件成功,表空間已經變大。
2.接下來我們繼續在表空間中創建新的表,并添加數據。
2.1首先是創建一個賬戶,并賦權。
SQL> create user test identified byszc12345 default tablespace users temporary
tablespace temp;
用戶已創建。
SQL> grant connect,resource to test;
授權成功。
2.2 創建一個testtable表,并添加數據。
鑒于方便,我們直接復制scott用戶的dept表中的數據。
首先是賦權test可以select scott用戶的dept表。
SQL> grant select on scott.dept to test;
授權成功。
然后創建testtable表,內容為dept的表內容。
SQL> create table testtable as select *from scott.dept;
表已創建。
SQL> select * ?from testtable;
? DEPTNO DNAME ? ? ? ? ?LOC
---------- -------------- -------------
? ? ? 90 tec ? ? ? ? ? ? ? ?guangzhou
? ? ? 70 tec ? ? ? ? ? ? ? ?beijing
? ? ? 10 ACCOUNTING ? ? NEW YORK
? ? ? ?20 RESEARCH ? ? ? DALLAS
? ? ? 30 SALES ? ? ? ? ? CHICAGO
? ? ? 40 OPERATIONS ? ? BOSTON
? ? ? 60 tec ? ? ? ? ? ? ? shanghai
已選擇7行。
接下來我們先備份數據文件和控制文件,下面的是一位大牛的原話,我直接粘貼了:
“切記:每次對數據庫結構(調整表空間,增減數據文件)后,最好能立即備份一次數據庫,并備份一次控制文件!一個好的DBA不是會多少奇怪的花樣,弄一些稀奇古怪的參數來顯示自己的博學,而是踏踏實實的做好每個簡單的細節!細節決定成敗!”
第二步:備份數據文件和控制文件。
1.先查看數據文件的位置,為備份做準備。
Select tablespace_name, file_name fromdba_data_files order by tablespace_name; ?
2.表空間設置為熱備份模式。
SQL> alter tablespace SYSAUX beginbackup;
表空間已更改。
SQL> alter tablespace SYSTEM beginbackup;
表空間已更改。
SQL> alter tablespace UNDOTBS1 beginbackup;
表空間已更改。
SQL> alter tablespace USERS beginbackup;
表空間已更改。
3.將數據文件復制一份到備份目錄中。
4.關閉表空間的熱備份模式。
SQL> alter tablespace SYSAUX end backup;
表空間已更改。
SQL> alter tablespace SYSTEM end backup;
表空間已更改。
SQL> alter tablespace UNDOTBS1 endbackup;
表空間已更改。
SQL> alter tablespace USERS end backup;
表空間已更改。
5.日志切換
SQL> Alter system switch logfile;
系統已更改。
6.備份控制文件
SQL> Alter database backup controlfileto 'c:\oracle\orcl\control02.bak';
數據庫已更改。
7.再日志切換
SQL> Alter system switch logfile;
系統已更改。
第三步:刪除users表空間的數據文件
Shutdown immediate;然后刪除USERS01.DBF和USERS02.DBF,然后startup。
第四步:恢復數據文件并測試數據完整性
重啟后會提示:
SQL> startup
ORA-32004: obsolete or deprecatedparameter(s) specified for RDBMS insta
ORACLE 例程已經啟動。
Total System Global Area ?778387456 bytes
Fixed Size ? ? ? ? ? ? ? ? ?1374808 bytes
Variable Size ? ? ? ? ? ? 260048296 bytes
Database Buffers ? ? ? ? ?511705088 bytes
Redo Buffers ? ? ? ? ? ? ? ?5259264 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 4 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 4: 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF'
這時就先將之前的備份,復制到數據文件指定的目錄。
之后執行命令恢復即可。
SQL> recover database;
完成介質恢復。
通過上述結果會看到,恢復的售后不需要手工干預,是以因為這里沒有提示手工干預,是因為我提前早已設置到歸檔目錄,并將配置添加到spfile文件中,所以默認情況下就可以找到,否則還是會提示手工輸入的。
驗證一下數據文件是否完整。
SQL> conn sys/oracle as sysdba;
已連接。
SQL> alter database open;
數據庫已更改。
SQL> conn test/szc12345
已連接。
SQL> select * from testtable;
? DEPTNO DNAME ? ? ? ? ?LOC
---------- -------------- -------------
? ? ? 90 tec ? ? ? ? ? ? ? guangzhou
? ? ? 70 tec ? ? ? ? ? ? ? beijing
? ? ? 10 ACCOUNTING ? ? NEW YORK
? ? ? 20 RESEARCH ? ? ? DALLAS
? ? ? 30 SALES ? ? ? ? ?CHICAGO
? ? ? 40 OPERATIONS ? ? BOSTON
? ? ? 60 tec ? ? ? ? ? ? ?shanghai
已選擇7行。
由上可知:數據很完整。整個的數據文件的備份與恢復就全部做完了,相對比較簡單,就是過程感覺麻煩一點。
轉載于:https://blog.51cto.com/greetwin/1208043
總結
以上是生活随笔為你收集整理的Oracle数据文件的备份与恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 3671 Boonie and
- 下一篇: android 开机启动服务。