您的位置:首页 > 数据库 > Oracle

Oracle重做日志配置实例

2016-01-08 09:58 363 查看
作者:雨竹清风如果一个公司的数据库中的重做日志配置存在严重的缺陷,就可能对数据库造成很严重的损失。下面是一个重做日志配置实例,由于在自己电脑上的演练,所以假定了有3个磁盘,分别是:C:\ORACLEADDLOGFILE\DISK1,C:\ORACLEADDLOGFILE\DISK2,C:\ORACLEADDLOGFILE\DISK3。1.首先用system或者sys以sysdba的身份登录数据库。2.查看现有数据库的配置情况。SQL> desc v$log 名称 是否为空? 类型 ----------------------------------------- -------- ---- GROUP# NUMBER THREAD# NUMBER SEQUENCE# NUMBER BYTES NUMBER MEMBERS NUMBER ARCHIVED VARCHAR2(3) STATUS VARCHAR2(16) FIRST_CHANGE# NUMBER FIRST_TIME DATE SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- --------- 1 44 52428800 1 NO INACTIVE 2 45 52428800 1 NO CURRENT 3 43 52428800 1 NO INACTIVE 从上面的结果看共有3组重做日志,每组仅有一个成员。进一步查看其存放的位置等信息。SQL> desc v$logfile; 名称 是否为空? 类型 ----------------------------------------- -------- ---------- GROUP# NUMBER STATUS VARCHAR2(7) TYPE VARCHAR2(7) MEMBER VARCHAR2(513) IS_RECOVERY_DEST_FILE VARCHAR2(3) SQL> col member for a50;SQL> select GROUP#, STATUS,TYPE, MEMBER from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ------------------------------------------------ 3 STALE ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG 2 ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG 1 STALE ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG 从上面的结果可以看出所有的重做日志文件都存放在一个磁盘下。3.添加新的2组重做日志,第4,5组。SQL> alter database add logfile('C:\oracleAddLogfile\disk1\ORCL\ONLINELOG\REDO04A.LOG','C:\oracleAddLogfile\disk2\ORCL\ONLINELOG\REDO04B.LOG','C:\oracleAddLogfile\disk3\ORCL\ONLINELOG\REDO04C.LOG') SIZE 15M; 数据库已更改。 SQL> alter database add logfile('C:\oracleAddLogfile\disk1\ORCL\ONLINELOG\REDO05A.LOG','C:\oracleAddLogfile\disk2\ORCL\ONLINELOG\REDO05B.LOG','C:\oracleAddLogfile\disk3\ORCL\ONLINELOG\REDO05C.LOG') SIZE 15M; 数据库已更改。4.查看是否已经添加成功。SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 1 44 52428800 1 NO INACTIVE 2 45 52428800 1 NO CURRENT 3 43 52428800 1 NO INACTIVE 4 0 15728640 3 YES UNUSED 5 0 15728640 3 YES UNUSED 进一步查看文件是否存放到指定的磁盘下。SQL> col member for a50;SQL> select GROUP#, STATUS,TYPE, MEMBER from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ------------------------------------------------ 3 STALE ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG 2 ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG 1 STALE ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG 4 ONLINE C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO04A.LOG 4 ONLINE C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO04B.LOG 4 ONLINE C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO04C.LOG 5 ONLINE C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO05A.LOG 5 ONLINE C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO05B.LOG 5 ONLINE C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO05C.LOG已选择9行。从上面的结果可以看到组4,5已经在指定的磁盘下了。 5.从上面的结果可以看出当前的组为组2。为此先删除组3和1。SQL> alter database drop logfile group 3; 数据库已更改。查看是否已经删除。SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 1 44 52428800 1 NO INACTIVE 2 45 52428800 1 NO CURRENT 4 0 15728640 3 YES UNUSED 5 0 15728640 3 YES UNUSED 6.紧接着为数据库添加组3,并添加3个成员在不同的磁盘下。实例如下:SQL> alter database add logfile group 3 2 ('C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO03A.LOG', 3 'C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO03B.LOG', 4 'C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO03C.LOG') SIZE 15M; 数据库已更改。查看是否已经成功添加。SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 1 44 52428800 1 NO INACTIVE 2 45 52428800 1 NO CURRENT 3 0 15728640 3 YES UNUSED 4 0 15728640 3 YES UNUSED 5 0 15728640 3 YES UNUSED 7.删除组1,并查看是否成功。SQL> alter database drop logfile group 1; 数据库已更改。 SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 2 45 52428800 1 NO CURRENT 3 0 15728640 3 YES UNUSED 4 0 15728640 3 YES UNUSED 5 0 15728640 3 YES UNUSED SQL> alter database add logfile group 1 2 ('C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO01A.LOG', 3 'C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO01B.LOG', 4 'C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO01C.LOG') SIZE 15M; 数据库已更改。 SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 1 0 15728640 3 YES UNUSED 2 45 52428800 1 NO CURRENT 3 0 15728640 3 YES UNUSED 4 0 15728640 3 YES UNUSED 5 0 15728640 3 YES UNUSED 8.因为当前组为组2,所以不能直接删除,要进行切换。而且状态处于inactive。使用alter system switch logfile;可以进行几次切换。但有时候切换到inactive状态需要很长时间,因此可以先关闭数据库再打开,就可以很轻松的切换到inactive状态下。本例是先进行了几次切换,切换到了active下,再关闭数据库的。SQL> alter system switch logfile; 系统已更改。 SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 1 46 15728640 3 NO CURRENT 2 45 52428800 1 NO ACTIVE 3 0 15728640 3 YES UNUSED 4 0 15728640 3 YES UNUSED 5 0 15728640 3 YES UNUSED SQL> shutdown immediate;数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup;ORACLE 例程已经启动。 Total System Global Area 167772160 bytes Fixed Size 1247900 bytes Variable Size 75498852 bytes Database Buffers 88080384 bytes Redo Buffers 2945024 bytes 数据库装载完毕。数据库已经打开。SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 1 51 15728640 3 NO INACTIVE 2 50 52428800 1 NO INACTIVE 3 52 15728640 3 NO CURRENT 4 48 15728640 3 NO INACTIVE 5 49 15728640 3 NO INACTIVE 9.删除组2,并查看是否成功。并添加新的组2。SQL> alter database drop logfile group 2; 数据库已更改。 SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 1 51 15728640 3 NO INACTIVE 3 52 15728640 3 NO CURRENT 4 48 15728640 3 NO INACTIVE 5 49 15728640 3 NO INACTIVE SQL> alter database add logfile group 2 2 ('C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO02A.LOG', 3 'C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO02B.LOG', 4 'C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO02C.LOG') SIZE 15M; 数据库已更改。 SQL> select GROUP#, SEQUENCE#, BYTES, MEMBERS, ARCHIVED,STATUS from v$log; GROUP# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- --- ---------------- 1 51 15728640 3 NO INACTIVE 2 0 15728640 3 YES UNUSED 3 52 15728640 3 NO CURRENT 4 48 15728640 3 NO INACTIVE 5 49 15728640 3 NO INACTIVE SQL> col member for a53;SQL> select GROUP#, STATUS,TYPE,MEMBER from v$logfile order by group#,member; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ------------------------------------------------ 1 ONLINE C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO01A.LOG 1 ONLINE C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO01B.LOG 1 ONLINE C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO01C.LOG 2 ONLINE C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO02A.LOG 2 ONLINE C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO02B.LOG 2 ONLINE C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO02C.LOG 3 ONLINE C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO03A.LOG 3 ONLINE C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO03B.LOG 3 ONLINE C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO03C.LOG 4 ONLINE C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO04A.LOG 4 ONLINE C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO04B.LOG 4 ONLINE C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO04C.LOG 5 ONLINE C:\ORACLEADDLOGFILE\DISK1\ORCL\ONLINELOG\REDO05A.LOG 5 ONLINE C:\ORACLEADDLOGFILE\DISK2\ORCL\ONLINELOG\REDO05B.LOG 5 ONLINE C:\ORACLEADDLOGFILE\DISK3\ORCL\ONLINELOG\REDO05C.LOG 已选择15行。已经很清晰的看到所有的日志文件已经到了指定的磁盘下了。但是别忘记删除系统文件,以免留下垃圾。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: