Synonym_View_Materialized和Public物件
建立同義詞語法
CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema.] 同義詞名稱 FOR [schema.] object [@dblink];
使用者具備select any table許可權即可建立(比如授予使用者dba許可權即可建立)
CREATE SYNONYM synonym_name FOR table.column雖然也正常建立,但是select * from synonym_name會報錯ORA-00980:同義詞轉換不再有效
建立檢視語法
CREATE [OR REPLACE] VIEW view_name as subquery
使用者必須具備物件許可權才可建立(比如select * from table1授予使用者dba許可權也不行,必須單獨授予使用者table1的物件,grant select on table1 to user)
目前public物件使用較多的就是db_link、SYNONYM兩類
臨時表建立時雖然要加public,但是owner不是public,owner就是建立它的使用者,而且dba_tables.tablespace_name為空。
ALL、DBA、USER開頭的一般都是公共同義詞如下
CREATE OR REPLACE PUBLIC SYNONYM ALL_TABLES FOR SYS.ALL_TABLES;
CREATE OR REPLACE PUBLIC SYNONYM DBA_TABLES FOR SYS.DBA_TABLES;
CREATE OR REPLACE PUBLIC SYNONYM USER_TABLES FOR SYS.USER_TABLES;
SYS下ALL、DBA、USER開頭的就是檢視了
CREATE OR REPLACE FORCE VIEW SYS.DBA_TABLES(欄位1,欄位2,...)
AS SELECT.....
1. 同義詞和檢視都不佔空間,在user_segments.segment_name一欄沒有同義詞和檢視的物件
2. 物化檢視佔用空間,但是在user_segments.segment_type顯示的值是table而不是MATERIALIZED VIEW
3. Schema下的物件可以和公共同義詞同名,但是同一schema下各類物件之間不能同名,比如同一個使用者下不能同在同樣名稱的表、檢視、私有同義詞,否則報錯ORA-00955:名稱已由現有物件使用
4. 對錶進行DDL操作後,檢視或同義詞的狀態會變成INVALID;當再次引用這個檢視或同義詞時,檢視或同義詞會自動編譯不用重新整理,狀態會變成VALID,無需人工干預,當然前提是不改變原物件的名稱;而MV需要自動重新整理或者手動重新整理的,
5. 存在同名物件(表、檢視、私有同義詞)和公共同義詞時,資料庫優先選擇物件作為目標,最後才是公共同義詞
6. Desc的物件可以是表、檢視、私有同義詞、公共同義詞
7. 綜合上面5、6得出結論:select * from name1時,是先看錶是否有叫name1的物件,再看檢視是否有叫name1的物件,再看私有同義詞是否有叫name1的物件,最後才看公共同義詞是否有叫name1的物件,如果都沒有則報錯ORA-00942:表或檢視不存在
8. 檢視和同義詞不能執行修改欄位型別長度的操作,但是可以執行dml語句如update、delete,修改的資料最終是base table上的資料
9. MV也可以直接update、delete,但是不影響base table
10.同義詞可以建立在檢視CREATE SYNONYM SYNONYM_NAME for VIEW_NAME
11.同義詞只能在建立一個物件上,比如一張表或一張檢視,檢視可以建立在多張表上,建立在多張表上的檢視也可以建立同義詞。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2122000/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- public interface View介面和public interface ViewResolver介面介紹View
- var和public的區別
- 【Java小疑問】類和方法 前面新增public和不新增public的區別Java
- rac 新增第二public ip 和 vip
- Check the existence of public synonyms Remove the public synonymsREM
- rac更改public and private的網路卡和ip
- 【Oracle】-【同義詞】-public與非public同義詞Oracle
- Oracle RAC中的Public IP, VIP和Internal IP,SCANOracle
- Oracle中的publicOracle
- public void sendHtmlHTML
- public-image-mirror
- 再學Java 之 private、protected、public和default的作用域Java
- jQuery物件和DOM物件jQuery物件
- session物件、cookie物件和appliaction物件Session物件CookieAPP
- Azure Public IP DNS域名DNS
- SKYPE -- Public database projectsDatabaseProject
- win rac public ip 修改
- 修改Public/Interconnect IP
- 事務物件和命令物件物件
- Django:F物件和Q物件Django物件
- javascript物件和php物件和json區別JavaScript物件PHPJSON
- 物件和類物件
- 類和物件物件
- 內部Fragment設定為public static和checkReleaseBuilds false與abortOnError falseFragmentUIFalseError
- JavaScript內部物件和Date物件JavaScript物件
- 區別 Jquery物件和Dom物件jQuery物件
- JavaScript 本地物件、內建物件和宿主物件JavaScript物件
- Angular Public API 介面設計AngularAPI
- Public Private VIP的區別
- RAC 11.2.0.3 修改 Public IP
- CRS : PUBLIC網路卡的STANDBY
- Django(26)HttpResponse物件和JsonResponse物件DjangoHTTP物件JSON
- 複習JAVA面相物件(類和物件)Java物件
- jQuery物件和DOM物件和字串之間的轉化jQuery物件字串
- Oracle 12.2 RAC修改public ip address或public ip(subnet (netmask) or interface)Oracle
- Scala 類和物件物件
- Java 物件和類Java物件
- 類和物件(中)物件