创建表空间+rename重命名+修改管理方式+resize大小

普通表空间

新建表空间test11,数据文件为/u01/oracle/oradata/primary/primary/test11.dbf

SQL> createtablespace test1 datafile '/u01/oracle/oradata/primary/primary/test1.dbf' size10m;

Undo表空间

新建Undo表空间undotbs2:

SQL〉CREATE UNDO TABLESPACE undotbs2

  DATAFILE   '/u01/oracle/oradata/primary/primary/undotbs2.dbf' SIZE 200M

     REUSE AUTOEXTEND OFF

    ONLINE; 

SQL〉ALTER SYSTEM SET UNDO_TABLESPACE ='undotbs2' SCOPE= BOTH;

临时表空间

         新建临时表空间temp2

SQL〉CREATE TEMPORARY TABLESPACE temp2

   TEMPFILE  '/u01/oracle/oradata/primary/primary/temp2.dbf'SIZE 200M

      REUSE AUTOEXTEND OFF

     EXTENT MANAGEMENT LOCAL

    UNIFORM SIZE 1M;

创建规范: 

CREATE[UNDO]  TABLESPACE tablespace_name
[DATAFILE datefile_spec1 [,datefile_spec2] ......
[ { MININUM EXTENT integer [k|m]
| BLOCKSIZE integer [k]
|logging clause
|FORCE LOGGING
|DEFAULT  {data_segment_compression}storage_clause
|[online|offline]
|[PERMANENT|TEMPORARY]
|extent_manager_clause
|segment_manager_clause}]
1、undo  说明系统将创建一个回滚表空间。
2、tablespace指出表空间的名称。
3、datafile  datefile_spec1指出表空间包含什么空间文件。

datefile_spec1 是形如  ['filename'] [SIZE integer [ K | M ]] [REUSE][autoextend_clause]

4、MININUMEXTENT integer [k|m] 指出在表空间中范围的最小值。这个参数可以减小空间碎片,保证在表空间的范围是这个数值的整数倍。
5、BLOCKSIZE integer [k] 这个参数可以设定一个不标准的块的大小。

6、loggingclause这个子句声明这个表空间上所有的用户对象的日志属性(缺省是logging),包括表,索引,分区,物化视图,物化视图上的索引,分区。
7、FORCE LOGGING使用这个子句指出表空间进入强制日志模式。

8、DEFAULTstorage_clause声明缺省的存储子句。
9、online|offline改变表空间的状态。
10、PERMANENT|TEMPORARY指出表空间的属性,是永久表空间还是临时表空间。

11、extent_management_clause说明了表空间如何管理范围

12、segment_management_clause段空间管理的方式,自动或者手动:    

                SEGMENT SPACE MANAGEMENT {AUTO|MANUAL}


赋予表空间权限:
alter user EPUFS quota unlimited on XIB_TRANS_DATA ;


重命名表空间:

alter tablespace test1 rename to test11;


将system表空间从dictionary-managed更改为locally managed:

*oracle 10g默认的表空间管理方式是本地管理(locally managed)。

在转换system表前,你必须把所有的其他表空间转换为本地管理。否则在将system表空间传换为locally managed后不能在READ-WRITE模式下使用这些表空间。

EXECUTE dbms_space_admin.tablespace_migrate_to_local("tablespace");

系统表空间从数据字典管理转换到本地管理的限制条件非常严格。必须严格遵守以下条件:

1)系统的默认临时表空间不是系统表空间

2)数据字典管理的表空间中不存在回滚段

3)至少一个联机回滚段存在于本地管理表空间中或者使用了自动undo管理,且undo表空间联机

4)除去undo或回滚表空间,其他表空间都置于只读模式

5)系统使用restricted模式启动

6)利用DBMS_SPACE_ADMIN

EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL(‘SYSTEM’);

使用这种方法很好,但是它建立的表空间没有automatic segment space managerment选项,所有字典管理表空间都是用默认手动段空间管理,而且在转换为本地管理的表空间是不能进行修改。

还有一个缺点,就是表空间如果存在空间碎片的话,此方法也不能解决碎片问题

因此,要转换普通表空间,建议使用下面的方法!

普通表空间从dictionary-managed更改为locally managed:

首先你要新建一个本地管理的表空间:

CREATE TEMPORARY TABLESPACE new_tempt

TEMPFILE  '/u01/oracle/oradata/primary/primary/new_tempt.dbf'SIZE 200M

REUSE AUTOEXTEND OFF

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 1M;

对于表空间的转移使用命令:

ALTER TABLE temp MOVE TABLESPACE new_temp;

对于索引你需要重建:

ALTER TABLE index REBUILD TABLESPACEnew_index;


resize表空间大小:

SQL> select a.tablespace_name,total,free,total-free used from (select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files  group by tablespace_name) a, (select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name;


TABLESPACE_NAME      TOTAL       FREE        USED      
-------------------------------------------------------------------------

TEST1                                   50             49.875       .125


SQL> alter database datafile '/home/oracle/test/TEST/test.dbf' resize 20M;
Database altered.


SQL> select a.tablespace_name,total,free,total-free used from (select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files  group by tablespace_name) a, (select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name;


TABLESPACE_NAME      TOTAL       FREE        USED      
-------------------------------------------------------------------------
TEST1                                 20              19.875       .125

注意:

alter databasedatafile 'filepath' resize <filesize>;

  • 此语句只能用于bigfiletablespaces。
  • 对于一个bigfiletablespace来说,可以通过alter database语句来改变大小,但不能给一个bigfile tablespace增加数据文件。
  • 在使用resize缩小表空间时,如果文件中所包含的数据大小超过了设定的大小,就会报错。
  • high water mark:数据文件能够resize的最小文件大小就是HWM值,即resize后的大小不能低于HWM值。



你可能感兴趣的:(oracle,表空间,tablespace,rename,resize)