修改使用者名稱 及 可能出現的問題

2021-07-10 15:21:14 字數 2014 閱讀 7067

oracle沒有提供直接修改使用者名稱的sql,需要修改使用者名稱的話可以通過直接修改字典表,但可能會出現什麼問題不太能確定;我遇到的問題是修改使用者名稱後job狀態會變成broken,但又不是每次都這樣。以下操作盡供參考。

1.建立使用者(sys)

create user olduser identified by olduser;

grant resource to olduser;

grant create session to olduser;

grant create job to olduser;

2.使用者下建立表、過程、作業(olduser)

create table t_test(c1 date);

create or replace procedure proc_test

asbegin

insert into t_test values(sysdate);

commit;

end proc_test;

/begin

dbms_scheduler.create_job

(job_name        => 'job_test',

job_type        => 'plsql_block',

job_action      => 'begin proc_test; end;',

start_date      => sysdate,

repeat_interval => 'freq=minutely; interval=1',

enabled         => true

);end;/

3.修改使用者名稱(sys)

修改使用者名稱後需要修改一下新使用者的密碼,這一步是必須要做的,哪怕新密碼與舊密碼一樣也得修改一下,否則無法登入;

修改密碼時可能會報以下錯:

sql error: ora-01918: user 'newuser' does not exist

01918. 00000 -  "user '%s' does not exist"

*cause:    user does not exist in the system.

*action:   verify the user name is correct.

將shared_pool、buffer_cache清空一下就可以了

update user$ set name='newuser' where name='olduser';

commit;

alter system flush shared_pool;

alter system flush buffer_cache;

alter user newuser identified by newuser;

4.新使用者下job的狀態等資訊

修改使用者名稱後,scheduler$_job中job的建立者還是顯示原來的使用者名稱,需要手動修改一下

select * from scheduler$_job where creator='olduser';

update scheduler$_job set creator='newuser' where creator='olduser';

commit;

原來使用者下的job可能(有的時候又不會)會在下一次執行時state變成broken,因為job狀態不可用,user_scheduler_job_run_details中也沒有job的日誌

select job_name, state, job_creator, job_action,

last_start_date, last_run_duration, next_run_date

from user_scheduler_jobs;

重新enable可能也沒用,job下次執行時state還是會變成broken;

此時應該只能刪除job重建,暫時不知道還有沒有其它方法

begin

dbms_scheduler.enable (name => 'job_test');

end;/

oracle修改使用者名稱

1 windows 平台下執行 cmd 2 sqlplus nolog 3 sql connsys lmis lmisdx localas sysdba 連線到資料庫。通常可以用sys使用者登陸。4 sql select from user 找到 name為需要修改的使用者的user 5 sql u...

linux 修改使用者名稱

修改使用者資訊可用usermod命令,usermod具體使用方法見 usermod詳解 在tty7介面下想修改當前使用者名稱會報錯 user ethan is currently used by process 1357 將使用者名稱ethan改為user1報錯,ethan walleit user...

ubuntu修改使用者名稱

有時候我們在建立使用者時會不小心吧使用者名稱寫錯,怎麼辦?那就改回來唄!我們首先要記住修改四個地方 如果是安裝系統時,建立的只改三個地方 下面的2,3,4 1.進入root使用者,在 etc sudoers中新增 使用者名稱 all all all all 四個all代表的是,登入的主機,可切換的使...