oracle 笔记---(三)__体系架构

时间:2021-09-11 16:53:26

查看控制文件位置

SQL> show parameter control_files;

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
control_files                 string     /u01/app/oracle/oradata/oracle
                         01/control01.ctl, /u01/app/ora
                         cle/oradata/oracle01/control02
                         .ctl

控制文件的存储

SQL> col name for a55
SQL> select status,name,block_size from v$controlfile;

STATUS    NAME                            BLOCK_SIZE
------- ------------------------------------------------------- ----------
    /u01/app/oracle/oradata/oracle01/control01.ctl             16384
    /u01/app/oracle/oradata/oracle01/control02.ctl             16384

关闭数据库

alter database close -->关闭数据库
alter database dismount -->切换到dismount状态
shutdown  关闭数据库实例

shutdown normal 默认-->所有链接关闭后才关闭数据库

shutdown immediate 常使用 -->终端当前事务,回滚未提交事务,强制断开连接,执行检查点把脏数据写到数据文件中.

shutdown transactional 当前连接继续执行,不允许新的连接,执行完了就关闭数据库

shutdown abort  强制关闭,断开所有,直接关闭数据库

实例

实例由内存区,和后台进程组成:
    内存区包括:数据库高速缓存,重做日志,共享池,池流,其他可选的内存池,这个是内存结构
    
    后台进程包括: 系统监控进程(SMON),进程监控(PMON),数据写进程(DBWR),日志写进程(
LGWR),检验点进程(CKPT),其他进程(归档进程,RECO进程),这些进程共同完成数据库管理任务

oracle 笔记---(三)__体系架构

数据库物理结构

数据库物理结构就是由数据库一系列操作系统文件:

  数据文件(data files): 数据文件包含数据库中的实际数据,是 数据库操作中数据的最终存储位置

  控制文件(control files):包含维护数据库和验证数据库完整性的信息,他是二进制文件

  重做日志文件(redo files):重做日志文件包含数据库发生变化的记录,在发生故障的时候用于恢复数据

##

参数文件(parameter file ) :参数文件中定义了数据库实例的特性。在参数文件中包含为 SGA中内存结构分配空间的参数,如分配数据库高速缓冲区的大小等,参数文件是正文文件,可以使用操作系统文本编辑器查看,如在Windows操作系统中使用记事本工具。
密码文件( password file ) :密码文件授予用户启动和关闭数据库实例,在刚安装数据库时, Oracle的默认用户名和密码就存储在密码文件中, Oracle可以借此判断用户的操作权限.
归档日志文件(archive log files ) :归档日志文件是日志文件的脱机备份,在发生故障后进行数据恢复时可能使用该文件

配置显示格式

SQL> set linesize 500

SQL> set pagesize 50

set pagesize n 一页显示多少行数据

set linesize n 一行可以容纳的字符数量

数据库 的链接

 select serial#,username,status,server,process,program,logon_time from v$session; 

内存结构-->PGA(程序全局区)+SGA(系统全局区)

共享池

库高速缓存

show parameter shared_pool_size -->查看共享池的大小,默认系统会配置,而你配置 的比他小,他并不会改变,只能往大里配,却又不是越大越好

alter system set shared_pool_size = 16M; 配置大小

数据字典高速缓存

与数据字典相关的缓存

数据高速缓冲区(database buffer cache)

存储最近从数据文件读入的数据块的信息或者用户更改需要写回数据库的数据信息,此时没有提交给数据库的数据就成为脏数据

SQL> show parameter db_block_size
查看数据快的大小
NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_block_size                 integer     8192

SQL> show parameter db_cache_size;
高速缓存的大小
NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_cache_size                 big integer 0


SQL> show sga
查看数据库高速缓存的大小
Total System Global Area 2505338880 bytes
Fixed Size            2255832 bytes
Variable Size          620758056 bytes
Database Buffers     1862270976 bytes
Redo Buffers           20054016 bytes

动态设置数据库高速缓存的大小
SQL> alter system set db_cache_size = 200M;

System altered.

SQL> show parameter db_cache_size

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_cache_size                 big integer 208M

缓存顾问 db_cache_advice

SQL> show parameter db_cache_advice

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_cache_advice              string     ON

缓存顾问用于启动或者关闭统计信息,这些信息用于预测不同缓冲区大小导致的不同行为特性
OFF 关闭缓存顾问不分配缓存顾问的工作内存
ON 打开,分配
READY 打开 不分

查看高速缓存区相关信息

SQL> select id,name,block_size,size_for_estimate,buffers_for_estimate from v$db_cache_advice;

    ID NAME                            BLOCK_SIZE SIZE_FOR_ESTIMATE BUFFERS_FOR_ESTIMATE
---------- ------------------------------------------------------- ---------- ----------------- --------------------
     3 DEFAULT                             8192            176            21659
     3 DEFAULT                             8192            352            43318
     3 DEFAULT                             8192            528            64977
     3 DEFAULT                             8192            704            86636
     3 DEFAULT                             8192            880           108295
     3 DEFAULT                             8192           1056           129954
     3 DEFAULT                             8192           1232           151613
     3 DEFAULT                             8192           1408           173272
     3 DEFAULT                             8192           1584           194931
     3 DEFAULT                             8192           1760           216590
     3 DEFAULT                             8192           1776           218559
     3 DEFAULT                             8192           1936           238249
     3 DEFAULT                             8192           2112           259908
     3 DEFAULT                             8192           2288           281567
     3 DEFAULT                             8192           2464           303226
     3 DEFAULT                             8192           2640           324885
     3 DEFAULT                             8192           2816           346544
     3 DEFAULT                             8192           2992           368203
     3 DEFAULT                             8192           3168           389862
     3 DEFAULT                             8192           3344           411521
     3 DEFAULT                             8192           3520           433180

21 rows selected.

 

重做日志高速缓冲区(redo buffer cache)

  当用户执行了如INSERT,UPDATE, DELETE, CREATE, ALTER或DROP操作后,数据发·生了变化,这些变化了的数据在写入数据库高速

缓存之前会先写入重做日志缓冲区,同时变化之前的数据也放入重做日志高速缓存,这样在数据恢复时Oracle就知道哪些需要前滚哪些需要回

SQL> show parameter log_buffer;--查看你日志缓冲区

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
log_buffer                 integer     19341312

 

重做日志缓冲区参数log_buffer是静态参数,不能动态修改,

large pool和java pool

大池是SGA的一段可选内存区,只在共享服务器环境中配置大池。在共享服务器环境下, Oracle在共享池中分配额外的空间用于存储用户进程和服务器
进程之间的会话信息,但是用户进程区域UGA (可理解为PGA在共享服务器中的另一个称呼)的大部分将在大池中分配,这样就减轻共享池的负担。在大
规模输入,输出及备份过程中也需要大池作为缓存空间

Java池也是可选的一段内存区,但是在安装完Java或者使用Java程序时则必须设置Java池,它用于编译Java语言编写的指令。Java语言与PL/SQL语
言在数据库中有相同的存储方式。Oracle提供了参数JAVAPOOLSIZE设置Java池的大小。

 

SQL> show parameter large_pool_size

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
large_pool_size              big integer 0
SQL> alter system set large_pool_size = 48M;

System altered.

SQL> show parameter large_pool_size

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
large_pool_size              big integer 48M
SQL> show parameter java_pool_size

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
java_pool_size                 big integer 0
SQL> alter system set java_pool_size = 48M;

System altered.

SQL> show parameter java_pool_size

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
java_pool_size                 big integer 48M
SQL>

 

### 流池 (streaming pool)

流池也称为流内存,它是Oracle流专用的内存池,流(stream)是Oracle数据库中的一个数据共享,其大小可以通过参数stream pool size动态调

整。

PGA

进程全局区(PGA)是服务器进程专用的一块内存,它是操作系统进程专用的内存,系统中的其它进程是无法访问这块内存的。PGA独立于SGA, PGA不会在SGA中出现,它是由操作系统在本地分配的。

PGA中存储了服务器进程或单独的后台进程的数据信息和控制信息。它随着服务器进程的创建
而被分配内存,随着进程的终止而释放内存。PGA与SGA不同,它不是一个共享区域,而是服务器
进程专有的区域。在专有服务器(与共享服务器相对的概念)配置中包括如下的组件:
    排序区:对某些的SQL语句执行结果进行排序,
    会话信息:包含本次会话的用户权限和性能统计信息。
    游标状态:标明当前会话执行的SQL语句的处理阶段。
    堆栈区:包含其它的会话变量

 

SQL> show parameter sort_area_size

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
sort_area_size                 integer     65536

 

用户全局区(UGA)

在共享服务器模式下有一个重要的概念即UGA (用户全局区) ,它是用户的会话状态,这部分内存会话总可以访问, UGA存储在每个共享服务器都可以访问的SGA中,这样任何服务器都可以使用用户会话的数据和其它信息。而在专有服务器模式下,用户会话状态不需要共享,用户进程与服务器进程是一一对应的关系,所以UGA总是在PGA中进行分配。

##SGA大小

SQL> show parameter sga_max_size

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                 big integer 2400M

归档日志

SQL> show parameter db_recovery NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u01/app/oracle db_recovery_file_dest_size big integer 5G SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/app/oracle/product/11.2.0/db_1/dbs/archivelog Oldest online log sequence 218 Next log sequence to archive 220 Current log sequence 220

检验点进程

  检验点是一个事件,当数据库写进程把SGA中所有被修改了的数据库高速缓冲中的数据写到数据文件

上时产生,这些被修改的数据包括提交的和未提交的数据。由于引入了校验点,使得所有的校验点的所有变

化了的数据都写到数据文件中,在实例恢复时,就不必恢复校验点之前的重做日志中的数据,加快了系统恢

复电a率校验点进程并不是用于建立校验点,只是在校显点发生时,会触发这个进程进行一系列工作。.包括

如下几点:

  校验点进程要将校验点号码写入相关的数据文件的文件头中。

  校验点进程把校验点号码、SCN号、重做日志序列号、归档日志名字等都写入控制文件。

 强制执行校验点

SQL> alter system checkpoint;
强制执行校验点
[Qiángzhì zhíxíng jiào yàn diǎn]
oracle 笔记---(三)__体系架构
Enforce checkpoint
system
oracle 笔记---(三)__体系架构
[ˈsistəm]
oracle 笔记---(三)__体系架构
名词 系统; 体系; 制度; 系; 制; *; 装置; 体