3、管理表空间和数据文件
一、表空间查询
1.在DBA_DATA_FILES数据字典中查询
CREATE [SMALLFILE/BIGFILE] --大文件或小文件表空间TABLESPACE tabspace_name --名称DATAFILE '/OS_PATH/file_name' SIZE INTEGER [K/M] --设置物理路径和大小 REUSE --如果文件存在,清除后重新建;否则直接建立 [,'/OS_PATH/file_name' SIZE INTEGER [K/M] REUSE][AUTOEXTEND [OFF/ON] NEXT INTEGER[K/M] --是否自动扩展,ON需要设置NEXT 大小[MAXSIZE[UNLIMITED /INTEGER [K/M]]]] --最大表空间大小[MINIMUM EXTENT INTEGER[K/M]] [DEFAULT STORAGE storage] --指定以后要创建表,索引及簇的存储参数[ONLINE/OFFLINE] [LOGGING/NOLOGGING] --是否产生日志[PERMANENT/TEMPORARY] --永久或临时 ,默认是永久表空间[EXTENT MANAGEMENT --扩展段得管理 [DICTIONARY/LOCAL --数据字典管理还是本地管理,建议本地管理 [AUTOALLOCATE|UNIFORM SIZE INTEGER[K/M]]]]--例子---------------------------create tablespace myspace datafile 'D:\ORACLE\ORADATA\C_DB\myspace01.DBF'size 256M reuseautoextend on next 20M maxsize unlimitedlogging onlinepermanent -- blocksize 16384 加上这句,表示建立非标准块的表空间extent management local autoallocatesegment space management auto;--上面的表空间建立中,有很多参数可以是系统默认的。--修改表空间大小的2种方法alter database datafile 'D:\ORACLE\ORADATA\C_DB\myspace01.DBF' resize 1G; alter tablespace myspace resize 10G;--改变表空间的读写状态--条件:表空间处于ONLINE,没有任何回滚段,(归档模式或数据发行中不能改为只读)alter tablespace myspace read only;alter tablespace myspace read write;--------------------------表空间的操作 --------------------------1.修改表空间的名字--先查询SELECT TABLESPACE_NAME ,FILE_NAME FROM DBA_DATA_FILES;ALTER TABLESPACE OLD_NAME TO NEW_NAME;--修改后,旧表空间存放的对象被自动的更名为新表空间--2.设置默认表空间alter database default tablespace myspace;select property_value from database_properties where property_name='DEFAULT_PERMANENT_TABLESPACE';--3.删除表空间--语法-----------------------------------------DROP TABLESPACE TABLESPACE_NAME --表空间名称[INCLUDING CONTENTS] --删除表空间以及里面的数据 [CASCADE CONSTRAINS] --删除相关的完整性约束(主键,索引等)[color=red]注:如果使用了分区【partition】的表空间,要先使用alter table ...remove partition将表空间的数据移到别的表空间去,然后才能drop[/color]drop tablespace my_tabs including contents cascade constraints;--4.新增数据文件到表空间alter tablespace my_tabs add datafile '/OS_PATH/xxx.dbf' size 300MB;--5.删除表空间中无数据的数据文件--在11gR2后才能删除数据文件alter tablespace my_tabs drop datafile '/OS_PATH/xxx.dbf' ;--6.在数据文件中设置自动扩展属性ALTER DATABASE/TABLESPACE [FILE_PATH] --file_path表示路径+文件名AUTOEXTEND ON NEXT[INCREMENT_SIZE] --自动扩展的大小MAXSIZE[MAX_SIZE/UNLIMITED] --最大值或无限大小UNLIMITED--查询数据文件,并改为自动扩展SQL> select file_name ,tablespace_name,bytes/1024/1024 M,autoextensible from dba_data_files order by tablespace_name;FILE_NAME TABLESPACE M AUT------------------------------------------ ---------- ---------- ---D:\ORACLE\ORADATA\C_DB\CWMLITE01.DBF CWMLITE 20 YESD:\ORACLE\ORADATA\C_DB\DRSYS01.DBF DRSYS 20 YESD:\ORACLE\ORADATA\C_DB\EXAMPLE01.DBF EXAMPLE 149.375 YESD:\ORACLE\ORADATA\C_DB\INDX01.DBF INDX 25 YESD:\ORACLE\ORADATA\C_DB\ODM01.DBF ODM 20 YESD:\ORACLE\ORADATA\C_DB\SYSTEM01.DBF SYSTEM 400 YESD:\ORACLE\ORADATA\C_DB\TOOLS01.DBF TOOLS 10 YESD:\ORACLE\ORADATA\C_DB\UNDOTBS01.DBF UNDOTBS1 200 YESD:\ORACLE\ORADATA\C_DB\USERS01.DBF USERS 25 YESD:\ORACLE\ORADATA\C_DB\my_tabs.DBF MY_TABS 38.125 NOalter database datafile 'D:\ORACLE\ORADATA\C_DB\my_tabs.DBF'autoextend on next 200M maxsize 5000M;