前阵看完视频教学,oracle的。
下课练习的时候,遇上几个问题。
第一个:
conn 用户名/密码 as sysdba;这里的密码不管是否正确,都能连上,而且,连上后,也同样具有dba的权限。这是为什么啊?
第二个:
conn 用户名/密码 as sysdba;连接后,创建一些表,然后,conn 相同的用户名之后,只是没有以as sysdba;的身份连接后,就不能查到相应的表~~
请各位大虾教教小弟~

解决方案 »

  1.   

    1  以操作系统用户认证。
    2  conn 用户名/密码 as sysdba;连接后,创建一些表,在SYS模式下。conn 相同的用户名之后,只是没有以as sysdba;的身份连接后,在该用户普通模式下。
      

  2.   

    1楼说的正确的.
    我补充一下细节.
    (1)是Oracle的操作系统验证,因为你既然连操作系统都登上了,那么Oracle也自然给你开权限了,所以你使用任何用户名密码登陆sysdba都不需要验证.
    你可以在 我的电脑->管理->本地用户和组里,看看组是不是多个了Oracle_dba,用户是不是已经加入了这个组,会很明了.
    另外如果不想使用这种验证可以改%Oralce_Home%/network/admin/sqlnet.ora文件,把
    SQLNET.AUTHENTICATION_SERVICES= (NTS)改成SQLNET.AUTHENTICATION_SERVICES= (none).(2)你以dba身份登陆创建的表是在dba用户下面的,而你登陆非sysdba的用户看不到是因为那张表不是创建在你这个用户下的,Oracle数据库中用户的表是分离的.
    也就是A用户下建的表就是A的,B用户是看不到的.(我是指大部分)
      

  3.   

    你以 as sysdba的方式登录,不管你用什么用户登录,其最终实质是以SYS登录,SYS用户是系统最大权限的管理员用户
    如果不以as sysdba登录,则为相应的普通用户了,普通用户下是不能直接访问SYS用户的表的,如果该用户具有DBA权限,是可以通过 用户名.表名 来访问的