溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何分析db2數(shù)據(jù)庫(kù)的schema和user

發(fā)布時(shí)間:2021-12-30 16:56:01 來源:億速云 閱讀:318 作者:柒染 欄目:云計(jì)算

如何分析db2數(shù)據(jù)庫(kù)的schema和user,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

數(shù)據(jù)庫(kù)中Schema有兩種含義,一種是概念上的Schema,指的是一組DDL語(yǔ)句集,該語(yǔ)句集完整地描述了數(shù)據(jù)庫(kù)的結(jié)構(gòu)。還有一種是物理上的 Schema,指的是數(shù)據(jù)庫(kù)中的一個(gè)名字空間,它包含一組表、視圖和存儲(chǔ)過程等命名對(duì)象。簡(jiǎn)單的說,Schema就是一個(gè)(數(shù)據(jù)庫(kù))用戶所擁有的數(shù)據(jù)庫(kù)的對(duì)象。

在一個(gè)數(shù)據(jù)庫(kù)中可以有多個(gè)應(yīng)用的數(shù)據(jù)表,這些不同應(yīng)用的表可以放在不同的schema之中,同時(shí),每一個(gè)schema對(duì)應(yīng)一個(gè)用戶,不同的應(yīng)用可以以不同的用戶連接數(shù)據(jù)庫(kù),這樣,一個(gè)大數(shù)據(jù)庫(kù)就可以根據(jù)應(yīng)用把其表分開來管理。不同的schema之間它們沒有直接的關(guān)系,不同的shcema之間的表可以同名,也可以互相引用(但必須有權(quán)限),在沒有操作別的schema的操作根權(quán)下,每個(gè)用戶只能操作它自己的schema下的所有的表。不同的schema下的同名的表,可以存入不同的數(shù)據(jù)(即schema用戶自己的數(shù)據(jù)).

數(shù)據(jù)庫(kù)中的User和Schema到底什么關(guān)系呢?其實(shí)User就是每個(gè)Schema的主人,如果當(dāng)前操作數(shù)據(jù)庫(kù)的用戶有默認(rèn)的Schema(在創(chuàng)建用戶的時(shí)候指定了),那么新表被創(chuàng)建在默認(rèn)的Schema上。 通過這樣的方法,主要是方便管理。

在DB2中的schema的概念和ORACLE中的概念有著本質(zhì)的區(qū)別:在ORACLE中schema和用戶是同一個(gè);在DB2中schema不一定是用戶,因?yàn)閐b2內(nèi)部沒有用戶的概念,連接用戶必須是操作系統(tǒng)用戶.

查詢當(dāng)前存在的Schema

db2 "select SCHEMANAME,owner,CREATE_TIME from syscat.schemata"

在有些情況下,當(dāng)前登錄用戶所要訪問的Schema可能并不是默認(rèn)分配給他的Schema,這時(shí)查詢表前就需要一個(gè)前綴來約束所要訪問的Schema。

如:

db2 "SELECT * FROM wanted_schema_name.table_name"

或通過下面的命令可以修改當(dāng)前Schema

SET CURRENT SCHEMA = 'PAYROLL'
SET SCHEMA 'PAYROLL'


在開發(fā)過程中,可以通過修改連接字符串來修改默認(rèn)連接的Schema/Sqlid,

以JDBC為例(最后的分號(hào)一定不能省略):

jdbc:db2://database_server_uri:port/database_name:currentSchema=schema_name;

db2 切換 schema 及執(zhí)行腳本

在windows 下測(cè)試過

1、打開 cmd 命令

2、db2cmd

3、db2 connect to test user meta using portaldb ----連接數(shù)據(jù)庫(kù)

4、db2 select current schema from sysibm.sysdummy1 ----查看當(dāng)前數(shù)據(jù)庫(kù)默認(rèn)的schema

5、db2set current schema bast ---設(shè)置schema

6、db2 select current schema from sysibm.sysdummy1 ---查看是否設(shè)置成功

7、db2 -tvf d:\\meta\meta_ddl.sql --在指定的schema執(zhí)行建表語(yǔ)句


DB2 將schema下所有表的權(quán)限賦予一個(gè)用戶

db2 "select 'db2 grant select on table DB2INST2.'|| tabname ||' to db2inst1' from syscat.tables where tabschema='DB2INST2'"

單獨(dú)對(duì)某個(gè)Schema下的表進(jìn)行授權(quán)

C:\Users\Administrator>db2 grant select on table zssqsong.kc_team_user to user zssqding

DB20000I SQL 命令成功完成。

關(guān)于如何分析db2數(shù)據(jù)庫(kù)的schema和user問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI