查看控制文件位置
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进程),这些进程共同完成数据库管理任务
数据库物理结构
数据库物理结构就是由数据库一系列操作系统文件:
数据文件(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;