本帖最后由 wh62592855 于 2009-09-23 23:09:12 编辑

解决方案 »

  1.   

    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 没有相应的基表字段
      

  2.   

    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.
    好像登陆不上哦?
      

  3.   

    直接修改用户的密码不就可以了吗?
    ALTER USER scott IDENTIFIED BY test;
      

  4.   

    都有SYS的权限,直接修改scott的密码,不就完了吗?
      

  5.   

    楼主看这个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加密算法可不仅仅只包含你的密码,还有其他信息!
      

  6.   

    哦 原来是这个样子呀
    呵呵 那你有没有什么办法呢?
    用我这个思路达到修改用户密码的目的
    不能用alter user
      

  7.   

    感觉你在走弯路,理由如下:
    如果你修改基表,那么必须要有sys的权限!那么如果你有sys的权限,你还用改基表吗?
    一条语句就可以达到目的.
    对于oracle的加密算法我可不知道,如果你想研究,建议去oracle公司负责该模块的组
    另,你有黑客的倾向......一句玩笑哈!
      

  8.   


    SQL> set long 2000000
    SQL> set linesize 2000
    select text from dba_views where view_name='DBA_USERS';可以查看dba_users的定义。
      

  9.   


    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 过程已成功完成。
      

  10.   


    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 过程已成功完成。整理下......