zoukankan      html  css  js  c++  java
  • oracle系统视图

    1.V$SESSION_WAIT 
    session在数据库中当前正在等待什么,每一个连接到实例的session都对应一条记录。

    (2)-V$SESSION_EVENT
    记录了session自启动起所有的事件。

    通过ADDRESS和HASH_VALUE可以为一判定一个SQL

    v$sqltext存储的是完整的SQL,SQL被分割
    v$sqlarea存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息
    v$sql存储的是具体的SQL 和执行计划相关信息,实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息


    即使是相同的数据库用户,若 session 的优化模式、session 级的参数 等不一样,执行计划也能不同。
    所以即使相同的sql,也可能具有不同的执行计划!  
      v$sql join to v$sql_plan 就代表了具体的sql的执行计划,通过下面3个字段做连接  
      ADDRESS RAW(4)
      HASH_VALUE NUMBER
      CHILD_NUMBER NUMBER
    而v$SQLAREA 忽略了 执行计划 等差异,只是在形式上sql文本看起来一样!相当于做了个聚合,是多个不同执行计划的sql的聚合和累计信息


    v$session_longops:
    当事务回滚时,事件被记录在视图 V$SESSION_LONGOPS 中,该视图显示长期运行的事务。如果进程耗时超过六秒,则记录出现在该视图中。
    可以通过如下语句查看回滚需要的时间:
    select time_remaining from v$session_longops where sid = ;

    V$FAST_START_TRANSACTIONS:
    在大型的更新期间,实例异常关闭,或spid异常中断,发生故障的事务被回滚。如果启用了用于并行恢复的初始化参数值,则回滚是并行地而不是串行地发生。
    视图 V$FAST_START_TRANSACTIONS 显示为回滚故障事务所产生的事务。类似的视图 V$FAST_START_SERVERS 显示对回滚进行处理的并行查询服务器的数量。
    select * from v$fast_start_transactions;
    可通过UNDOBLOCKSDONE、UNDOBLOCKSTOTAL估算回滚时间。


    当我们想查看当前session的sid时经常会用到这两个function,此外也可通过这两个function查询当前session的更多信息。
    such as:
    select userenv('sid') from dual;
    select sys_context('userenv', 'sid') from dual;
    select sys_context('userenv', 'session_user') from dual;
    select sys_context('userenv', 'ip_address') from dual;
    sys_context包含了userenv的所有功能,详细参数参看:
    userenv:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions208.htm#SQLRF06157
    sys_context:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions165.htm#SQLRF06117


    spool 生成纯净文件
    1.创建sql文件,该文件包含格式相关的参数设置和脚本生成语句
    例:
    [oracle@db 20090709]$ more exp.sql
    set trimspool on --去除重定向(spool)输出每行的拖尾空格,缺省为off
    set term off   --关闭显示脚本中的命令的执行结果,防止滚屏影响操作,当数据量大时非常有用,缺省为on
    set feedback off --关闭回显本次sql命令处理的记录条数,如:** rows selected,缺省为on
    set pagesize 0  --设置输出每页行数,缺省为24,为了避免分页,设定为0,使用set head off去除列名时会造成空行
    set line 1200   --设置输出每行的字符数,可根据实际情况设置,防止换行
    spool userSecurity.sql
    @exp_data1.sql
    spool off
    spool pay.sql
    @exp_data2.sql
    spool off

    @exp_data1.sql、@exp_data2.sql中是select语句
    如果不创建该sql脚本,则生成的文件中文件头尾分别为:
    SQL> ....sql语句或@文件
    SQL>spool off
    补充:当不采用上述方式时,sqlplus -s / as sysdba也可达到效果

    2.通过shell或直接sqlplus调用该脚本
    例1:
    sqlplus / as sysdba
    SQL> @exp.sh
    例2:
    [oracle@db 20090709]$ more exp.sh
    #!/bin/sh
    sqlplus / as sysdba <<EOF
    @exp.sql
    EOF

    [oracle@db 20090709]$ sh exp.sh


    dbms_scheduler调用shell脚本
    1.使用sys用户创建EXECUTABLE类型scheduler。
    2.指定shell类型,如:#!/bin/sh
    3.shell脚本内设置环境变量
    [oracle@dbathree qxy]$ more check_env.sh
    #!/bin/sh
    env | sort | tee >> /orahome/qxy/env.out
    执行后可以看到:
    [oracle@dbathree qxy]$ more env.out
    PWD=/
    SHLVL=1
    _=/bin/env

    4.脚本中使用全路径

    如果想使用其它用户可以通过grant create external job to user_name实现,但好像10g有bug,没调试成功。

    创建语句:
    begin
    dbms_scheduler.create_job(job_name        => 'sys.test_schem',
                                job_type        => 'EXECUTABLE',
                                job_action      => '/orahome/qxy/test_schem.sh',
                                start_date      => trunc(sysdate) + 16 / 24 +
                                                   44 / 60 / 24,
                                enabled         => true,
                                comments        => 'expdp busi02!');
    end;

    执行脚本:
    [oracle@dbathree qxy]$ more test_schem.sh
    #!/bin/bash
    export ORACLE_SID=busi
    export ORACLE_BASE=/orahome/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
    export PATH=$ORACLE_HOME/bin:$PATH
    expdp system/oracle dumpfile=busi020616.dmp directory=DUMP_FILE schemas=busi02

  • 相关阅读:
    hdu 4334 Trouble
    hdu 4324 Triangle LOVE
    hdu 4255 A Famous Grid
    hdu 3549 Flow Problem
    hdu 3371 Connect the Cities
    hdu 2846 Repository
    hdu 2120 Ice_cream's world I
    P3304 [SDOI2013]直径(【模板】树直径的必经边)
    P5490 【模板】扫描线
    P1364 医院设置(【模板】树的重心)
  • 原文地址:https://www.cnblogs.com/BradMiller/p/1945721.html
Copyright © 2011-2022 走看看