Oracle 12C RAC关于临时表空间的一点启示
通常在设计Oracle用户时我会选择为该用户创建一个单独的表空间和一个临时表空间,比如:
create tablespace sales_tbs datafile '/home/oracle/dbfile/cdb/pdb1/sales_tbs01.dbf' size 10m;
create temporary tablespace sales_tmp tempfile '/home/oracle/dbfile/cdb/pdb1/sales_tmp01.dbf' size 10m
create user sales identified by sales default tablespace sales_tbs temporary tablespace sales_tmp;
但是我从来没有考虑过用户的临时表空间在RAC下的变化。在RAC下临时表空间在所有实例之间共享使用,应该创建和实例数目一样多的临时文件。如果我们使用的2节点RAC,临时表空间最好设置为两个临时数据文件。如果使用的是4节点RAC,临时表空间最好设置为4个临时数据文件。这么做可以减少文件头的锁争用问题。
可以通过下面的方法来增加临时表空间的临时文件来满足RAC下的需求,当然这不是硬性需求。
alter tablespace temp add tempfile '/home/oracle/dbfile/cdb/pdb1/pdb1_temp02.dbf' size 20m;
alter tablespace sales_tmp add tempfile '/home/oracle/dbfile/cdb/pdb1/sales_tmp02.dbf' size 10m;
select tablespace_name,file_name,bytes/1024/1024 mb from dba_temp_files;
TABLESPACE_NAME FILE_NAME MB
------------------------------ -------------------------------------------------- ----------
TEMP /home/oracle/dbfile/cdb/pdb1/pdb1_temp02.dbf 20
TEMP /home/oracle/dbfile/cdb/pdb1/pdb1_temp01.dbf 20
SALES_TMP /home/oracle/dbfile/cdb/pdb1/sales_tmp02.dbf 10
SALES_TMP /home/oracle/dbfile/cdb/pdb1/sales_tmp01.dbf 10
以上内容来自读《Oracle RAC运行实践》得到的启示,在此分享一下。