【USER】使用“基表修改法”快速修改Oracle使用者名稱
Oracle中沒有提供直接修改使用者名稱的方法,即使在11gR2中也沒有提供具體的手段。
由於沒有直接修改使用者名稱的方法,因此在Oracle中若要修改使用者名稱,通常是比較周折的。
通常修改使用者名稱的一種方法是:重新建立一個新使用者,把原使用者中的資料使用EXP/IMP方法遷移到新使用者中,最後刪除原使用者。如果使用者所包含的資料量非常的巨大,這個過程將相當的耗時,對系統的衝擊也比較大。
有沒有更好的方法來完成這個修改使用者名稱的方法呢?
這裡給出一個透過修改Oracle資料庫基表USER$達到修改Oracle使用者名稱的目的。
1.在基表user$中檢視待修改使用者SEC的基本資訊
sys@ora10g> select user#,name,password from user$ where name ='SEC';
USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
62 SEC 9EC74A4FC0A9E227
2.直接使用update語句將USER#列修改為新的使用者名稱SECOOLER
1)修改
sys@ora10g> update user$ set name='SECOOLER' where user#=62;
1 row updated.
2)提交
sys@ora10g> commit;
Commit complete.
3)確認修改完畢
sys@ora10g> select user#,name,password from user$ where USER# = 62;
USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
62 SECOOLER 9EC74A4FC0A9E227
3.為使新使用者的密碼生效,我們嘗試重置新使用者名稱SECOOLER的密碼
sys@ora10g> alter user secooler identified by secooler;
alter user secooler identified by secooler
*
ERROR at line 1:
ORA-01918: user 'SECOOLER' does not exist
為什麼會報錯?
之所以報錯是因為此時Oracle並沒有感知到這個底層的變化。
怎麼樣才能讓Oracle知道這個變化呢?請繼續。
4.手工執行檢查點操作,將Database Buffer Cache中的資料強制寫出到外存,這一步驟不是關鍵。
sys@ora10g> alter system checkpoint;
System altered.
5.關鍵步驟在此--強制重新整理Shared Pool!因為Oracle的資料字典資訊是快取在Shared Pool的Dictionary Cache中的。
sys@ora10g> alter system flush shared_pool;
System altered.
6.再次嘗試修給SECOOLER的密碼,成功!整個透過基表修改方法修改使用者名稱的操作全部完成。
1)修改密碼,成功。
sys@ora10g> alter user secooler identified by secooler;
User altered.
2)確認密碼確實發生了變化
sys@ora10g> select user#,name,password from user$ where USER# = 62;
USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
62 SECOOLER 034E4342BB2D437D
3)測試新使用者的可用性
sys@ora10g> conn secooler/secooler
Connected.
secooler@ora10g> show user
USER is "SECOOLER"
7.小結
在修改完基表後,更徹底的使其生效的方法是重新啟動資料庫。不過無論是使用“flush shared_pool”還是“startup force;”對於執行要求比較高的生產系統來說都會面臨資料庫短暫無法提供服務的情況。因此,在使用這種方法之前同樣需要做好計劃,預見到影響。
注意:不建議使用這種方法來修改使用者名稱,早期規劃並嚴格按照規範執行避免使用者名稱的隨意修改才是正途。
Good luck.
secooler
09.11.29
-- The End --
由於沒有直接修改使用者名稱的方法,因此在Oracle中若要修改使用者名稱,通常是比較周折的。
通常修改使用者名稱的一種方法是:重新建立一個新使用者,把原使用者中的資料使用EXP/IMP方法遷移到新使用者中,最後刪除原使用者。如果使用者所包含的資料量非常的巨大,這個過程將相當的耗時,對系統的衝擊也比較大。
有沒有更好的方法來完成這個修改使用者名稱的方法呢?
這裡給出一個透過修改Oracle資料庫基表USER$達到修改Oracle使用者名稱的目的。
1.在基表user$中檢視待修改使用者SEC的基本資訊
sys@ora10g> select user#,name,password from user$ where name ='SEC';
USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
62 SEC 9EC74A4FC0A9E227
2.直接使用update語句將USER#列修改為新的使用者名稱SECOOLER
1)修改
sys@ora10g> update user$ set name='SECOOLER' where user#=62;
1 row updated.
2)提交
sys@ora10g> commit;
Commit complete.
3)確認修改完畢
sys@ora10g> select user#,name,password from user$ where USER# = 62;
USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
62 SECOOLER 9EC74A4FC0A9E227
3.為使新使用者的密碼生效,我們嘗試重置新使用者名稱SECOOLER的密碼
sys@ora10g> alter user secooler identified by secooler;
alter user secooler identified by secooler
*
ERROR at line 1:
ORA-01918: user 'SECOOLER' does not exist
為什麼會報錯?
之所以報錯是因為此時Oracle並沒有感知到這個底層的變化。
怎麼樣才能讓Oracle知道這個變化呢?請繼續。
4.手工執行檢查點操作,將Database Buffer Cache中的資料強制寫出到外存,這一步驟不是關鍵。
sys@ora10g> alter system checkpoint;
System altered.
5.關鍵步驟在此--強制重新整理Shared Pool!因為Oracle的資料字典資訊是快取在Shared Pool的Dictionary Cache中的。
sys@ora10g> alter system flush shared_pool;
System altered.
6.再次嘗試修給SECOOLER的密碼,成功!整個透過基表修改方法修改使用者名稱的操作全部完成。
1)修改密碼,成功。
sys@ora10g> alter user secooler identified by secooler;
User altered.
2)確認密碼確實發生了變化
sys@ora10g> select user#,name,password from user$ where USER# = 62;
USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
62 SECOOLER 034E4342BB2D437D
3)測試新使用者的可用性
sys@ora10g> conn secooler/secooler
Connected.
secooler@ora10g> show user
USER is "SECOOLER"
7.小結
在修改完基表後,更徹底的使其生效的方法是重新啟動資料庫。不過無論是使用“flush shared_pool”還是“startup force;”對於執行要求比較高的生產系統來說都會面臨資料庫短暫無法提供服務的情況。因此,在使用這種方法之前同樣需要做好計劃,預見到影響。
注意:不建議使用這種方法來修改使用者名稱,早期規劃並嚴格按照規範執行避免使用者名稱的隨意修改才是正途。
Good luck.
secooler
09.11.29
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-620907/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用“基表修改法”快速修改Oracle使用者名稱(z)Oracle
- 快速修改Oracle使用者名稱Oracle
- 修改oracle使用者名稱,表空間名字,Oracle
- oracle11g修改使用者名稱Oracle
- github修改使用者名稱Github
- oracle中的某一個使用者名稱修改Oracle
- 修改oracle中的使用者名稱和密碼Oracle密碼
- ORACLE 11G R2 修改"使用者名稱"Oracle
- Oracle 11g修改資料庫使用者名稱Oracle資料庫
- Oracle 11g支援修改資料庫使用者名稱Oracle資料庫
- 修改 linux&unix 使用者名稱Linux
- oracle更改使用者名稱Oracle
- 修改 Ubuntu 系統使用者名稱和登入名Ubuntu
- Git修改提交的使用者名稱和EmailGitAI
- 公司網站使用者名稱密碼修改?網站密碼
- Git修改和配置使用者名稱和郵箱Git
- win10登入賬號名字怎麼修改_win10如何更改user使用者名稱Win10
- 【實戰】使用“基表修改法”恢復被“set unused”方式誤刪除的列
- 修改了github使用者名稱後,部落格的更改Github
- wordpress修改繫結的mysql使用者名稱密碼MySql密碼
- win10家庭版更改使用者名稱怎麼改_如何修改win10使用者名稱Win10
- Oracle基礎 08 使用者角色 user/roleOracle
- PowerShell快速修改多個檔案的名稱
- 【實戰】使用“基表修改法”恢復被“set unused”方式誤刪除的列(續)
- 修改git全部已提交的使用者名稱和郵箱Git
- Git 檢視和修改使用者名稱與郵箱Git
- win10修改使用者名稱資料夾方法 win10怎麼改使用者資料夾名稱Win10
- 使用mmv命令批次修改檔名稱
- win10系統怎麼更改user使用者名稱中文為英文Win10
- Oracle EM Express要求使用者名稱和密碼OracleExpress密碼
- Oracle11g 建立使用者名稱、授權Oracle
- 網站後臺的使用者名稱修改?dw怎樣修改網站模板?網站
- 表單使用者名稱和密碼記住效果密碼
- win10怎麼更改使用者名稱資料夾_win10如何修改suers使用者名稱資料夾Win10
- Oracle---使用者重新命名、建立同樣的使用者名稱Oracle
- Git修改檔名稱Git
- InternetExplorer表單及使用者名稱密碼提交密碼
- python 使用者註冊使用者名稱Python