zoukankan      html  css  js  c++  java
  • profile文件、密码文件、游标共享的介绍

     2010年12月24日 13:18:38

     

    profile文件的介绍:

    1、设置一个用户只能有一个会话
    SQL> create profile one_session limit sessions_per_user 1;
    SQL> alter user lttfm profile one_session;
    SQL> alter system set resource_limit=true; --限制生效的前提(resource_limit=true)
        做了以上设置后,若lttfm用户已经登陆,再次用lttfm登陆会提示错误(ora-02391:exceeded simultaneous sessions_per_user limit)则不能再次登陆即lttfm用户不能打开两个会话。

     2、查看信息

    select * from dba_users;--查看用户的参数
    select * from dba_profiles;--显示所有profile文件及其限制

    select * from user_password_limits;--描述指定给用户的profile中的口令限制情况
    select * from user_resource_limits;--描述指定给用户的profile中的资源限制情况
    select *from resource_cost;--列举每个资源的价值
     

     3、profile参数修改

    --修改profile参数
    alter PROFILE one_session limit sessions_per_user 10;
    --删除一个新的尚未分配给用户的PROFILE
    DROP PROFILE one_session
    --删除已创建的profile,如果已经指定了用户则要加上cascade关键字
    DROP PROFILE one_session cascade
    注:DEFAULT PROFILE不可以被删除

    4、profile的参数含义
    COMPOSITE_LIMIT:一个会话的资源成本限制,CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, and PRIVATE_SGA
    SESSIONS_PER_USER:一个用户允许同时(并发)会话的总数,超过后系统禁止该用户的后续会话
    CPU_PER_SESSION:定义了一个SESSION占用的CPU的时间(1/100 秒),当达到这个限制用户不能在此会话中执行任何操作,此时必须先断开连接,再连接才行
    CPU_PER_CALL:限制每次调用SQL语句期间(parse、execute、fetch)可用的CPU时间总量,单位是百分之一秒。达到限制时语句以报错结束。不同于       CPU_PER_SESSION的是,没达到CPU_PER_SESSION限制,还可以进行新的查询
    LOGICAL_READS_PER_SESSION:一个会话允许读写的逻辑块的数量限制
    LOGICAL_READS_PER_CALL:一次调用的SQL期间,允许读数据库块数限制
    IDLE_TIME:一个连接会话的最长连接时间;当用户空闲时间超过IDLE_TIME指定的时间,Oracle将回滚当前事务,并且结束他的会话
    CONNECT_TIME:一个连接会话的最长连接时间(分钟);当用户会话时间超过CONNECT_TIME指定的时间,Oracle将回滚当前事务,并且结束他的会话
    PRIVATE_SGA:一个会话允许分配的最大SGA大小,使用K/M定义
    FAILED_LOGIN_ATTEMPTS:当连续登陆失败次数达到该参数指定值时,用户被加锁;
    PASSWORD_LIFE_TIME:口令的有效期(天),默认为UNLIMITED
    PASSWORD_REUSE_TIME:口令被修改后原有口令隔多少天被重新使用,默认为UNLIMITED
    PASSWORD_REUSE_MAX:口令被修改后原有口令被修改多少次才允许被重新使用
    PASSWORD_VERIFY_FUNCTION:口令效验函数
    PASSWORD_LOCK_TIME:帐户因FAILED_LOGIN_ATTEMPTS锁定时,加锁天数
    PASSWORD_GRACE_TIME:口令修改的宽限期(天)

    密码文件

    1、密码文件的使用
    sqlplus "/ as sysdba" --可以直接登陆本机数据库,但是登陆远程数据库时失败(ERROR:ORA-01031: insufficient privileges)
    如果登陆远程数据库就要写上用户名密码,而且该用户名具有sysdba权限

    创建密码文件
    ORAPWD FILE=<密码文件名> PASSWORD =<登陆密码> ENTRIES=<允许使用该密码文件的最大用户数>

    密码文件位置
    D:\oracle\product\10.2.0\db_1\database下的PWDSID.ORA,其中SID代表相应的Oracle数据库系统标识符

    2、密码文件的REMOTE_LOGIN_PASSWORDFILE参数
    有了密码文件之后,需要设置初始化参数REMOTE_LOGIN_PASSWORDFILE来控制密码文件的使用状态。
    SQL> show parameter password --查看密码文件的状态
    NONE:指示Oracle系统不使用密码文件,特权用户的登录通过操作系统进行身份验证;
    EXCLUSIVE:指示只有一个数据库实例可以使用此密码文件。只有在此设置下的密码文件可以包含有除INTERNAL/SYS以外的用户信息,
                       即允许将系统权限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户。
    SHARED:指示可有多个数据库实例可以使用此密码文件。在此设置下只有INTERNAL/SYS帐号能被密码文件识别,即使文件中存有其他用户的信息,
                  也不允许他们以SYSOPER/SYSDBA的权限登录。此设置为缺省值。
    --修改'REMOTE_LOGIN_PASSWORDFILE'参数值
    ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE
    --授权给其它用户
     创建相应用户帐号,对其授权(包括SYSOPER和SYSDBA):
     GRANT SYSDBA TO user_name;


    游标共享的使用

    默认情况下,cursor_sharing的参数为EXACT
    select * from i_manhole_info where g3e_id=50041841;
    --打开游标共享
    alter session set cursor_sharing=force;
    --再查询
    select * from i_manhole_info where g3e_id=50041841;
    --通过sql_text表查看前后两次查询的结果
    select * from v$sql where sql_text like 'select * from i_manhole_info%';
    查询结果:
    select * from i_manhole_info where g3e_id=50041841;
    select * from i_manhole_info where g3e_fid=:"SYS_B_0" --游标共享打开后将直接变量删除,采用绑定变量

    --停止游标共享
    alter session set cursor_sharing=EXACT;

    备注:一般情况下,我们不采用通过开启游标共享来调整性能

  • 相关阅读:
    Python 一条语句如何在多行显示的问题
    代理模式
    MySQL workbench中的PK,NN,UQ,BIN,UN,ZF,AI说明
    异步加载 Echarts图的数据
    Web页面中两个listbox的option的转移
    半透明效果
    在地图上使图片透明
    加载图片方式
    获取鼠标坐标
    画笔与画刷
  • 原文地址:https://www.cnblogs.com/lanzi/p/1915918.html
Copyright © 2011-2022 走看看