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运行实践》得到的启示,在此分享一下。

相关内容