oracle實驗記錄 (手動建立 physical datagurad)

fufuh2o發表於2009-07-22

1建立物理datagurad的前提條件

archivelog, 開啟 強制日誌alter database force logging  意思 primary無論什麼情況都做redo,通過select force_logging from v$database可以看到當前資料庫強制日誌模式的狀態

備份主庫
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF d:\os備份;
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF d:\os備份;
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF d:\os備份;
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF d:\os備份;
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF d:\os備份;
host copy D:\自建表空間資料檔案\TESTTB.DBF d:\os備份;         指令碼內容

SQL> alter database begin backup;

資料庫已更改。

SQL> @D:\oracle實驗指令碼\os備份資料檔案.txt
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

SQL> alter database end backup;

資料庫已更改。

SQL> alter database create standby controlfile as 'D:\os備份\control01.ctl';

資料庫已更改。                                                                           建立standby控制檔案

SQL> host mkdir d:\standbyphysical

SQL> host mkdir d:\standbyphysical\bdump

SQL> host mkdir d:\standbyphysical\cdump          建立 prysical standby目錄

SQL> host mkdir d:\standbyphysical\archive

SQL> host mkdir d:\standbyphysical\udump

C:\>oradim -new -sid standby1 -intpwd a831115
例程已建立。
             建立standby instance

C:\>
接下來就是比較重要的 配置 instance 引數,primary,stanby 2個庫的引數都需要配置 目的為了可以互換

SQL> create pfile from spfile;

檔案已建立。
先primary庫

*._allow_resetlogs_corruption=TRUE
*.background_dump_dest='F:\oracle\product\10.1.0\admin\xhtest\bdump'
*.compatible='10.1.0.2.0'
*.control_files='F:\oracle\product\10.1.0\oradata\xhtest\control01.ctl','F:\oracle\product\10.1.0\oradata\xhtest\control02.ctl','F:\oracle\product\10.1.0\oradata\xhtest\control03.ctl'
*.core_dump_dest='F:\oracle\product\10.1.0\admin\xhtest\cdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_create_file_dest='d:\自建表空間資料檔案'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='xhtest'
*.db_recovery_file_dest='F:\oracle\product\10.1.0\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='xhtest'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=xhtestXDB)'
*.fal_client='xhtest'
*.fal_server='standby1'
*.java_pool_size=50331648
*.job_queue_processes=10
*.large_pool_size=8388608
*.log_archive_config='dg_config=(xhtest,standby1)'
*.log_archive_dest_1='location=F:\歸檔備份 valid_for=(all_logfiles,all_roles) db_unique_name=XHTEST'
*.log_archive_dest_2='service=standby1 valid_for=(online_logfiles,primary_role) db_unique_name=standby1'
*.open_cursors=300
*.os_authent_prefix='OPS$'
*.os_roles=FALSE
*.pga_aggregate_target=25165824
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=83886080
*.sort_area_size=65536
*.standby_file_management='auto'
*.tracefile_identifier='xh080729'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='F:\oracle\product\10.1.0\admin\xhtest\udump'


SQL> create spfile from pfile;

檔案已建立。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes

資料庫裝載完畢。
資料庫已經開啟。
SQL>


建立standby 引數檔案
*._allow_resetlogs_corruption=TRUE
*.background_dump_dest='d:\standbyphysical\bdump'
*.compatible='10.1.0.2.0'
*.control_files='d:\standbyphysical\control01.ctl'
*.core_dump_dest='d:\standbyphysical\cdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_create_file_dest='D:\standbyphysical'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='xhtest'
*.db_recovery_file_dest='D:\standbyphysical\archive'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=xhtestXDB)'
*.java_pool_size=50331648
*.job_queue_processes=10
*.large_pool_size=8388608
*.log_archive_dest_1='location=D:\standbyphysical\archive valid_for=(all_logfiles,all_roles) db_unique_name=standbyphysical'
*.open_cursors=300
*.os_authent_prefix='OPS$'
*.os_roles=FALSE
*.pga_aggregate_target=25165824
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=83886080
*.sort_area_size=65536
*.tracefile_identifier='xh080729'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\standbyphysical\udump'
*.log_archive_dest_2='service=xhtest valid_for=(online_logfiles,primary_role) db_unique_name=xhtest'
*.fal_server=xhtest
*.fal_client=standbyphysical
*.standby_file_management=auto
*.log_archive_config='dg_config=(xhtest,standbyphysical)'
*.db_unique_name=standbyphysical
*.service_names=standbyphysical
*.instance_names=standbyphysical
*.standby_archive_dest='D:\standbyphysical\archive'
*.db_file_name_convert='F:\oracle\product\10.1.0\oradata\xhtest','d:\standbyphysical','D:\自建表空間資料檔案','d:\standbyphysical'
*.log_file_name_convert='F:\oracle\product\10.1.0\oradata\xhtest','d:\standbyphysical'


SQL> create spfile='d:\引數檔案\spfilestandby1.ora' from pfile='d:\引數檔案\init
standby1.ora';

檔案已建立。
C:\>set oracle_sid=standby1

C:\>sqlplus "/ as sysdba"
SQL> startup nomount;
ORACLE 例程已經啟動。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes\
將資料檔案 考到 standby位置~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··(包含控制檔案)
SQL> alter database mount;

資料庫已更改。
注意必須要配置監聽程式與網路服務名


配置好listener後
lsnrctl stop
lsnrctl start才可以

tnsping standby1
tnsping xhtest   來檢查primary庫與standby庫

TNSNAME
EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

XHTEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xhtest)
    )
  )

STANDBY1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = STANDBY1)
    )
  )


 LISTENER
LISTENER3 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
      )
    )
  )

LISTENER1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = F:\oracle\product\10.1.0\db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
    )
  )

檢查應用

primary庫
SQL> alter system switch logfile;

系統已更改。
standby庫

SQL> select name from v$archived_log;

NAME
-------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\ARCHIVE\ARC00032_0660924396.001
D:\STANDBYPHYSICAL\ARCHIVE\ARC00028_0660924396.001
D:\STANDBYPHYSICAL\ARCHIVE\ARC00029_0660924396.001
D:\STANDBYPHYSICAL\ARCHIVE\ARC00031_0660924396.001

 


一些引數的分析
db_file_name_convert 與 standby_archive_dest

先看一下實驗環境

SQL> select db_unique_name,database_role from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE
------------------------------ ----------------
xhtest                         PRIMARY


SQL> select db_unique_name,database_role from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE
------------------------------ ----------------
standby1                       PHYSICAL STANDBY

 

xhtest 為主庫,standby1 為備用庫

SQL> create tablespace testtb2 datafile 'D:\自建表空間資料檔案\testtb2' size 10m
;

表空間已建立。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2

已選擇8行。                     主庫上建立一個新的表空間

 

SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。
SQL> alter database recover managed standby database cancel
  2  ;

資料庫已更改。

SQL> alter database open;

資料庫已更改。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB

已選擇7行。                 
SQL> select file_name from dba_data_files;

FILE_NAME
-------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF

已選擇6行。
SQL> show parameter standby

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest                 string      D:\standbyphysical\archive
standby_file_management              string      auto

 沒有新加的資料檔案,因為日誌沒有傳過來,log_archive_dest_2='service 原因在這 預設是arcn當主庫歸檔時候傳給standby 若要同步改成lgwr,一會我們實驗下

SQL> alter system switch logfile;  主庫上(xhtest) 歸檔下

系統已更改。


SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。  standby應用下傳過來的歸檔日誌

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2

已選擇8行。

SQL> select file_name from dba_data_files;

FILE_NAME
-----------------------------------------------------------------------------

D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\STANDBY1\DATAFILE\O1_MF_TESTTB2_495L0K3F_.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF

已選擇7行。                                   自動同步了 這是由於standby_file_management=auto開啟了 自動管理


SQL> create tablespace testtb3 datafile 'D:\testtb3' size 10m;

SQL> alter system switch logfile;

系統已更改。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3

已選擇9行。            主庫又建立一個表空間 

 

SQL> alter database recover managed standby database cancel;

資料庫已更改。

SQL> alter database open;

資料庫已更改。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3

已選擇9行。

SQL> select file_name from dba_data_files;

FILE_NAME
------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\STANDBY1\DATAFILE\O1_MF_TESTTB2_495L0K3F_.DBF        名字錯誤 已經配置 db_file_name_convert ,是由於配置了db_create_file_dest造成
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\STANDBY1\DATAFILE\O1_MF_TESTTB3_495LHV5V_.DBF

已選擇8行。                                                   也可以 那麼  檔案的同步主要由standby_file_management來管理 設定為 auto 後
                                                               那麼 db_file_name_convert 究竟啥目的呢 為什麼 新建立的2個表空間檔案,在
                                                               standby庫的名字難識別呢,db_file_name_convert就是用來轉換名字的 ~~~檔名字
                                                                log_file_name_convert 意思一樣


SQL> show parameter db_file_name  (在standby庫上)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      F:\oracle\product\10.1.0\orada                    已經配置了呀,但還是 沒有對映過來.
                                                                                                    由於配置了db_create_file_dest造成
                                                 ta\xhtest, d:\standbyphysical,
                                                  D:\自建表空間資料檔案, d:\sta
                                                 ndbyphysical
構建乾淨的實驗環境
SQL> select DB_UNIQUE_NAME ,DATABASE_ROLE,OPEN_MODE from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
------------------------------ ---------------- ----------
xhtest                         PRIMARY          READ WRITE

SQL> select DB_UNIQUE_NAME ,DATABASE_ROLE,OPEN_MODE from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
------------------------------ ---------------- ----------
standby1                       PHYSICAL STANDBY READ ONLY


主庫上操作
SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4
TESTTB5

已選擇11行。

SQL> drop tablespace testtb2 including contents and datafiles;

表空間已刪除。

SQL> drop tablespace testtb3 including contents and datafiles;

表空間已刪除。

SQL> drop tablespace testtb4 including contents and datafiles;

表空間已刪除。

SQL> drop tablespace testtb5 including contents and datafiles;

表空間已刪除。

SQL> alter system switch logfile;

 

standby庫上 查詢

C:\>set oracle_sid=standby1

C:\>sqlplus "/ as sysdba"

SQL*Plus: Release 10.1.0.2.0 - Production on 星期一 8月 4 11:34:18 2008

Copyright (c) 1982, 2004, Oracle.  All rights reserved.

已連線到空閒例程。

SQL> startup;
ORACLE 例程已經啟動。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB

已選擇7行。                          由於standby_file_management 為auto自動的刪除了 在standby庫

SQL>

在 standby庫
SQL> create pfile from spfile;

檔案已建立。
db_file_name_convert=('F:\oracle\product\10.1.0\oradata\xhtest','D:\standbyphysical','D:\自建表空間資料檔案','D:\standbyphysical')

SQL> create spfile from pfile;

檔案已建立。

 

主庫 primary
SQL> startup;
ORACLE 例程已經啟動。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
資料庫裝載完畢。
資料庫已經開啟。

SQL> create tablespace testtb2 datafile 'd:\自建表空間資料檔案\testtb2.dbf' size
 10m;

表空間已建立。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2

已選擇8行。

SQL> alter system checkpoint;

系統已更改。

db_create_file_dest ='' 變為空!!!!!!!!!!!!!!!!!(standby 庫上)


standby庫上


SQL> alter database recover managed standby database disconnect from session;
SQL> alter database recover managed standby database cancel;

資料庫已更改。
SQL> alter database open;

資料庫已更改。

SQL> select name from v$datafile;

NAME
-------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF

已選擇7行。

SQL>                 名字對了          db_file_name_convert 經過實驗 並不是什麼 大小寫,括號的問題,第一次也配置結果沒有成功的原因是因為 standby庫開了                                                db_create_file_dest omf這個 導致檔案建立在這個路徑下,這個路徑又不包含在 db_file_name_convert 中.

 

*.db_file_name_convert='F:\oracle\product\10.1.0\oradata\xhtest','D:\standbyphysical' D:\自建表空間資料檔案','D:\standbyphysical'
看 現在是這樣也沒大寫,也沒有 括號 \之類


主庫
SQL> create tablespace testtb3 datafile 'd:\自建表空間資料檔案\testtb3.dbf' size
 10m;

表空間已建立。

SQL> alter system switch logfile;

系統已更改。

standby庫上


SQL> alter database recover managed standby database disconnect from session;
SQL> alter database recover managed standby database cancel;

資料庫已更改。
SQL> alter database open;

SQL> select name from v$datafile;

NAME
------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF                                     看見沒跟大小些,括號沒關係

 


下面主庫上建立一個 表空間 位置不在db_file_name_convert 所包含的路徑裡
SQL> create tablespace testtb4 datafile 'd:\testtb4.dbf' size 10m; 位置不在 db_file_name_convert中

表空間已建立。

SQL> select name from v$datafile;

NAME
---------------------------------------------------------------------------

F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF
D:\自建表空間資料檔案\TESTTB.DBF
D:\自建表空間資料檔案\TESTTB2.DBF
D:\自建表空間資料檔案\TESTTB3.DBF
D:\TESTTB4.DBF

SQL> alter system switch logfile;

 

standby庫                                               一個不知名的檔案新增進了standby庫 寫入了一個不知名的位置 ,所以
SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF
C:\WINDOWS\SYSTEM32\UNNAMED00009              ~~~~由於該檔案在主庫建立時 沒有在db_file_name_convert 所以應用歸檔日誌新增進standby庫時候 寫入控制檔案時有問題

 

由於net傳輸及其不穩定造成恢復不~~~此STANDBY需要重新建立

用第一次的備份檔案,但控制檔案是新建立的~因為 控制檔案中添新資料檔案資訊了 。


standby庫
SQL> startup mount;
ORACLE 例程已經啟動。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
資料庫裝載完畢。
SQL> select name from v$archived_log;

未選定行

SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF                  實際目錄沒這寫檔案

D:\TESTTB4.DBF

已選擇9行。
ALTER system switch logfile;主庫  

SQL> select name from v$archived_log; standby

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\ARCHIVE\ARC00039_0661538341.001                經檢查是通著的,但問題在於~~~日誌不全了~~恢復不了了~全的話可以在standby庫
                                                                  alter  database register physical logfile ''

 

重新建立吧              primary的環境

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4

已選擇10行。

SQL> drop tablespace testtb2 including contents and datafiles;

表空間已刪除。

SQL> drop tablespace testtb3 including contents and datafiles;

表空間已刪除。

SQL> drop tablespace testtb4 including contents and datafiles;

表空間已刪除。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB

已選擇7行。

SQL> alter database begin backup;

資料庫已更改。

SQL> @d:\oracle實驗指令碼\備份資料檔案.txt
SP2-0310: 無法開啟檔案 "d:\oracle實驗指令碼\備份資料檔案.txt"
SQL> @d:\oracle實驗指令碼\os備份資料檔案.txt
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

SQL> alter database end backup;

資料庫已更改。


SQL> alter database create standby controlfile as 'D:\os備份\control01.ctl' reus
e
  2  ;

資料庫已更改。

 


把備份的檔案 包含控制檔案拷貝 到  standby庫目錄


資料庫已更改。

SQL> ALTER system switch logfile;

系統已更改。

SQL> ALTER system switch logfile;

系統已更改。
 
SQL>                主庫

 


SQL> startup mount;
ORACLE 例程已經啟動。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
資料庫裝載完畢。
SQL> select name from v$archived_log;

未選定行

SQL> select name from v$archived_log;

未選定行

SQL> select name from v$archived_log;

未選定行

SQL> alter database recover managed standby database disconnect from session; 開啟應用

資料庫已更改。

SQL> select name from v$archived_log;

未選定行

SQL> select name from v$archived_log;

未選定行

SQL> select name from v$archived_log;

未選定行

SQL> select name from v$archived_log;

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\ARCHIVE\ARC00040_0661538341.001                 standby庫 過了這麼半天才收到,,網路很不穩定
D:\STANDBYPHYSICAL\ARCHIVE\ARC00041_0661538341.001

SQL>

SQL> alter database recover managed standby database cancel;

資料庫已更改。

SQL> alter database open;

SQL> select name ,applied from v$archived_log;

NAME
----------------------------------------------------------

APP
---
D:\STANDBYPHYSICAL\ARCHIVE\ARC00040_0661538341.001
YES

D:\STANDBYPHYSICAL\ARCHIVE\ARC00041_0661538341.001                檢視 2個日誌已經應用
YES

 

SQL> alter system switch logfile;  primary庫

系統已更改。

 

SQL> select name ,applied from v$archived_log;         standby庫 open 下就不應用日誌了 

NAME
--------------------------------------------------------------------------------

APP
---
D:\STANDBYPHYSICAL\ARCHIVE\ARC00040_0661538341.001
YES

D:\STANDBYPHYSICAL\ARCHIVE\ARC00041_0661538341.001
YES

D:\STANDBYPHYSICAL\ARCHIVE\ARC00042_0661538341.001
NO                                                                     沒有應用日誌

 

主庫新增檔案 ,但不在db_file_name_convert位置中 standby_file_management     standby_file_management AUTO 的情況下不能進行alter database rename
第 1 行出現錯誤:
ORA-01511: 重新命名日誌/資料檔案時出錯
ORA-01275: 自動進行備用檔案管理時, 不允許進行 RENAME 操作。             。。。。。。。。。。。。。。。。。。。。。

SQL> show parameter standby_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest                 string      D:\standbyphysical\archive
standby_file_management              string      AUTO                            在standby庫上查詢的

SQL> create tablespace testtb2 datafile 'd:\testtb2.dbf' size 5m;

表空間已建立。

SQL> alter system switch logfile;

系統已更改。

SQL> alter system switch logfile;

系統已更改。                                       主庫新增資料檔案 不在db_file_name_convert位置中,db_create_file_dest也沒設定


SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。
                                                  
SQL> select applied from v$archived_log;(standby庫已經不應用日誌了)

APP
---
YES
YES
YES
NO 
NO
alter database recover managed standby database cancel
*
第 1 行出現錯誤:
ORA-16136: 受管備用恢復未啟用                           失敗,日誌未應用完


在standby庫檢視日誌為什麼沒應用恢復

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
C:\WINDOWS\SYSTEM32\UNNAMED00007

已選擇7行。                                 一個不知名字的檔案填加進來了

檢視standby庫的 alert.log
Tue Aug 05 11:51:37 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_3976.trc:
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'C:\WINDOWS\SYSTEM32\UNNAMED00007'
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01111: name for data file 7 is unknown - rename to correct file                 也是因為這個問題 ~~~
ORA-01110: data file 7: 'C:\WINDOWS\SYSTEM32\UNNAMED00007'

SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00007' as 'd:\st
andbyphysical\testtb2.dbf';                                    在正確位置 改名字建立~~~~~~~~~新檔案

資料庫已更改。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
NO
NO

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF         

已選擇7行。

SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select applied from v$archived_log;

APP
---
YES                
YES
YES
YES
YES                                            全都應用了

SQL>                          


SQL> alter database recover managed standby database cancel;

資料庫已更改。                                                     成功了
 


現在實驗下standby_file_management 為manual的情況

 

查下standby          
SQL> show parameter standby_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------
standby_archive_dest                 string      D:\standbyphysical\archive
standby_file_management              string      MANUAL                    已經改為手動了


SQL> create tablespace testtb3 datafile 'd:\自建表空間資料檔案\testtb3.dbf' reus    主庫建立 資料檔案
e;

表空間已建立。

 

SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
YES
YES
YES
YES
NO            注意 剛剛傳過來這個日誌沒有應用

 


SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
C:\WINDOWS\SYSTEM32\UNNAMED00008                     但standby庫一個不知名的檔案新增進來了跟主庫建檔案未在db_file_name_convert中情況一樣


SQL> alter database recover managed standby database cancel;
alter database recover managed standby database cancel
*
第 1 行出現錯誤:
ORA-16136: 受管備用恢復未啟用                     日誌沒應用完你也關不了
standby alert.log的記錄                              問題很清楚,一個不知名的檔案加入因為sTANDBY_FILE_MANAGEMENT is set to MANUAL ,所以應用日誌時失敗
Tue Aug 05 14:23:04 2008
Media Recovery Log D:\STANDBYPHYSICAL\ARCHIVE\ARC00046_0661538341.001
Media Recovery Log D:\STANDBYPHYSICAL\ARCHIVE\ARC00047_0661538341.001
File #8 added to control file as 'UNNAMED00008' because
the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL
The file should be manually created to continue.
MRP0: Background Media Recovery terminated with error 1274
Tue Aug 05 14:23:11 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_2136.trc:
ORA-01274: cannot add datafile 'D:\自建表空間資料檔案\TESTTB3.DBF' - file could not be created

Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Tue Aug 05 14:23:11 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_2136.trc:
ORA-01274: cannot add datafile 'D:\自建表空間資料檔案\TESTTB3.DBF' - file could not be created

 

 

SQL> alter system set standby_file_management='auto' ;

SQL> show parameter standby_file_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      auto
SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
YES
YES
YES
YES
NO                                  改回auto還是不行哦

已選擇8行。


解決方法跟
主庫建檔案未在db_file_name_convert中情況一樣

SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00008' as 'd:\st
andbyphysical\testtb3.dbf';
alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00008' as 'd:\standby
physical\testtb3.dbf'
*
第 1 行出現錯誤:
ORA-01275: 自動進行備用檔案管理時, 不允許進行 CREATE DATAFILE 操作。   剛才改回standby_file_management改回auto 造成不能 CREATE DATAFILE

 

SQL> alter system set standby_file_management='manual' ;

系統已更改。

SQL> show parameter standby_file_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      manual
SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00008' as 'd:\st
andbyphysical\testtb3.dbf';

資料庫已更改。

SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF

已選擇8行。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
YES
YES
YES
YES
YES

已選擇8行。

SQL> alter database recover managed standby database cancel;

資料庫已更改。

SQL> alter database open;

資料庫已更改。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3

已選擇9行。

SQL>                OK 全部解決通過以上實驗我們充分理解了standby_file_management,db_file_name_convert,log_file_name_convert的 意義
                   db_file_name_convert,log_file_name_convert  主要是對映名字 這樣可以primary檔名一樣,但primary建檔案時候必須包含這之中,否則出現錯誤
                   一個不知名的資料檔案加入控制檔案
                   若開啟db_create_file_dest在用日誌向standby庫新增資料檔案時候,oracle會自動建立檔案 但名字與primary庫的不同
                   若primary庫與standby庫在2臺機器 且目錄結構完全一樣db_file_name_convert,log_file_name_convert可以不配置

                  
standby_file_management,   manual刪除主庫表空間及其資料檔案

1  standby_file_management    auto 下 (standby庫) 主庫 刪除表空間及資料檔案

SQL> select tablespace_name from user_tablespaces; standby

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4

已選擇10行。

SQL> select name from v$datafile;standby

NAME
---------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF
D:\STANDBYPHYSICAL\TESTTB4.DBF

 

 

SQL> select tablespace_name from user_tablespaces;primary

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4

已選擇10行。

SQL>  select name from v$datafile;primary

NAME
-------------------------------------------------------------------------------

F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF
D:\自建表空間資料檔案\TESTTB.DBF
D:\TESTTB2.DBF
D:\自建表空間資料檔案\TESTTB3.DBF
D:\自建表空間資料檔案\TESTTB4.DBF

已選擇9行。

 

SQL> show parameter standby_file_          (standby庫)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      auto
SQL>

SQL> drop tablespace testtb3 including contents  and  datafiles; (primary庫)

表空間已刪除。
SQL>  select name from v$datafile;  (primary庫)

NAME
--------------------------------------------------------------------------------

F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF
D:\自建表空間資料檔案\TESTTB.DBF
D:\TESTTB2.DBF
D:\自建表空間資料檔案\TESTTB4.DBF

已選擇8行。

SQL> select tablespace_name from user_tablespaces;(primary庫)

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB4

已選擇9行。

SQL> alter system switch logfile;

系統已更改。

SQL>

SQL> select  applied from v$archived_log;(standby)


APP
---
YES
NO  剛傳過來的未應用

已選擇35行。
SQL> select applied from v$archived_log;


YES  都應用了

已選擇35行。

SQL> select name from v$datafile;

NAME
----------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF                         該檔案沒有了,並且實際資料夾裡也沒有了.
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB4.DBF

已選擇8行。                                    

 


standby_file_management manual下(standby庫)
SQL> alter system set standby_file_management='manual'; (standby庫)

系統已更改。
SQL> show parameter standby_file(standby庫)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------
standby_file_management              string      manual

SQL> drop tablespace testtb4 including contents  and  datafiles;(primary庫)

表空間已刪除。

SQL> alter system switch logfile;(primary庫)

系統已更改。

SQL> select applied from v$archived_log;


 YES                  最新的是第36 一直開著應用,直接應用了

已選擇36行。

SQL> select name from v$datafile;(standby庫) 檔案也刪除了

NAME
--------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF

已選擇7行。                   注意manual檔案也刪除,關鍵問題在於 資料夾裡 檔案還在 testtb4,dbf還在 需要手動刪除

 


刪除primary 表空間 不包含在 db_file_name_convert中
刪除testtb2表空間~~~其資料檔案不在db_file_name_convert中primary位置D:\TESTTB2.DBF

SQL> drop tablespace testtb2 including contents  and  datafiles;(primary庫)

表空間已刪除。

SQL> alter system switch logfile;(primary庫)

系統已更改。


SQL> alter system set standby_file_management='auto';(standby庫)

系統已更改。

SQL> select applied from v$archived_log;(standby庫)

APP
---

YES 新的歸檔檔案已經應用

已選擇37行。

SQL> select name from v$datafile;

NAME
-------------------------------------------------------------------------

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF                     該檔案已經刪除,並且資料夾裡也實際刪除


總結 刪除 只與standby_file_management有關係,manual也刪除 該表空間在standby ,也刪除 資料檔案 (邏輯上)但實際資料夾裡該檔案還有需要手動刪除。
auto,全都刪除,表空間,資料檔案(查詢中)實際資料夾裡也刪除

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
關於db_create_file_dest的 補充  08.08.27
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在standby_file_management  auto,manual下

 

 SQL> select db_unique_name,database_role from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE
------------------------------ ----------------
standby1                       PHYSICAL STANDBY                          

 

 

SQL>  select db_unique_name,database_role from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE
------------------------------ ----------------
xhtest                         PRIMARY


SQL> show parameter log_archive_dest_2(xhtest)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      service=standby1 lgwr valid_fo
                                                 r=(online_logfiles,primary_rol
                                                 e) db_unique_name=standby1

 


SQL> show parameter db_recovery_                                               standby的一些引數

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string
db_recovery_file_dest_size           big integer 2G

SQL> show parameter standby_archive_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------standby的一些引數
standby_archive_dest                 string
SQL> select * from v$standby_log;

未選定行

SQL> show parameter standby_file_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------standby的一些引數
standby_file_management              string      manual

SQL> show parameter db_create

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------standby的一些引數
db_create_file_dest                  string      D:\standbyphysical\datafile


SQL> alter system switch logfile;

系統已更改。

 

SQL> select  PROCESS,CLIENT_PROCESS,SEQUENCE#,STATUS from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH      ARCH              0 CONNECTED
ARCH      ARCH              0 CONNECTED
RFS       UNKNOWN           0 RECEIVING

SQL> select name,applied,creator from v$archived_log;

NAME                                               APP CREATOR
-------------------------------------------------- --- -------
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00069_0663689986.00 NO  ARCH
1

 


SQL> create tablespace testtb2 datafile 'D:\自建表空間資料檔案\testtb2.dbf' size
 10m;

表空間已建立。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2

已選擇8行。

SQL> alter system switch logfile;

系統已更改。

SQL> select name,applied,creator from v$archived_log;

NAME                                               APP CREATOR
-------------------------------------------------- --- -------
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00069_0663689986.00 NO  ARCH
1

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00070_0663689986.00 NO  LGWR
1

 

SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select name,applied,creator from v$archived_log;

NAME                                               APP CREATOR
-------------------------------------------------- --- -------
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00069_0663689986.00 YES ARCH
1

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00070_0663689986.00 NO  LGWR~~~~~~~~~~~~~~~~~~~~~~~~~~~應用失敗

 


Wed Aug 27 11:48:39 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_3088.trc:
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'C:\WINDOWS\SYSTEM32\UNNAMED00007'
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'C:\WINDOWS\SYSTEM32\UNNAMED00007'

 


SQL> select name from v$datafile;(STANDBY1)

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
C:\WINDOWS\SYSTEM32\UNNAMED00007

已選擇7行。

 


SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00007' as 'd:\st
andbyphysical\testtb2.dbf';

資料庫已更改。

SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select name,applied,creator from v$archived_log;

NAME                                               APP CREATOR
-------------------------------------------------- --- -------
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00069_0663689986.00 YES ARCH
1

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00070_0663689986.00 YES LGWR
1


SQL> select name from v$datafile;

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF

已選擇7行。

 

standby_file_management auto 下,

SQL> alter system set standby_file_management='auto'
  2  ;

系統已更改。

SQL> show parameter standby_file_management

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      auto

 

prmary建立2個表空間


 SQL> create tablespace testtb3 datafile 'D:\自建表空間資料檔案\testtb3.dbf' size
 10m;

表空間已建立。

SQL> create tablespace testtb4 datafile 'D:\testtb4.dbf' size 10m;~~~~~~~~~~~~~~~~~~~~~~~~~~~未包含在db_file_name_convert 中

表空間已建立。

SQL>


SQL> alter system switch logfile;

系統已更改。

SQL>

SQL> select name,applied,creator from v$archived_log;
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00072_0663689986.00 YES LGWR~~~~~~~~~~~~~~~~~~~~~~~~~~~收到並應用
1

NAME                                               APP CREATOR
-------------------------------------------------- --- -------

 

 


SQL> select name from v$datafile;

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在db_create_file_dest
F_TESTTB3_4C9VCCM1_.DBF

D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在db_create_file_dest~~~~這個不在db_file_name_convert的也建立了沒有錯誤

NAME
--------------------------------------------------
F_TESTTB4_4C9VCK9R_.DBF


已選擇9行。


SQL> alter system set db_create_file_dest='';

系統已更改。

SQL> show parameter db_create_file

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string


SQL> create tablespace testtb5 datafile 'D:\testtb5.dbf' size 10m;

表空間已建立。

SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select  PROCESS,CLIENT_PROCESS,SEQUENCE#,STATUS from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH      ARCH              0 CONNECTED
ARCH      ARCH              0 CONNECTED
RFS       UNKNOWN           0 RECEIVING
RFS       LGWR             74 WRITING
RFS       UNKNOWN           0 RECEIVING~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~應用程式開不了

 

SQL> select name,applied,creator from v$archived_log;
NAME                                               APP CREATOR
-------------------------------------------------- --- -------

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00073_0663689986.00 NO  LGWR~~~~~~~~~~~~~~~~~~~~~~~~最新的 但無法應用
1


看下alert.log
File #10 added to control file as 'UNNAMED00010'.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~資訊
Originally created as:
'D:\TESTTB5.DBF'
Recovery was unable to create the file as:
'D:\TESTTB5.DBF'
MRP0: Background Media Recovery terminated with error 1274
Wed Aug 27 14:33:07 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_3020.trc:
ORA-01274: cannot add datafile 'D:\TESTTB5.DBF' - file could not be created
ORA-01119: error in creating database file 'D:\TESTTB5.DBF'
ORA-27038: created file already exists
OSD-04010: 指定了 選項, 但檔案已經存在

Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Wed Aug 27 14:33:08 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_3020.trc:
ORA-01274: cannot add datafile 'D:\TESTTB5.DBF' - file could not be created
ORA-01119: error in creating database file 'D:\TESTTB5.DBF'
ORA-27038: created file already exists
OSD-04010: 指定了 選項, 但檔案已經存在

Wed Aug 27 14:36:37 2008
alter database recover managed standby database disconnect from session
MRP0 started with pid=18, OS id=1224
Managed Standby Recovery not using Real Time Apply
MRP0: Background Media Recovery terminated with error 1111
Wed Aug 27 14:36:43 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_1224.trc:
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: 'C:\WINDOWS\SYSTEM32\UNNAMED00010'
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: 'C:\WINDOWS\SYSTEM32\UNNAMED00010'

Wed Aug 27 14:36:44 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_1224.trc:
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: 'C:\WINDOWS\SYSTEM32\UNNAMED00010'
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: 'C:\WINDOWS\SYSTEM32\UNNAMED00010'

SQL> select name from v$datafile;

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M
F_TESTTB3_4C9VCCM1_.DBF

D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M

NAME
--------------------------------------------------
F_TESTTB4_4C9VCK9R_.DBF

C:\WINDOWS\SYSTEM32\UNNAMED00010~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~錯誤檔案

已選擇10行。


SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00010' as 'd:\st
andbyphysical\testtb5.dbf';
alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00010' as 'd:\standby
physical\testtb5.dbf'
*
第 1 行出現錯誤:
ORA-01275: 自動進行備用檔案管理時, 不允許進行 CREATE DATAFILE 操作。~~~~~~~~~~~~~~~~standby_file_management必須為 manual才可以重命


SQL>

SQL> alter system set standby_file_management='manual';

系統已更改。

SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00010' as 'd:\st
andbyphysical\testtb5.dbf';

資料庫已更改。


 
SQL> alter database recover managed standby database disconnect from session;

資料庫已更改。

SQL> select  PROCESS,CLIENT_PROCESS,SEQUENCE#,STATUS from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH      ARCH              0 CONNECTED
ARCH      ARCH              0 CONNECTED
RFS       UNKNOWN           0 RECEIVING
RFS       LGWR             74 WRITING
RFS       UNKNOWN           0 RECEIVING
MRP0      N/A              74 WAIT_FOR_LOG

 


SQL> select name,applied,creator from v$archived_log;
NAME                                               APP CREATOR
-------------------------------------------------- --- -------

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00073_0663689986.00 YES LGWR
1

SQL> select name from v$datafile;

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M
F_TESTTB3_4C9VCCM1_.DBF

D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M

NAME
--------------------------------------------------
F_TESTTB4_4C9VCK9R_.DBF

D:\STANDBYPHYSICAL\TESTTB5.DBF

已選擇10行。

 


SQL> alter database recover managed standby database cancel;

資料庫已更改。

 

SQL> select tablespace_name from user_tablespaces;~(standby1)

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4
TESTTB5

已選擇11行。

SQL>

 

結論:
當standby_file_management為 manual時候即便有這個引數,primary新增新資料檔案,standby應用時候也會出錯,應用不下去,一個未知名的資料檔案新增到控制檔案中,用重新命名可以解決,當為 auto時候,可是primary建立的新資料檔案不在db_file_name_convert 中這樣轉換不過來位置名稱,也應用不下去,一個未知名的資料檔案新增到控制檔案中,
這個時候如果有db_create_file_dest 就可以比免這個錯誤,直接建立到db_create_file_dest中,但是如果正常auto下,primary 也建立在db_file_name_convert中包含的位置,那麼standby應用日誌建立primary新建立的資料檔案,就會建立在db_create_file_dest中,不會按照db_file_name_convert中對映到standby的位置建立,名字也不對.

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-609862/,如需轉載,請註明出處,否則將追究法律責任。

相關文章