EXP/IMP遷移資料庫小技巧-不知道使用者密碼的情況下複製使用者

kingsql發表於2014-10-11
很多資料庫遷移要求使用exp,或者需要使用exp,比如我這次為使用者做的資料庫升級,從oracle9i升級到oracle11g。

我們需要在新伺服器上建立資料庫,建立表空間,建立使用者,賦予使用者許可權,然後再執行imp命令匯入資料。
建立使用者之前我們可以透過select username from dab_users來獲取需要建立的使用者名稱,可是如何獲得該使用者的密碼呢?
在建立語句create user identified by 中,password怎麼辦?我們都知道oracle的使用者密碼是密文,無法直接使用。
在這裡我們採用一個小方法來搞定這件事,請看下面的實驗:

1,建立一個測試使用者
SYS@PRACTICE >create user Lily identified by panda;

2,為使用者Lily授權
SYS@PRACTICE >grant connect,resource to Lily;

3,檢視使用者Lily的密文密碼
SYS@PRACTICE >col name for a20
SYS@PRACTICE >col password for a30
SYS@PRACTICE >select user#,name,password from user$ where name='LILY';

     USER# NAME                 PASSWORD
---------- -------------------- ------------------------------
        91 LILY                 1EE128BE3115C31B   <==密碼panda加密後的模樣



4,測試新使用者登入
SYS@PRACTICE >conn Lily/panda
Connected.


5,在新資料庫中建立使用者Lily,密碼和原資料庫一致。
grant connect, resource to Lily identified by values '1EE128BE3115C31B';

6,在新系統上測試登入
conn Lily/panda
Connected.

到此利用密文密碼建立使用者成功。

有一點需要注意的是這個密文密碼是和使用者相關聯的,兩個不同的使用者即使密碼相同,它們的密文密碼並不相同。
比如:
SYS@PRACTICE >create user u1 identified by panda;

User created.

SYS@PRACTICE >create user u2 identified by panda;

User created.

SYS@PRACTICE >col name for a20
SYS@PRACTICE >col password for a30
SYS@PRACTICE >select user#,name,password from user$ where name in ('U1','U2');

     USER# NAME                 PASSWORD
---------- -------------------- ------------------------------
       149 U1                   3F7B709FE0BD3E6A
       150 U2                   0EB66C29105D811E

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1295506/,如需轉載,請註明出處,否則將追究法律責任。

相關文章