国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

解析Oracle數(shù)據(jù)庫中的對象集合schema

2019-11-26 14:49:49
字體:
供稿:網(wǎng)友

搭建一個oracle,下面會有很多schema,每個schema下的數(shù)據(jù)都不影響。

感覺和mysql的庫的概念很像,現(xiàn)在用的數(shù)據(jù)庫管理系統(tǒng)其實也是這么劃分的,mysql用的ip+port+庫標(biāo)識,oracle用ip+port+schema標(biāo)識,平時還總聽到一個實例的概念,我的理解就是實例就是一系列相關(guān)進(jìn)程,代表了一個數(shù)據(jù)庫服務(wù)。目前線上為了節(jié)省資源,常常把機(jī)器分成多個實例,用不同的端口號標(biāo)識,每個實例上有多個schema。

旭哥跟我說的很形象,oracle一個實例上有對應(yīng)多個庫。mysql一個庫上應(yīng)多個實例。mysql的建庫很靈活。

websql中一行數(shù)據(jù)中,name為mgmt_view,displayName為mgmt_view@dev_crm,jdbc為jdbc:oracle:thin:@10.232.31.XXX:1521:newcrm,jdbcusername為dev_ddl,DSName為dev_crm,DBName為newcrm(和jdbaURL上的一致),DBuser為mgmt_view,TNSName為dev_crm(應(yīng)該是ora文件上的配置)。

name為stat,displayName為stat@dev_dbc ,jdbc為jdbc:oracle:thin:@10.232.31.XXX:1521:dev-dbc,jdbcusername為dev_ddl,DSName為dev-dbc,DBName為dev-dbc(和jdbaURL上的一致),DBuser為stat,TNSName為dev_dbc(應(yīng)該是ora文件上的配置),

我本地的ora文件有如下配置:

LOCALTEST = (DESCRIPTION =  (ADDRESS = (PROTOCOL = TCP)(HOST = XXX.com)(PORT = 1521))  (CONNECT_DATA =   (SERVER = DEDICATED)   (SERVICE_NAME = localtest)  ) )

這里面有個serviceName,還有的地方是SID,另外最開始還有個LOCALTEST名字,這個標(biāo)識鏈接描述符。

#db_name是數(shù)據(jù)庫的名稱,在db安裝時就已經(jīng)設(shè)置了,這里不可修改,它決定了數(shù)據(jù)庫安裝文件的位置。 #instance_name是實例名,是數(shù)據(jù)庫運行中名稱。 其實在OO中db_name相當(dāng)于類而instance_name向當(dāng)于對象,它也是代表數(shù)據(jù)庫運行中的內(nèi)存及其進(jìn)程,同時影響到了這些進(jìn)程的名稱,譬如:一個數(shù)據(jù)庫db_name=cus,而其實例instance_name= aking,那么數(shù)據(jù)庫起來后,其進(jìn)程名可能為:Pmon_aking_1。 #service_name我覺得應(yīng)該是指數(shù)據(jù)庫網(wǎng)絡(luò)連接時的名稱,在listener配置中會有所考慮的。這個值也是可以隨意改動的,并且還可以有多個值。 #SID_NAME指數(shù)據(jù)庫的運行的實例名,應(yīng)該是和instance_name一致。 #GLOBAL_DBNAME是listener配置的對外網(wǎng)絡(luò)連接名稱,我們在配置tnsname.ora時會考慮這個參數(shù)。這個參數(shù)可以任意的設(shè)置。
簡而言之,打個比方,你的名字叫小明,但是你有很多外號。你父母叫你小明,但是朋友都叫你的外號。 這里你的父母就是oracle實例,小明就是sid,service name就是你的外號。 sid用于實例區(qū)分各個數(shù)據(jù)庫,service name用于外部鏈接。 它們可能是不同的,要注意你得到的是哪個名字,合理使用,否則遠(yuǎn)程連接別的數(shù)據(jù)庫可能出錯。
還有一個概念是schema和user的關(guān)系。我就直接引用了,很形象:

Oracle數(shù)據(jù)庫中Schema和User的關(guān)系是一一對應(yīng)的,也就是說一個Schema只對應(yīng)一個User,一個User對應(yīng)一個Schema。當(dāng)某個User下面有table,view,Index......等Schema Object時,這個User就成了一個Schema,也就是在Enterprise Manager中出現(xiàn)的那個,如果某個User下面沒有table,view,Index......等Schema Object時,這個User不會在Enterprise Manager中Schema對象出現(xiàn)
user is just name, schema is home, with many stuff, tables, index, .....
本地的配置,servicename和sid都是一個20151121161701210.jpg (457×135)

用dicmgr登錄用到的schema和其他的SCHEMA

20151121161736822.jpg (244×481)

websql中sid在db_host中的sid字段,代表了庫名,這個值和jdbcurl上對應(yīng)的一致。

看了下同步字典的程序,dsname和tnsname就是tnsname,dbname是sid,name和dbuser對應(yīng)的就是schemal,tnsname和sid可以從dbhostgroup這張表中直接取出來。schemal可以用一下的方法取出來:

select lower(username) username from dba_users where usernamenot in ('STDBYPERF', 'READONLY', 'APPQOSSYS','ANYSQL', 'DBFLASH', 'SYS', 'SYSTEM','MONITOR','TBSEARCH','MANAGER', 'SYSMAN', 'EXFSYS', 'WMSYS', 'DIP', 'TSMSYS', 'ORACLE_OCM', 'OUTLN', 'DBSNMP', 'PERFSTAT', 'SEARCH', 'TOOLS', 'TBDUMP', 'DMSYS', 'XDB', 'ANONYMOUS')and username like ? 

總結(jié)一下,oracle這些name確實很多,其中servicename和sid是實例級別的,schema類似于mysql中的庫,一般和username可以等同。另外jdbcurl中端口后面的對應(yīng)的是服務(wù)名稱哦。還有要熟悉websql的database的表結(jié)構(gòu)


oracle創(chuàng)建用戶并創(chuàng)建其他schemal的相關(guān)視圖和同義詞
1 創(chuàng)建一個用戶

CREATE USER "XXX" IDENTIFIED BY XXX ACCOUNT UNLOCK PROFILE "DEFAULT";grant connect, resource to XXX;

2 給這個用戶查詢其他schemal上的表的權(quán)限

GRANT SELECT ON wf_dataexport TO XXX;GRANT SELECT ON dbmis2_sql_exe_his TO XXX;

3 在新用戶上建立視圖,用來查詢其他schemal的表

CREATE VIEW "XXX"."v_XXX_wf_dataexport" AS select * from idb.wf_dataexport;CREATE VIEW "XXX"."v_XXX_dbmis2_sql_exe_his" AS select * from idb.dbmis2_sql_exe_his;

4 建立一個同義詞

create or replace synonym XXX.base_aone_app for base_aone_app;

以上操作都在原有scheaml執(zhí)行,并使用dba賬號。

總結(jié)一下,oracle的管理命令基本上忘得差不多了,有空的時候撿起來看看。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 荥经县| 南岸区| 上栗县| 汝城县| 岳池县| 祁阳县| 留坝县| 奇台县| 萝北县| 呈贡县| 静海县| 滨海县| 团风县| 延川县| 德令哈市| 沙雅县| 肃南| 长武县| 电白县| 新野县| 九台市| 梁河县| 镇平县| 晋城| 郯城县| 突泉县| 建湖县| 平遥县| 乌什县| 淮阳县| 宜城市| 扎囊县| 广灵县| 桂林市| 翁源县| 上高县| 宣武区| 西贡区| 宁陵县| 邵阳县| 邻水|