Oracle

如何將 Oracle 文件系統備份恢復到新的開發人員機器上?

  • December 4, 2018

一台伺服器(不是我的)由於主機板溫度問題和磁碟控制器問題而當機。鑑於公司的 IT 支持人員應該更了解,等等,公司確實有一個目錄結構的文件系統備份,如下所示:

Oracle
├───adminscripts
│       (this looks like old custom scripts)
├───EM
│   └───DBNAME
│           emkey.ora
├───fast_recovery_area
│   └───DBNAME
│       └───ARCHIVELOG
│           ├───2015_06_01
│           ├───2015_06_02
│           ├───.... 
│           ├───2018_11_03
│           └───2018_11_04
│                   O1_MF_1_5091_FXVO24XT_.ARC (~80MB)
│                   O1_MF_1_5092_FXWPML1J_.ARC (~85MB)
│                   O1_MF_1_5093_FXXTSO2W_.ARC (~40MB)
├───oradata
│   ├───orcl
│   │       CONTROL01.CTL (~10MB)
│   │       REDO01.LOG    (~50MB)
│   │       REDO02.LOG    (~50MB)
│   │       REDO03.LOG    (~50MB)
│   │       SYSAUX01.DBF  (~520MB)
│   │       SYSTEM01.DBF  (~750MB)
│   │       TEMP01.DBF    (~20MB)
│   │       UNDOTBS01.DBF (~46MB)
│   │       USERS01.DBF   (~5MB)
│   └───DBNAME
│       ├───CONTROLFILE
│       │       O1_MF_9T04M5YO_.CTL (~10MB)
│       ├───DATAFILE
│       │       O1_MF_SVO_DATA_9T06KN5J_.DBF (~9GB)
│       │       O1_MF_SVO_DATA_9T06LGRN_.DBF (~1.5GB)
│       │       O1_MF_SVO_DATA_9T06LO63_.DBF (~30MB)
│       │       O1_MF_SYSAUX_9T04J8M6_.DBF   (~1.8GB)
│       │       O1_MF_SYSTEM_9T04J8JR_.DBF   (~1.5GB)
│       │       O1_MF_TEMP_9T04MLQV_.TMP     (~600MB)
│       │       O1_MF_TOOLS_9T06LODY_.DBF    (~100MB)
│       │       O1_MF_UNDOTBS1_9T04J8N5_.DBF (~500MB)
│       │       O1_MF_USERS_9T04J8O5_.DBF    (~5MB)
│       └───ONLINELOG
│               O1_MF_1_9T04MB6F_.LOG        (~100MB)
│               O1_MF_2_9T04MC8Y_.LOG        (~100MB)
│               O1_MF_3_9T04MDHC_.LOG        (~100MB)
└───scripts
       (this looks like old custom scripts)

我必須假設這個數據庫備份是安全完成的,數據庫進入備份模式或在備份完成之前停止。備份是數據盤的磁碟鏡像,不包含其他配置資訊。

所以我需要能夠從中提取數據。我該怎麼做?我假設我必須在我的電腦(64 位 Windows 10 Pro)上設置一個 Oracle 實例,然後以某種方式將這些數據移動到安裝中的某個位置並將其連接起來。我已經下載了 Oracle 安裝程序,但是否有一種特別適合此的設置?

我知道我會如何使用 MySQL,但這對我來說是新的。我已經搜尋了 Oracle 的備份/恢復程序,但它們往往涉及 rman。

這就是我所做的……這需要大量的試驗和錯誤,但我可以訪問數據庫。

將 Oracle 安裝在 R: 驅動器上。然後打開一個管理命令提示符,然後:

R:\>set ORACLE_HOME=r:\oracle\product\11.2.0\dbhome_1
R:\>set ORACLE_SID=SVP
R:\>oradim -new -sid SVP -startmode manual -pfile r:\oracle\product\11.2.0\dbhome_1\dbs\init_svp.ora
R:\>sqlplus /nolog
SQL> connect / as sysdba
SQL> create spfile='r:\oracle\product\11.2.0\dbhome_1\database\SPFILESVP.ORA' from pfile='r:\oracle\product\11.2.0\dbhome_1\dbs\init_svp.ora';
SQL> startup nomount
SQL> CREATE DATABASE SVP
  USER SYS IDENTIFIED BY oracle
  USER SYSTEM IDENTIFIED BY oracle
  EXTENT MANAGEMENT LOCAL
  DEFAULT TEMPORARY TABLESPACE temp
  UNDO TABLESPACE undotbs1;
SQL> shutdown immediate

此時,我將新數據庫的 CONTROLFILE、DATAFILE 和 ONLINELOG 文件夾從 R:\oracle\oradata\SVP 移開,並將它們替換為備份 oradata\DBNAME 文件夾中的文件夾(來自問題)。

SQL> startup nomount -- (because we'd get an error here about the control file)
SQL> alter system set control_files='R:\oracle\oradata\SVP\CONTROLFILE\O1_MF_9T04M5YO_.CTL' scope=SPFILE;
SQL> alter system set compatible='11.2.0.4.0' scope=SPFILE;
SQL> shutdown immediate
SQL> startup

init_svp.ora 文件如下所示:

db_name='SVP'
memory_target=1G
processes = 150
audit_file_dest='r:\oracle\admin\SVP\adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_create_file_dest='r:\oracle\oradata'
db_recovery_file_dest='r:\oracle\fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='r:\oracle'
open_cursors=300 
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
compatible ='11.2.0'

我不知道我是否有什麼我不需要的東西,我並不特別在乎。我可以訪問數據,所以我很好。

感謝那些發布… mustaccio 關於通過提供控製文件讓 Oracle 認為它已經存在的評論很有幫助,還有幾個網頁讓我解決了“control_files”和“compatible”參數問題。

編輯:重新啟動電腦後,您可能會收到一個 Oracle 錯誤,如下所示:

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

您需要使用以下命令安裝數據庫(當然,替換為您的詳細資訊):

R:\>set ORACLE_HOME=r:\oracle\product\11.2.0\dbhome_1
R:\>set ORACLE_SID=SVP
R:\>sqlplus /nolog
SQL> connect / as sysdba
SQL> startup

引用自:https://dba.stackexchange.com/questions/222470