不少數據庫遷移要求使用exp,或者須要使用exp,好比我此次爲用戶作的數據庫升級,從oracle9i升級到oracle11g。
咱們須要在新服務器上建立數據庫,建立表空間,建立用戶,賦予用戶權限,而後再執行imp命令導入數據。
建立用戶以前咱們能夠經過select username from dab_users來獲取須要建立的用戶名,但是如何得到該用戶的密碼呢?
在建立語句create user <username> identified by <password>中,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數據庫