1. 程式人生 > >Oracle 11g筆記——調整表空間和資料檔案的大小、移動資料檔案、聯機重做日誌檔案、控制檔案

Oracle 11g筆記——調整表空間和資料檔案的大小、移動資料檔案、聯機重做日誌檔案、控制檔案

一、調整表空間和資料檔案的大小    1、調整表空間大小    alter database datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' resize 15m;    2、調整表空間大小為允許自動擴充套件     SQL>alter database datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf'         autoextend on         next 20M         maxsize 1g;     注:autoextend設為on時,允許擴充套件資料檔案,設為OFF時,不允許擴充套件     next <size>:分配給資料檔案的下一個磁碟空間量的大小,單位:K、M、G、T     maxsize <size>:設為unlimited時,資料檔案的大小是無限的;大檔案表空間,最大為128TB;具有32K塊的小檔案表空間,資料檔案最大為128GB。單位:K、M、G、T    3、增加表空間,將資料檔案放至users表空間     SQL>alter tablespace users add datafile '/u03/oradata/users02.dbf'         size 50m         autoextend on         next 10m         maxsize 200m;    4、從表空間中刪除資料檔案,以前的版本有以下三個方法:    (1)容忍該資料檔案    (2)縮減該資料檔案並關閉AUTOEXTEND    (3)建立新的表空間,將所有的物件移動至新的表空間,並且刪除原來的表空間     目前版本,可使用EM Database Control的Reorganize    5、使用alter tablespace調整大檔案表空間的大小    create bigfile tablespace dmarts datafile '/u05/oradata/dmarts.dbf' size 750m autoextend on next 100m maxsize unlimited extent management local segment space management auto;    修改大小,注:大檔案的表空間只有一個數據檔案,不需要指定資料檔名,並可用alter tablespace    alter tablespace dmarts resize 1g; 二、移動資料檔案     1、使用ALTER DATABASE移動資料檔案         a.作為SYSDBA連線至資料庫,並且關閉例項  b.使用作業系統命令移動資料檔案 c.以MOUNT模式開啟資料庫 d.使用alter database改變對資料庫中資料檔案的引用 e.以OPEN模式開啟資料庫 f.對包括控制檔案的資料庫執行增量備份或完整備份         例:將表空間XPORT的資料檔案從檔案系統/u04移動至檔案系統/u06:         sqlplus / as sysdba         SQL>select d.name,t.name             from v$datafile d join v$tablespace t using(ts#)             where t.name='XPORT';             查詢後顯示的資料檔名為:/u04/oradata/xport.dbf         a.關閉例項  SQL>shutdown immediate;         b.移動資料檔案,以“!”轉義字元。           SQL>! mv /u04/oradata/xport.dbf /u06/oradata         c.以MOUNT模式啟動資料庫,從而在不需要開啟資料檔案的情況下就可以使用控制檔案:           SQL>startup mount d.改變控制檔案中的路徑名引用,以將其指向資料檔案的新位置:           SQL>alter database rename file '/u04/oradata/xport.dbf' to 'u06/oradata/xport.dbf';         e.alter database open;         f. 建立更新過的控制檔案的備份副本:           SQL>alter database backup controlfile to trace;      2、使用ALTER TABLESPACE移動資料檔案         如果希望移動的資料檔案是某個表空間的一部分,而該表空間不是SYSTEM、SYSAUX、活動的撤銷表空間或臨時表空間,則推薦使用ALTER TABLESPACE的方法。         原因:除了其資料檔案將被移動的表空間外,所有使用者在整個操作期間都可以使用資料庫的剩餘部分,比較少的中斷時間。         a.使用alter tablespace許可權的賬戶,對錶空間進行離線處理:            SQL>alter tablespace xport offline;            b.移動資料檔案            SQL>! mv /u04/oradata/xport.dbf /u06/oradata         c.使用alter tablespace改變對資料庫中資料檔案的引用           SQL>alter database rename file '/u04/oradata/xport.dbf' to 'u06/oradata/xport.dbf';         d.將表空間返回到聯機狀態           SQL>alter tablespace xport online; 三、移動聯機重做日誌檔案     1、檢視重做日誌檔案 SQL>select group#,member from v$logfile order by group#,member;         顯示結果為:         1/u01/app/oracle/oradata/redo01.log         1/u05/oradata/redo01.log         2/u01/app/oracle/oradata/redo02.log         2/u05/oradata/redo02.log         3/u01/app/oracle/oradata/redo03.log         3/u05/oradata/redo03.log 注:有三個日誌檔案是在/u01/app/oracle/oradata中,此目錄為oracle安裝目錄,需要移至別的目錄,以消除寫入日誌檔案與訪問Oracle元件之間的爭用問題。         SQL>shutdown immediate;         SQL>! mv /u01/app/oracle/oradata/redo0[1-3].log /u04/oradata         SQL>startup mount         SQL>alter database rename file '/u01/app/oracle/oradata/redo01.log' to '/u04/oradata/redo01.log';         SQL>alter database rename file '/u01/app/oracle/oradata/redo02.log' to '/u04/oradata/redo02.log';         SQL>alter database rename file '/u01/app/oracle/oradata/redo03.log' to '/u04/oradata/redo03.log';         SQL>alter database open;         SQL>select group#,member from v$logfile order by group#,member;         顯示結果為:         1/u04/oradata/redo01.log         1/u05/oradata/redo01.log         2/u04/oradata/redo02.log         2/u05/oradata/redo02.log         3/u05/oradata/redo03.log         3/u05/oradata/redo03.log 注:重做日誌檔案不再和Oracle軟體競爭I/O,/u04與/u05之間多元複用了重做日誌檔案。 四、移動控制檔案     1、在使用初始引數檔案時,移動控制檔案類似於:移動資料檔案或重做日誌檔案。        過程:關閉例項、使用作業系統命令移動檔案、重新啟動例項        在使用伺服器引數檔案(SPFILE)時,該過程稍有不同。需要改變初始檔案引數CONTROL_FILES         SQL>select name,value from v$spparameter where name='control_files';             顯示結果為:             control_files/u01/app/oracle/oradata/control01.log             control_files/u01/app/oracle/oradata/control02.log             control_files/u01/app/oracle/oradata/control03.log         SQL>show parameter control_files         SQL>alter system set control_files='/u02/oradata/control01.log','/u02/oradata/control02.log','/u02/oradata/control03.log' scope=spfile;         SQL>shutdown immediate         SQL>! mv /u01/app/oracle/oradata/control01.log /u02/oradata         SQL>! mv /u01/app/oracle/oradata/control02.log /u03/oradata         SQL>! mv /u01/app/oracle/oradata/control03.log /u04/oradata         SQL>startup         至此已將3個控制檔案移動至單獨的檔案系統,不再位於具有Oracle軟體的捲上,如果包含一個控制檔案的卷失敗,那麼其他兩個捲包含更新的控制檔案。