版本 11g 主庫 ORCL 備庫 TESTDG
1添加資料檔案或表空間
2删除資料檔案或表空間
3使用可傳輸表空間
4重命名資料檔案
5添加或删除重做日志
6使用NOLOGGING或unrecoverable子句操作ddl或dml
7更改初始化參數
一 添加資料檔案或表空間
1 standby_file_management =AUTO 時
主庫上的操作
ORCL>
ORCL>col tsname for a20
ORCL>col dfname for a50
ORCL>select ts.name tsname,df.name dfname
2 from v$tablespace ts,v$datafile df
3 where ts.ts#=df.ts#;
TSNAME DFNAME
-------------------- --------------------------------------------------
SYSTEM F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
SYSAUX F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
USERS F:\ORCL\ORADATA\ORCL\USERS01.DBF
EXAMPLE F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
TESTDG>alter database recover managed standby database disconnect from session;
資料庫已更改。
TESTDG>select ts.name tsname , df.name dfname
TSNAME DFNAME
-------------------- -------------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
--建立表空間或資料檔案
ORCL>create tablespace dg_tbs datafile 'f:\orcl\oradata\orcl\dg_tbs01.dbf'
size 100 m;
表空間已建立。
TSNAME DFNAME
-------------------- ---------------------------------------
SYSTEM F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
SYSAUX F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
USERS F:\ORCL\ORADATA\ORCL\USERS01.DBF
DG_TBS F:\ORCL\ORADATA\ORCL\DG_TBS01.DBF
已選擇6行。
ORCL>alter system switch logfile;
系統已更改。
TESTDG>--applied redo logs
-------------------- --------------------------------------------------
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS01.DBF ---已成功應用redo
---當standby_file_management=manual時,在主庫端添加資料檔案
TESTDG>---設定standby_file_management =manual
TESTDG>alter system set standby_file_management=manual;
ORCL>alter tablespace dg_tbs add datafile
'f:\orcl\oradata\orcl\dg_tbs02.dbf' size 100m;
表空間已更改。
-------------------- ----------------------------------------
SYSTEM F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
DG_TBS F:\ORCL\ORADATA\ORCL\DG_TBS02.DBF
已選擇7行。
select ts.name tsname , df.name dfname
*
第 1 行出現錯誤:
ORA-01089: 正在執行立即關閉 - 不允許進行任何操作 ---
程序 ID: 2580
會話 ID: 170 序列号: 11
TESTDG>select process,status,thread#,sequence#,block#,blocks
2 from v$managed_standby;
ERROR:
ORA-03114: 未連接配接到 ORALCE
TESTDG>conn system/yang as sysdba
已連接配接。
PROCESS STATUS THREAD# SEQUENCE# BLOCK# BLOCKS
--------- ------------ ---------- ---------- ---------- ----------
ARCH CONNECTED 0 0 0 0
ARCH CLOSING 1 36 2049 981
ARCH CLOSING 1 37 1 189
ARCH CLOSING 1 38 2049 1405
SYSTEM D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS01.DBF
DG_TBS F:\ORCL\PRODUCT\11.1.0\DB_1\DATABASE\UNNAMED00007
TESTDG>select recovery_mode from v$archive_dest_status where dest_id =2;
RECOVERY_MODE
-----------------------
IDLE
TESTDG>--最後一條的資料檔案名稱為系統自己命名的。要dba手工重命名到正确的路徑
TESTDG>alter database create datafile 'f:\orcl\product\11.1.0\db_1\database\unnamed00007' as 'd:\oracle\testdgdata\dg_tbs02.dbf';
TSNAME DFNAME
-------------------- ---------------------------------------------
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS02.DBF
TESTDG>---記得上面的那個錯吧,由于自動建立的資料檔案路徑不對,應用redo資料失敗導緻整個redo應用都被中止,解決了此問題後要記得啟動redo應用。
ORCL>-- 删除表空間
ORCL>drop tablespace dg_tbs including contents and datafiles;
表空間已删除。
EXAMPLE F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
ORCL>select sequence# from v$log;
SEQUENCE#
----------
37
38
39
TESTDG>--删除表空間
TESTDG>alter system set standby_file_management=auto;
----當standb_file_management=manual時,删除表空間和資料檔案
ORCL>create tablespace dg_tbs datafile 'f:\orcl\oradata\orcl\dg_tbs01.dbf' size 10 m;
ORCL>alter system switch logfile;----使備庫應用redo。
TSNAME DFNAME
-------------------- -----------------------------------
USERS D:\ORACLE\TESTDGDATA\USERS01.DBF
DG_TBS D:\ORACLE\TESTDGDATA\DG_TBS01.DBF
-------------------- --------------------------------------------
SYSAUX F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
SEQUENCE#
----------
40
41
42
SEQUENCE#
----------
43
41
42
ORCL>alter system set log_archive_dest_state_2 =defer;
文檔上說當使在主庫使用drop tablespace including contents and datafiles語句來在主庫上同時删除資料檔案,必須要使用standby_file_management=auto,沒有給出如果使用manual會怎麼樣,在備庫上删除表空間時提示錯誤,因為是read only的,是以不應該在備庫上進行産生redo的操作。我做的實驗過程如下:
SYSAUX D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
UNDOTBS1 D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
EXAMPLE D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
TESTDG>select sequence# from v$log;
SEQUENCE#
40
42
41
SEQUENCE#
----------
43
42
41
TESTDG>drop tablespace dg_tbs include contents and datafiles;
drop tablespace dg_tbs include contents and datafiles
*
ORA-02173: 無效的 DROP TABLESPACE 選項
TESTDG>drop tablespace dg_tbs including contents and datafiles;
drop tablespace dg_tbs including contents and datafiles
ORA-01109: 資料庫未打開
TESTDG>alter database recovery managed standby database cancel;
alter database recovery managed standby database cancel
*
ORA-02231: ALTER DATABASE 選項缺失或無效
TESTDG>alter database recover managed standby database cancel;
alter database recover managed standby database cancel
ORA-16136: 受管備用恢複未激活
2 from v$managed_standby;----檢視redo 應用情況。
--------- ------------ ---------- ---------- ---------- ----------
ARCH CLOSING 1 42 1 205
ARCH CLOSING 1 39 1 758
ARCH CLOSING 1 40 1 982
ARCH CLOSING 1 41 1 304
RFS IDLE 0 0 0 0
RFS IDLE 1 43 7977 2
---在備庫上手工删除時,提示錯誤!
ORA-16000: 打開資料庫以進行隻讀通路
TESTDG>select process ,client_process,sequence#,status from v$managed_standby;
PROCESS CLIENT_P SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH ARCH 42 CLOSING
ARCH ARCH 43 CLOSING
ARCH ARCH 40 CLOSING
ARCH ARCH 41 CLOSING
RFS UNKNOWN 0 IDLE
MRP0 N/A 44 WAIT_FOR_LOG
RFS LGWR 44 IDLE
RFS UNKNOWN 0 IDLE -----說明現在沒有在應用redo并且在等等44号歸檔redo
已選擇8行。
TESTDG>shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
TESTDG>exit
-----第二次打開備庫時,重新應用redo
TESTDG>select thread#,sequence#,applied from v$archived_log;
THREAD# SEQUENCE# APP
---------- ---------- ---
1 33 YES
1 31 YES
1 32 YES
1 34 YES
1 35 YES
1 36 YES
1 37 YES
1 38 YES
1 39 YES
1 40 YES
1 41 YES
1 42 YES
1 43 YES
1 44 YES
1 45 YES
1 46 YES
1 47 YES
1 48 YES
1 49 NO ---再次查詢時為YES,應用redo需要時間的
已選擇19行。
TESTDG>show parameter standby
NAME TYPE VALUE
------------------------------------ ----------- --------------------------
standby_archive_dest string %ORACLE_HOME%\RDBMS
standby_file_management string AUTO
TESTDG>select name from v$datafile;
NAME
---------------------------------------------------------------------------
D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
D:\ORACLE\TESTDGDATA\USERS01.DBF
D:\ORACLE\TESTDGDATA\EXAMPLE01.DBF
----發現在手工沒有删除DG_TBS 的情況下,備庫已經成功應用了主機的日志,删除了表空間DG_TBS!
TESTDG>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
49
----三思的書中也是說需要手工使用系統指令删除删除在主機上已經被删除的資料檔案。不過我的沒有這麼做!:
---重命名資料檔案,主庫對資料檔案重命名時,此修改并不會自動傳播到standby資料庫。不管是auto還是manual,都得DBA手工操作。
ORCL>create tablespace test datafile 'f:\orcl\oradata\orcl\test01.dbf' size 200m;
ORCL>select name from v$datafile;
NAME
--------------------------------------------------
F:\ORCL\ORADATA\ORCL\SYSTEM01.DBF
F:\ORCL\ORADATA\ORCL\SYSAUX01.DBF
F:\ORCL\ORADATA\ORCL\UNDOTBS01.DBF
F:\ORCL\ORADATA\ORCL\USERS01.DBF
F:\ORCL\ORADATA\ORCL\EXAMPLE01.DBF
F:\ORCL\ORADATA\ORCL\TEST01.DBF
---重命名資料檔案
ORCL>alter tablespace test offline;
ORCL>host rename f:\orcl\oradata\orcl\test01.dbf test02.dbf
ORCL>alter tablespace test rename datafile
2 'f:\orcl\oradata\orcl\test01.dbf' to
3 'f:\orcl\oradata\orcl\test02.dbf';
ORCL>alter tablespace test online;
表空間已更改
ORCL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
51
-----------------------------------------------------------------------
D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
D:\ORACLE\TESTDGDATA\TEST01.DBF--沒有改變
TESTDG>select thread#,sequence#,applied from v$archived_log
2 where sequence#=51;
THREAD# SEQUENCE# APP
---------- ---------- ---
1 51 YES
---首先停止應用。
---手工更改名稱
TESTDG>host rename d:\oracle\testdgdata\test01.dbf test02.dbf
TESTDG>alter database rename file
2 'd:\oracle\testdgdata\test01.dbf' to
3 'd:\oracle\testdgdata\test02.dbf';
alter database rename file
ORA-01511: 重命名日志/資料檔案時出錯
ORA-01275: 自動進行備用檔案管理時, 不允許進行 RENAME 操作。
-----------------------------------------
D:\ORACLE\TESTDGDATA\SYSTEM01.DBF
D:\ORACLE\TESTDGDATA\SYSAUX01.DBF
D:\ORACLE\TESTDGDATA\UNDOTBS01.DBF
D:\ORACLE\TESTDGDATA\USERS01.DBF
D:\ORACLE\TESTDGDATA\TEST02.DBF
---修改後重新開始應用redo