alter tablespace temp add tempfile‘/u01/app/oracle/oradata/CP7PV1DB/temp02.dbf’> 注:临时表空间文件如果已经32G,达到最大文件大小,只能添加文件。
SQL>>
SQL>>
SQL>> 3、 设置自动扩展
SQL>> 4、 扩展表空间时的报错
ERROR atline 1:
ORA-00376:file 201 cannot be read at this time
ORA-01110:data file 201: '/u01/app/oracle/oradata/CP7PV1DB/temp01.dbf'
原因是临时表空间不知道什么原因offline了,修改为online后修改成功。
SQL> >
Database> 5、 删除临时表空间(补充)
SQL>drop tablespace temp01 including contents and datafiles;
SQL>>
Database> 注意:删除临时表空间的临时数据文件时,不需要指定INCLUDING DATAFILES 选项也会真正删除物理文件,否则需要手工删除物理文件。也不能直接删除当前用户的默认表空间,否则会报ORA-12906错误。如果需要删除某一个默认的临时表空间,则必须先创建一个临时表空间,然后指定新创建的表空间为默认表空间,然后删除原来的临时表空间。
6、 更改系统默认的临时表空间
--查询默认临时表空间
SQL> select *from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
-------------------------------------------------- --------------------------------------------------
DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace
--修改默认临时表空间
SQL>> Databasealtered.
我们可以查询是否切换为TEMP02:
SQL> select *from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
-------------------------------------------------- ----------------------------------------
DEFAULT_TEMP_TABLESPACE TEMP02 Name of default temporary tablespace
7、 查看临时表空间的使用率
SQL>SELECT temp_used.tablespace_name,
total - used as "Free",
total as "Total",
round(nvl(total - used, 0) * 100 /total, 3) "Free percent"
FROM (SELECT tablespace_name,SUM(bytes_used) / 1024 / 1024 used
FROM GV_$TEMP_SPACE_HEADER
GROUP BY tablespace_name) temp_used,
(SELECT tablespace_name, SUM(bytes) /1024 / 1024 total
FROM dba_temp_files
GROUP BY tablespace_name) temp_total
WHEREtemp_used.tablespace_name = temp_total.tablespace_name;
TABLESPACE_NAME Free Total Free percent
---------------------------------------- ---------- ------------
TEMP 6876 8192 83.936
8、 查找消耗资源比较多的sql语句
Select se.username,
se.sid,
su.extents,
su.blocks * to_number(rtrim(p.value)) asSpace,
tablespace,
segtype,
sql_text
from v$sort_usage su, v$parameter p, v$session se, v$sql s
where p.name = 'db_block_size'
and su.session_addr = se.saddr
and s.hash_value = su.sqlhash
and s.address = su.sqladdr
order by se.username, se.sid;
先创建一个临时表空间,把这个表空间设置为默认的临时表空间,然后把以前的临时表空间删掉,再把数据文件删掉,很简单。
经验: