標籤:color 匯入 建立 使用者 password ace 資料庫 html 建表
在較早期的隨筆《Oracle如何?建立資料庫、備份資料庫及資料匯出匯入的一條龍操作》粗略介紹了Oracle資料庫的備份還原作業,本文想從開發架構的基礎上介紹Oracle資料庫的指令碼或者還原作業。
我們在Winform開發架構、混合式開發架構、Web開發架構等各種開發架構,底層都是支援多種資料庫的,如MS SQLServer、Oracle、MySQL、SQLite、PostgreSQL等等,如所示。
其中SQLServer支援最為常用,而且也是最為方便備份還原的操作,而Oracle資料庫這是次之,也是較為常用的資料庫,不過相對SQLServer來說,Oracle的資料庫處理起來並不是那麼方便,因此本文著重介紹一下,基於架構層面的資料庫,如何?資料庫指令碼的處理或者基於備份檔案的還原作業。
1、架構中的資料庫指令碼處理
如果使用資料庫指令碼的方式,Oracle可以按照前面《Oracle如何?建立資料庫、備份資料庫及資料匯出匯入的一條龍操作》的方式構建一個資料表空間,然後建立對應的資料庫資訊,如下所示。
create tablespace win_tbs datafile ‘C:\app\Administrator\oradata\whcdb\win.dbf‘ size 100M;create user win identified by win default tablespace win_tbs;grant connect,resource to win; grant dba to win;
上面代碼就是建立資料表空間檔案,然後建立一個win使用者,並附加在資料表空間裡面。
有了這些資訊,我們就可以通過使用者win,密碼為win的方式登入Oracle資料庫了。
然後我們就可以利用這個使用者,在PLSQL上進行表的建立和資料操作處理了。
如我們建立表的指令碼如下所示。
/*==============================================================*//* Table: TB_CITY *//*==============================================================*/create table TB_CITY ( ID number not null, CITYNAME NVARCHAR2(50), ZIPCODE NVARCHAR2(50), PROVINCEID number, constraint PK_TB_CITY primary key (ID));comment on table TB_CITY is‘全國城市表‘;comment on column TB_CITY.CITYNAME is‘城市名稱‘;comment on column TB_CITY.ZIPCODE is‘郵遞區號‘;comment on column TB_CITY.PROVINCEID is‘省份ID‘;
例如我們建立各類不同的資料庫指令碼,那麼只需要按照順序加入或者選擇加入執行資料庫指令碼即可。
那麼執行這些SQL,該如何操作呢,是不是直接拖動到PL-SQL上就可以了?
當然不是,否則長一點的資料庫指令碼,就可能導致非常遲緩的執行效率。
一般可以通過兩種方式,一種是使用命令列的方式。
這種方式執行速度非常快,比起直接在PL-SQL的SQL視窗上執行更有效率。
另外一種方式,就是可以利用PL-SQL裡面的另外一個地方進行執行資料庫指令碼,如下所示。
在【 工具】【匯入表】的操作裡面,彈出一個對話方塊,也是執行指令碼高效的操作之一。
上面介紹的這些方式,就是在資料庫沒有的情況下,根據資料庫指令碼構建對應的資料對象和資料的。
2、使用imp和exp進行資料的匯入和匯出
另外一個種還原已有備份檔案或者備份已有資料庫的操作就是使用Oracle的命令imp和exp了。
imp使用的基本格式:imp[username[/password[@service]]]
一般也可以使用imp,然後一步步的操作即可。
我們先來瞭解下這兩個命令的格式:
基本文法和執行個體:
1、EXP:
有三種主要的方式(完全、使用者、表)
1、完全:
EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
如果要執行完全匯出,必須具有特殊的許可權
2、使用者模式:
EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC
這樣使用者SONIC的所有對象被輸出到檔案中。
3、表模式:
EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
這樣使用者SONIC的表SONIC就被匯出
2、IMP:
具有三種模式(完全、使用者、表)
1、完全:
IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
2、使用者模式:
IMP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC
這樣使用者SONIC的所有對象被匯入到檔案中。必須指定FROMUSER、TOUSER參數,這樣才能匯入資料。
3、表模式:
EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
這樣使用者SONIC的表SONIC就被匯入。
將一個使用者所屬的資料匯入還有一個使用者格式:
imp win/win file=c:\win.dmp fromuser=win touser=win
如果有的表已經存在,執行的話它就報錯,對該表就不進行匯入。那麼在後面加上 ignore=y 就可以了。
在架構的資料庫目錄裡面,我們一般附帶有對應的Oracle備份檔案(.dmp檔案)這樣,使用者可以在開發使用Oracle的時候,可以直接還原資料庫即可,不過如果要詳細化做好各個資料庫指令碼,使用Oracle指令碼處理也是一種很好的選擇之一。
混合架構中Oracle資料庫的還原處理操作