重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你是要改用户名吗?
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站设计、辽宁网络推广、小程序开发、辽宁网络营销、辽宁企业策划、辽宁品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供辽宁建站搭建服务,24小时服务热线:028-86922220,官方网址: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.
用户名更改后需要清楚缓存数据字典信息。
SQL alter system checkpoint; ----强制写入数据文件
System altered.
SQL alter system flush shared_pool; ----清楚缓存数据字典信息,强制oracle读实际数据(即更改后的数据)
System altered.
并变更用户登录密码。
SQL alter user TEXT_BAK identified by 'aaaaaa';
User altered.
在以SYSDBA身份登陆时可以修改其他用户的密码,比如:用户已更改。在以SYSDBA身份登陆时可以修改其他用户的密码,比如:用户已更改。一般来说,oracle数据库安装后,里面有很多个默认账号和密码,比较常用的是:账号:scott
密码:tiger
账号:system
密码:manager
账号:sys
密码:任意字符。当我们想创建一个账号时,可以使用sys登录sysdba后,创建用户(需要授权),代码如下我们一般使用的是用scott登录sysdba,这时候有可能出现账户未解锁的状态,这时候可以用来解锁账户。解锁之后可能会要求你改密码:可以用
改用户名的用处
至于改名字的用处嘛,在这样一种情景下非常有用.假如某个公司给每个员工一个账户,用户名就是你的英文名.当某个员工arwen要离职了,那就要删除掉用户arwen了.但是我们知道oracle中用户与此用户下面创建的对象是完全绑定到一起的,而不像sql
server中表等对象是可以和用户完全分开.这样的话你一删掉用户arwen那下面的数据全没了.假如我们需要那些数据咋整呢,最容易想到的是把所有数据先导出,然后再导入到某个用户下面.但这样比较麻烦.所以如果能改名字就更好点了.
接着用上面的例子.假如又来了新员工,weiwenhp.他是接arwen的班的.所以他很需要用户arwen下面的数据.此时就把用户arwen改成用户weiwenhp.我们登陆数据库时,数据库系统会判断我们的用户名和密码正确不,那我们自然想到这些信息肯定保存在数据库里面哪个地方,肯定会有一个啥保存用户信息的表.没错,所以用户信息保存在表user$中.
select
*
from
user$
用这个sql一查你会看到所有用户名和密码,还有其他一些信息.不过用户名都是加密的.所以即使是管理员也看不到任何用户的密码,只能改用户的密码.
那肯定想,用户名和密码在这那我在这里把名字改下就行了啊.实际上改名就真这么做.
select
user#,
name
from
user$
where
name
=
'ARWEN';
--先瞧下arwen的信息,其中user#就是一个序列号,相当于身份证号吧,假如这里是250
update
user$
set
name
=
'WEIWENHP'
where
user#
=
250;
--于是用户名就改好了啊.当然是update语句就记得再commit提交下啊.
还要做的工作
我人知道要是改了密码的话马上就生效能用的啊,改名字了咋就不成了呢.
我们知道数据库中很重要的一点是要保证数据一致性,某个地方的数据更改了,相关的地方也得跟着改才好.那这里肯定是因为登陆时读取的用户信息还没有更新.有数据不一致性的情况出现.你可能会想到有时我们用alter更改一些参数信息得重启数据库才能生效.于是你就想不会我改了名还得重启数据库.这也太恐怖了吧.
实际上不用重启数据库拉,你这样强制更新下.
alter
system
checkpoint;
alter
system
flush
shared_pool;
你再次登陆就发现可以登陆了啊.而之前的arwen用户就登不了啊.
-- 直接修改底层表USER$更改用户名(该方法在Oracle9i中测试通过)SQL UPDATE USER$ SET NAME='TT' WHERE USER#=91;已更新 1 行。SQL COMMIT;提交完成。SQL ALTER SYSTEM CHECKPOINT;系统已更改。SQL ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890'*ERROR 位于第 1 行:ORA-01918: 用户'TT'不存在 强制Oracle 读取实际数据,而不是读取缓存SQL ALTER SYSTEM FLUSH SHARED_POOL;系统已更改。SQL ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';用户已更改。 测试连接SQL CONN TT/TT已连接。SQL SELECT * FROM TAB;TNAME TABTYPE CLUSTERID------------------------------ ------- ----------TEST_TT TABLESQL CONN / AS SYSDBA已连接。SQL SHOW USERUSER 为"SYS"SQL SHUTDOWN IMMEDIATE数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL STARTUPORACLE 例程已经启动。......数据库装载完毕。数据库已经打开。
1.创建新的用户;
2.对已有用户进行相关属性的修改操作。
部分属性的修改涉及到生产环境的要申请停业,避免业务交易无法正常进行:
1.创建新用户对原有的业务无影响,风险级别低,但要考虑新用户导入的数据量,避免数据表空间爆满,TEMP空间与归档空间不足。
2.修改用户密码:
1)会导致继续使用之前密码连接数据库的应用出现连接故障,如果该应用有重连机制,超过尝试次数会导致用户被锁,风险级别高。
2)会导致其他库上未进行修改的 DBLINK,无法远程连接到本数据库,风险级别 高。
3.修改用户默认表空间,不影响现有的业务,风险级别低。
4.修改用户默认临时表空间,不影响现有的业务,风险级别低。
5.修改用户 profile,会影响用户会话的连接配额,如连接会话数、密码过期设定、 空闲时间、连接时间等,风险级别中。
6.修改账户状态,会影响会话连接数据库,风险级别高。
7.修改密码口令过期,会影响会话连接数据库,风险级别高。
8.修改用户表空间配额,会影响用户在表空间中的使用额度,风险级别中。
9.修改用户权限,会影响会话的执行权限,风险级别中。
不管是生产环境还是测试环境,备份永远是第一步操作,在评估时也要考虑是否有回退的可能,不要拿开弓没有回头箭当挡箭牌:
1.修改密码时,提前保存密文密码,同时找出到修改库的 DBLINK 也要修改。
2.修改用户属性时,提前保存原来的用户属性信息。
3.同研发确认用户需求,确保不影响业务。
4.安排变更窗口,停止应用。
1.创建新用户
2.用户属性修改
3.修改密码 修改用户密码:
4.修改远程库 DBLINK 的用户密码:
5.修改默认表空间及临时表空间
6.修改 profile
7.修改账户状态(锁定,解锁)
8.修改口令过期
9.修改表空间配额
10.权限,角色授予与回收
1.重新登陆进行账户验证新密码及账户锁定状态是否符合预期。
2.在远程库进行 DBLINK 连接验证是否正常。
3.检查用户账号状态是否正常
4.检查具体的权限是否符合要求
5.应用启动后,日志是否正常,最后观察业务是否正常进行
1.删除新用户
2.修改回用户旧密码:
3.修改远程库 DBLINK 的用户密码:
4.修改默认表空间及临时表空间
5.修改 profile配置
6.修改账户状态(锁定,解锁)
7.修改表空间配额
8.权限,角色授予与回收
1.用户旧密码登录验证是否正常
2.DBLINK连接是否正常
3.查看用户的默认表空间与临时表空间是否与最初状态一致
4.profile配置是否与最初状态一致
5.账户的状态是否与最初状态一致
6.表空间配置是否与最初状态一致
7.权限等是否与最初状态一致。
备注:回退方案的验证最重要的就是第一个步骤的备份与信息记录。这样才能验证回退方案是否达到预期。