linux怎么锁定test用户,用户被锁定不影响JOB的运行

今天在维护用户的帐号状态的时候碰到这个问题。和同事讨论这个问题的时候,我认为即使用户的帐号被锁定,JOB也可以运行。

用一个建立例子来说明这个问题:

SQL> conn / as sysdba

Connected.

SQL> create user u_test identified by u_test default tablespace ndmain;

User created.

SQL> grant connect, resource to u_test;

Grant succeeded.

SQL> conn u_test/u_test

Connected.

SQL> create table t (time date);

Table created.

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> declare

2  v_job number;

3  begin

4  dbms_job.submit(v_job, 'begin insert into t values (sysdate); end;', to_date('2009-8-26 11:0:0'));

5  commit;

6  end;

7  /

PL/SQL procedure successfully completed.

SQL> col what format a45

SQL> select job, what, next_date from user_jobs;

JOB WHAT                                          NEXT_DATE

---------- --------------------------------------------- -------------------

50 begin insert into t values (sysdate); end;    2009-08-26 11:00:00

SQL> select sysdate from dual;

SYSDATE

-------------------

2009-08-26 10:44:22

建立一个U_TEST用户,授权必要的权限,然后建立一张测试表,并设定一个JOB,在11点的时候向测试表中插入系统时间。

现在的时间是10点44分,下面锁住U_TEST用户:

SQL> conn / as sysdba

Connected.

SQL> alter user u_test account lock;

User altered.

SQL> select username, account_status

2  from dba_users

3  where username = 'U_TEST';

USERNAME                       ACCOUNT_STATUS

------------------------------ --------------------------------

U_TEST                         LOCKED

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE

-------------------

2009-08-26 10:45:59

SQL> select * from u_test.t;

no rows selected

锁定用户后,目前的时间是10点46分左右,U_TEST用户下的T表还没有记录,等待一段时间后:

SQL> select sysdate from dual;

SYSDATE

-------------------

2009-08-26 10:59:18

SQL> select sysdate from dual;

SYSDATE

-------------------

2009-08-26 11:00:50

SQL> select * from u_test.t;

TIME

-------------------

2009-08-26 11:00:01

SQL> select username, account_status, lock_date

2  from dba_users

3  where username = 'U_TEST';

USERNAME                       ACCOUNT_STATUS                   LOCK_DATE

------------------------------ -------------------------------- -------------------

U_TEST                         LOCKED                           2009-08-26 10:44:52

可以看到,在11点的时候JOB运行,向测试表中插入了JOB运行时的系统时间。而检查U_TEST用户可以发现,从10点44分起,这个用户一直处于锁定状态。

这说明JOB的运行和用户是否被锁定无关,因为JOB的运行并不需要登陆操作。以前碰到过的一个问题从另一方面说明了这一点:JOB自动执行出错,但手工执行正常——浅谈job和database link的一个特点:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值