alter session set current_schema=Schema

使用CURRENT_SCHEMA以後,當前會話所參考的默認SCHEMA變爲設置的用戶,而再也不是當前的用戶;
其實須要稍微理解一下user和schema的區別先:
user即oracle中的用戶,和全部系統的中用戶概念相似,用戶所持有的是系統的權限及資源;而schema所涵蓋的是各類對象,它包含了表、函數、包等等對象的「所在地」,並不包括對他們的權限控制。比如一個房子,裏面放滿了傢俱,對這些傢俱備支配權的是房子的主人(user),而不是房子(schema)。你能夠也是一個房子的主人(user),擁有本身的房子(schema)。能夠經過alter session的方式進入別人的房子。這個時候,你能夠看到別人房子裏的傢俱(desc)。若是你沒有特別指定的話,你所作的操做都是針對你當前所在房子中的東西。至於你是否有權限使用(select)、搬動(update)或者拿走(delete)這些傢俱就看這個房子的主人有沒有給你這樣的權限了,或者你是真個大廈(DB)的老大(DBA)。
alter session set current_schema=Schema能夠用來代替synonyms。若是你想調用其餘schema的對象(有權限的前提下),又沒建synonym,有不想把其餘schema名字放到代碼中,就能夠先alter session set current_schema=<其餘schema名字>。session

TEST.T1 ,TEST下面有表T1,SCOTT須要訪問它
SQL>CONNECT TEST/TEST
SQL>GRANT SELECT ON T1 TO SCOTT;
SQL>CONNECT scott/tiger
SQL>SELECT * FROM SCOTT.T1;
SQL>ALTER SESSION SET CURRENT_SCHEMA = test;
SQL>SELECT * FROM T1;oracle

ALTER SESSION SET CURRENT_SCHEMA = test以後,區別僅在於SCOTT用戶訪問TEST用戶下面的表不須要帶上SCHEMA而已,注意的是,SELECT 查詢權限仍是須要首先賦予的。函數

 

https://blog.csdn.net/rockpk008/article/details/38357313.net

相關文章
相關標籤/搜索