要做一个功能,修改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 连接
该如何修改呢?
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 连接
该如何修改呢?
--修改密码是这个,不可直接更新数据字典中的密码字段
alter user 用户名 identified by 密码;
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();
这里报错:
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。