oracle体系-15-tablespace

TABLESPACE(表空间)的类型

①PERMANENT   永久表空间

②UNDO   撤销表空间

③TEMPORARY   临时表空间

管理方式:

重点是段的管理方式和区的管理方式是在建立表空间时确定的。

段管理方式有AUTO和MANUAL两种,区管理方式有本地管理和字典管理(已淘汰)两种。

SQL> select tablespace_name,contents ,extent_management,segment_space_management from dba_tablespaces;

TABLESPACE_NAME                CONTENTS     EXTENT_MAN   SEGMEN

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

SYSTEM                            PERMANENT   DICTIONARY   MANUAL  ##手动

SYSAUX                            PERMANENT   LOCAL             AUTO

TEMP                               TEMPORARY   LOCAL           MANUAL

USERS                             PERMANENT   LOCAL             AUTO     ##自动

EXAMPLE                         PERMANENT   LOCAL             AUTO

UNDO_TBS01                       UNDO           LOCAL           MANUAL

TMP01                                  TEMPORARY   LOCAL             MANUAL

TEST                                     PERMANENT   DICTIONARY    MANUAL

基本操作

1)建立表空间

SQL> create tablespace a datafile '/u01/oradata/prod/a01.dbf' size 10m;

利用oracle提供的dbms_metadata.get_ddl包看看缺省值都给的是什么?

SQL> set serverout on;

SQL>declare

aa  varchar2(2000);

begin

select dbms_metadata.get_ddl('TABLESPACE','B') into aa FROM dual;

dbms_output.put_line(aa);

end;

/

结果:

  CREATE TABLESPACE "A" DATAFILE

  '/u01/oradata/prod/a01.dbf' SIZE 10485760

  LOGGING ONLINE PERMANENT BLOCKSIZE

8192

  EXTENT MANAGEMENT LOCAL AUTOALLOCATE

 SEGMENT SPACE MANAGEMENT AUTO

PL/SQL 过程已成功完成。

关注最后一行,两个重要信息是:(1)区本地管理且自动分配空间,(2)段自动管理。

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

SQL>create tablespace b datafile '/u01/oradata/prod/b01.dbf' size 10m

extent management local uniform size 128k

segment space management manual

同上,调dbms_metadata.get_ddl包看Oracle对该语句的ddl操作是:

  CREATE TABLESPACE "B" DATAFILE

  '/u01/oradata/prod/a01.dbf' SIZE 10485760

  LOGGING ONLINE PERMANENT BLOCKSIZE

8192

  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 131072 SEGMENT SPACE MANAGEMENT MANUAL

最后一行信息是:区本地管理且统一分配128K, 段手动管理。如果在建表时使用缺省说明,则该表将服从其表空间的这些定义

删除表空间

表空间的删除和offline

SQL>drop tablespace test including contents and datafiles;   ##contents包括控制文件和数据字典信息,datafiles是物理数据文件。

数据库OPEN下不能删除的表空间是

①system  ②active undo tablespace  ③default temporary tablespace  ④default tablespace

数据库OPEN下不能offine的表空间是

①system  ②active undo tablespace  ③default temporary tablespace

查看表空间大小

SQL> select TABLESPACE_NAME,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;

查看表空间空闲大小

SQL> select TABLESPACE_NAME,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

TABLESPACE_NAME                SUM(BYTES)/1024/1024

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

UNDOTBS1                                  98.4375

SYSAUX                                       14.625

USERS                                          48.1875

SYSTEM                                        1.875

EXAMPLE                                       31.25

查看表空间(数据文件)是否自动扩展

SQL> col file_name for a40;

SQL> select file_name,tablespace_name,bytes/1024/1024 mb,autoextensible from dba_data_files;

修改表空间为自动扩展

SQL>alter database datafile '/u01/app/oracle/oradata/orcl/users_d01.dbf' autoextend on;

确认是否已经修改成功
SQLl> select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'USERS';

TABLESPACE_NAME   FILE_NAME                                 AUT
----------------- ----------------------------------------- ---
SEC_D             /u01/app/oracle/oradata/orcl/users_d01.dbf  YES

总结修改语句语法
开启自动扩展功能语法:
alter database datafile '对应的数据文件路径信息' autoextend on;
关闭自动扩展功能语法:
alter database datafile '对应的数据文件路径信息' autoextend off;

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

1.数据文件自动扩展的好处
1)不会出现因为没有剩余空间可以利用到数据无法写入
2)尽量减少人为的维护
3)可以用于重要级别不是很大的数据库中,如测试数据库等
2.数据文件自动扩展的弊端
1)如果任其扩大,在数据量不断变大的过程中会导致某个数据文件异常的大
2)没有人管理的数据库是非常危险的

建立大文件(bigfile)的表空间

①small file,在一个表空间可以建立多个数据文件(默认)

②bigfile :在一个表空间只能建立一个数据文件  (必须是8k的block ,最大可达32T),简化对数据文件管理

SQL> create bigfile tablespace big_tbs datafile '/u01/oradata/prod/bigtbs01.dbf' size 100m;

试图在该表空间下增加一个数据文件会报错

SQL> alter tablespace big_tbs add datafile '/u01/oradata/prod/bigtbs02.dbf' size 100 m;

报错:ORA-32771: cannot add file to bigfile tablespace

查看大文件表空间:

SQL> select name,bigfile from v$tablespace;

猜你喜欢

转载自www.cnblogs.com/yqp-1/p/12306036.html