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

Oracle OMF管理 数据文件,redo文件

2009-07-06 16:16 417 查看

ORACLE OMF 管理文件

测试环境:Solaris10+Oracle 10g (个人学习笔记)

OMF管理文件 和 手动管理文件比较
手动管理文件 需要手动指定文件存储位置,包括名字,路径,而ORACLE-MANAGE-FILE 这一切就交给数据库系统来完成,OMF管理包括控制还包括了OS文件:如果你手动管理 当删除一个数据文件 的时候只是讲控制文件里面的信息更改了,但是真正的OS文件仍然存在

OMF管理 数据文件
使用OMF 管理 数据文件需要指定 一个参数 :db_create_file_dest
默认的是100M,采用的是autoextend 自动扩展

SQL> show parameter db_create

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
db_create_online_log_dest_1 string /thirddisk/root/redolog
db_create_online_log_dest_2 string /fourthdisk/root/redolog
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string

我现在使用的是三面的几个参数 第一个 就是设置数据文件的自动存放位置
SQL> alter system set db_create_file_dest='/export/home/oracle/test' ;
alter system set db_create_file_dest='/export/home/oracle/test'
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-01261: Parameter db_create_file_dest destination string cannot be
translated
ORA-01262: Stat failed on a file destination directory
Intel SVR4 UNIX Error: 2: No such file or directory

SQL> alter system set db_create_file_dest='/export/home/oracle';

System altered.

SQL> show parameter db_create_file_dest;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /export/home/oracle

上面可以看到 设置目录 要保存目录存在,继续 我们还是先
1>手动添加一个数据文件

SQL> l
1* create tablespace t1 logging datafile '/export/home/oracle/t1.dbf' size 50M
SQL> /

Tablespace created.

SQL> !ls
afiedt.buf local.cshrc local.login local.profile t1.dbf

SQL> drop tablespace t1 including contents;

Tablespace dropped.

SQL> ls
SP2-0042: unknown command "ls" - rest of line ignored.
SQL> !ls
afiedt.buf local.cshrc local.login local.profile t1.dbf

看看 当删除表空间的饿时候 t1.dbf仍然存在 没有节省空间,不过 ORACLE 10G也提供了 一个兼容的方式

SQL> !rm -r t1.dbf

SQL> !ls
afiedt.buf local.cshrc local.login local.profile

SQL> create tablespace t1 logging datafile '/export/home/oracle/t1.dbf' size 50M;

Tablespace created.

SQL> !ls
afiedt.buf local.cshrc local.login local.profile t1.dbf

SQL> drop tablespace t1 including contents and datafiles;

Tablespace dropped.

SQL> !ls
afiedt.buf local.cshrc local.login local.profile

这样 就删除了
2>OMF创建数据文件

SQL> create tablespace t1;

Tablespace created.

SQL> !ls ORCL/datafile
o1_mf_t1_54yn91dp_.dbf

看到效果了吧! 我没有指定文件的存储位置 自动给我存储在了 上面设置的/export/home/oracle目录下 它自己简历了一个 SID/datafile目录
下面看看删除效果

SQL> drop tablespace t1;

Tablespace dropped.

SQL> !ls ORCL/datafile

奇怪吧 没有文件了 Oracle RDMS 给我们自动讲OS文件删除了 OK

OMF管理 REDO日志文件

我没经验不过觉得这个比管理数据文件更重要(在系统安全方面),而OMF 管理数据文件 注重节约空间,首先 将将REDO文件 REDO文件 在数据恢复的时候起着非常大的作用,所以对于REDO 文件 我们需要格外注意(虽然有归档文件)但是 不排除该文件没有被归档 就给物理破坏了,如果 你的日志文件都在一个磁盘上如果磁盘坏掉那么系统不就DOWN掉了
redo文件是按照组来管理的 一个数据库 至少有两个组,一个组至少有一个成员
当在一个组日志写满了就自动切换到另外一个组进行循环的写日志,但是 当一个组的一个日志文件被破坏了 但是还有其他日志成员 此时数据库仍然能够正常工作这个也体现了 日志文件的 备份存放 在不痛物理介质的重要性了
创建数据库的时候 默认是建立三个组 每个组一个成员 此时 你可以手动 进行添加日志成员,将日志成员添加到 不同的物理介质上

SQL> select * from v$logfile;
rows will be truncated

GROUP# STATUS TYPE MEMBER
---------- ------- ------- ------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
3 ONLINE /seconddisk/root/oracle/product/10.2.0/oradata/orcl/redo03.log
2 STALE ONLINE /seconddisk/root/oracle/product/10.2.0/oradata/orcl/redo02.log
1 STALE ONLINE /seconddisk/root/oracle/product/10.2.0/oradata/orcl/redo01.log
4 ONLINE /thirddisk/root/redolog/ORCL/onlinelog/o1_mf_4_54yln8n2_.log
4 ONLINE /fourthdisk/root/redolog/ORCL/onlinelog/o1_mf_4_54ylnfqx_.log
1 INVALID ONLINE /thirddisk/root/redolog/ORCL/onlinelog/redo01a.log
2 INVALID ONLINE /fourthdisk/root/redolog/ORCL/onlinelog/redo02a.log

7 rows selected.

SQL> alter database add logfile member '/fourthdisk/root/redolog/ORCL/onlinelog/redo03a.log' to group 3;

Database altered.

SQL> select * from v$logfile;
rows will be truncated

GROUP# STATUS TYPE MEMBER
---------- ------- ------- ------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
3 ONLINE /seconddisk/root/oracle/product/10.2.0/oradata/orcl/redo03.log
2 STALE ONLINE /seconddisk/root/oracle/product/10.2.0/oradata/orcl/redo02.log
1 STALE ONLINE /seconddisk/root/oracle/product/10.2.0/oradata/orcl/redo01.log
4 ONLINE /thirddisk/root/redolog/ORCL/onlinelog/o1_mf_4_54yln8n2_.log
4 ONLINE /fourthdisk/root/redolog/ORCL/onlinelog/o1_mf_4_54ylnfqx_.log
1 INVALID ONLINE /thirddisk/root/redolog/ORCL/onlinelog/redo01a.log
2 INVALID ONLINE /fourthdisk/root/redolog/ORCL/onlinelog/redo02a.log
3 INVALID ONLINE /fourthdisk/root/redolog/ORCL/onlinelog/redo03a.log

8 rows selected.

上面就是 在3组添加了一个日志文件 redo03a.log 到 第四块硬盘上
达到了上面的要求 multiplex
下面使用OMF来创建日志组 就很方便了

SQL> show parameter db_create_online_log_dest

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_online_log_dest_1 string /thirddisk/root/redolog
db_create_online_log_dest_2 string /fourthdisk/root/redolog
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string

我设置了两个地方 当创建的时候 就在这两个地方分别创建一个日志组成员

SQL> alter database add logfile group 5;

Database altered.

看一下物理文件

SQL> !ls /fourthdisk/root/redolog/ORCL/onlinelog
o1_mf_4_54ylnfqx_.log o1_mf_5_54yo3bvx_.log redo02a.log redo03a.log

SQL> !ls /thirddisk/root/redolog/ORCL/onlinelog/
o1_mf_4_54yln8n2_.log o1_mf_5_54yo36xd_.log redo01a.log

分别多了一个文件 01_mf_5...log文件
下面尝试删除日志组

SQL> alter database drop logfile group 5;

Database altered.

SQL> !ls /fourthdisk/root/redolog/ORCL/onlinelog
o1_mf_4_54ylnfqx_.log redo02a.log redo03a.log

SQL> !ls /thirddisk/root/redolog/ORCL/onlinelog/
o1_mf_4_54yln8n2_.log redo01a.log

OK 自动那个将OS文件删除了

下面说说什么时候 不能删除日志文件 或者 文件组
第一: 当当前日志在使用
第二:运行在归档模式下 没有归档 的 (可以通过archive log current进行归档)
第三:该日日志组只有一个成员
第四:当只有两个日志组 不能删除日志组

OMF 管理文件 给数据库管理员带来了极大的方面 ,他对数据库的主要文件 进行集中管理

附加:
创建表空间: 注意: 如果使用了local管理方式 就不能指定默认的storage存储参数

SQL> create tablespace t1 extent management local autoallocate
2 default storage(initial 100K
3 next 100K
4 pctincrease 50
5 minextents 1
6 maxextents 500
7 )
8 /
create tablespace t1 extent management local autoallocate
*
ERROR at line 1:
ORA-25143: default storage clause is not compatible with allocation policy

报告了错误,使用autoallocate改成 uniform size 大小 指定福鼎分区大小 一样的效果
只有 采用字典管理才可以 指定存储参数

SQL> create tablespace t1
2 extent management dictionary
3 default storage(
4 initial 100K
5 next 100K
6 pctincrease 50minextents 1
7 maxextents 500
8 )
9 /

Tablespace created.
OK了 但是 不能指定大小,不能指定autoextend on next..这个是OMF是默认的设置本文出自 “谦受益” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: