您好,登錄后才能下訂單哦!
如何分析db2數據庫的schema和user,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
數據庫中Schema有兩種含義,一種是概念上的Schema,指的是一組DDL語句集,該語句集完整地描述了數據庫的結構。還有一種是物理上的 Schema,指的是數據庫中的一個名字空間,它包含一組表、視圖和存儲過程等命名對象。簡單的說,Schema就是一個(數據庫)用戶所擁有的數據庫的對象。
在一個數據庫中可以有多個應用的數據表,這些不同應用的表可以放在不同的schema之中,同時,每一個schema對應一個用戶,不同的應用可以以不同的用戶連接數據庫,這樣,一個大數據庫就可以根據應用把其表分開來管理。不同的schema之間它們沒有直接的關系,不同的shcema之間的表可以同名,也可以互相引用(但必須有權限),在沒有操作別的schema的操作根權下,每個用戶只能操作它自己的schema下的所有的表。不同的schema下的同名的表,可以存入不同的數據(即schema用戶自己的數據).
數據庫中的User和Schema到底什么關系呢?其實User就是每個Schema的主人,如果當前操作數據庫的用戶有默認的Schema(在創建用戶的時候指定了),那么新表被創建在默認的Schema上。 通過這樣的方法,主要是方便管理。
在DB2中的schema的概念和ORACLE中的概念有著本質的區別:在ORACLE中schema和用戶是同一個;在DB2中schema不一定是用戶,因為db2內部沒有用戶的概念,連接用戶必須是操作系統用戶.
查詢當前存在的Schema
db2
"select SCHEMANAME,owner,CREATE_TIME from syscat.schemata"
在有些情況下,當前登錄用戶所要訪問的Schema可能并不是默認分配給他的Schema,這時查詢表前就需要一個前綴來約束所要訪問的Schema。
如:
db2 "SELECT * FROM wanted_schema_name.table_name"
或通過下面的命令可以修改當前Schema
SET CURRENT SCHEMA = 'PAYROLL'
SET SCHEMA 'PAYROLL'
在開發過程中,可以通過修改連接字符串來修改默認連接的Schema/Sqlid,
以JDBC為例(最后的分號一定不能省略):
jdbc:db2://database_server_uri:port/database_name:currentSchema=schema_name;
在windows 下測試過
1、打開 cmd 命令
2、db2cmd
3、db2 connect to test user meta using portaldb ----連接數據庫
4、db2 select current schema from sysibm.sysdummy1 ----查看當前數據庫默認的schema
5、db2set current schema bast ---設置schema
6、db2 select current schema from sysibm.sysdummy1 ---查看是否設置成功
7、db2 -tvf d:\\meta\meta_ddl.sql --在指定的schema執行建表語句
DB2 將schema下所有表的權限賦予一個用戶
db2 "select 'db2 grant select on table DB2INST2.'|| tabname ||' to db2inst1' from syscat.tables where tabschema='DB2INST2'"
單獨對某個Schema下的表進行授權
C:\Users\Administrator>db2 grant select on table zssqsong.kc_team_user to user zssqding
DB20000I SQL 命令成功完成。
關于如何分析db2數據庫的schema和user問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。