a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

解析Oracle數據庫中的對象集合schema

2024-08-29 13:58:33
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Oracle數據庫中的對象集合schema,是Oracle數據庫入門學習中的基礎知識,需要的朋友可以參考下

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

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

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

websql中一行數據中,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(應該是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(應該是ora文件上的配置),

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

 

 
  1. LOCALTEST = 
  2. (DESCRIPTION = 
  3. (ADDRESS = (PROTOCOL = TCP)(HOST = XXX.com)(PORT = 1521)) 
  4. (CONNECT_DATA = 
  5. (SERVER = DEDICATED) 
  6. (SERVICE_NAME = localtest) 

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

#db_name是數據庫的名稱,在db安裝時就已經設置了,這里不可修改,它決定了數據庫安裝文件的位置。 #instance_name是實例名,是數據庫運行中名稱。 其實在OO中db_name相當于類而instance_name向當于對象,它也是代表數據庫運行中的內存及其進程,同時影響到了這些進程的名稱,譬如:一個數據庫db_name=cus,而其實例instance_name= aking,那么數據庫起來后,其進程名可能為:Pmon_aking_1。 #service_name我覺得應該是指數據庫網絡連接時的名稱,在listener配置中會有所考慮的。這個值也是可以隨意改動的,并且還可以有多個值。 #SID_NAME指數據庫的運行的實例名,應該是和instance_name一致。 #GLOBAL_DBNAME是listener配置的對外網絡連接名稱,我們在配置tnsname.ora時會考慮這個參數。這個參數可以任意的設置。

簡而言之,打個比方,你的名字叫小明,但是你有很多外號。你父母叫你小明,但是朋友都叫你的外號。 這里你的父母就是oracle實例,小明就是sid,service name就是你的外號。 sid用于實例區分各個數據庫,service name用于外部鏈接。 它們可能是不同的,要注意你得到的是哪個名字,合理使用,否則遠程連接別的數據庫可能出錯。

還有一個概念是schema和user的關系。我就直接引用了,很形象:

Oracle數據庫中Schema和User的關系是一一對應的,也就是說一個Schema只對應一個User,一個User對應一個Schema。當某個User下面有table,view,Index......等Schema Object時,這個User就成了一個Schema,也就是在Enterprise Manager中出現的那個,如果某個User下面沒有table,view,Index......等Schema Object時,這個User不會在Enterprise Manager中Schema對象出現

user is just name, schema is home, with many stuff, tables, index, .....

解析Oracle數據庫中的對象集合schema

本地的配置,servicename和sid都是一個

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

解析Oracle數據庫中的對象集合schema

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

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

 

 
  1. select lower(username) username from dba_users where username 
  2.  
  3. not 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'
  4. and username like ? 

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

oracle創建用戶并創建其他schemal的相關視圖和同義詞

1 創建一個用戶

 

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

2 給這個用戶查詢其他schemal上的表的權限

 

 
  1. GRANT SELECT ON wf_dataexport TO XXX; 
  2. GRANT SELECT ON dbmis2_sql_exe_his TO XXX; 

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

 

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

4 建立一個同義詞

 

 
  1. create or replace synonym XXX.base_aone_app for base_aone_app; 

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

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


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 超碰97在线免费观看 | 欧洲精品久久久久毛片完整版 | 热久久久久 | 六月丁香啪啪 | 亚洲精品免费视频 | 午夜爽爽爽| 精品三区在线观看 | 欧美大片一区二区 | 欧美激情在线狂野欧美精品 | 国产综合精品一区二区三区 | 国产精品久久久久久久久久 | 精品一区二区三区久久 | 国产96视频 | 成人免费一区二区三区视频网站 | 日韩a级免费视频 | 国产精品视频一二三区 | 伊人精品影院 | 曰韩精品一区二区 | 国产精品99久久久久久久vr | 国产区在线 | 国精品一区 | 亚洲天天草 | 91精品一区 | 久久久天堂国产精品女人 | 综合色婷婷一区二区亚洲欧美国产 | 国产综合一区二区 | 日韩av电影网 | 婷婷综合五月 | 超碰在线中文字幕 | 午夜成人在线视频 | 国产精品九九九 | 在线免费av观看 | 日韩毛片免费视频 | av午夜电影 | 亚洲成人中文字幕 | 日韩一区二区福利 | 国产区精品在线 | 在线播放亚洲 | 国产中文区二幕区2012 | 欧美在线观看一区 | 久久青青 |