临时表空间总是满的初步想法(AIX系统,裸设备)
临时表空间总是满的初步想法(AIX系统,裸设备)
由于开发人员的水平有高低,dba精力有限,不可能及时解决sql语句问题!打算通过模仿重做日志的方法来解决数据库运行缓慢问题!
1.查看临时文件的使用/剩余空间
- select (BYTES_USED+BYTES_FREE)/1024/1024 "总空间M", BYTES_USED/1024/1024 "使用空间M" from v$temp_space_header;
2.查看当前用户所属的临时表空间
- select username ,temporary_tablespace from dba_users;
USERNAME TEMPORARY_TABLESPACE
----------- ------------------------------
SYS TEMP1
SYSTEM TEMP1
DBSNMP TEMP1
HUJINPEI TEMP1
ALAN1 TEMP1
PERFUSER TEMP1
ALAN2 TEMP1
MYUSER TEMP1
OUTLN TEMP1
WMSYS TEMP1
已选择10行。
3.查看当前有那些临时文件。
- select name from v$tempfile;
4.在裸设备上面创建数据文件
a.在文件系统里面创建想要的的链接
比如:cd /sgerp5/sgerp5
touch temp03.dbf
b.创建软链接
注意:这步千万小心,/dev/sgerp5_sgtemp03这个目录不能错,如果错了,挂载成功,但是会各种奇怪的错误
①--创建数据文件
mklv -y sgerp5_temp03 -T O -t raw -a ie -e x sgvg 60 hdisk2 hdisk3 hdisk4 hdisk5
②--建立链接
ln -fs /dev/sgerp5_sgtemp03 /sgerp5/sgerp5/temp03.dbf
5.重新建立一个临时表空间:请仔细核对脚本,临时表空间创建命令和永久不一样
- CREATE TEMPORARY TABLESPACE "TEMP3" TEMPFILE
- '/sgerp5/sgerp5/temp03.dbf' SIZE 10G
- AUTOEXTEND ON NEXT 655360 MAXSIZE 30G
- EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1048576;
6.将建好的TEMP表空间设置为数据库默认的临时表空间:
- alter database default temporary tablespace temp;
- --查看默认的表空间
- select username,temporary_tablespace from dba_users;
7、DROP掉旧的TEMP1的表空间:(如果不用drop直接跳到第十步)
- drop tablespace temp1 including contents and datafiles;
8、如果drop不掉,可能现在的临时表空间有人在用,等到session释放以后再搞,以下查看谁占用的临时表空间
- SELECT se.username,
- sid,
- serial#,
- sql_address,
- machine,
- program,
- tablespace,
- segtype,
- contents
- FROM v$session se,
- v$sort_usage su
- HERE se.saddr=su.session_addr
|
评论暂时关闭