oracle表空间操作

一、表空间之增删改(重点:如何修改数据文件为自动增长)
表空间分类:
系统表空间与非系统表空间
临时表空间与永久表空间
表空间管理:
区管理(默认为本地自动管理)(推荐“本地自动管理”)
          ——本地管理(local):支持 oracle 8i, oracle 9i,oracle 10g
                 <本地管理可细分为:自动分配(默认)和统一分配>
          ——数据字典管理(dictionary):支持 oracle 7,oracle 8,oracle 8i,oracle 9.0.1  
段管理
         自动(默认)(推荐)
         手动
创建表空间
create tablespace                      ——创建(永久)表空间
create temporary tablespace   ——创建临时表空间
create undo tablespace            ——创建撤消表空间
注意:在撤销表空间上不能建立永久方案对象(如表、索引等)
示例:
create tablespace myts01
datafile '路径/myts01_1.dbf' size 2m
( 文件的大小不可省,扩展名必须是dbf;临时表空间用 tempfile )
extent management local | dictionary      ——区管理《默认为本地,学生了解》
[uniform size 128k | autoallocate]             ——区的分配方式《默认为自动,学生了解》
segment space management auto           ——段管理《默认为手动,学生掌握》
删除表空间(除了系统表空间,任何表空间都可以被删除)
强烈建议:在删除表空间前,对数据库做一次完整备份,以便出错时恢复
drop tablespace myts01 including contents
——只从数据字典中删除表空间信息,而不删除硬盘上的文件
drop tablespace myts01 including contents and datafiles
——连同数据字典中的表空间信息和硬盘上的文件一起删除
修改表空间
1、修改表空间的名称(10G特有的)
      alter tablespace myts01 rename to myts01_new
2、修改表空间中数据文件的“位置和”名称
      步骤:表空间脱机----在OS中重命名数据文件----使用下面的RENAME语句,在“数据库内部”重命名数据文件               
       alter tablespace myts01
       rename  datafile
       '路径/myts01_1.dbf', '路径/myts01_2.dbf'       --------必须来自于同一个表空间
       to
       '路径/myts01_01.dbf', '路径/myts01_02.dbf';

       alter database
       rename file
       '路径/myts01_01.dbf', '路径/myts01_02.dbf'   --------可以来自于不同的表空间
       to
       '路径/myts01_1.dbf', '路径/myts01_2.dbf';
2、使表空间只读 | 可读写
     alter tablespace myts01 read only | read write
3、使表空间脱机 | 联机--------改变数据文件的可用性,处于脱机状态的数据文件不可用(不能读、也不能写)
     ----改变表空间的可用性(表空间+所有数据文件):
     alter tablespace myts01 offline [ normal ] | online
     ----改变表空间“所有数据文件”的可用性, 但是“表空间本身”的可用性不受影响《不讲》
         <** 此时必须处于“归档日志模式(archivelog)”下 **>
     alter tablespace myts01 datafile offline [ normal ] | online
     ----单独改变某个数据文件的可用性《不讲》
         <** 此时必须处于“归档日志模式(archivelog)”下 **>
     alter database datafile '路径/文件名'   offline [ normal ] | online;
     注意:脱机的方式有四种;
               不能使“系统表空间”中的数据文件脱机
4、扩展表空间<重要>--------增加新的, 改变旧的    
     4.1   添加数据文件
             alter tablespace myts01
             add   datafile '路径/myts01_2.dbf'  size 3m; <注意:size参数不可省>
             autoextend on  next 3m maxsize 50m;
             注:若myts01是临时表空间,则datafile应改为tempfile
             思考:能否alter database来增加数据文件?<提示:可在OEM中观察>
     ***  除了向表空间“添加新的数据文件”以外, 另一种“增加表空间的存储空间”的方法是:
     ***  改变该表空间已有数据文件的大小------- 1、设置数据文件为自动增长  2、手工改变数据文件的大小
     4.2   手工改变数据文件大小
             alter database datafile  '路径/myts01_2.dbf'  
             resize 4m;
             注意:也可利用RESIZE子句来缩小数据文件,不过必须保证缩小后的数据文件足够容纳其中已有的数据
     4.3   使数据文件自动增长<重要>
             ----创建表空间时将数据文件设置为自动增长 
                 <互动>
             ----增加新的数据文件时设置为自动增长
                 <互动>
             ----把已有数据文件设置为自动增长
             alter database datafile  '路径/myts01_2.dbf'  
             autoextend on  next 1m maxsize  20m;
             禁止数据文件自动增长
             alter database datafile  '路径/myts01_2.dbf'  
             autoextend off;
5、当有多个临时表空间时,默认临时表空间为TEMP 《不讲》
      修改数据库默认“临时”表空间(9.2版本 不能修改数据库“默认表空间”)
      alter database default  temporary  tablespace  mytmpts01;
6、查询表空间信息
6.1 使用dba_tablespaces视图查询表空间的基本信息
      select * from dba_tablespaces;
6.2 查询数据库的数据文件及其所属的表空间
      select tablespace_name,file_name,blocks  from  dba_data_files;
     
二、打开和关闭数据库的模式
回顾:
例   程-----内存中的部分
数据库-----硬盘中的部分
启动和关闭数据库都是按三大步骤进行的, 每完成一个步骤,就进入一个模式
启动数据库的三大步骤:
1、创建并启动例程    读取初始化参数文件
                                (内存结构和服务进程得到分配、初始化和启动)     
2、装载数据库          由参数文件(参数control_files)找到并读取控制文件
                               (读取:数据库名称、数据文件的位置和名称等关于数据库物理结构的信息
                                            此时,数据文件和日志文件将处于联机状态)  
3、打开数据库          打开所有处于联机状态的数据文件和日志文件
重要:
      在启动数据库的过程中,文件的使用顺序是:参数文件、控制文件、数据文件和日志文件
      只有这些文件都被正常读取和使用后,数据库才能正常启动    
                  
关闭数据库的三大步骤:
1、关闭数据库
2、卸载数据库
3、终止例程
启动模式
startup  nomount         完成启动步骤的第1步(启动) <适用:创建新库、重建控制文件>
startup  mount             完成启动步骤的第1步和第2步(启动、装载)
                                       <适用:重命名数据库文件、完全恢复、改变归档模式>
startup [open]  默认      完成启动步骤的第1步、第2步和第3步(启动、装载、打开)
startup pfile=路径/参数文件名
转换启动模式
startup  nomount         (注意:nomount模式不能直接切换到open模式)
alter database mount (切换) 
alter database open   (切换) 
启动的FORCE选项
------若正常方式不能启动,可以采用FORCE强制启动
------原理: 首先异常关闭数据库,然后重新启动
------优点: 无论数据库处于什么模式,都可以使用该选项;不需要事先用SHUTDOWN语句关闭数据库
启动的PFILE选项
startup  [force]      pfile='e:/pfile*.ora'
create pfile='...'     from spfile='...'
create spfile='...'   from pfile='...'
注意:服务器初始化参数文件(spfile*.ora)是二进制文件
         文本初始化参数文件(pfile*.ora或init.ora)是文本文件
         2者在格式上是不同的
重要:
例程在启动时,必须读取一个初始化参数文件         
执行startup时,如果没有指定pfile选项,
oracle会首先读取“默认位置的spfile”,如果没有找到,
oracle将继续读取“默认位置的pfile”,如果没有找到,
启动就会失败

关闭数据库
——为了执行脱机备份(即“冷备份”)或执行数据库升级,DBA需要关闭数据库
关闭数据库的三大步骤:
1、关闭数据库——将日志缓存中的内容写入日志文件,将数据缓存中的“脏数据”写入数据文件,
                            再关闭所有的数据文件和日志文件,但是控制文件依然打开
2、卸载数据库——控制文件被关闭,但例程依然存在
3、终止例程——终止所有的服务进程和后台进程,回收SGA
关闭选项
shutdown normal(默认)——特点:阻止新的连接,“等待”用户主动断开现有连接
       (因为被动等待,所以耗时可能很长,关闭所耗时间完全取决于用户主动断开连接的时间)
shutdown transactional——特点:阻止新的连接和新的事务,“等待”所有未提交的活动事务提交
                              (可保证用户不会丢失当前工作的信息)                
shutdown immediate——特点:阻止新的连接和新的事务,立即回滚未提交的事务(“不用等待”)   
       (脱机备份、电力即将中断、数据库异常但无法通知用户)

你可能感兴趣的:(oracle)