我可以修改schema吗--schema和登录user的关系

网友投稿 317 2022-11-05


我可以修改schema吗--schema和登录user的关系

作者:​​三十而立​​

想到前几天一个网友朋友问过的schema的问题, schema和user的关系

v$session表里的username和schemaname都是一样的,有什么意义? 但是时间仓促,大致的解释了一下,今天看到那个帖子。

,感到自己还没有解释的清楚,今天特地总结了一下。以供网友参考

当我们用用户登录sqlplus或者其他客户端登录Oracle数据库的时候,都会建立连接session,默认情况下,当一个用户登录的时候,schema是这个用户的schmea

SQL>conn test1/test1;  Connected.  SQL> show user;  USER is "TEST1"  SQL>select sys_context('userenv', 'current_schema') from dual;  SYS_CONTEXT('USERENV','CURRENT_SCHEMA')  --------------------------------------------------------------------------------  TEST1  可以看到这里的test1用户登录以后的schema是TEST1  我们查一查session,也可以看到test1这个用户的session里使用的schema  SQL> select username, schemaname from v$session where username='TEST1';  USERNAME SCHEMANAME  ------------------------------ ------------------------------  TEST1 TEST1  现在我们通过alter session set current_context来修改这个schema  SQL> alter session set current_schema=system;  SQL> show user;  USER is "TEST1"  用户还是test1  SQL> select sys_context('userenv', 'current_schema') from dual;  SYS_CONTEXT('USERENV','CURRENT_SCHEMA')  --------------------------------------------------------------------------------  SYSTEM  schema已经切换到了system的schema叻  在session里查查看  SQL> select username, schemaname from v$session where username='TEST1';  USERNAME SCHEMANAME  ------------------------------ ------------------------------  TEST1 SYSTEM】  这里也显示为systenm叻  注意这里切换的是schema而已,也就是说你建表时是建立在哪个schema里而已,session中的用户并没有切换,也就是说all_tables, user_tables这些和session里的user有关的结果不会发生改变  比如  SQL> select table_name from user_tables;  TABLE_NAME  --------------------------------------------------------------------------------  T1_111  TABLE_1111  TEMP_TABLE2  TEMP_TABLE3  我们这里看到的还是当前用户test1里看到的建立的表而已,有兴趣可以 根据我的文章 数据字典-数据字典表 里介绍的内容 追溯一下这个all_tables视图的sql语句  当然现在如果你建表的时候 都是建立在当前的schema里的, 如果不指定表空间的话,还是用的当前用户的表空间。 如果没有在当前schema建表权限的会,会报ORA-01031: insufficient privileges  SQL> create table test_schema (id int);  create table test_schema (id int)  *  ERROR at line 1:  ORA-01031: insufficient privileges

如果没有那句“三十而立”,三十岁的男人正可以轻轻松松


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java迭代器和for循环优劣详解
下一篇:深入内存组件shared pool--之ORA-04031错误
相关文章

 发表评论

暂时没有评论,来抢沙发吧~