`
哇哈哈852
  • 浏览: 87791 次
文章分类
社区版块
存档分类
最新评论

错误文件名称下的Oracle选择

阅读更多


创建表空间、文件过程中,目录是否存在和空间是否满足是我们需要关注的问题。保持系统数据存储策略一致性,避免出现大的返工动作是这个过程中必须考虑的问题。

很多时候,不谨慎的操作行为会带来很大影响和问题。比如武断信任系统部署文档,没有切实的去做分析工作,都会给我们的系统带来很多问题。但是,出现问题的一个积极作用是可以帮助我们了解更多的知识,理解系统特性和功能。

本篇介绍一个由于错误文件创建而发现的Oracle特性。

1、问题简述

在巡检过程中,数据库日志中出现如下记录:

Tue May 13 18:08:58 2014

create tablespace mssite

datafile 'D:\APP\XXX\ORADATA\ORCL\msite.DBF'

size 10240m

autoextend on next 10m maxsize 20480m

Tue May 13 18:09:56 2014

Completed: create tablespace mssite

datafile 'D:\APP\XXX\ORADATA\ORCL\mssite.DBF'

size 10240m

autoextend on next 10m maxsize 20480m

当前系统是10gR2,版本号为10.2.0.1。系统OMF特性启动。

SQL> select * from v$version;

BANNER

---------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi

PL/SQL Release 10.2.0.1.0 - Production

CORE 10.2.0.1.0 Production

TNS for Linux: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 – Production

SQL> show parameter db_create

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_create_file_dest                  string      /u01/app/oracle/oradata

db_create_online_log_dest_1          string

在Linux系统中,是怎么建立的“C:\xx”目录?重要的是,Oracle也正常执行语句,没有进行报错。此时,新文件名称如下:

SQL> select file_name, tablespace_name from dba_data_files;

FILE_NAME                                                                        TABLESPACE_NAME

-------------------------------------------------------------------------------- ------------------------------

(篇幅原因,有省略……)

/u01/app/oracle/oradata/DB/datafile/o1_mf_testtbl_9q1h2gq1_.dbf          TESTTBL

/u01/app/oracle/product/10.2.0/db_1/dbs/D:APPXXXORADATAORCLmssite.DBF          MSSITE

6 rows selected

从dba_data_files视图中,我们看到其他数据文件都是遵守Oracle OMF特性,在db_file_create_dest目录下进行文件创建。指定的错误路径文件,被放置在$ORACLE_HOME/dbs目录中,以路径压缩(去除\字符)的方式进行命名。

那么,这个是否是Oracle的特性呢?我们通过实验来进行证明。

2、测试实验

我们选择在11gR2上进行实验,两者在OMF方面差异不大。

SQL> show parameter db_create;

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_create_file_dest                  string      /u01/app/oradata

db_create_online_log_dest_1          string

db_create_online_log_dest_2          string

创建错误目录文件表空间。

SQL> create tablespace test datafile 'd:\test.dbf' size 10m;

Tablespace created

SQL> select file_name, tablespace_name from dba_data_files;

FILE_NAME                                                                        TABLESPACE_NAME

-------------------------------------------------------------------------------- ------------------------------

(篇幅原因,有省略……)

/u01/app/oracle/dbs/d:test.dbf                                                  TEST

/u01/app/oradata/ORA11G/datafile/o1_mf_system_9ppkjccb_.dbf                      SYSTEM

/u01/app/oradata/ORA11G/datafile/o1_mf_users_9pplqldd_.dbf                      USERS

7 rows selected

相同的现象出现,数据文件创建在$ORACLE_HOME/dbs,文件名被设置为错误目录结构压缩版。相同文件是否可以创建?

SQL> create tablespace test1 datafile 'd:\test.dbf' size 10m;

create tablespace test1 datafile 'd:\test.dbf' size 10m

ORA-01537: 无法添加文件 'd:\test.dbf' - 该文件已是数据库的一部分

SQL> create tablespace test1 datafile 'd:\test1.dbf' size 10m;

Tablespace created

如果是OMF特性,要求在datafile中不写入文件名称信息。所以,当前现象并不是OMF的结果。而且$ORACLE_HOME/dbs是一个非常古老的重要文件夹,密码文件、参数文件都驻留于此,在备份过程中,这个目录也经常充当控制文件备份所在。

所以,这个现象应该是Oracle在非法文件名出现时候的一种应急反应。如果目录结构是非法的,Oracle会设法将其转化为符合单个文件标准的文件名,存放在$ORACLE_HOME/dbs里面。

我们删除这些文件的时候,OMF特性是不启动的。所以需要手工删除或者加入including子句。

SQL> drop tablespace test;

Tablespace dropped

SQL> drop tablespace test1 including contents and datafiles;

Tablespace dropped

[root@SimpleLinux dbs]# ls -l

total 19788

-rw-r-----. 1 oracle oinstall 10493952 May 14 11:15 d:test.dbf

-rw-rw----. 1 oracle oinstall    1544 May 14 08:45 hc_ora11g.dat

-rw-r--r--. 1 oracle oinstall    2851 May 15  2009 init.ora

-rw-r-----. 1 oracle oinstall      24 Apr  1 12:39 lkORA11G

-rw-r-----. 1 oracle oinstall    1536 Apr  3 09:07 orapwora11g

-rw-r-----. 1 oracle oinstall  9748480 May  9 10:46 snapcf_ora11g.f

-rw-r-----. 1 oracle oinstall    3584 May 14 11:14 spfileora11g.ora

3、结论

在这个过程中,我们发现了Oracle非OMF文件创建过程中的规律。如果文件名称非法,Oracle会将非法文件名(含目录)处理为合法文件名称,放在$ORACLE_HOME/dbs中。这个过程是不会报错的。

但是,从管理角度看,我们是不推荐这种做法的。首先这个目录是一个软件级别公用的目录,如果有多个实例数据库,这个文件夹是比较危险的。另外,这种方式也不符合Oracle OFA要求的管理策略。

归结到这个功能特性,笔者认为还是不要妄用为好。一个部署运维人员,确认文件目录这类基本的能力,还是必要的。
  • 大小: 26.6 KB
分享到:
评论

相关推荐

    shp2sdo-shp文件转oracle完整版本。

    ,我们可以把此文件拷贝到该目录下,然后在dos下运行该工具,定位到我们的shp文件的位置,例如我们的shp文件名称是state.shp(shapefile包括至少三个文件state.shp state.dbf state.idx)在D:\data\目录下,我们在...

    Jsp+Oracle 人事管理

    操作方法:导入数据库person\ person.dmp:在cmd中数据imp,输入刚才数据库的登录身份,person/person@dbhouse,在忽略创建错误选项时输入yes,导入成功; 2、 安装JDK1.4.0 (1) 安装软件: 操作方法:一路点击下...

    ORACLE9i_优化设计与系统调整

    §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §1.2.4 其它支持文件 26 §1.3 数据块、区间和段 28 §1.3.1 数据块(data block) 28 §1.3.2 区间(extent) 28 §1.3.3 ...

    教你怎样用Oracle方便地查看报警日志错误

    在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题。 一:备份并清除告警日志内容 将每天的告警日志备份好,然后进行清除。...–备份文件名称:今天16点24分前的告警日志信息 [orac

    Oracle数据库表定时备份表 表名动态拼接时间戳存储过程

    1、备份Oracle数据库表时添加动态时间戳,解决了ORA-00922: missing or invalid option 错误。 2、备份表结构和数据,还备份索引、序列、触发器等对象,提高了备份速度。但需要手动备份原始表的序列。 3、备份策略是...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    2.3.4配置udev固定iSCSI磁盘设备名称 2.3.5配置服务器的图形化环境 2.4 RAC运行环境安装前检查 2.4.1服务器检查 2.4.2存储检查 2.4.3网络检查 2.5配置数据库服务器 2.5.1安装软件包 2.5.2修改系统参数 ...

    深入解析Oracle.DBA入门进阶与诊断案例

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    最全的oracle常用命令大全.txt

    依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看ORACLE的其它文档资料了。 下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username...

    Oracle SQL Handler (Oracle客户端工具) V3.1

    本工具是用 Java 开发的、专门用于 Oracle 数据库操作的一种图形界面工具: 多线程、多连接、支持 PL/SQL、功能实用、操作简便,能运行于所有平台包括 Windows、Linux 及 Unix,勿需安装 Oracle 客户端,仅 2.8 MB ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     通过提示及配置文件等来控制执行计划;  在程序中优化查询而无需改动代码。  作为Oracle SQL经典著作之一,本书为SQL开发人员指明了前行的方向,赋予了他们不断开拓的动力。 作者简介  KAREN MORTON 研究...

    Oracle监听器维护管理v1.1

    Oracle监听器维护管理v1.1 1 一、监听器工作原理 3 二、监听器Lisener功能 4 1、 监听客户端请求 4 2、 为客户端请求分配Server Process 4 3、 注册实例服务 4 4、 错误转移failover 4 5、 负载均衡衡量 4 三、监听...

    ORACLE 常用手册导入导出

    FILE 指定导出的二进制文件名称,默认的扩展名是.dmp FULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数 OWNER 要导出的数据库用户列表 HELP 指定是否显示帮助消息和参数说明 ROWS 确定是否要导出表中...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,...

    ORACLE,mysql,sqlserver,sybase数据库装文本软件

    5.明确到每一行的错误信息.(装载时会生成一个.err文件,里面有装载出错的每一行错误原因(少字段还是格式不符合要求等等)。 6.可以作为库使用在jsp等后台直接调用,将整个jar作为库,使用 OraLoad类的int ProcLoad...

    非常全的oracle文档

    1. 查看当前的Oracle实例名称和主机名称: 27 2. 查看用户帐户及状态 27 十、 Oracle用户解锁 27 1. 对scott用户解锁 27 2. 更改scott用户的密码: 27 3. 锁定scott用户: 27 十一、 使用OEM 27 十二、 SQL/PLUS连接...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    8.7.1 与撤销相关的错误条件 294 8.7.2 用于撤销管理与保留保证的参数 294 8.7.3 调整与监视撤销表空间 295 8.7.4 创建和管理撤销表空间 297 8.8 本章知识点回顾 297 8.9 自测题 299 8.10 自测题答案 301 第...

    对于 Oracle 的 rownum 问题

    =),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid ...

    Oracle数据库实验操作

    实验54:更改表空间的名称,更改数据文件的名称 113 表空间 116 实验55:建立临时表空间 117 实验56:大文件表空间和表空间的管理模式 118 数据库的逻辑结构 120 实验57:建立表,描述表的存储属性 121 实验58:...

    Oracle开发工具 - Oracle SQL Handler(功能强大,超方便好用, 免装客户端, Windows / Linux)

    Oracle SQL Handler,是专为 Oracle 数据库开发人员及操作人员精心打造的一款 Oracle 客户端工具: 超智能的SQL编辑器;超方便的表格操作(可以通过修改表格的单元格数据去更新数据 库表);多种格式的数据导出包括...

Global site tag (gtag.js) - Google Analytics