要做一个功能,修改sys用户的密码。                //数据库连接字符串
                string oracleStr = string.Format(@"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT=1521)))(CONNECT_DATA=(SERVER={0})(SERVICE_NAME={1})));User={2};Password={3};Persist Security Info=true;", ip, sid, uid, oldPwd);                //打开数据库
                OracleConnection con = new OracleConnection(oracleStr);
                con.Open();//在这里提示: ORA-28009: 应当以 SYSDBA 身份或 SYSOPER 身份建立 SYS 连接                //执行
                string cmdStr = "update dba_users set password='" + newPwd + "' where username='" + uid + "'";
                OracleCommand cmd = new OracleCommand(cmdStr, con);
                cmd.ExecuteNonQuery();                //关闭数据库连接
                con.Close();
                con.Dispose();
 con.Open();--------在这里提示: ORA-28009: 应当以 SYSDBA 身份或 SYSOPER 身份建立 SYS 连接
该如何修改呢?

解决方案 »

  1.   


    --修改密码是这个,不可直接更新数据字典中的密码字段
    alter user 用户名 identified by 密码;
      

  2.   

    加了:DBA Privilege=SYSDBA;
    string oracleStr = string.Format(@"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT=1521)))(CONNECT_DATA=(SERVER={0})(SERVICE_NAME={1})));User Id={2};Password={3};DBA Privilege=SYSDBA;", ip, sid, uid, oldPwd);cmd.ExecuteNonQuery();
    这里报错:
    尝试读取或写入受保护的内存。这通常指示其他内存已损坏。