SQL语句之alter database和alter tablespace语句

引言:此文只是说明alter database(或是tablespace)各种具体子句共有的特点,不描述具体子句的用法。

 

一、以alter database和alter tablespace语句两者都有的删除文件子句为例子来说明

1、alter database和alter tablespace语句各自能操作哪些类型的文件

在表空间级别上,没有对重做日志文件的操作,因为表空间这个逻辑对象对应的物理文件只包括数据文件和临时数据文件。

例如,alter tablespace  add datafile_tempfile_clauses ,即添加的文件包括数据文件和临时数据文件,但是没有重做日志文件。

在数据库级别上,则是可以对重做日志文件的操作,因为数据库这个逻辑对象对应的物理文件包括数据文件和临时数据文件,重做日志文件,控制文件。

在数据库级别上,对控制文件进行操作时,可能会对参数文件进行相关修改,即在参数文件中修改控制文件的路径。

在数据库级别上,不能对参数文件进行操作,因为一方面是参数文件不属于数据库的文件范围(见,何明),二是依据下图可知参数文件已经是最顶端的文件了,若是通过在数据库级别的语句进行修改参数文件的路径,则不知道将该路径放到哪里。(参数文件的路径自然是要放到某一个配置文件上的,oracle实例通过该配置文件找到参数文件的。只是还不知道如何修改读取参数文件的默认路径。还有,设计一个软件系统时,配置文件间若存在下图的位置关系的话,那么最顶层的配置文件的路径肯定要放在该软件里的某一个变量上的,若该变量是常量变量的话,则相当于存放最顶层的配置文件的路径已经在软件里写死了,若不是常量变量的话,则相当于存放最顶层的配置文件的路径还是可以在软件里修改的。)

https://img-my.csdn.net/uploads/201401/15/1389787059_3980.png

例如,alter database语句,具体如下:


database_file_clauses:=

注释:

1、database_file_clauses中的database_file专门指的是数据库中的数据文件(datafile)和临时文件(tempfile)这两类型文件。


2、

alter database语句没有create_tempfile_clause?什么语句可以实现create_tempfile_clause


create_datafile_clause貌似不是本义上的意思(即不相当于add_datafile_clause,一个新的数据文件要被创建的话要通过alter tablespace语句的add_datafile_clause从句而产生,而一个新的临时文件要被创建的话要通过alter (temp) tablespace语句的add_tempfile_clause从句而产生,之所以新的数据文件和临时文件创建要以alter tablespace语句形式来add是因为只有这两种文件类型有表空间这个概念,即文件的上一层就是表空间,而控制文件和日志文件则没有表空间这个概念在其上一层,所以这两类文件要以alter database语句来add),


还有alter database语句没有drop_datafile_clause?【只有altertablespace语句有drop_datafile_clause,类似alter database  datapfile ‘D:\app\hao\oradata\orcl\user01.dbf’ offline for  drop这样的语句中offline是该语句的中心意思(即数据文件要脱机),for  drop是修饰offline的(即数据文件要以怎样形式脱机),临时文件也类似?

logfile_clauses:=


controlfile_clauses:=



2、alter database或是alter tablespace语句上文件类型关键字的作用
         在数据库级别上,对一个文件进行操作时,在alter database语句上要写上表示该文件是哪一种类型文件的关键字,如关键字tempfile(临时数据文件)、datafie(数据文件)、logfile(重做日志文件)、controlfile(控制文件)等。
        例如,数据库级别的删除语句
        alter database  tempfile ‘D:\app\hao\oradata\orcl\tmp01.dbf’ drop;    
    和
alter database  datapfile ‘D:\app\hao\oradata\orcl\user01.dbf’ offline for  drop;      //for关键字可以省略      不算删除语句,而是脱机语句?
还有alter database drop  logfile  member ‘D:\app\hao\oradata\orcl\redo01.log’ ;

        在表空间级别上
对一个文件进行操作时,也是要在alter tablespace语句上要写上表示该文件是哪一种类型文件的关键字。
       
例如,表空间级别的删除语句
        alter tablespace drop  tempfile ‘D:\app\hao\oradata\orcl\tmp01.dbf’ ;
    和
alter  tablespace drop datapfile ‘D:\app\hao\oradata\orcl\user01.dbf’ ;
   





注释:

1、对datafile类型的文件进行删除操作时,无论以alter database或是alter tablespace语句执行,V$datafile里的相关数据行依然存在。参考:解决办法:异地冷恢复时 如果发现v$datafile里的有些用户用的数据文件没有备份


2、我们看看oracle官方文档里,对alter database语句的FOR DROP选项的解释:

FOR DROP

 If the database is in NOARCHIVELOG mode,

then you must specifyFOR DROP clause totake a data fileoffline(即FOR DROP修饰offline,FOR DROP的出现就是为了达到offline的目的的). However, this clause does not remove the data file from the database. To do that, you must use an operating system command or drop the tablespace in which the data file resides.Until you do so, the data file remains in the data dictionary with the statusRECOVER orOFFLINE.

【对datafile类型的文件进行删除操作时,无论以alter database或是alter tablespace语句执行,V$datafile里的相关数据行依然存在。出于什么考虑,为什么字典里还有当datafile类型的文件删除时?】

If the database is in ARCHIVELOG mode,

then Oracle Database ignore

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值