oracle實驗記錄 (手動建立 physical datagurad)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle實驗記錄 (flashback,physical standby resetlogs)Oracle
- oracle實驗記錄 (手動 duplicate database(3))OracleDatabase
- oracle實驗記錄 (physical standby 日誌應用方面)Oracle
- oracle實驗記錄(手動dupliacate database(2))OracleDatabase
- oracle實驗記錄 (oracle 10G dataguard(7)physical dg轉換)Oracle
- oracle實驗記錄 (PFILE 啟動SPFILE)Oracle
- oracle實驗記錄 (oracle 10G dataguard(8)rman 建立dg)Oracle
- oracle實驗記錄 (移動outlines)Oracle
- oracle實驗記錄 (flashback)Oracle
- oracle實驗記錄 (OMF)Oracle
- oracle實驗記錄 (NET)Oracle
- oracle實驗記錄 (audit)Oracle
- oracle實驗記錄 (oracle 10G dataguard(11)建立logical standby)Oracle
- oracle實驗記錄 (oracle reset parameter)Oracle
- Oracle Data Redaction實驗記錄Oracle
- oracle實驗記錄 (block cleanout)OracleBloC
- oracle實驗記錄 (dump undo)Oracle
- oracle實驗記錄 (inlist card)Oracle
- oracle實驗記錄 (oracle 資料字典)Oracle
- Oracle檔案改名實驗記錄Oracle
- oracle實驗記錄 (選擇率)Oracle
- oracle實驗記錄 (dump logfile)Oracle
- oracle實驗記錄 (事務控制)Oracle
- oracle實驗記錄 (函式index)Oracle函式Index
- oracle實驗記錄 (bigfile tablespace)Oracle
- oracle實驗記錄 (恢復-redo)Oracle
- oracle實驗記錄 (expdp/impdp使用)Oracle
- oracle實驗記錄 (transport tablespace(Rman))Oracle
- oracle實驗記錄 (使用exp/imp)Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(手動))Oracle
- Oracle DG建立Physical Standby DatabaseOracleDatabase
- oracle實驗記錄 (dump index b*tree)OracleIndex
- oracle實驗記錄 (CKPT的觸發)Oracle
- oracle實驗記錄 (dump undo4)Oracle
- oracle實驗記錄 (dump undo3)Oracle
- oracle實驗記錄 (dump undo2)Oracle
- oracle實驗記錄 手工 duplicate database(1)OracleDatabase
- oracle實驗記錄Rman duplicate database(1)OracleDatabase