oracle ocp认证指南,OCP认证考试指南(三):创建Oracle数据库

数据库的创建工作,原以为好容易就是下一步下一步的问题,原来里面的内容还是很多的,包括体系结构要了解一些,DBCA建库是容易拉,不过要会手动建库那才叫酷嘛,拿个界面点下一步下一步谁不会啊,那还叫DBA啊?呵呵。

Oracle服务器由下列两个实体组成:实例(Instance)与数据库。实例由存储结构和进程组成,并且只短暂存在于RAM和CPU中。数据库由磁盘上的物理文件组成。

实例与数据库的关系是一对一的,一个实例连接一个数据库,但也有可能是多对一的,即不同计算机上的多个实例打开共享磁盘系统上的一个公用数据库。这种多对一关系被称为实际应用群集(Real Application Clusters,简写为RAC)。

下面我们根据这张图,来详细了解关于Oracle的体系结构:

oracle ocp认证指南,OCP认证考试指南(三):创建Oracle数据库_第1张图片

1、实例:存储结构与进程

一个Oracle实例由一块被称为系统全局区(System Global Area,简写为SGA)的共享内存以及若干进程组成。SGA至少包含共享池、数据库高速缓存区(Database Buffer Cache)以及日志缓冲区这三种数据结构,此外还可能包含大池、Java池或流池。启动实例会确定上述某些SGA结构的大小,而其他一些SGA结构的大小可以动态变化。不过,创建数据库时并不会确定任何SGA结构的大小,我们可以随时停止和重新启动实例,每次都将得到一种完全不同的内存配置。

记住:如果在现场系统中频繁地改变内存配置,并且都属于需要关闭实例的变化类型,那以会不断出现停机,从而造成终端用户的不满。

要查看SGA的大小,我们可以通过如下语句:

SQL> select * from v$sga;

NAME VALUE

-------------------- ----------

Fixed Size 1218868

Variable Size 79693516

Database Buffers 180355072

Redo Buffers 2973696

1.1、共享池(Shared Pool)

共享池是SGA中最关键的内存片段,特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能,使系统停止,太大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个部分:

库缓存区(Library Cache),也叫SQL语句缓冲区。当一个用户提交一个SQL语句,Oracle会将这句SQL进行分析(Parse),这个过程类似于编译,会耗费相对较多的时间。在分析完这个SQL,Oracle会把他的分析结果给保存在Shared Pool的Library Cache中,当数据库第二次执行该SQL时,Oracle自动跳过这个分析过程,从而减少了系统运行的时间。这也是为什么第一次运行的SQL 比第二次运行的SQL要慢一点的原因。

对于保存在共享池中的SQL语句,可以从v$Sqltext、v$Sqlarea中查询到,对于编程者来说,要尽量提高语句的重用率,减少语句的分析时间。一个设计的差的应用程序可以毁掉整个数据库的Share Pool,提高SQL语句的重用率必须先养成良好的变成习惯,尽量使用Bind变量。

数据字典缓存区(Data Dictionary Cache),存储最近使用的对象定义,包括对表、索引、用户的描述以及其他元数据的定义。将上述这些定义存储在内存中的,就不必重复读取磁盘上的数据字典,从而能提高性能。0b1331709591d260c1c78e86d0c51c18.png

你可能感兴趣的:(oracle,ocp认证指南)