Column Datatype NULL Description OWNER VARCHAR2(30) NOT NULL Owner of the view VIEW_NAME VARCHAR2(30) NOT NULL Name of the view TEXT_LENGTH NUMBER Length of the view text TEXT LONG View text TYPE_TEXT_LENGTH NUMBER Length of the type clause of the typed view TYPE_TEXT VARCHAR2(4000) Type clause of the typed view OID_TEXT_LENGTH NUMBER Length of the WITH OID clause of the typed view OID_TEXT VARCHAR2(4000) WITH OID clause of the typed view VIEW_TYPE_OWNER VARCHAR2(30) Owner of the type of the view if the view is a typed view VIEW_TYPE VARCHAR2(30) Type of the view if the view is a typed view SUPERVIEW_NAME VARCHAR2(30) Name of the superview 没有相应的基表字段
SQL> select name,password from user$ where name='SCOTT';NAME PASSWORD ------------------------------ ------------------------------ SCOTT F894844C34402B67 SQL> update user$ set password='F894844C34402B67' 2 where name='TEST001';1 row updated.SQL> commit;Commit complete. SQL> select username,password from dba_users 2 where username='SCOTT';USERNAME PASSWORD ------------------------------ ------------------------------ SCOTT F894844C34402B67SQL> select username,password from dba_users 2 where username='TEST001';USERNAME PASSWORD ------------------------------ ------------------------------ TEST001 F894844C34402B67SQL> conn test001/tiger ERROR: ORA-01017: 鐢ㄦ埛鍚?鍙d护鏃犳晥; 鐧诲綍琚嫆缁 Warning: You are no longer connected to ORACLE. 好像登陆不上哦?
直接修改用户的密码不就可以了吗? ALTER USER scott IDENTIFIED BY test;
都有SYS的权限,直接修改scott的密码,不就完了吗?
楼主看这个SQL> create user test01 identified by test; 用户已创建。SQL> create user test02 identified by test; 用户已创建。SQL> select user#,name,password from user$ where name like 'TEST0%'; USER# NAME PASSWORD ---------- ------------------------------ ------------------------------ 56 TEST01 C30F643E615C9A14 57 TEST02 BBEA097CE6828B7E明白为什么不行了吧,oracle加密算法可不仅仅只包含你的密码,还有其他信息!
哦 原来是这个样子呀 呵呵 那你有没有什么办法呢? 用我这个思路达到修改用户密码的目的 不能用alter user
OWNER VARCHAR2(30) NOT NULL Owner of the view
VIEW_NAME VARCHAR2(30) NOT NULL Name of the view
TEXT_LENGTH NUMBER Length of the view text
TEXT LONG View text
TYPE_TEXT_LENGTH NUMBER Length of the type clause of the typed view
TYPE_TEXT VARCHAR2(4000) Type clause of the typed view
OID_TEXT_LENGTH NUMBER Length of the WITH OID clause of the typed view
OID_TEXT VARCHAR2(4000) WITH OID clause of the typed view
VIEW_TYPE_OWNER VARCHAR2(30) Owner of the type of the view if the view is a typed view
VIEW_TYPE VARCHAR2(30) Type of the view if the view is a typed view
SUPERVIEW_NAME VARCHAR2(30) Name of the superview 没有相应的基表字段
------------------------------ ------------------------------
SCOTT F894844C34402B67
SQL> update user$ set password='F894844C34402B67'
2 where name='TEST001';1 row updated.SQL> commit;Commit complete.
SQL> select username,password from dba_users
2 where username='SCOTT';USERNAME PASSWORD
------------------------------ ------------------------------
SCOTT F894844C34402B67SQL> select username,password from dba_users
2 where username='TEST001';USERNAME PASSWORD
------------------------------ ------------------------------
TEST001 F894844C34402B67SQL> conn test001/tiger
ERROR:
ORA-01017: 鐢ㄦ埛鍚?鍙d护鏃犳晥; 鐧诲綍琚嫆缁
Warning: You are no longer connected to ORACLE.
好像登陆不上哦?
ALTER USER scott IDENTIFIED BY test;
---------- ------------------------------ ------------------------------
56 TEST01 C30F643E615C9A14
57 TEST02 BBEA097CE6828B7E明白为什么不行了吧,oracle加密算法可不仅仅只包含你的密码,还有其他信息!
呵呵 那你有没有什么办法呢?
用我这个思路达到修改用户密码的目的
不能用alter user
如果你修改基表,那么必须要有sys的权限!那么如果你有sys的权限,你还用改基表吗?
一条语句就可以达到目的.
对于oracle的加密算法我可不知道,如果你想研究,建议去oracle公司负责该模块的组
另,你有黑客的倾向......一句玩笑哈!
SQL> set long 2000000
SQL> set linesize 2000
select text from dba_views where view_name='DBA_USERS';可以查看dba_users的定义。
SQL> exec dbms_output.put_line(dbms_metadata.get_ddl('VIEW','DBA_USERS','SYS')); CREATE OR REPLACE FORCE VIEW "SYS"."DBA_USERS" ("USERNAME", "USER_ID", "PASSWORD", "ACCOUNT_STATUS", "LOCK_DATE",
"EXPIRY_DATE", "DEFAULT_TABLESPACE", "TEMPORARY_TABLESPACE", "CREATED", "PROFILE", "INITIAL_RSRC_CONSUMER_GROUP",
"EXTERNAL_NAME") AS
select u.name, u.user#, u.password,
m.status,
decode(u.astatus, 4, u.ltime,
5, u.ltime,
6, u.ltime,
8, u.ltime,
9,
u.ltime,
10, u.ltime, to_date(NULL)),
decode(u.astatus,
1, u.exptime,
2, u.exptime,
5, u.exptime,
6, u.exptime,
9, u.exptime,
10,
u.exptime,
decode(u.ptime, '', to_date(NULL),
decode(pr.limit#, 2147483647,
to_date(NULL),
decode(pr.limit#, 0,
decode(dp.limit#, 2147483647, to_date(NULL),
u.ptime +
dp.limit#/86400),
u.ptime + pr.limit#/86400)))),
dts.name,
tts.name, u.ctime, p.name,
nvl(cgm.consumer_group, 'DEFAULT_CONSUMER_GROUP'),
u.ext_username
from
sys.user$ u left outer join sys.resource_group_mapping$ cgm
on (cgm.attribute = 'ORACLE_USER' and cgm.status
= 'ACTIVE' and
cgm.value = u.name),
sys.ts$ dts, sys.ts$ tts, sys.profname$ p,
sys.user_astatus_map m, sys.profile$ pr, sys.profile$ dp
where u.datats# = dts.ts#
and u.resource$ =
p.profile#
and u.tempts# = tts.ts#
and u.astatus = m.status#
and u.type# = 1
and u.resource$
= pr.profile#
and dp.profile# = 0
and dp.type#=1
and dp.resource#=1
and pr.type# = 1
and pr.resource# = 1PL/SQL 过程已成功完成。
SQL> exec dbms_output.put_line(dbms_metadata.get_ddl('VIEW','DBA_USERS','SYS')); CREATE OR REPLACE FORCE VIEW "SYS"."DBA_USERS" ("USERNAME", "USER_ID", "PASSWORD", "ACCOUNT_STATUS", "LOCK_DATE",
"EXPIRY_DATE", "DEFAULT_TABLESPACE", "TEMPORARY_TABLESPACE", "CREATED", "PROFILE", "INITIAL_RSRC_CONSUMER_GROUP",
"EXTERNAL_NAME") AS
select u.name, u.user#, u.password,
m.status,
decode(u.astatus, 4, u.ltime,
5, u.ltime,
6, u.ltime,
8, u.ltime,
9, u.ltime,
10, u.ltime, to_date(NULL)),
decode(u.astatus, 1, u.exptime,
2, u.exptime,
5, u.exptime,
6, u.exptime,
9, u.exptime,
10, u.exptime,
decode(u.ptime, '', to_date(NULL),
decode(pr.limit#, 2147483647, to_date(NULL),
decode(pr.limit#, 0,
decode(dp.limit#, 2147483647, to_date(NULL),
u.ptime +
dp.limit#/86400),
u.ptime + pr.limit#/86400)))),
dts.name,
tts.name, u.ctime, p.name,
nvl(cgm.consumer_group, 'DEFAULT_CONSUMER_GROUP'),
u.ext_username
from
sys.user$ u left outer join sys.resource_group_mapping$ cgm
on (cgm.attribute = 'ORACLE_USER'
and cgm.status = 'ACTIVE' and
cgm.value = u.name),
sys.ts$ dts, sys.ts$ tts, sys.profname$ p,
sys.user_astatus_map m, sys.profile$ pr, sys.profile$ dp
where u.datats# = dts.ts#
and u.resource$ = p.profile#
and u.tempts# = tts.ts#
and u.astatus = m.status#
and u.type# = 1
and u.resource$ = pr.profile#
and dp.profile# = 0
and dp.type#=1
and dp.resource#=1
and pr.type# = 1
and pr.resource# = 1PL/SQL 过程已成功完成。整理下......