博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DBA1 第四章:管理oracle实例

Posted on 2011-09-01 23:42  little健健  阅读(433)  评论(0编辑  收藏  举报
  • 启动和停止 Oracle 数据库和组件
  • 管理框架
  • 启动和停止database control
    • 启动 emctl start dbconsole
    • 停止 emctl stop dbconsole
    • 查看状态 emctl status dbconsole
  • 打开和停止监听  
    • 启动 lsnrctl start
    • 停止 lsnrctl stop
    • 查看状态 lsnrctl status
  • isql*plus和sql*plus(1.执行数据库管理操作  2.通过执行 SQL 命令在数据库中查询、插入、更新或删除数据)
    • isql*plus(基于浏览器,默认不能让有dba权限的用户登录)
      • 启动前先启动isqlplus服务  isqlplusctl start
      • 在浏览器中输入URL  http://host name:port/isqlplus(默认端口号5560)
      • 修改端口  修改$ORACLE_HOME/install/portlist.ini文件 
    • sql*plus(命令行工具)
      • 用处:
        1. 输入、编辑、运行、存储、检索和保存SQL 命令和 PL/SQL 块
        2. 格式化、计算、存储和打印查询结果
        3. 列出任何表的列定义
        4. 向最终用户发送消息或接受来自最终用户的响应
        5. 执行数据库管理
      • 启动和退出
        1. 打开终端并切换至oracle用户下
        2. 无用户 sqlplus / nolog  普通用户 sqlplus username/password  DBA  sqlplus / as sysdba
        3. 切换用户  使用conn  如:现已用普通用户登录,切换至DBA  conn / as sysdba
        4. 退出   quit
      • 从 Shell 脚本调用 SQL*Plus     例如:   调用:./hr.sh
      • 1 #hr.sh
        2 sqlplus hr/hr <<EOF
        3 select count(*) from employees;
        4 update employees set salary =
        5 salary*1.10;
        6 commit;
        7 quit
        8 EOF
        9 exit

          

      • 从 SQL*Plus 调用 SQL 脚本  调用:$sqlplus hr/hr @hr.sql    或者  sql> @hr.sql
      • 1 select * 
        2 from employees
        3 where employee_id=101;

          

  • 启动EM
    1. 启动dbconsole  emctl start dbconsole
    2. 启动监听           lsnrctl start
    3. 启动数据库        sql>startup
    4. 登录
    5. 作用:
      • 查看预警概要与性能图
      • 创建和修改对象
      • 执行备份与恢复
数据库初始化参数
  • 参数文件
    1. 服务器参数文件(首选):由数据库服务器写入或读取的二进制文件,不能手动进行编辑。此文件驻留在执行 Oracle 数据库的服务器中,而且永远存在,不受数据库关闭或启动的影响。默认名称为 spfile<SID>.ora
    2. 文本参数文件:由数据库服务器读取,但不能由其写入。必须使用文本编辑器手动设置和更改初始化参数设置。默认名称为 init<SID>.ora
  • 查看和修改参数
    1. em :管理-->所有初始化参数
    2. sql* plus 
      • 显示参数 show parameter  [ ]
      • 修改参数 alter system set sga_target =150M scope=both/spfile/memory
      • spfile:写入初始化文件,更改将在下次启动时生效。动态参数,静态参数都一样可以。唯一能修改静态参数
      • memory:只在内存上修改,立即生效,但重启后将不再生效,只适合动态参数
      • both:spfile+memory

数据库启动和关闭

启动 sql>startup  [option]
    • nomount
      • 过程
        1. 按以下顺序搜索 <oracle_home>/dbs 中具有特定名称的文件:
          • spfile<SID>.ora
          • 如果未找到,则搜索 spfile.ora
          • 如果未找到,则搜索 init<SID>.ora
        2. 分配SGA
        3. 启动后台进程
        4. 打开alert<SID>.log 文件和跟踪文件
      • 作用
        1. 创建数据库期间
        2. 重新创建控制文件期间
        3. 执行某些备份和恢复方案期间
    • mount
      • 过程
        1. 将数据库与以前启动的实例关联
        2. 定位并打开参数文件中指定的控制文件
        3. 通过读取控制文件来获取数据文件和联机重做日志文件的名称和状态。但是,此时不必执行任何检查便可验证数据文件和联机重做日志文件是否存在
      • 作用
        1. 重命名数据文件
        2. 启用和禁用联机重做日志文件归档选项
        3. 执行完整的数据库恢复
    • open(会验证是都可以打开所有数据文件和联机重做文件)(默认)
      • 过程
        1. 打开联机数据文件
        2. 打开联机重做日志文件
  • 关闭  sql>shutdown [option]
    • normal(默认)
      1. 不可以建立新连接。
      2. Oracle 服务器等待所有用户断开连接才完成关闭。
      3. 数据库和重做缓冲区会写入到磁盘中。
      4. 后台进程被终止,从内存中删除 SGA
      5. Oracle 服务器在关闭实例之前关闭并断开数据库。
      6. 下一次启动不需要进行实例恢复。
    • TRANSACTIONAL
      1. 任何客户机都不能利用这个特定实例启动新事务处理
      2. 客户机在结束正在进行的事务处理后断开连接。
      3. 完成所有事务处理后立即执行关闭。
      4. 下一次启动不需要进行实例恢复。
    • IMMEDIATE
      1. Oracle 数据库正在处理的当前 SQL 语句尚未完成。
      2. Oracle 服务器不等待当前连接到数据库的用户断开连接。
      3. Oracle 服务器会回退活动的事务处理,而且会断开所有已连接的用户。
      4. Oracle 服务器在关闭实例之前关闭并断开数据库。
      5. 下一次启动不需要进行实例恢复。
    • ABORT
      1. 立即终止 Oracle 数据库正在处理的当前 SQL 语句。
      2. Oracle 服务器不等待当前连接到数据库的用户断开连接。
      3. 数据库和重做缓冲区不写入到磁盘。
      4. 不回退未提交的事务处理。
      5. 实例已终止,但未关闭文件。
      6. 数据库未关闭,也未卸载。
      7. 下一次启动时需要进行实例恢复,实例恢复是自动进行的。

预警日志
  • 内容:相关链接-->预警日志内容   alert_<SID>.log位于数据库服务器上,存储在background_dump_dest初始化参数指定目录中
  • 历史:相关链接-->预警历史


动态性能视图(通过动态性能视图可访问有关在数据库中更改状态和条件的信息。)(读取可能不一致
  • 内容
    • 会话
    • 文件状态
    • 作业和任务的进度
    • 锁定
    • 备份状态
    • 内存使用和分配
    • 系统和会话参数
    • SQL 执行
    • 统计信息和度量
  • 示例:
    SQL> SELECT sql_text, executions FROM v$sql
    WHERE cpu_time > 200000;

      

    SQL> SELECT * FROM v$session WHERE machine = 
    'EDRSR9P1' and logon_time > SYSDATE - 1;

      

    SQL> SELECT sid, ctime FROM v$lock WHERE 
    block
    > 0;