学习目标 启动和停止Oracle DB和组件 使用Oracle Enterprise Manager 使用SQL*Plus访问数据库 修改数据库初始化参数 描述数据库启动阶段 描述数据库关闭选项 查看预警日志 访问动态性能视图
管理框架 Oracle Database 11g发行版2管理框架组件包括: -数据库实例 -监听程序 -管理界面(OEM) -Database Control -管理代理(使用Grid control) 启动和停止Database Control 用于启动dbconsole进程命令 emctl start dbconsole 用于停止dbconsole进程命令 emctl stop dbconsole 用于查看dbconsole进程状态的命令 emctl status dbconsole 注意:emctl命令在$ORACLE_HOME/bin目录下,如果安装了Oracle Grid Infrastructure和Oracle Database,则会有两个$ORACLE_HOME/bin目录并且都有emctl程序。调用emctl程序时,应始终使用OracleDB中的$ORACLE_HOME/bin。 Oracle Enterprise Manager 安装Oracle DB软件时,Oracle Universal Installer(OUI)会安装OEM基于Web的Database Control部件作为管理Oracle DB的主要工具。 URL地址:https://machine_name:port/em 默认端口:1158 如果多个数据库的情况下要确定端口号,查看portlist.ini文件,在$ORACLE_HOME/install目录下 登录URL https://machine_name:port/em 时 数据库已启动,则需输入SYS/SYSMAN或SYSTEM账户,选择具有特殊数据库管理权限的normal或sysdab 数据库已关闭,OEM会显示Startup/Shutdown and Perform Recovery(启动/关闭并执行恢复) 注意:如果启动enterprise manager时出现了问题,需确认监听程序是否正常 。 OEM_Database(数据库)主页 Performance(性能) Availability(可用性) Server(服务) Schema(方案) Data Movement(数据移动) Software and Support(软件和安装) 数据库主页上可以查看实例的性能和状态信息: -实例名称/数据库版本/Oracle主目录位置/介质恢复选项和其它相关的实例数据 -当前实例可用性 -未处理预警 -与会话和SQL相关的性能信息 -主要空间使用情况 -提供更具体详细信息的细化链接(例如 Listener_<host_name>) 其它Oracle工具 SQL*Plus为数据库操作提供了另一个界面 -执行数据库管理操作 -通过执行SQL命令在数据库中查询/插入/更新或删除数据 SQL Developer -是一个用于访问Oracle DB实例的图形化用户界面 -支持以SQL和PL/SQL进行开发 -Oracle DB的默认安装中提供此工具 SQL*Plus工具 -是一个命令行工具 -可以通过交互方式或者在批处理模式下使用 -可以完成的工作: -输入/编辑/运行/存储/检索和保存SQL命令和PL/SQL块 -格式化/计算/存储和打印查询结果 -向最终用户发送消息或接受来自最终用户的响应 -执行数据库管理 $ sqlplus <userid>/<pwd> or /nolog SQL> connect <username> Shell脚本中可以调用SQL*Plus sqlplus <userid>/<pwd> <<EOF select * from table; commit; quit EOF SQL*Plus中调用SQL脚本 sqlplus <userid>/<pwd> @script.sql SQL>@script.sql SQL>@script 初始化参数文件 启动实例时会读取初始化参数文件,参数文件有两种类型。 服务器参数文件(SPFILE):首选初始化参数文件,它是由数据库服务器写入和读取的二进制文件,不得手动进行编辑。默认名称spfile<SID>.ora,启动时会自动搜索此文件。 文本初始化参数文件(pfile):这类初始化参数文件可由数据库服务器读取,但不由其写入。必须使用文本编辑器手动设置和更改初始化参数,这些设置是永久的。默认名称init<SID>.ora,如果启动时未找到spfile,则自动搜索此文件。 注意:在Linux系统中,Oracle DB会在$ORACLE_HOME/dbs目录中搜索初始化文件。如果采用了ASM时,SPFILE通常位于ASM磁盘中,这种情况下$ORACLE_HOME/dbs目录中init<SID>.ora文件中,会标识SPFILE的位置。 初始化参数值的类型 -Boolean布尔类型 -String字符类型 -Integer整型 -参数文件 -保留 -Big Integer 派生参数值 一些初始化参数是派生的,它们的值是通过其它参数计算得到的。如SESSIONS参数的默认值是由PROCESSES参数的的值派生。 与操作系统相关的参数值 一些初始化参数的有效值或值范围与主机操作系统相关。如DB_FILE_MULTIBLOOK_READ_COUNT参数指定在一次顺序扫描期间在一个I/o操作中读取的最大块数。 设置参数值 简化初始化参数 基本初始化参数(30个) 高级初始化参数(大约314个) -确定全局数据库名称:DB_NAME和DB_DOMAIN -指定快速恢复区和大小:DB_RECOVER_FILE_DEST和DB_RECOVER_FILE_SIZE -指定所有SGA组件的总大小:SGA_TARGET -指定UNDO表空间:UNDO_TABELSPACE -COMPATIBLE数据库版本初始化参数,不可逆兼容。 -指定一个或多个控制文件:CONTROL_FILES -数据库最大文件数:DB_FILES(值范围 1~8) -数据库用户进程最大连接数:PROCESSES(6~N 默认值100) -数据库标准块大小:DB_BLOCK_SIZE(2k,4k,8k,16k,32k 默认值8k) -标准块缓冲区高速缓存大小:DB_CACHE_SIZE(至少16MB,4MB*CPU_COUNT或48MB中最大值) 初始化参数完整列表《Oracle Database Reference》 SGA_TARGET组件初始化参数 -缓存区高速缓存(DB_CACHE_SIZE) -共享池(SHARED_POOL_SIZE) -大型池(LARGE_POOL_SIZE) -JAVA池(JAVA_POOL_SIZE) -流池(STRAEMS_POOL_SIZE) 以下参数不受ASMM的影响 -日志缓存区(LOG_BUFFER) -其他缓冲区高速缓存(keep和recycle)和其它块大小 -固定SGA和其它内部分配 -PGA_AGGREGATE_TARGET参数:实例所有服务器进程的程序全局区(PGA)内存量,默认值是10M或SGA大小的20%(取两者中较大的值) -UNDO_MANAGEMENT参数:AUTO或MANUAL 使用SQL*Plus查看参数 SQL>select name,value from v$parameter; SQL>show parameter shared_pool_size 参数相关视图 V$SPPARAMETER:isspecified值为false表示未使用此参数 V$PARAMETER2 V$SYSTEM_PARAMETER V$SYSTEM_PARAMETER2 废弃、老式的参数视图:v$obsolete_parameter 隐含参数视图:X$KSPPI、X$KSPPCV、X$KSPSV 更改初始化参数值 静态参数: -只能在参数文件中更改 -必须重启实例才能生效 -总共约110个参数 动态参数: -可以在数据库联机时更改 -可以在以下级别更改 -会话级别 -系统级别 -在会话持续期间有效或有效性取决于scope设置 -使用alter session和alter system命令进行更改 -总共约234个参数 SCOPE=SPFILE:更改仅在服务器参数文件中,永久保持有效。 SCOPE=MEMORY:更改仅应用到内存中,立即生效,但不会永久保持。 SCOPE=BOTH:更改会应用到服务器参数文件和内存中。立即生效并且永久保持。 某些动态参数,还可以指定DEFERRED关键字 backup_tape_io_slaves recyclebin audit_file_dest object_cache_optimal_size object_cache_max_size_percent sort_area_size sort_area_retained_size olap_page_pool_size 启动Oracle DB实例 NOMOUNT,启动实例过程执行以下任务 -搜索$ORACLE_HOME/dbs中具有特定名称的文件 -搜索spfile<SID>.ora -如果未找到spfile<SID>.ora,则搜索spfile.ora -如果未找到spfile.ora,则搜索init<SID>.ora 分配SGA 启动后台进程 打开alert_<SID>.log文件和跟踪文件 MOUNT,数据库装载过程执行以下任务 -将数据库与之前启动的实例关联 -定位并打开参数文件中指定的所有控制文件 -通过读取控制文件来获取数据文件和联机重做日志文件的名称和状态(但是,此时不会执行检查来验证是否存在数据问ianhe联机重做日志文件) 在装载过程可以做特定的维护操作 -重命名数据文件(打开数据库时可重命名脱机表空间的数据文件) -启动和禁用联机重做日志文件归档 -执行完整的数据库恢复 OPEN,打开数据库 -打开数据文件 -打开联机重做日志文件 最后这个阶段,Oracle服务器会验证是否可以打开所有数据文件和联机重做日志文件,还会检查数据库的一致性。如有必要,系统监控(SMON) 后台进程将启动实例恢复。 SQL>startup SQL>startup nomount SQL>alter database mount; SQL>alter database open; $srvctl start database -d orcl -o mount 关闭Oracle DB实例 -ABORT:立即关闭数据库,下次启动之前进行恢复 -IMMEDIATE(常用选项):回滚未提交的事物处理,一致性关闭数据库。 -TRANSACTIONAL:允许现有事务完成,但不会接受新的事务处理。 -NORMAL:等待所有会话断开 SHUTDOWN NORMAL -不可以建立新连接 -Oracle服务器在完成关闭之前先等待所有用户断开连接 -重做缓冲区的数据被写入磁盘 -后台进程终止,从内存中删除SGA -Oracle服务器在关闭实例之前关闭并卸载数据库 -下一次启动不需要进行实例恢复 SHUTDOWN TRANSACTIONAL -任何客户端都不能在这个特定实例上启动新事物处理 -会在客户端结束事务后断开该客户端 -完成所有事务处理后立即执行关闭 -下一次启动不需要进行实例恢复 SHUTDOWN IMMEDIATE -Oracle DB正在处理的SQL执行回退。 -Oracle 服务器不会等待当前连接到数据库的用户断开连接。 -Oracle 服务器会回退活动的事务处理,并会断开所有连接用户。 -Oracle 服务器在关闭实例之前卸载数据库。 -下一次启动不需要进行实例恢复 。 SHUTDOWN ABORT -Oracle DB正在处理的当前SQL语句会立即终止。 -Oracle 服务器不等待当前连接到数据库的用户断开连接。 -重做缓冲区的数据未写入磁盘。 -不回退未提交的事务处理。 -实例终止,但不关闭文件。 -数据库未关闭或未卸载 -下一次启动时需要进行实例恢复,实例恢复时自动进行的。 SQL>shutdown SQL>shutdown transactional SQL>shutdown immediate SQL>shutdown normal SQL>shutdown abort $srvctl stop database -d orcl -o abort 查看预警日志 每个数据库都有一个alert_<sid>.log文件。默认存储在$ORACLE_BASE/dig/rdbms/<db_name>/<SID>/trace中 数据库预警日志文件是按时间顺序列出消息的日志文件 -启动时使用的任何非默认初始化参数 -已发生的所有内部错误(ORA-600)块损坏(ORA-1578)和死锁(ORA-60) -管理操作,SQL语句CREATE /ALTER/DROP DATABASE和TABLESPACE STARTUP/SHUTDOWN/ARCHIVE LOG/RECOVER -与共享服务器和分派程序进程的功能相关的多个消息和错误 -自动刷新实体化视图发生的错误 通过SQL*Plus确定预警日志文件的位置 查询v$DIAG_INFO视图 使用跟踪文件 每个服务器和后台进程都会向关联的跟踪文件写入信息 错误信息写入相应的跟踪文件中 自动诊断资料档案库(ADR) -包含整个系统的跟踪和事件记录信息的中央资料档案库 -存储数据库诊断数据 -跟踪 -预警日志 -健康状态监控报告 ADR根目录又称为ADR基目录,其位置由DIAGNOSTIC_DEST初始化参数设置 -如果设置了ORACLE_BASE环境变量,DIAGNOSTIC_DEST则使用ORACLE_BASE目录 -如果没设置ORACLE_BASE环境变量,则使用$ORACLE_HOME/log 动态性能视图 -会话 -文件状态 -作业和任务的进度 -锁 -备份状态 -内存使用率和内存分配 -系统参数和会话参数 -SQL执行 -统计数据和度量 注:DICT和DICT_COLUMNS视图包含这些动态性能视图名称。 动态性能视图注意事项 -这些视图由SYS用户所有 -不同场合可使用的视图也不同 -实例已启动 -数据库已装载 -数据库已打开 -可以通过查询v$fixed_table查看所有视图名称 -这些视图通常称为“v$视图” -因为其数据是动态的,所以在这些视图上不能保证读取一致性 数据字典 -由Oracle DB服务器使用,可用于查找关于用户/对象/约束和存储的信息 -对象结构或定义修改时,Oracle DB将做出相应的维护 -可供任意用户使用以查询关于数据库的信息 -由SYS用户拥有 -不得使用SQL直接进行修改