日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

将oracle冷备份恢复到另外一个数据库实例中

發布時間:2025/7/14 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将oracle冷备份恢复到另外一个数据库实例中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因更換服務器需要將Oracle數據庫轉移到另外臺Oracle中。
說明:
1、測試環境為:windows server2003 和 oracle 10g.
2、2臺服務器安裝的程序目錄一樣,數據目錄不一樣。
特別借簽了Afshen兄弟發的實踐將oracle冷備份恢復到另外一個數據庫實例中操作文章。但是對于新手來說沒有詳細說明,且我的操作有點點差異。另外我是新手,只知道工作完成,但是不知道是否此操作是否對于數據庫使用存在何影響,還需要后期開發使用在知道,希望能給大家提供對比作為操作中的參考。(因時間倉促未俯圖)

1)在A數據庫服務器操作:
將需要轉移的數據庫A冷備份,冷備份,我很簡單。
開始->運行:sqlplus
sqlplus>conn SourDB sys as sysdba
sqlplus>shutdown immediate \\關閉數據庫實例
在提示后ORACLE 例程已經關閉后,將對應A數據庫中的e:\Oracle\oradata\SourDB數據庫目錄全部拷貝出來。
我的數據庫目錄內含REDO01.LOG 、REDO02.LOG、REDO03.LOG,SYSAUX01.DBF,SYSTEM01.DBF,TEMP01.DBF,UNDOTBS01.DBF,USERS01.DBF,ZJTEST.DBF
CONTROL01.CTL,CONTROL02.CTL,CONTROL03.CTL
疑惑:這3個控制文件后面發現沒用上,新數據庫重新生成控制文件就行了。因新接觸不了解,哪位同學知道的,解疑下。

2)在B數據庫(實例DestDB)
我的程序安裝在x:\oracle\product\10.1.0\db_1\
數據目錄在x:\oracle\database\DestDB(無子目錄)
a、備份數據庫B的控制文件
開始->運行:sqlplus
sqlplus>conn DetDB sys as sysdba
sqlplus>alter database backup controlfile to trace
sqlplus>show parameter spfile; //顯示spfile路徑
sqlplus>create pfile from spfile; //備份數據庫B的控制文件,生成的文件在x:\oracle\product\10.1.0\db_1\database\下的INITDestDB.ORA,備份吧。

b、sqlplus>shutdown immediate \\關閉數據庫實例

刪除數據目錄在x:\oracle\database\DestDB的目錄下的數據文件、控制文件和日志文件,反正我是目錄下的都刪除了。將數據庫A備份的sourDB的*.log、*.DBF復制進去。

刪除數據庫B中的,x:\oracle\product\10.1.0\db_1\database\SPFILEDestDB.ORA控制文件

修改INITDestDB.ORA文件,刪除*.control_files對應的字串

c、啟動數據庫B到nomount狀態
開始->運行:sqlplus /nolog
sql>conn DestDB as sysdba
sql>startup nomount
ORACLE 例程已經啟動。
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 144964076 bytes
Database Buffers 25165824 bytes
Redo Buffers 1048576 bytes

\\使用下面的語句生成數據庫B的新的控制文件,將DestDB改掉目錄的數據庫名就行了。
sql>CREATE CONTROLFILE SET DATABASE "DestDB" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 454
LOGFILE
GROUP 1 'x:\oracle\database\DestDB\REDO01.LOG' SIZE 10M,
GROUP 2 'x:\oracle\database\DestDB\REDO02.LOG' SIZE 10M,
GROUP 3 'x:\oracle\database\DestDB\REDO03.LOG' SIZE 10M
DATAFILE
'x:\oracle\database\DestDB\SYSTEM01.DBF',
'x:\oracle\database\DestDB\UNDOTBS01.DBF',
'x:\oracle\database\DestDB\SYSAUX01.DBF',
'x:\oracle\database\DestDB\USERS01.DBF',
'x:\oracle\database\DestDB\ZJTEST.DBF'
CHARACTER SET ZHS16GBK;

關閉數據庫
sql>shutdown immediate

d、添加(參考備份的initsourDB.ORA)
*.control_files='x:\oracle\database\DestDB\control01.ctl','x:\oracle\database\DestDB\control02.ctl','x:\oracle\database\DestDB\control03.ctl'
新的控制文件,生成到目錄x:\oracle\database\DestDB,修改x:\oracle\product\10.1.0\db_1\database\下的initsourDB.ORA,我看到我的目錄內生成了3個控制文件,所以加了3個。

e、指定pfile參數啟動,并生成spfile,完成恢復工作。
sql>startup pfile="x:\oracle\product\10.1.0\db_1\database\initsourDB.ORA";
ORACLE 例程已經啟動。
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 144964076 bytes
Database Buffers 25165824 bytes
Redo Buffers 1048576 bytes
數據庫裝載完畢。
ORA-01589: 要打開數據庫則必須使用 RESETLOGS 或 NORESETLOGS 選項

SQL> alter database open resetlogs;
數據庫已更改。

SQL> create spfile from pfile;
文件已創建。

SQL> select count(*) from dba_users;
COUNT(*)
----------
30
SQL> select count(*) from dba_users where username='test';
COUNT(*)
----------


文章出處:飛諾網(www.diybl.com):http://www.diybl.com/course/7_databases/oracle/oraclejs/20110814/558381.html

?

1、首先安裝一個全新的Oracle,包括服務名、SID,安裝目錄應最好與原來的ORACLE目錄一致。

2、刪除安裝目錄下所有的datafile、logfile.(oradata目錄下的文件)

3、Copy原來的數據文件到oradata目錄下,包括系統數據文件等。

4、alter database backup controlfile to trace; 備份當前數據庫控制文件,控制文件一般備份到D:\oracle\PRoduct\10.2.0\admin\bstest\udump下,請注意最新一個就是了。

刪除原控制文件,重新創建一個控制文件,請注意修改各個路徑的位置,如下:

CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS NOARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO01.LOG' SIZE 50M,

GROUP 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO02.LOG' SIZE 50M,

GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO03.LOG' SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\SYSTEM01.DBF',

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\UNDOTBS01.DBF',

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\SYSAUX01.DBF',

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\USERS01.DBF',

'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\TEST.DAT'

CHARACTER SET ZHS16GBK

;

注意修改數據文件的路徑,如果是原數據文件,加上你原來所有的數據文件路徑,如紅色則是我原來的數據文件。

?


11、重啟,啟動到startup mount;然后 

執行recover database;成功,

再執行alter database open;打開成功了。

12、現在已基本成功了,但是經過這樣處理,為了安全起見,

最好用EXP先將數據全部導出,然后再重新安裝ORACLE,然后再用IMP重新導入。

而當我導出時卻出現錯誤:提示臨時表空間為空。

?

用select name from v$tempfile;查看,確實為空,則:

如temp01.dbf已存在,則如下:

alter tablespace temp add tempfile 'D:\oracle\product\10.2.0\oradata\bstest\temp01.dbf'

否則:

alter tablespace temp add tempfile 'D:\oracle\product\10.2.0\oradata\bstest\temp01.dbf' size 10M;

?

再用EXP導出,成功!


還是打不開。出現以下錯誤:
 alter database open RESETLOGS
*
ERROR 位于第 1 行:
ORA-01092: ORACLE 例程終止。強行斷開連接

10、 將UNDO日志改為手動模式:

alter system set undo_management='manual' scope=spfile;


5、startup nomount;啟動到nomount狀態,然后執行以上控制文件重建語句。

6、執行recover database using backup controlfile until cancel;

輸入cancel回車,后出現錯誤。

7、alter database open resetlogs;執行后出現以下錯誤。

ORA-01194: 文件1需要更多的恢復來保持一致性
ORA-01110: 數據文件 1: 'D:\ORACLE\ORADATA\ZQKH\SYSTEM01.DBF'

8、#系統文件出錯,看到“一致性”自然想到 _allow_resetlogs_corruption的隱含命令
alter system set "_allow_resetlogs_corruption"=true scope=spfile;
9、alter database open RESETLOGS;

轉載于:https://www.cnblogs.com/gotoschool/p/5849133.html

總結

以上是生活随笔為你收集整理的将oracle冷备份恢复到另外一个数据库实例中的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。