JUST DO IT ~

          我只想當個程序員

          oracle dba_synonyms User_Synonyms 同義詞 使用和刪除 .

          dba_synonyms
          User_Synonyms

          萬一需要 查看系統的同義詞 . 可能自己建立的時候沒有加參數.
          錯誤的建立的系統級別的同義詞了.


           
          select * from dba_synonyms   e
          where e.table_name  like '%TB_O%' 

          drop public synonym TB_OBJECT_1090 ;



          drop index IDX_TB_OBJECT_1090   ;
          create index IDX_TB_OBJECT_1090  on TB_OBJECT_1090  (F2_1090 , f5_1090  , f16_1090  ) ;

          --

          CREATE DATABASE LINK  wind  CONNECT TO  wind  IDENTIFIED BY  wind USING  'wind';

          create database link wind
            connect 
          to wind identified by wind
            using 
          '(DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 123.123.123.0)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SERVICE_NAME = itmp)
              )
            )
          ';

          create or replace  synonym  tb_object_1090  for   tb_object_1090@wind ;





          參考原文:




          ORACLE相關語法4--數據庫對象
          作者:蘇楓 2007-12-17 21:42:29
          標簽: oracle
           

          四、數據庫對象
            表、視圖、序列、過程、函數、程序包,甚至其它同義詞都可以創建同義詞。
           
            1、同義詞:私有同義詞、公有同義詞。
            私有同義詞只能被當前模式的用戶訪問。私有同義詞名稱不可與當前模式的對象名稱相同。要在自身的模式創建私有同義詞,
            用戶必須擁有Create Synonym系統權限。要在其它用戶模式創建私有同義詞,用戶必須擁有Create Any Synonym系統權限。
            公有同義詞可被所有的數據庫用戶訪問。要創建公有同義詞,用戶必須擁有Create Public Synonym系統權限。

            創建私有同義詞語法:
            Create [OR REPLACE] SYNONYM [schema.]synonym_name FOR [schema.]object_name;
            其中:OR REPLACE表示在同義詞存在的情況下替換該同義詞。
                  synonym_name表示要創建的同義詞的名稱。
                  object_name指定要為之創建同義詞的對象的名稱。
            示例1:create synonym s_emp for scott.emp;

            創建公有同義詞語法:
            Create PUBLIC SYNONYM synonym_name FOR [schema.]object_name;
            示例2:create public synonym emp_syn from scott.emp;

            可以查詢字典視圖User_Synonyms來查看用戶所創建的同義詞的詳細信息
           
            刪除同義詞語法:Drop Synonyms synonym_name; 刪除公有同義詞加上一個Public
            此命令只刪除同義詞,不會刪除對應的表。

            2、序列:是用來生成唯一、連續的整數的數據庫對象。序列通常用來自動生成主鍵或唯一鍵的值。
            創建序列語法如下:
            Create SEQUENCE sequence_name
              [START WITH integer]
              [INCREMENT BY integer]
              [MAXVALUE integer|NOMAXVALUE]
              [MINVALUE integer|NOMINVALUE]
              [CYCLE|NOCYCLE]
              [CACHE interger|NOCACHE];
            其中:START WITH是指定要生成的第一個序列號。對于升序序列,其默認值為序列的最小值。對于降序序列,其默認值為序列的最大值。
                  INCREMENT BY是用于指定序列號之間的間隔。其默認值為1。如果integer為正值,則生成的序列將按升序排列,否則按降序排列。
                  MAXVALUE指定序列可以生成的最大值。
                  NOMAXVALUE這是默認選項,將升序序列的最大值設為10的27次冪,將降序序列的最大值設為-1。
                  MINVALUE指定序列的最小值。MINVALUE必須小于或等于START WITH的值,并且必須小于MAXVALUE。
                  NOMINVALUE這是默認選項,將升序序列的最小值設為1,將降序序列的最小值設為-10的26次冪。
                  CYCLE指定序列在達到最大值或最小值后,將繼續從頭開始生成值。
                  NOCYCLE這是默認選項。指定序列在達到最大值或最小值后,將不能再繼續生成值。
                  CACHE使用CACHE選項可以預先分配一組序列號,并將其保留在內存中,這樣可以更快的訪問序列號。
                  NOCACHE此項則不會為加快速度而預先分配序列號。如果在創建序列時忽略了CACHE和NOCACHE選項,Oracle將默認緩存20個序列號。
            示例3:Create SEQUENCE toys_seq
                     START WITH 10
                     INCREMENT BY 2
                     MAXVALUE 2000
                     MINVALUE 10
                     NOCYCLE
                     CACHE 30;

            訪問序列:可以通過CURRVAL和NEXTVAL偽列來訪問該序列的值。
            示例4:演示從序列toys_seq中選擇值插入toys表中的toyid列。執行成功將會在該表的toyid列插入值"P10"和"P12"。
                   INSERT INTO toys(toyid,toyname,toyprice) values('p'||toys_seq.NEXTVAL,'TWENTY',25);
                   INSERT INTO toys(toyid,toyname,toyprice) values('p'||toys_seq.NEXTVAL,'MAGIC PENCIL',75);
            示例5:演示如何查看序列當前值
                   Select toys_seq.CURRVAL from dual;

            更改序列:ALTER SEQUENCE命令用于設置或刪除MINVALUE或MAXVALUE、修改增量值、修改緩存中的序列號的數目。
            修改序列語法如下:注意,不能修改序列的START WITH參數。在修改序列時,應注意升序序列的最小值應小于最大值。
            ALTER SEQUENCE [schema.]sequence_name
              [INCREMENT BY integer]
              [MAXVALUE integer|NOMAXVALUE]
              [MINVALUE integer|NOMINVALUE]
              [CYCLE|NOCYCLE]
              [CACHE interger|NOCACHE];
            示例6:演示如何設置一個新的MAXVALUE,并為toys_seq序列打開了CYCLE。
                  ALTER SEQUENCE toys_seq
                    MAXVALUE 5000
                    CYCLE;

            可以查詢字典視圖User_Sequences來查看用戶所創建的序列的詳細信息

            刪除序列語法:Drop SEQUENCE toys_seq;

            3、視圖
            視圖是存儲的查詢定義。
            創建視圖的語法如下:
            Create [OR REPLACE] [FORCE | NOFORCE] VIEW view_name[(alias,alias,...)] AS
            select_statement [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY];
            其中:OR REPLACE表示在該視圖存在的話,將重新創建該視圖。
                  FORCE使用此關鍵字,則無論基表是否存在,都將創建視圖。
                  NOFORCE這是默認值。如果使用此關鍵字,則僅當基表存在時才創建視圖。
                  view_name表示要創建視圖的名稱。
                  alias指定在視圖里面列的名字,名字數目必須與視圖所選擇的表達式的數目相匹配。
                  select_statement表示Select語句。
                  WITH CHECK OPTION此選項指定只能插入或更新視圖可以訪問的行。術語constraint表示為CHECK OPTION約束指定的名稱。
                  WITH READ ONLY此選項確保不能在此視圖上執行任何修改操作。
            示例7:演示創建一個名為ven_view的視圖,該視圖與vendor_master表具有相同的結構。
                  Create VIEW ven_view AS select * from vendor_master;

            視圖中的ORDER BY子句:以便在查詢視圖時即使不使用Order By子句,結果集也會按指定的順序排列行。
            示例8:Create OR REPLACE VIEW ven_view(編號,日期) AS select orderno,odate from vendor_master order by venname;
           
            創建帶有錯誤的視圖:使用FORCE選項
            在以下情況下,Oracle也會創建視圖:
            視力定義的查詢引用了一個不存在的表;視圖定義的查詢引用了現有表中無效的列;視圖的所有者沒有所需的權限。
            示例9:下面創建一個基于venmast的視圖。但數據庫中并不存在名為"venmast"的表。
            Create FORCE VIEW ven AS select * from venmast;
            如果稍后創建名為venmast的表,可以使用ALTER VIEW ven COMPILE;
           
            聯接視圖:
            示例:演示如何創建聯接視圖
            Create OR REPLACE VIEW ven_ord_view AS select vm.vencode,venname,orderno,odate,ostatus
            from vendor_master vm,order_master om where vm.vencode=om.vencode;

            鍵保留表:在聯接視圖中,如果視圖包含了一個表的主鍵,并且也是這個視圖的主鍵,則這個鍵被保留,則這個表被稱為鍵保留表。
            ven_ord_view視圖以vendor_master和order_master這兩個表為基表。order_master表被視為鍵保留表,因為orderno既是order_master表
            的主鍵,也是視圖的主鍵。而vendor_master表不被視為鍵保留表,因為vendor_master表的主鍵vencode是聯接字段,不是視圖的主鍵。
            示例10:此示例成功修改了記錄,因為odate列屬于鍵保留表order_master。對于非鍵保留表vendor_master的venname列的更新則是不允許的。
            update wen_ord_view odate=odate+1 where vencode='V003';    注意:運行此示例時,必須確保基表的主鍵已正確創建。

            可以查詢字典視圖User_Updateble_Columns來查看聯接視圖中可更新的列。
            可以查詢字典視圖User_Views來查看用戶所創建的視圖信息。

            視圖中的函數:視圖可以使用單行函數(由數字、字符、日期組成)、分組函數和表達式。
            示例11:此示例用UPPER函數創建視圖,注意使用函數或表達式時,應賦予列一個別名。
            Create VIEW vendor_master_view AS select vencode,UPPER(venname) vendor_name from vendor_master;

            刪除視圖語法:Drop VIEW view_name ;

            4、索引:
               查詢User_indexes可以獲取有關用戶已創建的索引的詳細信息。
               查詢User_ind_partitions可以獲取有關用戶已創建的分區索引的詳細信息。
               查詢User_ind_columns可以獲取有關列(用戶的索引是基于這些列創建的)的詳細信息。
               唯一索引、組合索引、反向鍵索引、位圖索引和基于函數的索引。
               索引在邏輯上物理上都獨立于關聯表中的數據,在任何時候都可以創建或刪除索引,而不會影響基表或其它索引。
               創建普通索引的語法:
               Create INDEX index_name ON table_name(column_list) [TABLESPACE tablespace_name];
               其中:index_name指所創建索引的名稱。
                     table_name表示為之創建索引的表名。
                     column_list是在其上創建索引的列名列表,可以基于多列創建索引。
                     tablespace_name為索引指定表空間。
               示例12:演示如何在itemfile表的itemcode列上創建索引
               create index item_index on itemfile(itemcode);
            
               ALTER INDEX語句的REBUILD選項可以用來重建現有的索引。該選項提供的性能要優于使用DROP INDEX和CREATE INDEX語句重新創建索引。
               示例13:重建索引
               ALTER INDEX item_index REBUILD;

               刪除索引語法:Drop INDEX item_index;

               (1)唯一索引:此索引可以確保在定義索引的列中,表的任意兩行的值都不相同。Oracle自動為表的主鍵列創建唯一索引。
                  可以使用Create UNIQUE INDEX命令明確地創建唯一索引。
               示例14:在itemfile表的itemcode列上創建了一個名為item_index的唯一索引。
               Create UNIQUE INDEX item_index ON itemfile(itemcode);

               (2)組合索引:組合索引是在表中的多個列上創建的索引。組合索引中列的順序是任意的,不必是表中相鄰的列。
                  創建組合索引時,應注意定義中使用的列的順序。通常,最頻繁訪問的列應放置在列表的最前面。
               示例15:在itemfile表上創建了一個名為comp_index的組合索引,當查詢該表的的WHERE子句同時包含這兩個列或只包含
                       p_category列時,以下示例語句創建的索引將用于檢索數據,但如果單獨使用itemrate列,則索引不能用于檢索數據。
               Create INDEX comp_index ON itemfile(p_category,itemrate);

               (3)反向鍵索引:通常建立在一些值連續增長的列上,例如列中的值是是由序列產生的情況。
               示例16:在itemfile表上創建了一個名為rev_index的反向鍵索引。注意使用REVERSE關鍵字。
               Create INDEX rev_index ON itemfile(itemcode) REVERSE;
               示例17:使用關鍵字NOREVERSE可以將反向鍵索引重建為標準索引。
               ALTER INDEX rev_index REBUILD NOREVERSE;
               注意:不能將標準索引重建為反向鍵索引。

               (4)位圖索引:如果某個列的值重復超過一百次,則可以考慮在該列上創建位圖索引。
               示例18:itemcode是order_detail表中的低基數列,因為貨物編碼在大多數訂單中都是重復的,因此適合在該列上創建位圖索引。
               Create BITMAP INDEX bit_ind1 ON order_detail(itemcode);
               位圖索引不應當用在頻繁發生的INSERT,UPDATE,DELETE操作的表上。位圖索引最適合于數據倉庫和決策支持系統。

               (5)索引組織表:索引組織表與在一個或多個列上建立索引的普通表相似,但它無需為表和索引維護兩個單獨的存儲空間,
                              數據庫系統僅維護一個索引,該索引包含相應的已編碼鍵值和與其關聯的列值。
               示例19:使用ORGANIZATION INDEX子句來創建索引組織表。
               Create table ind_org_tab
               (
                  vencode NUMBER(4) primary key,          注意:primary key是創建索引組織表所必需的。不允許使用分區。
                  venname VARCHAR2(20)
               )
               organization index;
               索引組織表適合于通過主鍵來訪問數據。
             
               (6)基于函數的索引:如果在WHERE子句的算術表達式或函數中已經包含了某個列,則不會使用該列上的索引。不能在表達式包含任何
                  聚合函數,LOB列、REF列或包含LOB或REF的對象類型上創建基于函數的索引。
               示例20:venname是vendor_master表的一個列,用于存儲供應商的姓名,假定所有供應商的姓名都以混合大小寫的形式存儲
                       (如:John Smith、Dave Jones、Tony Greig等等),同時假定我們經常需要根據供應商的姓名來查詢表的數據。由于
                       姓名是以混合大小寫的形式存儲的,因此可能很難給出姓名的正確大小寫形式。可以創建如下索引:
               Create INDEX vn_ind ON vendor_master(UPPER(venname));
               示例21:演示如何使用前面創建的基于函數的索引檢索數據。
               select * from vendor_master where UPPER(venname)='SMALL';
             
               要創建基于函數或表達式的索引,必須具有QUERY REWRITE系統權限。

               (7)索引中的分區:與對表進行分區類似,Oracle也允許對索引分區。牽引分區可以存儲在不同的表空間中。
                  局部分區索引:Oracle為表的每個分區建立一個獨立的索引。
                  示例22:先創建分區表
                  Create table order_mast
                  (
                     orderno number(4),
              venname varchar2(20)
                  )
                  partition by range(orderno)
                  (
              partition oe1 values less than(1000),
                     partition oe2 values less than(2000),
              partition oe3 values less than(maxvalue)
           );
                  接著創建局部索引:
                  create INDEX myind ON order_mast(orderno) LOCAL;
                
                  全局分區索引:是指在分區表或非分區表上創建的索引。
                  示例23:在上面創建的分區表上創建全局索引
                  create INDEX glb_ind ON order_mast(orderno) GLOBAL
           partition by range(orderno)
           (
             partition ip1 values less than(1500),
               partition ip2 values less than(maxvalue)
           );
                  在有3個分區的表上創建2個分區的索引。注意:不能在散列分區或子分區建立全局索引。

                  全局非分區索引:全局分區索引是在分區表上創建的全局索引,它類似于非分區表上的索引,索引的結構不會被分割。

          本文僅為提供更多信息,不代表新浪BLOG同意其觀點或描述。如需轉載請注明出處。




          posted on 2008-06-21 17:41 小高 閱讀(6060) 評論(1)  編輯  收藏

          評論

          # re: oracle dba_synonyms User_Synonyms 同義詞 使用和刪除 . 2008-06-21 17:54 小高

          http://download.oracle.com/otn/nt/oracle10g/10201/10201_gateways_win32.zip


          注意oracle 10g 不附帶同名透明網管 . 無法連接 mssql 庫 .
            回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(352)

          收藏夾(19)

          關注的blog

          手冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 务川| 云龙县| 东宁县| 通道| 柳江县| 门源| 贵定县| 邮箱| 台北县| 集安市| 筠连县| 桑日县| 宁都县| 蚌埠市| 肥城市| 从化市| 广南县| 金川县| 天柱县| 平度市| 家居| 夏河县| 甘洛县| 南雄市| 延吉市| 乌鲁木齐市| 大宁县| 米易县| 淮北市| 特克斯县| 重庆市| 武平县| 旬阳县| 内丘县| 洛宁县| 南木林县| 商都县| 徐州市| 东平县| 汕尾市| 永仁县|