20c预览版本已经发布,从这个版本开始,在数据库方面也发生了一下微妙的变化,比如默认安装为只读的ORACLE HOME(从18c开始,提供这个功能,但需要手动配置),初始化参数和TNS配置文件从ORACLE HOME中剥离出来等。下面让简单看一下这些基本的变化。内容取自Oracle官方白皮书
在集群方面
policy-managed databases在该版本也被废弃
在数据库方面
NON-CDB架构在Oracle数据库12c中被弃用。从Oracle Database 20c开始,不再支持安装NON-CDB Oracle数据库架构。不能再用Oracle Universal Installer创建NON-CDB Oracle数据库实例。只支持多租户模式的数据库架构。
从Oracle Database 20c开始,Oracle数据库安装默认将所有Oracle Home配置为只读模式。
在Oracle Database 20c之前,我们可以认为ORACLE_HOME、ORACLE_BASE_HOME和ORACLE_BASE_CONFIG是在一个位置。从Oracle数据库20c开始,其中ORACLE_BASE_HOME和ORACLE_BASE_CONFIG分别位于ORACLE_HOME剥离出来。在只读Oracle Home中,所有的配置文件和日志文件都位于只读Oracle Home之外。此功能允许您将只读Oracle Home作为软件映像,跨多个服务器分发。除了传统的ORACLE_BASE和ORACLE_HOME目录之外,以下目录还包含以前位于ORACLE_HOME中的文件:ORACLE_BASE_HOME(对应的命令orabasehome)
ORACLE_BASE_CONFIG(对应的命令orabaseconfig)
允许无缝补丁和更新Oracle数据库,而不需要延长停机时间
简化补丁和大规模部署,因为只需要更新一个映像就可以将补丁分发到多个服务器
通过实现安装和配置的分离,简化了部署
注意:此功能不影响数据库管理员监视、诊断和调整其系统性能的方式。
20c目录结构的变化
20c后数据库时如何启动的
在20c之前,dbs目录位于ORACLE HOME下面。在20c之后,这个目录从ORACLE HOME中剥离出来单独存放。如果不设置ORACLE BASE等环境变量,数据库时怎么发现初始化参数文件呢?
从strace中我们看到,在单实例情况下,是通过orabasetab这个文件来来找到初始化参数,进而启动数据库的
[oracle@xd08dbadm01 bin]$ orabase
/u01/ordb/oracle
[oracle@xd08dbadm01 bin]$ orabaseconfig
/u01/ordb/oracle
[oracle@xd08dbadm01 bin]$ orabasehome
/u01/ordb/oracle/homes/OraDB20Home1
[oracle@xd08dbadm01 bin]$
[oracle@xd08dbadm01 bin]$ cat /u01/ordb/oracle/product/20c/install/orabasetab
#orabasetab file is used to track Oracle Home associated with Oracle Base
/u01/ordb/oracle/product/20c:/u01/ordb/oracle:OraDB20Home1:Y:
[oracle@xd08dbadm01 bin]$
Reference
https://docs.oracle.com/en/database/oracle/oracle-database/20/upgrd/behavior-changes-deprecated-desupport-oracle-database.html#GUID-DC25BF7D-F3DE-4B86-A719-B672BF6708B0
https://docs.oracle.com/en/database/oracle/oracle-database/18/ladbi/understanding-read-only-oracle-homes.html#GUID-AE1973D7-0325-4AD8-9FC9-D7BA3C3C3F37