如题:
1.如何查看和调整数据库的最大连接数?
2.linux下查看alert log?
3.在自定义的类型后面加上index by pls_integer 表是什么意思?
4.oracle中自治事务pragma autonomous_transaction 的理解?
5.这句话怎么理解:
   如果某一操作包含大量的SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是
预编译的,在首次被运行一个存储过程时,查询优化器对其进行分析优化,并给出最终被存在系统表中的执行计划。
而批处理的SQL语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。

解决方案 »

  1.   

    1. 
    show parameter processes;
    alter system set processes = ? scope=spfile;
    --
    select * from v$resource_limit t where resource_name in ('processes', 'sessions');2. alert log在不同的ORACLE版本位于不同的目录下。其命名格式为:alert_SID.log
       这是个文本文件,用vi或将之下载到WINDOWS后用文本编辑器打开3. type x is table of varchar2(50) index by pls_integer;
       这是一个数组类型。可以这样使用:
    declare
       type x is table of varchar2(50) index by pls_integer;
       v_x x;
    begin
       v_x(1) := 'good';
       v_x(100) := 'nice';
    end;
      

  2.   

    --如题:
    --1.如何查看和调整数据库的最大连接数?
    --查看当前连接数
    SQL> select SID,USER#,STATUS,SERVER from v$session;       SID      USER# STATUS   SERVER
    ---------- ---------- -------- ---------
           159          0 ACTIVE   DEDICATED
           160          0 ACTIVE   DEDICATED
           161          0 ACTIVE   DEDICATED
           162          0 ACTIVE   DEDICATED
           163          0 ACTIVE   DEDICATED
           164          0 ACTIVE   DEDICATED
           165          0 ACTIVE   DEDICATED
           166          0 ACTIVE   DEDICATED
           167          0 ACTIVE   DEDICATED
           168          0 ACTIVE   DEDICATED
           169          0 ACTIVE   DEDICATED       SID      USER# STATUS   SERVER
    ---------- ---------- -------- ---------
           170          0 ACTIVE   DEDICATEDSQL> select SID,USER#,STATUS,SERVER from v$session;       SID      USER# STATUS   SERVER
    ---------- ---------- -------- ---------
           159          0 ACTIVE   DEDICATED
           160          0 ACTIVE   DEDICATED
           161          0 ACTIVE   DEDICATED
           162          0 ACTIVE   DEDICATED
           163          0 ACTIVE   DEDICATED
           164          0 ACTIVE   DEDICATED
           165          0 ACTIVE   DEDICATED
           166          0 ACTIVE   DEDICATED
           167          0 ACTIVE   DEDICATED
           168          0 ACTIVE   DEDICATED
           169          0 ACTIVE   DEDICATED       SID      USER# STATUS   SERVER
    ---------- ---------- -------- ---------
           170          0 ACTIVE   DEDICATED--查看活动状态连接数
    SQL> select count(*) from v$session where status = 'ACTIVE';  COUNT(*)
    ----------
            12--设置最大连接数
    SQL> show parameter processes;NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    aq_tm_processes                      integer     0
    db_writer_processes                  integer     1
    gcs_server_processes                 integer     0
    job_queue_processes                  integer     10
    log_archive_max_processes            integer     2
    processes                            integer     150
    SQL> alter system set processes = 180;
    alter system set processes = 180
                     *
    ERROR at line 1:
    ORA-02095: specified initialization parameter cannot be modified
    SQL> alter system set processes = 180 scope =spfile;System altered.--2.linux下查看alert log?
    SQL> show parameter background_dump_dest NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    background_dump_dest                 string      /opt/oracle/admin/orcl/bdump
    SQL> ho ls  /opt/oracle/admin/orcl/bdump
    alert_orcl.log      orcl_lgwr_3099.trc  orcl_lgwr_3123.trc  orcl_lgwr_6248.trc
    orcl_cjq0_6273.trc  orcl_lgwr_3109.trc  orcl_lgwr_6183.trc  orcl_lgwr_6322.trcSQL> ho cat /opt/oracle/admin/orcl/bdump/alert_orcl.log --3.在自定义的类型后面加上index by pls_integer 表是什么意思?
    --不太懂
    /*
    4.oracle中自治事务pragma autonomous_transaction 的理解?
    一般情况下利用触发器禁止某些对表的更新等操作时,若记录日志,则触发器最后抛出异常时会造成日志回滚。利用自治事务可防止此点
    对数据库有写操作(INSERT、UPDATE、DELETE、CREATE、ALTER、COMMIT)的存储过程或函数是无法简单的用SQL来调用的,此时可以将其设为自治事务,从而避免ORA-14552(无法在一个查询或DML中执行DDL、COMMIT、ROLLBACK)、ORA- 14551(无法在一个查询中执行DML操作)等错误。需要注意的是函数必须有返回值,但仅有IN参数(不能有OUT或IN/OUT参数)
    */
    /*5.这句话怎么理解:
      如果某一操作包含大量的SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是
    预编译的,在首次被运行一个存储过程时,查询优化器对其进行分析优化,并给出最终被存在系统表中的执行计划。
    而批处理的SQL语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。*/
    /*
    存储过程中的SQL 代码经过编译,优化后,其查询执行计划被缓存到库缓冲区,因此下次有该存储过程的再此运行将直接在缓冲区调用执行计划即可。而SQL 批则不能实现执行计划的可重用。*/
      

  3.   

    4. 自治事务,相当于开启了另一个独立的事务,这个事务不受主事务的控制5. 
    而批处理的SQL语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。
    这个说法是不对的,前端应用调用数据库时都有类似prepare()的方法,调用这个方法后再反复执行,效率跟存储过程是一样的。
      

  4.   

    同意楼上的,oracle没那么弱智,shared pool就是用来存放解析 过的SQL语句的。仅仅是此SQL第一次执行时存储过程比批处理快。第二次、第三次就没区别了。
      

  5.   

    1.
    SELECT VALUE FROM v$parameter t WHERE t.NAME = 'sessions';
    ALTER SYSTEM SET processes=<数字>
    ORACLE自动设置sessions=processes*1.1+5
    2.
    SELECT VALUE FROM v$parameter t WHERE t.NAME = 'background_dump_dest';
    3.
    index by pls_integer指定索引表的下标类型为整形,同其它语言中的数组下标
    4.
    自治事务实现的功能是,在当前事务中开启一个新事务(新事务即自治事务),自治事务的提交或回滚不影响当前的事务。同时自治事务也是看不到当前会话所做的未提交的修改。
    5.
    已编译,执行计划确定,不需要重新解析