Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

3, OCP - instance management

849 views

Published on

Oracle Instance Management

  • Be the first to comment

  • Be the first to like this

3, OCP - instance management

  1. 1. Instance Management
  2. 2. Overview• 实例管理主要讨论以下方面的内容: – 数据库初始化参数的设置 – 数据库的启动和关闭 – 数据库告警日志和跟踪文件 – 数据字典和动态性能视图实例的管理对于数据库的性能调优 和 灾难恢复均十分重要, 一个好的oracle DBA应当十分熟悉这些内容.
  3. 3. Initialization Parameters - Overview• 初始化参数控制了oracle数据库的各个方面, 这 些参数中大概有300个是支持DBA进行设定的, 它们又分为基础参数(大概33个, 根据版本不同) 和高级参数, 通常而言DBA需要考虑的是那些基 础参数; 另外还有1500个左右的隐藏参数, 这些 参数是不支持DBA进行设定的;• 初始化参数分为静态的和动态两种类型, 前者 在实例启动之后不能被修改, 大部分参数都是 动态的, 这些参数的设置保存在pfile或者动态 的spfile中; 除了DB_NAME参数之外所有的参数 都有默认值, 如果没有在参数文件中进行设置, 则会使用它们的默认值.
  4. 4. Initialization Parameters - Parameter file• oracle数据库可以使用pfile或者spfile作为启动参数文件, pfile的命名格式为: – init${ORACLE_SID}.ora 或者 init.ora spfile是在oracle的后期版本引入的, 命名格式为: – spfile${ORACLE_SID}.ora 或者 spfile.ora spfile相比pfile的好处在于: – 动态改变参数, 无需重启数据库; – spfile不能被人工编辑, 从而减少错误的发生; – 可以使用RMAN对spfile进行备份.• 实例在启动时会查看${ORACLE_HOME}/dbs(Unix, linux)或者 ${ORACLE_HOME}/database目录, 并按照如下顺序读取参数文件: – spfile${ORACLE_SID}.ora (SPFILE = Server Parameter File) – spfile.ora (SPFILE) – init${ORACLE_SID}.ora (PFILE) – init.ora (PFILE) 使用下面的sql语句查看当前使用的是pfile还是spfile: SELECT DECODE (value, NULL, PFILE, SPFILE) "Init File Type", value FROM sys.v_$parameter WHERE name = spfile;• 使用如下语句创建pfile或者spfile create spfile [=spfilename] from pfile [=pfilename]; create pfile [=pfilename] from spfile [=spfilename];
  5. 5. Initialization Parameters - Static vs. Dynamic• 可以通过视图v$parameter和v$spparameter查 看当前的启动参数的设置, 前者返回的是当前 实例运行时参数设置, 后者则是spfile中保存的 参数设置, 通常情况下两者相同. 不同的情况可 能发生在: DBA修改了某个静态参数的值, 并且 写入了spfile; 或者修改某个动态参数的值, 但未 写入spfile.• 通过如下sql语句判断参数是静态的还是动态的: select NAME, ISSES_MODIFIABLE, ISSYS_MODIFIABLE from v$parameter where name like %%;
  6. 6. Initialization Parameters - Alter Parameter Value• 使用alter system语句修改初始化参数, 该语句会在系统级别修改 参数的值, 格式如下: alter system set pname=pvalue [scope=both|memory|spfile] scope选项各个值的含义分别是: – both 同时修改内存和spfile – memory 仅修改内存 – spfile 仅修改spfile 默认情况下scope值为both. 需要注意以下情况会导致 该语句失败: – 修改静态参数但scope未指定为spfile; – 使用pfile启动数据库但指定scope为spfile;• 根据不同的参数, 可以在system级别, session级别或者同时允许在 这两个级别进行设置. 比如optimizer_mode参数既可以在system级 别也可以在session级别设置, nls_date_format参数则只允许在会 话级别进行设置. 会话级别设置则使用alter session 语句, 该语句 的格式: alter session set pname=pvalue
  7. 7. Initialization Parameters - Basic Parameters• 通常DBA需要考虑的是基础启动参数, 使用如下sql 查询有哪些基础参数: select name,value from v$parameter where isbasic=TRUE order by name; 下面是基础参数的一个列表(这些参数将分别在之 后的章节中讨论):
  8. 8. Initialization Parameters - Basic Parameters
  9. 9. Initialization Parameters - Basic Parameters
  10. 10. Database Control - Overview• Database Control是oracle提供的一个基于Java & Perl编写的工 具, 用于实现对数据库服务器的远程控制, 需要通过web浏览器 进行操作. 以oracle系统用户登录, 使用以下命令启动/停止/查 看Database Control的状态(执行命令之前确保正确设置了 ORACLE_HOME, ORACLE_SID, PATH等环境变量): emctl start|stop|status dbconsole 使用类似如下的链接进行登录: https://hostname:port/em/, 会 打开下面的页面. 默认端口为1158, 具体可以查看 $ORACLE_HOME/install/portlist.ini文件.• Database Control是oracle推荐用于数据库管理的方式, 可以用 于执行如下动作: – 启动和关闭数据库以及监听器; – 查看数据库运行状态, 数据库配置状态; – 查看数据库性能信息.
  11. 11. Database Listener• oracle数据库监听器用于接收对数据库的连接请求, 有3中方式启动监听器: – 使用lsnrctl工具命令 使用oracle用户登录后, 运行lsnrctl start|stop|status命令 – 使用database control 在相关的页面中可以找到启动与停止监听器的链接 – windows平台上可注册为系统服务
  12. 12. SYSDBA vs. SYSOPER• SYSDBA 和 SYSOPER是oracle数据库的角色, 角色是一 个权限控制的概念在以后会讲到. 通过操作系统或 者密码文件验证, 用户可以以SYSDBA或者SYSOPER角 色登录. SYSOPER角色可以在sql*plus中执行如下命令: startup shutdown alert database mount|open|close|dismount alter [database|tablespace] begin|end backup recover SYSDBA角色拥有对数据库的最高控制权限, 比如以 SYSDBA登录的用户可以创建用户, 创建数据库等; 默 认情况下只有SYS用户拥有SYSDBA/SYSOPER角色, SYS 用户可以将这些角色分配给其他的用户.
  13. 13. Database Startup - Overview• 可以通过两种方式启动oracle数据库: – 通过SQL*PLUS命令行工具 SQL*PLUS是oracle自带的一个oracle客户端工具, 可以通过该工具连 接本地或者远程数据库, 并进行相应的操作. DBA通常使用如下的两 个步骤登录数据库: sqlplus /nolog # 进入sqlplus, 不提示验证信息 connect username/passwd [as sysdba] # 登录数据库 startup # 运行startup命令 – 使用Database ControL• Logon by OS Auth 如果可以访问数据库所在的操作系统并且具备相应的权限, 那么 则可以绕过数据库的验证直接以SYSDBA的身份登录, 这要求系 统用户在dba系统用户组中. 在创建数据库时, 我们创建了oracle 用户并将它设置在dba用户组中, 因此该用户可以直接以SYSDBA 身份登录, 通过以下命令: sqlplus / as sysdba. 当用户以这种方式 登录数据库时实际上是以SYS用户登录.
  14. 14. Database Startup - Startup: nomount, mount and open• oracle数据库的启动可以分为这些阶段: 启动实例(内存+ 进程), 挂载数据库(mount), 打开数据库(open). 数据库具 有如下状态: – SHUTDOWN(关闭) – NOMOUNT 此时数据库实例已经启动但数据库没有被挂载. – MOUNT 此时数据库实例已经启动, 并且已读取控制文件. – OPEN 数据库实例已经启动, 数据文件被打开, 等待客户端用户连接.• 在不同的数据库启动阶段需要读取相应的文件, 那么 oracle是如何读取到这些文件的呢? 下面按照数据库启动 的各个阶段进行介绍. – NOMOUNT 此阶段需要读取数据库初始化参数文件, 参考《 Parameter file》
  15. 15. Database Startup- Startup: nomount, mount and open – MOUNT 此阶段需要读取控制文件, 控制文件是通过前一 阶段读取的CONTROL_FILES参数进行定位的. 这一 阶段会读取数据库数据文件/在线重做日志文件 的位置信息, 但此时不会定位和读取这些文件. – OPEN 此阶段会根据前一阶段读取的文件位置信息对这 些文件进行定位和打开.
  16. 16. Database Startup- Startup: nomount, mount and open
  17. 17. Database Shutdown• 关闭数据库的顺序与打开数据库正好相反, 首先数据库被关闭, 然后被卸载, 最后实例被终止. 在关闭数据库阶段, 所有的回话 被终止, 活动的事务被回滚, CKPT进程被调用. 最后, 数据文件 和在线重做日志文件被关闭; 卸载阶段, 控制文件被关闭; 最后, SGA内存被释放相应的后台进程被终止, 实例终止.• Shutdown: NORMAL, TRANSACTIONAL, IMMEDIATE, and ABORT 执行shutdown时, 可以指定为上述四个选项: NORMAL 默认选项, 不允许新的会话, 当所有的用户都退出登录时, 数据库被关闭; TRANSACTIONAL 不允许新的会话, 不处在事务中的会话被终止, 其它的会话在事务完成时被 终止. 当所有的会话都终止时, 数据库被关闭; IMMEDIATE 不允许新的会话, 所有当前连接的会话被终止, 活动的事务被回滚, 然后数 据库被关闭; ABORT 相当于断电(power failure), 实例被立即终止. TIP: ABORT操作不会损坏数据库, 但是在abort操作之后不建议对数据库作 备份操作.
  18. 18. Database Shutdown• Shutdown: NORMAL, TRANSACTIONAL, IMMEDIATE, and ABORT 前三种类型的数据库关闭均被称为有序的(orderly), 在所有的会话终止之后PMON会回滚所有未完成的 事务, 之后CKPT进程被调用, LGWR进程将所有的重做 日志写入文件; 最后文件句柄被关闭. 在这种情况下, 数据库最终处在一致的(consistent)状态. ABORT类型的关闭被称为非有序的(disorderly), 此时 数据库处在一种不一致的(inconsistent)状态. 在数据 库下一次启动时, 会修复这种状态.• 可以使用如下命令代替shutdown: alter database close; alter database dismount;
  19. 19. Alert Log and Trace File• 告警日志文件(Alert log file)存放在数据库 BACKGROUND_DUMP_DEST参数指定的位置, 按照alert_SID.log的 格式命名, 该文件包含了对实例或者数据库采取的某些关键操作, 具体包含: – 启动和停止数据库操作, 包含中间命令比如alter database mount; – 实例内部错误, 比如ORA-600错误; – 检测到的数据文件块损坏; – 死锁信息; – 影响数据库物理存储结构的操作, 比如创建或者重命名数据文件或 者重做日志文件; – 修改启动参数的ALTER SYSTEM命令; – 重做日志切换和日志归档操作. 关于数据库启动的告警日志会显示所有非默认配置的初始化参数, 结 合ALTER SYSTEM/DATABASE命令的记录, 可以得到数据库/实例的所有 历史变化, 这对于数据库问题的诊断有很大的价值. Tip: 对于很多的DBA而言, 告警日志是他们诊断问题的第一站.
  20. 20. Data Dictionary Views• Oracle数据字典是对数据库的定义, 动态性能视图则包含 了当前实例的运行性能信息, 这两者对于实例性能的监 控和诊断非常具有参考价值.• Data Dictionary Views 数据字典包含的是数据库元数据, 它包括: 数据库的物理 和逻辑描述, 数据库对象(表/索引/PLSQL过程)描述, 完整 性约束, 用户定义, 安全信息, 以及性能监控信息. 数据字 典以段(segment) 存储在SYSTEM/SYSAUX表空间中. 常用 的数据字典视图有: – DBA_OBJECTS A row for every object in the database – DBA_DATA_FILES A row describing every datafile – DBA_USERS A row describing each user – DBA_TABLES A row describing each table – DBA_ALERT_HISTORY Rows describing past alert conditions
  21. 21. Dynamic Performance Views• 有超过300多个的动态性能视图, 这些视图的名称以 V$开头, 实际上它们是指向相应的V_$视图的同义词. 动态性能视图的数据大部分基于实例, 比如 V$INSTANCE/V$SYSSTAT是基于实例的视图, 这些视图 的数据只要实例启动了就可以读取比如数据库处在 nomount状态也可以读取这些视图;有一小部分则是 根据控制文件得到的, 比如v$database, v$datafile, 这 些视图必须等到数据库打开之后才能够被访问.• 动态性能视图在数据库启动阶段被创建, 随着实例 的运行数据会增加或者被更新. 在数据库关闭时, 这 些视图被删除. TIP: 性能视图和数据字典视图会存在一些重叠, 比如 v$tablespace描述的是数据字典信息; 另外字典视图 通常是复数, 而性能视图为单数.
  22. 22. END

×