不要用sys用户连接,使用system

解决方案 »

  1.   


    这个也试过了,用system用户的话,修改system密码,会在
    cmd.ExecuteNonQuery();
    这里提示“ORA-01031: 权限不足。”咋整?
      

  2.   

    oldPwd 传参的时候 传    密码+空格+as sysdba
      

  3.   


    按你说的,改成Password={3} as sysdba
    还是不行,提示:
    ORA-01017: 用户名/口令无效; 登录被拒绝
      

  4.   

    用system用户可以修改sys的密码,检查你的system用户是否有DBA的角色,我曾经见过某个数据库的system用户竟然没有DBA角色
      

  5.   

    次奥, 你给 oldPwd 赋值的时候按照
    密码+空格+as sysdba 赋值
      

  6.   

    给你个JAVA的例子,你看C#是否也有internal_logon参数:    String url="jdbc:oracle:thin:@localhost:1521:testdb";
        Properties connProperty = new Properties(); 
        connProperty.put("user", "sys"); 
        connProperty.put("password", "abc123"); 
        connProperty.put("internal_logon", "sysdba");     Connection conn = DriverManager.getConnection(url,connProperty);
      

  7.   

    加了: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();
    这里报错:
    尝试读取或写入受保护的内存。这通常指示其他内存已损坏。