首先稍微解释下os认证:
oracle安装之后默认景象下是启用了os认证的,这里提到的os认证是指办事器端os认证。os认证的意思把登录数据库的用户和口令校验放在了操纵系同一级。若是以安装oracle时的用户登录os,那么此时在登录oracle数据库时不须要任何验证,如:
SQL> connect /as sysdba
已连接。
SQL> show user;
User is "SYS"
SQL> connect sys/aaa@dmt as sysdba
已连接。
SQL> show user;
User is "SYS"
SQL> connect sys/bbb as sysdba
已连接。
SQL> show user;
User is "SYS"
SQL> connect aaa/bbb as sysdba
已连接。
SQL> show user;
User is "SYS"
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
非论输入什么用户(哪怕这个用户如aaa在数据库中底子不存在),只要以sysdba权限连接数据库,都可以连接上,并且连接用户是sys,有时侯,若是忘记了数据库的密码,而又想登录数据库,可以经由过程这种验证格式,前提是在数据库办事器上;然而便利的同时也带来了一些安然隐患,于是很多人想脱离os认证,在win下只要把oracle_home/NETWORK/admin/sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= (NTS)中的NTS改成NONE或者注释掉这句话(在前面加上#),就可以脱离os功能,要想以sys用户连上数据库必须输入正确的sys口令,如:
SQL> connect /as sysdba
ERROR:
ORA-01031: 权限不足
SQL> connect sys/aaa as sysdba
ERROR:
ORA-01017: 用户名/口令无效; 登录被拒绝
SQL> connect aaa/bbb as sysdba
ERROR:
ORA-01031: 权限不足
SQL> connect sys/system as sysdba
已连接。
SQL>
如此一来,新建用户的tables下就不会总是有系统表,帮我解决掉的问题就是~myeclipse的数据源系统表干扰问题· ~