• 1. ORACLE数据库管理员 -体系结构技术支持部 汤庆锋 福州磬基电子有限公司
  • 2. 本课程学习内容物理结构 逻辑结构 存储结构 进程结构 实例和数据库的启动和关闭
  • 3. Oracle的体系结构 要了解OACLE的体系结构,必须先了解两个基本概念:数据库(DATABASE) 和实例(INSTANCE)。 数据库 数据库是一个数据的集合。数据库不仅是指物理上的数据,也指我们将要学习 到的逻辑、存储及进程对象的一个组合。一个数据库中的数据逻辑上存储在表 中,物理上必然存储在物理文件中。在其内部,数据库结构提供一张数据存储 到文件的逻辑图,允许不同类型的数据分开存储,这些逻辑划分就是表空间。表空间数据文件数据库表空间1表空间2表空间3表空间4
  • 4. Oracle的体系结构表空间 表空间是数据库的逻辑划分,每个数据库至少有一个表空间(system表 空间),为了便于管理、维护及提高运行效率,ORACLE建议创建多个表 空间来存储不同类型的数据。例如user_data表空间供一般用户使用, rollback_data表空间供回滚段使用,ydgl_data表空间供用电管理使用。 数据文件 每一个表空间由一个或多个数据文件组成,这些文件叫数据文件。数据文件里面不仅存储了ORACLE系统数据,而且还存储了所有的用户的数据。
  • 5. Oracle的体系结构实例 ORACLE实例是存取和控制数据库的软件机制,它包含一个系 统全局区和一组后台进程。 实例 = 内存分配 + 一组后台进程 如果把Oracle比作一部汽车,实例(instance)相当于汽车的 发动机一样,启动oracle前提应先启动instance.
  • 6. Oracle的体系结构ORACLE的体系结构的组成部分: 物理结构 逻辑结构 存储结构 进程结构
  • 7. Oracle的体系结构图
  • 8. 物理结构 数据库的物理结构是描述数据库中的数据以什么形式存储在介质上.每 一个Oracle数据库中的数据都被物理的存储在数据库文件中.分配给每一数 据库对象的物理空间总量取决于物理操作系统文件.因此,物理数据库结构是 由构成数据库的操作系统文件所决定。 数据文件 日志文件 控制文件 参数文件 警告、跟踪文件 一个数据库在物理上的构成数据文件日志文件控制文件参数文件警告、跟踪文件Sys1ORCL.ora Usr1ORCL.ora Tmp1ORCL.ora Rbs1ORCL.oraLog1ORCL.ora Log2ORCL.ora log3ORCL.ora Log4ORCL.oraCtl1ORCL.oraInitORCL.oraorclALRT.log
  • 9. 物理结构ORACLE数据库缺省安装完后,产生的物理结构如下图所示:文件类型文件名称文件描述物理位置数据文件 Sys1ORCL.ora系统数据文件\%ORACLE_HOME%\ DATABASE\Usr1ORCL.ora用户数据文件Tmp1ORCL.ora临时数据文件Rbs1ORCL.ora回滚数据文件重做日志文件Log1ORCL.ora日志文件1\%ORACLE_HOME%\ DATABASE\Log2ORCL.ora日志文件2log3ORCL.ora日志文件3Log4ORCL.ora日志文件4控制文件Ctl1ORCL.ora\%ORACLE_HOME%\ DATABASE\参数文件InitORCL.ora\%ORACLE_HOME%\ DATABASE\警告、跟踪文件orclALRT.log \%ORACLE_HOME%\ Rdbms80\trace\
  • 10. 物理结构-数据文件 数据文件是用于存储全部数据库数据。例如数据库雇员表(emp)中的数 据和索引数据等。一般来说,数据文件都有如下特征: 一个数据库包含一个以上的数据文件(系统数据文件) 数据文件必须与表空间相对应 一个表空间可包含一个或多个数据文件 数据文件可以改变其大小,也可以设置为自动扩充 为了提高数据库的操作性能,对于具有多个硬盘的系统,应合理布局数据 文件,以提高操作速度。例如,可在一个硬盘上存储数据文件,而在另一个 硬盘上存储索引文件,这样就能并行存取。
  • 11. 数据文件维护向一个表空间创建和增加数据文件 命令方式 ORACLE Enterprise Manager->Storage Manager(推荐) 示例:向表空间USER_DATA增加一个数据文件user2.dbf到D盘的oradata目录下, 大小为10M。 命令方式:ALTER TABLESPACE "USER_DATA" ADD DATAFILE 'd:\oradata\user2.dbf'SIZE 10M; 注意:已经创建的数据文件不能被删除。 允许和禁止数据文件的自动扩展 用户可创建或修改已存在的数据文件使它们在数据库需要更多空间时自 动增加文件尺寸这些文件以指定的增长量增长到指定的最大值. 如上例的命令方式: ALTER DATABASE DATAFILE ‘d:\oradata\user2.dbf' AUTOEXTEND ON NEXT 10M MAXSIZE 100M;
  • 12. 物理结构-重做日志文件 重做日志文件是用于记录数据库所做的全部变更,以便在系统发生故障 时,用它对数据库进行恢复。当对数据库进行修改时(如插入、修改、删除 等),oracle 将对数据库所做的全部变更首先记录在SGA的日志缓冲区中。 后台进程(LGWR)将日志缓冲区中的信息写入日志文件中。而ARCH后台进程 实现重做日志文件的归档。 日志文件都有如下特征: 一个数据库必须至少有两个日志文件,日志文件以循环方式使用 日志文件允许镜象 log1log2log3外部存储设备LGWR
  • 13. 重做日志文件 为了防止日志文件出现故障,Oracle允许设置镜象日志。所谓镜象日志 就是上不同的磁盘上同时维护两个或多个联机日志文件副本。这样如果一个 日志文件的磁盘发生故障,则可用另一个磁盘上的日志文件。 重做日志文件的归档的条件 重做日志文件的归档取决于是否启用了ARCHIVELOG(归档) 模式。 ORACLE在缺省状态下是没有启用ARCHIVELOG(归档) 模式,如何启用我们将在下面的章节学习。
  • 14. 创建联机重做日志组和成员 创建联机重做日志组和成员 方法1:用带有ALTER DATABASE ADD LOGFILE子句创建。 方法2:用带有ORACLE Enterprise Manager工具创建(推荐)。 下面的语句给数据库添加一个新的重做日志组 ALTER DATABASE ADD LOGFILE GROUP 5(‘d:\orant\database\log5_1.ora') SIZE 500K; 下面的语句给数据库添加一个新的重做日志组5,增加一个成员 ALTER DATABASE ADD LOGFILE MEMBER 'd:\orant\database\log5_2.ora' TO GROUP 5;
  • 15. 归档重做日志文件 归档重做日志文件(Archive Log Files)也叫离线日志文件。它是在线重做日志文件的拷贝。当数据库处于ARCHIVELOG状态时,归档进程将拷贝已写满的(Filled)重做日志文件到另一路径。归档日志文件主要用做数据库的恢复。 数据库缺省被创建为NOARCHIVELOG模式
  • 16. 归档重做日志文件设置数据库为ARCHIVELOG模式 1.关闭数据库并编辑初始化参数: Sql>shutdown immediate 编辑初始化参数使log_archive_start=true 2.启动数据库于MOUNT状态 Sql>startup mount; 3.修改数据库的归档模式 Sql>alter database archivelog; 4.打开数据库 Sql>alter database open;
  • 17. 查询重做日志和归档信息可以通过archive log list命令来查询数据库工作于哪种模式 Sql>archive log list 通过查询下面的数据字典可以获得重做日志组和成员的信息 V$log V$logfile
  • 18. 控制文件 每一个Oracle 数据库都有一个控制文件control file 控制文件记录数 据库的物理结构其中包括: 数据库名称 相关的数据库和联机重做日志文件的名称和位置 数据库创建的时间戳 当前日志序列号 检查点信息 Oracle 数据库的控制文件和数据库同时创建, 控制文件主要用于打开 数据库、存取数据库和恢复数据库。如果控制文件被破坏,则无法对数据库 进行操作。 为了防止控制文件被破坏,ORACLE允许镜象控制文件。一般一个数据库 应至少有两个控制文件,它们分别分布在不同的磁盘上。 控制文件的名字(包括镜象)由初始化参数文件(INITORCL.ORA)中的参数 CONTROL_FILES指出。
  • 19. 如何镜像控制文件创建附加的控制文件拷贝 用户创建新的控制文件的方法是将现有文件拷贝到新的地址将文件名添 加到控制文件列表类似地用户通过拷贝文件为新的名字或地址来重命名现有 文件并且改变控制文件列表中的文件名。 关闭数据库 使用操作系统的命令将现存的控制文件拷贝到不同的地方 编辑数据库初始化文件中的CONTROL_FILES 参数添加新的控制文件名或更改现存的控制文件。 重新启动数据库
  • 20. 删除控制文件删除控制文件 用户可以从数据库中删除控制文件例如如果控制文件的位 置不合适或控制文件破坏时用户可能希望这样做。记住在任何 时候数据库建议至少有两个控制文件。 关闭数据库。 编辑数据库初始化参数文件中的CONTROL_FILES 参数删除旧的控制文件名。 重新启动数据库。 警告:这个操作不能物理上从磁盘上删除不希望的控制文件,用户从数据库 中删除控制文件之后使用操作系统的命令来删除不需要的文件.
  • 21. 参数文件 参数文件在数据库启动过程中被读取来初始化ORACLE系统环 境。参数文件有如下作用: 设置数据库的缺省参数 设置SGA成份的大小 指定控制文件、镜象控制文件 通过调整内存结构来,优化数据库性能 定义各种的操作参数 每一个ORACLE数据库至少有一个的参数文件,参数文件是一 个文本文件。可通过操作系统编辑程序来维护它。参数文件在 修改后,必须关闭和重新启动数据库,才能使新的参数值有效 。
  • 22. 参数文件DB_NAME:数据库的标志名,是唯一的。 CONTROL_FILE:控制文件名,需指定绝对路径。 通常需修改的参数: DB_BLOCK_BUFFERS:SGA中数据块缓冲区的块数。 LOG_BUFFER:分配给SGA中日志缓冲区的大小 Shared_Pool_Size:共享SQL的大小。 Open_Cursors:一个用户同时能打开的游标最大数。 Processes:能同时连到ORACLE的进程最大数 Log_Archive_Start:启动自动归档 Log_Archive_Format:归档文件的文件名格式 Log_Archive_Dest:归档日志文件的目标(目录)
  • 23. 跟踪、警告文件 当ORACLE进程检测到一个错误时将会关于错误的信息转 储到它的跟踪文件,以便系统管理员通过跟踪文件的信息来排 除故障和调整应用程序和事例 。 orclAlRT 是一个特殊的跟踪文件也称警告文件,Oracle 使 用它来保存对数据库进行特殊操作的日志。 系统管理员应该经常查看跟踪文件,来防范系统免遭不测. 跟踪、警告文件的缺省路径在%ORACLE_HOME%/RDMBS80/TRACE目录下
  • 24. 存储结构 Oracle使用机器的内存来存放常用信息和所有运行在该机 器上的Oracle程序。也称 SGA(System Global Area),是ORACLE 的高速内存缓冲区。 SGA存放数据库中所有用户的共享信息,SGA设置的越大, 数据库运行的速度就越快,因为这样可以避免从磁盘上读取数 据。SGA在数据库启动时被分配,在数据库关闭时被收回。 SGA主要由以下成分构成: 数据库缓冲存储区(Database Buffer Cache) 日志缓冲区 (Redo Log Buffer) 共享池 (Shared Pool)
  • 25. 存储结构—数据库缓冲存储区 数据库缓冲存储区用于存储数据库中数据块的副本它是由一组缓冲块所 组成。缓冲块的数目由初始化参数DB_BLOCK_BUFFER的值所确定。 一个缓冲块(oracle块)的大小由参数DB_BLOCK_SIZE所确定。 当用户进程需要进行操作的数据块不在数据库缓冲区时则必须将被操作 的数据块从磁盘读入;如果被操作的数据块在数据库缓冲区中已存在,就可 直接对其操作。 大的数据库缓冲区可减少数据的I/O操作,提高查询的速度。 数据库缓冲存储区(字节)=DB_BLOCK_BUFFER*DB_BLOCK_SIZE
  • 26. 存储结构—日志缓冲区 日志缓冲区记录对数据库所作的变更信息。这些信息由 Insert、Updata、Delete、Create等操作所致,它们以日志项 的形式存放在日志缓冲区中。 后台进程LGWR将日志缓冲区中的信息写入磁盘的日志文件 中,可启动ARCH后台进程进行日志文件归档。 日志缓冲区的大小由初始化参数LOG_BUFFER(字节)的值所确定。
  • 27. 存储结构—共享池共享池包含SQL区和数据字典存储区。 SQL区包含执行特定的SQL语句所用的信息,这些信息为执行 同一个SQL语句的多个进程共享。其包含如下一些内容: SQL或PL/SQL语句的文本 SQL或PL/SQL语句的分析表 SQL或PL/SQL语句的执行规则 数据字典存储区:由于ORACLE经常使用数据字典,所以在 共享池专门开辟一片区域存放数据字典,该区域叫数据字典存 储区。数据字典存储区为所有用户进程所共享。 数据字典是ORACLE最重要的成分之一,它记录了所有用户的姓名、基表和视图的定义、用户权限以及数据存储等方面的信息。 共享池的大小由初始化参数SHARED_POOL_SIZE决定。
  • 28. 进程结构 ORACLE进程可分为用户进程、服务器进程和后台进程。 用户进程 当用户运行一个ORACLE应用程序时,系统就为它建立一个用户进程。 服务器进程 服务器进程处理与之相连的用户进程的请求。它与用户进程相通讯,为 用户进程的ORACLE请求服务。具体来说,它实现如下功能: 分析和执行SQL语句 将磁盘上的数据块读入共享的SGA的数据缓冲区中 把SQL语句的执行结果返回给用户进程
  • 29. 后台进程 后台进程也称系统进程,是ORACLE为完成某些特定的功能,而特设的 一类进程。 DBWR:数据写进程 用于把数据库缓冲存储区的数据写入磁盘数据文件中。 LGWR :日志文件写的进程 用于把日志缓冲区的数据写入磁盘日志文件中。 CKPT : 检测点进程 在检查点完成后用于修改数据文件和控制文件的标题。 ARCH : 归档方式备份进程 PMON :做程序的清洁工作,处理一些不正常退出的事件. SMON :做系统的清洁工作,执行系统出错后自动恢复工作. LCKN : Oracle系统表级或行级加锁的进程. RECO : 恢复进程。主要用于解决分布式事务时所出现的故障。
  • 30. 实例和数据库的启动和关闭 实例和数据库的启动和关闭是DBA的重要职责之一。只有打 开数据库,其他用户才能对数据库中的数据进行操作,一旦数 据库关闭,便不能对其操作。 重要的概念:实例(instance) ORACLE实例是存取和控制数据库的软件机制,它包含一个系统全局区和 一组后台进程。 实例 = 内存分配 + 一组后台进程 如果把Oracle比作一部汽车,实例(instance)相当于汽车的发动机一样 ,启动oracle前提应先启动instance.
  • 31. 实例和数据库的启动有三种启动方式: 随操作系统(例如NT)的启动而启动(缺省) 图形界面工具----Oracle Instance Manager 字符界面工具----Oracle Server Manager(svrmgr30.exe)
  • 32. 实例和数据库的启动过程启动实例但未安装(nomount) Oracle读INIT.ORA文件,定位控制文件,创建并初始化SGA,启动后台进程。安装(mount) Oracle打开控制文件确认数据文件和联机日志 文件的位置(不进行校验检查),安装数据库并获得实例锁。打开(open) Oracle打开并锁定数据文件,获取启动锁, 打开所有联机日志文件,在必要时进行冲突恢复
  • 33. 数据库启动学习服务管理器(svrmgr30.exe)的启动方式: 1)唤醒数据库服务管理器 C:\>SVRMGR30.EXE 2)以系统管理员身份登录 SVRMGR > connect internal; 注:Internal用户等价于SYS(数据字典用户) 3)启动instance;连上数据库;打开数据库 SVRMGR>STARTUP;
  • 34. 数据库关闭关闭步骤: 1)唤醒数据库服务管理器 C:\>SVRMGR30.EXE 2)以系统管理员身份登录 SVRMGR > connect internal; 注:Internal用户等价于SYS(数据字典用户) 3)关闭数据库;卸下数据库;关闭instance; SVRMGR>SHUTDOWN;
  • 35. 问题?