你是要改用戶名嗎?
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、遼寧網(wǎng)絡(luò)推廣、小程序開發(fā)、遼寧網(wǎng)絡(luò)營(yíng)銷、遼寧企業(yè)策劃、遼寧品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供遼寧建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
比如要把用戶TEXT改為TEXT_BAK:
SQL select user#,name,password from user$ where name ='TEXT';
USER# NAME PASSWORD
---------- ------------------------------ ---------------------------
78 TEXT 21EDA78F89D6FACD
更改用戶名
SQL update user$ set name='TEXT_BAK' where user#=78;
1 row updated.
SQL commit;
Commit complete.
用戶名更改后需要清楚緩存數(shù)據(jù)字典信息。
SQL alter system checkpoint; ----強(qiáng)制寫入數(shù)據(jù)文件
System altered.
SQL alter system flush shared_pool; ----清楚緩存數(shù)據(jù)字典信息,強(qiáng)制oracle讀實(shí)際數(shù)據(jù)(即更改后的數(shù)據(jù))
System altered.
并變更用戶登錄密碼。
SQL alter user TEXT_BAK identified by 'aaaaaa';
User altered.
在以SYSDBA身份登陸時(shí)可以修改其他用戶的密碼,比如:用戶已更改。在以SYSDBA身份登陸時(shí)可以修改其他用戶的密碼,比如:用戶已更改。一般來(lái)說(shuō),oracle數(shù)據(jù)庫(kù)安裝后,里面有很多個(gè)默認(rèn)賬號(hào)和密碼,比較常用的是:賬號(hào):scott
密碼:tiger
賬號(hào):system
密碼:manager
賬號(hào):sys
密碼:任意字符。當(dāng)我們想創(chuàng)建一個(gè)賬號(hào)時(shí),可以使用sys登錄sysdba后,創(chuàng)建用戶(需要授權(quán)),代碼如下我們一般使用的是用scott登錄sysdba,這時(shí)候有可能出現(xiàn)賬戶未解鎖的狀態(tài),這時(shí)候可以用來(lái)解鎖賬戶。解鎖之后可能會(huì)要求你改密碼:可以用
改用戶名的用處
至于改名字的用處嘛,在這樣一種情景下非常有用.假如某個(gè)公司給每個(gè)員工一個(gè)賬戶,用戶名就是你的英文名.當(dāng)某個(gè)員工arwen要離職了,那就要?jiǎng)h除掉用戶arwen了.但是我們知道oracle中用戶與此用戶下面創(chuàng)建的對(duì)象是完全綁定到一起的,而不像sql
server中表等對(duì)象是可以和用戶完全分開.這樣的話你一刪掉用戶arwen那下面的數(shù)據(jù)全沒(méi)了.假如我們需要那些數(shù)據(jù)咋整呢,最容易想到的是把所有數(shù)據(jù)先導(dǎo)出,然后再導(dǎo)入到某個(gè)用戶下面.但這樣比較麻煩.所以如果能改名字就更好點(diǎn)了.
接著用上面的例子.假如又來(lái)了新員工,weiwenhp.他是接arwen的班的.所以他很需要用戶arwen下面的數(shù)據(jù).此時(shí)就把用戶arwen改成用戶weiwenhp.我們登陸數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)系統(tǒng)會(huì)判斷我們的用戶名和密碼正確不,那我們自然想到這些信息肯定保存在數(shù)據(jù)庫(kù)里面哪個(gè)地方,肯定會(huì)有一個(gè)啥保存用戶信息的表.沒(méi)錯(cuò),所以用戶信息保存在表user$中.
select
*
from
user$
用這個(gè)sql一查你會(huì)看到所有用戶名和密碼,還有其他一些信息.不過(guò)用戶名都是加密的.所以即使是管理員也看不到任何用戶的密碼,只能改用戶的密碼.
那肯定想,用戶名和密碼在這那我在這里把名字改下就行了啊.實(shí)際上改名就真這么做.
select
user#,
name
from
user$
where
name
=
'ARWEN';
--先瞧下arwen的信息,其中user#就是一個(gè)序列號(hào),相當(dāng)于身份證號(hào)吧,假如這里是250
update
user$
set
name
=
'WEIWENHP'
where
user#
=
250;
--于是用戶名就改好了啊.當(dāng)然是update語(yǔ)句就記得再commit提交下啊.
還要做的工作
我人知道要是改了密碼的話?cǎi)R上就生效能用的啊,改名字了咋就不成了呢.
我們知道數(shù)據(jù)庫(kù)中很重要的一點(diǎn)是要保證數(shù)據(jù)一致性,某個(gè)地方的數(shù)據(jù)更改了,相關(guān)的地方也得跟著改才好.那這里肯定是因?yàn)榈顷憰r(shí)讀取的用戶信息還沒(méi)有更新.有數(shù)據(jù)不一致性的情況出現(xiàn).你可能會(huì)想到有時(shí)我們用alter更改一些參數(shù)信息得重啟數(shù)據(jù)庫(kù)才能生效.于是你就想不會(huì)我改了名還得重啟數(shù)據(jù)庫(kù).這也太恐怖了吧.
實(shí)際上不用重啟數(shù)據(jù)庫(kù)拉,你這樣強(qiáng)制更新下.
alter
system
checkpoint;
alter
system
flush
shared_pool;
你再次登陸就發(fā)現(xiàn)可以登陸了啊.而之前的arwen用戶就登不了啊.
-- 直接修改底層表USER$更改用戶名(該方法在Oracle9i中測(cè)試通過(guò))SQL UPDATE USER$ SET NAME='TT' WHERE USER#=91;已更新 1 行。SQL COMMIT;提交完成。SQL ALTER SYSTEM CHECKPOINT;系統(tǒng)已更改。SQL ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890'*ERROR 位于第 1 行:ORA-01918: 用戶'TT'不存在 強(qiáng)制Oracle 讀取實(shí)際數(shù)據(jù),而不是讀取緩存SQL ALTER SYSTEM FLUSH SHARED_POOL;系統(tǒng)已更改。SQL ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';用戶已更改。 測(cè)試連接SQL CONN TT/TT已連接。SQL SELECT * FROM TAB;TNAME TABTYPE CLUSTERID------------------------------ ------- ----------TEST_TT TABLESQL CONN / AS SYSDBA已連接。SQL SHOW USERUSER 為"SYS"SQL SHUTDOWN IMMEDIATE數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉。已經(jīng)卸載數(shù)據(jù)庫(kù)。ORACLE 例程已經(jīng)關(guān)閉。SQL STARTUPORACLE 例程已經(jīng)啟動(dòng)。......數(shù)據(jù)庫(kù)裝載完畢。數(shù)據(jù)庫(kù)已經(jīng)打開。
1.創(chuàng)建新的用戶;
2.對(duì)已有用戶進(jìn)行相關(guān)屬性的修改操作。
部分屬性的修改涉及到生產(chǎn)環(huán)境的要申請(qǐng)停業(yè),避免業(yè)務(wù)交易無(wú)法正常進(jìn)行:
1.創(chuàng)建新用戶對(duì)原有的業(yè)務(wù)無(wú)影響,風(fēng)險(xiǎn)級(jí)別低,但要考慮新用戶導(dǎo)入的數(shù)據(jù)量,避免數(shù)據(jù)表空間爆滿,TEMP空間與歸檔空間不足。
2.修改用戶密碼:
1)會(huì)導(dǎo)致繼續(xù)使用之前密碼連接數(shù)據(jù)庫(kù)的應(yīng)用出現(xiàn)連接故障,如果該應(yīng)用有重連機(jī)制,超過(guò)嘗試次數(shù)會(huì)導(dǎo)致用戶被鎖,風(fēng)險(xiǎn)級(jí)別高。
2)會(huì)導(dǎo)致其他庫(kù)上未進(jìn)行修改的 DBLINK,無(wú)法遠(yuǎn)程連接到本數(shù)據(jù)庫(kù),風(fēng)險(xiǎn)級(jí)別 高。
3.修改用戶默認(rèn)表空間,不影響現(xiàn)有的業(yè)務(wù),風(fēng)險(xiǎn)級(jí)別低。
4.修改用戶默認(rèn)臨時(shí)表空間,不影響現(xiàn)有的業(yè)務(wù),風(fēng)險(xiǎn)級(jí)別低。
5.修改用戶 profile,會(huì)影響用戶會(huì)話的連接配額,如連接會(huì)話數(shù)、密碼過(guò)期設(shè)定、 空閑時(shí)間、連接時(shí)間等,風(fēng)險(xiǎn)級(jí)別中。
6.修改賬戶狀態(tài),會(huì)影響會(huì)話連接數(shù)據(jù)庫(kù),風(fēng)險(xiǎn)級(jí)別高。
7.修改密碼口令過(guò)期,會(huì)影響會(huì)話連接數(shù)據(jù)庫(kù),風(fēng)險(xiǎn)級(jí)別高。
8.修改用戶表空間配額,會(huì)影響用戶在表空間中的使用額度,風(fēng)險(xiǎn)級(jí)別中。
9.修改用戶權(quán)限,會(huì)影響會(huì)話的執(zhí)行權(quán)限,風(fēng)險(xiǎn)級(jí)別中。
不管是生產(chǎn)環(huán)境還是測(cè)試環(huán)境,備份永遠(yuǎn)是第一步操作,在評(píng)估時(shí)也要考慮是否有回退的可能,不要拿開弓沒(méi)有回頭箭當(dāng)擋箭牌:
1.修改密碼時(shí),提前保存密文密碼,同時(shí)找出到修改庫(kù)的 DBLINK 也要修改。
2.修改用戶屬性時(shí),提前保存原來(lái)的用戶屬性信息。
3.同研發(fā)確認(rèn)用戶需求,確保不影響業(yè)務(wù)。
4.安排變更窗口,停止應(yīng)用。
1.創(chuàng)建新用戶
2.用戶屬性修改
3.修改密碼 修改用戶密碼:
4.修改遠(yuǎn)程庫(kù) DBLINK 的用戶密碼:
5.修改默認(rèn)表空間及臨時(shí)表空間
6.修改 profile
7.修改賬戶狀態(tài)(鎖定,解鎖)
8.修改口令過(guò)期
9.修改表空間配額
10.權(quán)限,角色授予與回收
1.重新登陸進(jìn)行賬戶驗(yàn)證新密碼及賬戶鎖定狀態(tài)是否符合預(yù)期。
2.在遠(yuǎn)程庫(kù)進(jìn)行 DBLINK 連接驗(yàn)證是否正常。
3.檢查用戶賬號(hào)狀態(tài)是否正常
4.檢查具體的權(quán)限是否符合要求
5.應(yīng)用啟動(dòng)后,日志是否正常,最后觀察業(yè)務(wù)是否正常進(jìn)行
1.刪除新用戶
2.修改回用戶舊密碼:
3.修改遠(yuǎn)程庫(kù) DBLINK 的用戶密碼:
4.修改默認(rèn)表空間及臨時(shí)表空間
5.修改 profile配置
6.修改賬戶狀態(tài)(鎖定,解鎖)
7.修改表空間配額
8.權(quán)限,角色授予與回收
1.用戶舊密碼登錄驗(yàn)證是否正常
2.DBLINK連接是否正常
3.查看用戶的默認(rèn)表空間與臨時(shí)表空間是否與最初狀態(tài)一致
4.profile配置是否與最初狀態(tài)一致
5.賬戶的狀態(tài)是否與最初狀態(tài)一致
6.表空間配置是否與最初狀態(tài)一致
7.權(quán)限等是否與最初狀態(tài)一致。
備注:回退方案的驗(yàn)證最重要的就是第一個(gè)步驟的備份與信息記錄。這樣才能驗(yàn)證回退方案是否達(dá)到預(yù)期。