Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          關于模式對象的一些操作技巧
          ?
          ?
          ??? 模式對象基本上已經都介紹完了,還需要在做一些掃尾的工作,將一些小的操作技巧稽核在一起介紹一下。因為太小的操作技巧,而且本身的內容也很簡單,不值得花費太多的篇幅來記載,所以專門花一篇的篇幅來總結這些東西。
          ?
          ?
          一、用CREATE SCHEMA創(chuàng)建多個對象
          ?
          ??? Oracle可以使用CREATE SCHEMA語句來同時創(chuàng)建多個對象,用原話就是:Use the CREATE SCHEMA statement to create multiple tables and views and perform multiple grants in your own schema in a single transaction.
          ?
          ??? 操作的語法很簡單,看下面的例子就可以完全掌握:
          ?
          ??? create schema authorization test
          ??? create table t11(a int,b int)
          ??? create view t111 as select * from t11
          ??? grant select on t111 to wangxiaoqi;
          ?
          ??? 需要說明的問題有3點:
          ?
          ??? 1、這個語句不是用來創(chuàng)建schema的,而是創(chuàng)建schema中的對象,即user是需要事先創(chuàng)建好的
          ??? 2、DBA默認不具備執(zhí)行其他用戶的schema,即必須以authorization后面的user登錄方可執(zhí)行該語句
          ??? 3、該語句只支持CREATE TABLE、CRAETE VIEW、GRANT三個語句
          ?
          ?
          二、重命名模式對象
          ?
          ??? 絕大多數的object都是可以重命名的,語法是:RENAME ... TO ...
          ?
          ??? 舉例(無需指名類型):
          ?
          ??? rename t11 to t22;
          ??? rename t111 to t222;
          ?
          ??? 說明:
          ?
          ??? 1、支持的類型有:table、view、sequence、synonym
          ??? 2、當rename時,對象的constraint、index也相應更新
          ??? 3、不支持:PLSQL單元、public synonym、index、cluster
          ?
          ?
          三、刪除表和簇
          ?
          ??? 用于刪除Oracle中的表的命令有3種,分別是delete、drop、truncate,來看一下各自的語法:
          ?
          ??? delete from t11; --可以加where子句
          ??? drop table t11;
          ??? truncate table t11;
          ?
          ??? 關于具體的truncate用法和這三種刪除方法的比較,在我之前的文章《Truncate Table介紹》里有比較詳細的介紹,可以看哪個內容。
          ?
          ?
          四、啟用/停用Trigger
          ?
          ??? 啟用和停用觸發(fā)器的語法也還是比較簡單的,看一下吧:
          ?
          ??? alter trigger xxxx enable;
          ??? alter table xxxx enable all trigger;
          ?
          ??? alter trigger xxxx disable;
          ??? alter table xxxx disable all trigger;
          ?
          ??? 觸發(fā)器的停用,一般是由于以下幾個原因:
          ?
          ??? 1、觸發(fā)器的參照對象當前不可用
          ??? 2、需要執(zhí)行大量裝載而又不希望激活觸發(fā)器
          ??? 3、正在往使用觸發(fā)器的表里裝載數據
          ?
          ??? 需要專門說明的是,以下幾種情況,觸發(fā)器會被隱式激活:
          ?
          ??? 1、在一個相關的表上執(zhí)行DML
          ??? 2、在數據庫或模式中的對象上執(zhí)行某DDL語句
          ??? 3、特殊的數據庫時間發(fā)生(startup、shutdown、servererror)
          ?
          ?
          五、對象的依賴性
          ?
          ??? 對象如果被修改之后,依賴于它的其它對象很有可能也會受到影響,變成INVALID狀態(tài),這個關系比較復雜,用一張圖表示:
          ?
          ??? rely
          ?
          ??? 要將INVALID的OBJECT變?yōu)閂ALID很簡單,只需要重新編譯即可,語法如下:
          ?
          ??? alter view xxxx compile;
          ??? alter procedure xxxx complie;
          ??? alter package xxxx compile body;
          ??? alter package xxxx compile package;
          ?
          ?
          ?
          posted on 2009-07-19 22:36 decode360 閱讀(186) 評論(0)  編輯  收藏 所屬分類: 08.DBA
          主站蜘蛛池模板: 河北省| 托克托县| 政和县| 吉木萨尔县| 汝阳县| 沁源县| 加查县| 静乐县| 定陶县| 余庆县| 怀来县| 乐安县| 东兴市| 林甸县| 沂南县| 湘乡市| 恩施市| 偃师市| 泰顺县| 鹤岗市| 涞水县| 广宗县| 静宁县| 榆社县| 平利县| 全州县| 沭阳县| 固阳县| 马龙县| 新余市| 大兴区| 虞城县| 微博| 三门峡市| 房产| 佳木斯市| 黄梅县| 博乐市| 津南区| 临漳县| 壶关县|