在执行具体的操作之前,由于Oracle不允许删除现有临时表空间,所以在删除现有临时表空间时要终止现有的实时会话。
SQL> select FILE_NAME,TABLESPACE_NAME from dba_temp_files;
SQL> SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) || ‘MB‘ total_space FROM dba_data_files;
SQL> select name from v$datafile;
SQL> select username,default_tablespace from user_users;
SQL> select * from user_tablespaces;
SQL> CREATE TEMPORARY TABLESPACE TEMP_NEW TEMPFILE ‘/DATA/database/ifsprod/temp_01.dbf‘ SIZE 500m autoextend on next 10m maxsize unlimited;
参数说明:
SIZE *[K,M]表空间的初始大小,单位可以是[K,M]
MAXSIZE *[K,M]表空间的最大存储值,maxsize unlimited 是指表空间的大小不受限制。
AUTOEXTEND ON NEXT *[K,M] 设置表空间自动扩展
EXTENT MANAGEMENT LOCAL本地管理表空间。
extent是“区间”的意思,在oracle数据库中:extent management 有两种方式 extent management local(本地管理); extent management dictionary(数据字典管理)默认的是local本地管理表空间有自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式,自动分配方式(AUTOALLOCATE)是由系统来自动决定extents大小,而统一大小分配(UNIFORM)则是由用户指定extents大小。这两种分配方式都提高了空间管理效率。uniform:默认为1M大小,在temp表空间里为默认的,但是不能被应用在undo表空间.
SQL> create tablespace <表空间名> datafile ‘<表空间名>.dbf‘ size 500M autoextend on next 5M maxsize unlimited;
将数据库默认临时表空间更改为新创建的临时表空间,新创建的临时表名称"TEMP_NEW":
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_NEW;
检索所有使用旧临时表空间的现有会话的“ SID_NUMBER”和“ SERIAL#NUMBER”并将其杀死。
SQL> SELECT b.tablespace,b.segfile#,b.segblk#,b.blocks,a.sid,a.serial#,a.username,a.osuser, a.status FROM v$session a,v$sort_usage b WHERE a.saddr = b.session_addr;
根据查询结果执行:
SQL> alter system kill session ‘SID_NUMBER, SERIAL#NUMBER‘;
例:
SQL> alter system kill session ‘59,57391‘;
SQL> drop tablespace <表空间名称>;
SQL> drop tablespace <表空间名称> including contents;
SQL> drop tablespace <表空间名称> including datafiles;
SQL> drop tablespace <表空间名称> including contents and datafiles;
SQL> drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
通过以上操作内容和数据文件已成功删除。
如果希望继续使用旧的临时表空间名称,请按照上述相同的步骤重新创建具有旧名称的临时表空间。
SQL> ALTER TABLESPACE caiyl_space ADD DATAFILE ‘D:\Oracle\app\caiyl\oradata\orcl\caiyl_space.dbf‘ size 4096M;
SQL> ALTER DATABASE TEMPFILE ‘D:\Oracle\app\caiyl\oradata\orcl\caiyl_temp.dbf‘ RESIZE 8192M;
SQL> alter user <用户名> default tablespace <新表空间名>;
SQL> grant connect, resource,dba to <用户名>;
SQL> revoke unlimited tablespace from <用户名>;
SQL> alter user <用户名> quota 0 on <表空间名>;
SQL> alter user <用户名> quota unlimited on <表空间名>;
原文:https://www.cnblogs.com/shjr/p/12763005.html