ITPub博客

首页 > 数据库 > 数据库开发技术 > Oracle数据库设计规范篇{七}——【设计篇完结】(环境参数命名等综合规范)

Oracle数据库设计规范篇{七}——【设计篇完结】(环境参数命名等综合规范)

原创 数据库开发技术 作者:梁敬彬 时间:2025-05-10 06:47:03 0 删除 编辑


往期回顾链接

       Oracle数据库设计规范篇{一}——表规范    

       Oracle数据库设计规范篇{二}——物理设计规范【上】(基本规范、表设计规范)

       Oracle数据库设计规范篇{三}——物理设计规范【中】(分区设计规范)

       Oracle数据库设计规范篇{四}——物理设计规范【下】(列的设计,命名的规范)

       Oracle数据库设计规范篇{五}——索引规范【上】(分区、函数、位图及外键的索引)

       Oracle数据库设计规范篇{六}——索引规范【下】(联合、无、失效索引..)



4. 环境参数规范

在Oracle数据库设计与实施的旅程中,我们已经探讨了多个关键领域。本文作为设计篇的收官之作,将聚焦于环境参数配置与命名规范这两个往往被忽视却至关重要的方面。良好的环境参数配置能确保数据库性能最优,而统一的命名规范则为日后的维护和协作奠定基础。让我们深入了解这些最佳实践,完美收官我们的设计篇章。

4.1 数据库参数

4.1.1 SGA及PGA参数

  • OLTP应用是主机内存的80%分配数据库,其中SGA80%,PGA20%

  • OLAP应用是主机内存的80%分配数据库,其中SGA50%,PGA50%

  • 如OLTP应用:主机内存30G,SGA即使30*0.8*0.8=20G左右

----不过这里还是要注意:并没有什么黄金参数,这些还只能是参考。

4.1.2 PROCESS/SESSION

sqlplus "/ as sysdba"
show parameter process
show  parameter session
select count(*) from v$process;
select count(*) from v$session;
-----默认连接数是150,这对大多数应用都无法满足,大型应用一般不少于1000个。

4.1.3 OPEN_CURSOR游标参数

sqlplus "/ as sysdba"
show parameter open_cursor
----默认open_cursors是300,大型应用需设置1000以上,原则上不超过PROCESS设置。

4.1.4 日志参数

一般来说,ORALCE默认的日志参数是3组,大小为500M,在实际较大的生产应用中往往不够,需要至少考虑在5组以上,大小在1G以上。

4.1.5 是否归档

一般来说,生产系统大多需要开启归档,只有在特殊的场合下数据安全性无关紧要(如测试环境),才可以关闭归档。

-- 检查数据库是否处于归档模式
ARCHIVE LOG LIST;
-- 根据规范,生产系统应开启归档模式
-- 如果输出显示"Database log mode: No Archive Mode",则需启用归档模式
-- 启用归档模式的步骤(需重启数据库):
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
-- 配置适合生产环境的归档设置
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/oracle/archive REUSE';
ALTER SYSTEM SET log_archive_format='arch_%r_%s_%t.arc' SCOPE=SPFILE;

4.2 表空间规划

4.2.1 回滚表空间

  • 自动管理

  • 避免自动扩展

  • 尽可能规划大

-- 检查当前回滚表空间配置
SELECT tablespace_name, status, contents, retention 
FROM dba_tablespaces
WHERE contents = 'UNDO';
-- 检查回滚表空间文件是否设置了自动扩展(规范要求避免自动扩展)
SELECT file_name, tablespace_name, bytes/1024/1024 "Size (MB)", 
       autoextensible, maxbytes/1024/1024 "Max Size (MB)"
FROM dba_data_files
WHERE tablespace_name IN (SELECT tablespace_name FROM dba_tablespaces WHERE contents = 'UNDO');
-- 如果回滚表空间文件设置了自动扩展,违反规范,需修改
ALTER DATABASE DATAFILE '/oradata/undotbs01.dbf' AUTOEXTEND OFF;
-- 如回滚表空间偏小,根据规范创建足够大的新回滚表空间
CREATE UNDO TABLESPACE undotbs2
DATAFILE '/oradata/undotbs02.dbf' SIZE 8G REUSE
AUTOEXTEND OFF;
-- 切换到新的undo表空间
ALTER SYSTEM SET undo_tablespace = undotbs2;

4.2.2 临时表空间

  • 避免自动扩展,由监控跟进

  • 尽可能大

  • 尽可能使用临时表空间组

-- 检查临时表空间配置
SELECT tablespace_name, status, contents, extent_management
FROM dba_tablespaces
WHERE contents = 'TEMPORARY';
-- 检查临时表空间文件是否设置了自动扩展(规范要求避免自动扩展)
SELECT file_name, tablespace_name, bytes/1024/1024 "Size (MB)",
       autoextensible, maxbytes/1024/1024 "Max Size (MB)"
FROM dba_temp_files;
-- 如果临时表空间文件设置了自动扩展,违反规范,需修改
ALTER DATABASE TEMPFILE '/oradata/temp01.dbf' AUTOEXTEND OFF;
-- 检查是否使用了临时表空间组(规范建议使用)
SELECT * FROM dba_tablespace_groups;
-- 如未使用临时表空间组,创建并配置
-- 先创建足够大的临时表空间
CREATE TEMPORARY TABLESPACE temp_large
TEMPFILE '/oradata/temp_large01.dbf' SIZE 10G
AUTOEXTEND OFF
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
-- 创建临时表空间组并添加表空间
ALTER TABLESPACE temp TABLESPACE GROUP temp_group;
ALTER TABLESPACE temp_large TABLESPACE GROUP temp_group;
-- 设置默认临时表空间组
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_group;

4.2.3 业务表空间

  • 控制个数,不超过6个为宜

  • 尽量避免自动扩展,超阀值由监控来检查

  • 根据自己的业务,固定表空间名

  • 表空间需良好分类(参数配置表,业务数据表,历史记录表)

  • 表空间需合理命名

4.3 RAC系统

  • 尽量采用BALANCE模式,保证两节点压力大致相当。

  • 可适当考虑不同类型的业务部署在不同的节点上,避免RAC的CACHE争用。

  • 尽量考虑不同的节点使用不同的临时表空间。

4.4 命名规范

需要特别说明的是,并非一定要这么命名,只是强调但是在同一开发团队甚至同一公司里,必须统一规范,在内部达成一致的认可。所以下述命名规范,仅供参考。

4.4.1表以t_为前缀

select * from user_tables where substr(table_name,1,2)<>'T_' ;

4.4.2 视图以v_为前缀

select view_name from user_views where substr(view_name,1,2)<>'V_'

4.4.3 同义词以s_为前缀

select synonym_name, table_owner, table_name
  from user_synonyms
 where substr(synonym_name, 1, 2) <> 'S_';

4.4.4 簇表以c_为前缀

select t.cluster_name,t.cluster_type
  from user_clusters t
 where substr(cluster_name, 1, 2) <> 'C_';

4.4.5 序列以seq_为前缀或后缀

select sequence_name,cache_size
  from user_sequences
 where sequence_name not like '%SEQ%';

4.4.6 存储过程以p_为前缀

select object_name,procedure_name
  from user_procedures
 where object_type = 'PROCEDURE'
   and substr(object_name, 1, 2) <> 'P_';

4.4.7 函数以f_为前缀

select object_name,procedure_name
  from user_procedures
 where object_type = 'FUNCTION'
   and substr(object_name, 1, 2) <> 'F_';

4.4.8 包以pkg_为前缀

select object_name,procedure_name
  from user_procedures
 where object_type = 'PACKAGE'
   and substr(object_name, 1, 4) <> 'PKG_';

4.4.9 类以typ_为前缀

select object_name,procedure_name
  from user_procedures
 where object_type = 'TYPE'
   and substr(object_name, 1, 4) <> 'TYP_';

4.4.10主键以pk_为前缀

select constraint_name, table_name
  from user_constraints
 where constraint_type = 'P'
   and substr(constraint_name, 1, 3) <> 'PK_'
   and constraint_name not like 'BIN$%';

 4.4.11外键以fk_为前缀

select constraint_name,table_name
  from user_constraints
 where constraint_type = 'R'
   and substr(constraint_name, 1, 3) <> 'FK_'
   and constraint_name not like 'BIN$%';

4.4.12 唯一索引以ux_为前缀

select constraint_name,table_name
  from user_constraints
 where constraint_type = 'U'
   and substr(constraint_name, 1, 3) <> 'UX_'
   and table_name not like 'BIN$%';

4.4.13普通索引以idx_为前缀

select index_name,table_name
  from user_indexes 
 where index_type='NORMAL'
   and uniqueness='NONUNIQUE'
   and substr(index_name, 1, 4) <> 'IDX_'
   and table_name not like 'BIN$%';

4.4.14位图索引以bx_为前缀

select index_name,table_name
  from user_indexes
 where index_type LIKE'%BIT%'
   and substr(index_name, 1, 3) <>'BX_'
   and table_name not like'BIN$%';

4.4.15函数索引以fx_为前缀

select index_name,table_name
  from user_indexes
 where index_type='FUNCTION-BASED NORMAL'
   and substr(index_name, 1, 3) <>'FX_'
   and table_name not like'BIN$%';


在这里插入图片描述


总结

通过本文的环境参数配置和命名规范指导,我们完成了Oracle数据库设计规范系列的最后一篇。良好的环境参数配置可以优化系统性能,而统一的命名规范则提高了系统的可读性和可维护性。

记住,这些规范并非一成不变的教条,而是经验总结的最佳实践。在实际应用中,应根据具体业务特点和团队习惯进行合理调整,但一旦确定,就应在团队中严格执行,确保一致性。

至此,Oracle数据库设计规范篇已全部完结。希望这一系列文章能为您的Oracle数据库设计工作提供有价值的参考。


公众号:收获不止数据库

微信:ljbyxl1213

系列回顾


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9091385/viewspace-3083807/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
历任中电福富研究院副理事长、中盾安信研究院副院长、宁德时代技术顾问等职务,受聘电信集团专家和国家十四五课题负责人,著有《收获,不止Oracle》《收获,不止SQL优化》等多本畅销数据库技术书籍。

注册时间:2024-02-06

  • 博文量
    162
  • 访问量
    198088