程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 你可知道你的Oracle數據庫安全嗎?

你可知道你的Oracle數據庫安全嗎?

編輯:Oracle數據庫基礎

在Oracle 10g中, exp 和 imp 被重新設計為Oracle Data Pump(雖然Oracle 仍然裝載了exp 和imp,並完全地支持它們)。如果你以前使用過exp 和 imp,那麼Data Pump 的命令行程序的語法對你來說就不陌生了。

Data Pump 是運行在數據庫內部的, 而不是像一個獨立的客戶端應用程序一樣存在。這就意味著這部分的工作在一定程度上獨立於發起執行導入或者導出任務的進程 。 在一台機器上 (例如一個定期任務) 可以開始執行導出的任務,而另一台機器上 (例如 DBA 的 手提電腦) 可以對任務的運行狀態進行監控。 也正因為任務是運行在數據庫內部的,所以如果你要將數據導出到一個文件中,那麼你首先要做的事情就是為輸出路徑建立一個數據庫的DIRECTORY 對象,然後給將要進行數據導入和導出的用戶授權訪問,命令如下:

 

 

  create or replace directory dumpdir as 'c:\';

  

  grant read,write on directory dumpdir to scott;

 
 

一旦該路經被授權後,就可以通過以下的命令參數導出用戶的對象,這些命令與 exp 和 imp 中的命令非常相似:

 

 

  expdp scott/tiger directory=dumpdir dumpfile=scott.dmp
  

當導出工作開始執行以後,可以通過按下[Ctrl]C (或者是客戶端中具有相同功能的按鍵) 來“中止”導出任務。這樣就不會再有數據發送到你的客戶端了,但是該任務在數據庫中仍然還在運行。你的客戶端會進入交互模式(出現Export>提示符)。 在提示符後輸入status就可以查看到當前有哪些任務正在運行。如果在客戶端輸入expdp attach=<任務名>,你就可以連接到一個正在運行的任務上。

Data Pump 並不是一定要寫入到文件中。現在可以通過選項設置就可以將數據庫對象通過SQL*Net直接導到一個遠程數據庫中。你所要做的就僅僅是指定remote 選項,然後加上與遠程數據庫連接的連接字符串。 這就有點類似於對數據庫的一次性復制過程。

Data Pump 執行起來要比原來的exp 和 imp 客戶端命令快得多。Data Pump 運行得更快是因為它有一個新特性——“parallel”選項。選定這個選項後,Data Pump 將會以四個不同的線程同時壓送數據。下面舉個例子,我先執行下面的任務,然後按 [Ctrl]C,接著察看後台任務的狀態:

 

 

  expdp scott/tiger directory=dumpdir dumpfile=scott2.dmp parallel=4

  job_name=scott2

  

  Export: Release 10.1.0.2.0 - Production on Friday, 31 December, 2004 14:54

  

  Copyright (c) 2003, Oracle. All rights reserved.

  

  Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 -

  Production

  With the Partitioning, OLAP and Data Mining options

  FlashBACK automatically enabled to preserve database integrity.

  Starting "SCOTT"."SCOTT2": scott/******** directory=dumpdir

  dumpfile=scott2.dmp parallel=4 job_name=scott2

  Estimate in progress using BLOCKS method...

  

  Export> status

  

  Job: SCOTT2

  Operation: EXPORT

  Mode: SCHEMA

  State: EXECUTING

  Bytes Processed: 0

  Current Parallelism: 4

  Job Error Count: 0

  Dump File: C:\SCOTT2.DMP

  bytes written: 4,096

  

  Worker 1 Status:

  State: EXECUTING

  

  Worker 2 Status:

  State: WORK WAITING

  

  Worker 3 Status:

  State: WORK WAITING

  

  Worker 4 Status:

  State: WORK WAITING
  

其實不僅僅只有Data Pump 是在數據庫內部運行的,事實上大部分的命令行性質的命令都是在數據庫內部運行的,只不過是通過一個PL/SQL API—— DBMS_DATAPUMP顯示出來。例如,可以通過以下的PL/SQL代碼來實現通過PL/SQL 包啟動導出任務:

 

 

  declare

  handle number;

  begin

  handle := dbms_datapump.open('EXPORT','SCHEMA');

  dbms_datapump.add_file(handle,'SCOTT3.DMP','DUMPDIR');

  dbms_datapump.metadata_filter(handle,'SCHEMA_EXPR','= ''SCOTT''');

  dbms_datapump.set_parallel(handle,4);

  dbms_datapump.start_job(handle);

  dbms_datapump.detach(handle);

  end; /
  

仔細研究 Data Pump ,你可以了解到 Data Pump 其他更多的新特性。例如,Data Pump 可以對數據文件重命名,可以將對象移動到不同的表空間中,還可以通過使用通配符結構或者是語句來查找圖表對象或是圖表。Data Pump 還可以用作外部表的接口 (例如,可以將一個表與存儲在一個數據泵導出文件中的數據關聯起來,這就像Oracle 9i 以及更高版本中的Oracle Loader 接口一樣)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved