问题1:修改日志文件(redo log)的位置的方法
目的:將重做日志(redo log)文件從當前磁盤位置遷移到新的位置
解決方法:
A:可以停掉數據庫的情況
1.關閉數據庫
SQL>shutdown immediate
Databaseclosed.
Databasedismounted.
ORACLEinstance shut down.
2.將重做日志文件拷貝到新的位置上
[oracle@radiusradius]$ mv redo0*.log /ora/newlocation/
[oracle@radiusoradata]$ cd /ora/newlocation/
[oracle@radiusnewlocation]$ ls
redo01.log? redo02.log?redo03.log? redo04.log? redo05.log
3.啟動數據庫到mount狀態,切記不要打開數據庫。
[oracle@radiusnewlocation]$ sqlplus / as sysdba
SQL*Plus:Release 10.2.0.4.0 - Production on Thu Jul 10 14:34:15 2014
Copyright(c) 1982, 2007, Oracle.? All RightsReserved.
Connectedto an idle instance.
SQL>startup mount
ORACLEinstance started.
TotalSystem Global Area? 599785472 bytes
FixedSize????????????????? 2085776 bytes
VariableSize???????????? 205524080 bytes
DatabaseBuffers????????? 385875968 bytes
RedoBuffers??????????????? 6299648 bytes
Databasemounted.
4.重新命名日志成員
SQL>alterdatabase rename?file
'/ora/oradata/radius/redo03.log','/ora/oradata/radius/redo02.log','/ora/oradata/radius/redo01.log','/ora/oradata/radius/redo04.log','/ora/oradata/radius/redo05.log'
to?
'/ora/newlocation/redo03.log','/ora/newlocation/redo02.log','/ora/newlocation/redo01.log','/ora/newlocation/redo04.log','/ora/newlocation/redo05.log';
Databasealtered.
5.打開數據庫
SQL>alter database open;
Databasealtered.
6.查看日志文件成員的位置信息
SQL>select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/ora/newlocation/redo03.log
/ora/newlocation/redo02.log
/ora/newlocation/redo01.log
/ora/newlocation/redo04.log
/ora/newlocation/redo05.log
/home/oracle/flash_recovery_area/RADIUS/onlinelog/o1_mf_5_9vw9blxk_.log
/home/oracle/flash_recovery_area/RADIUS/onlinelog/o1_mf_6_9vw9bt19_.log
7rows selected.
?B. ?如果數據庫不能停機,就不能夠直接修改重做日志文件的名字,因此需要首先增加日志組,然后刪除不需要的日志組,最終達到修改重做日志文件位置的目的。
1. 需要修改幾組日志文件,就新增加幾個日志組
SQL>alter database add logfile group 7 '/ora/oradata/radius/redo07.log' size 50M;
Databasealtered.
SQL>alter database add logfile group 8 '/ora/oradata/radius/redo08.log' size 50M;
Databasealtered.
2. 刪除不在需要的日志組,但是必須要有alter database的系統權限
在刪除一個在線日志組之前,應該注意以下的限制條件:
2.1 ?每個實例至少要有2個日志組,不需要考慮日志組中的日志成員的數量(一個日志組中有1個或1個以上的日志成員)
2.2? 只有在日志成員組的狀態是INACTIVE的狀態下,才可以對其進行刪除,如果需要刪除當前正在使用的日志組,首先需要進行一次日志切換,使其變成非當前日志組,如果數據庫已經開啟了歸檔模式,那么在刪除日志組之前確保日志組已經完全歸檔完成了,然后在對其進行刪除。
查看日志組的狀態:
日志組:1 2 3 的狀態是INACTIVE,可以對其進行刪除操作。
對1 2執行刪除操作,刪除這兩個日志組:
SQL>alter database drop logfile group 1;
Databasealtered.
SQL>alter database drop logfile group 2;
Databasealtered.
3. ?查看日志成員信息
SQL>select group#,archived,status from v$log;
?GROUP# ARC STATUS
------------- ----------------
???????? 3 YES INACTIVE
???????? 4 NO?CURRENT
???????? 5 YES UNUSED
???????? 6 YES UNUSED
???????? 7 YES UNUSED
???????? 8 YES UNUSED
SQL>select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/ora/newlocation/redo03.log
/ora/newlocation/redo04.log
/home/oracle/flash_recovery_area/RADIUS/onlinelog/o1_mf_5_9vw9blxk_.log
/home/oracle/flash_recovery_area/RADIUS/onlinelog/o1_mf_6_9vw9bt19_.log
/ora/oradata/radius/redo07.log
/ora/oradata/radius/redo08.log
4. 通過以上的步驟確認,在線日志組已經成功刪除之后,通過操作系統命令,將刪除的日志組的系統文件進行刪除。
[oracle@radiusnewlocation]$ pwd
/ora/newlocation
[oracle@radiusnewlocation]$ ls
redo01.log? redo02.log?redo03.log? redo04.log? redo05.log
[oracle@radiusnewlocation]$ rm -f redo01.logredo02.log redo03.log
[oracle@radiusnewlocation]$ ls
redo04.log? redo05.log
[oracle@radiusnewlocation]$
--END--
?
總結
以上是生活随笔為你收集整理的问题1:修改日志文件(redo log)的位置的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几行代码轻松实现百度定位和在地图显示指定
- 下一篇: iOS开发——MRC(手动内存管理)