a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

Oracle 11g透明數據加密安全特性解析

2024-08-29 13:53:28
字體:
來源:轉載
供稿:網友

  升級大對象(Large Object,即LOB)存儲能力的關鍵原因是在Oracle 11g中數據安全需求越來越高,本文主要是研究如何擴充對LOB和表空間的透明數據加密(Transparent Data Encryption,即TDE)特性來提高數據的安全性,并解釋這些特性是如何保護復雜的、非結構化數據的,如醫學數字圖像通訊信息(Digital Imaging for Communication of Medical Information,即DICOM)對象。

  oracle 11g新的SecureFile特性主要是集中在數據壓縮和重復數據刪除方面,主要是為了節約存儲LOB對象的空間,當然在安全特性方面Oracle 11g不僅只有這兩個,所有這些安全特性也非常符合最近當選的美國總統奧巴馬頒布的議事日程,白宮的技術方向明確指明新的管理計劃:

  在電子信息技術系統方面增加投入以降低醫療保健方面的成本,使用衛生信息技術降低醫療保健方面的成本,每年投入100億美元,到五年后讓美國的醫療保健系統擴展為基于標準的電子醫療信息系統,包括電子健康記錄。

  加密LOB:把安全放進SecureFile

  oracle 11g現在把在SecureFile LOB中存儲敏感信息放在非常重要的戰略位置,因為這樣才能夠證明在Oracle 10gR2中推出的透明數據加密(TDE)的作用,TDE在列級提供了遵循工業標準的自動加密算法(如3DES168,AES128,AES192和AES256)。

  1、開啟透明數據加密

  在開始使用透明數據加密特性之前,需要在數據庫中進行一翻設置,幸運的是,在Oracle 11g數據庫中這個設置非常簡單了,因為現在只需要在數據庫的網絡配置文件中添加合適的配置目錄即可,在之前的Oracle版本中,最簡單的方法就是通過Oracle Wallet Manager utility設置這個“wallet”文件,欲了解前期版本是如何啟用透明數據加密特性的,請參考我之前的文章“如何在Oracle 10g R2中實現透明數據加密”。

  清單1中的內容顯示了我在SQLNET.ORA網絡配置文件中添加的內容,以便在我指定的目錄中創建默認的TDE PKI密鑰文件ewallet.p12,然后我使用ALTER system SET ENCRYPTION KEY命令打開這個“wallet”并開啟加密特性。

  清單1 開啟透明數據加密

  在SQLNET.ORA網絡配置文件中添加參數設置開啟Oracle 11g數據庫的透明數據加密功能

         ENCRYPTION_WALLET_LOCATION =
  (SOURCE=

  (METHOD=FILE)

  (METHOD_DATA=

  (DIRECTORY=/u01/app/oracle/admin/orcl/wallet))
 
  然后,打開wallet并設置加密密鑰密碼激活Oracle 11g的加密功能

         sql> ALTER system SET ENCRYPTION KEY IDENTIFIED BY "r3aL1y!T16ht";
  sql> ALTER system SET ENCRYPTION WALLET OPEN IDENTIFIED BY "r3aL1y!T16ht";
 
  2、控制SecureFile加密

  完成TDE設置后,在開啟SecureFile LOB加密相對就簡單了,和在Oracle表中開啟其它類型的加密很類似,ENCRYPT告訴Oracle在現有SecureFile LOB上應用TDE加密,也可以通過DECRYPT告訴Oracle從SecureFile LOB上移除加密特性。

  3、改變SecureFile加密算法或加密密鑰

  和其它Oracle數據類型一樣,ALTER table REKEY命令可以用來修改當前的加密算法,如默認的加密算法AES192改為AES256,TDE PKI密鑰發生變化的話,REKEY命令也可以用于重新加密現有的SecureFile LOB。Oracle將會在塊級進行加密,確保重新加密執行得更有效。

  但請注意在相同的分區下對應的SecureFile LOB段只能夠被修改為啟用或禁用加密,如LOB段不能被REKEY,這是因為Oracle 11g在相同的LOB分區內對所有SecureFile LOB使用了相同的加密算法。

  清單2顯示這些命令的示例。

  清單2 對已有的SecureFile LOB應用透明數據加密

  應用默認的加密給單個SecureFile LOB

        sql> ALTER table trbtkt.secure_ticketsMODIFY (document CLOB ENCRYPT);


  應用非默認的AES 256位加密算法給單個SecureFile LOB

         sql> ALTER table trbtkt.secure_tickets
  MODIFY (scrnimg CLOB ENCRYPT USING 'AES256');
 
  為單個SecureFile LOB rekey加密

         sql> ALTER table trbtkt.secure_tickets
  MODIFY (scrnimg CLOB REKEY USING 'AES192');
 
  將加密應用給一個分區段

         sql> ALTER table trbtkt.secure_tickets
  MODIFY PARTITION sts_open (LOB(document) (ENCRYPT));
 
  從單個SecureFile LOB中移除加密

         sql> ALTER table trbtkt.secure_tickets
  MODIFY (scrnimg CLOB DECRYPT);
 
  加密表空間

  oracle 10g R2將它的加密能力擴展到數據庫的任意表和索引了,但要識別和隔離那些需要加密的對象和列工作量很大,通常,可能僅僅是將許多在業務功能上相似的對象全部加密了,如數據庫中所有封裝了機密雇員信息的表和索引,為了使在這些情況下的加密變得更加簡單易行,Oracle 11g現在可以加密整個表空間了。

  表空間加密仍然是在塊級實現的,但遺憾的是它不能在現有的表空間上執行,因此Oracle DBA必須在一開始創建表空間的時候就啟用加密,然后Oracle DBA就可以使用ALTER table MOVE命令來將表移動到加密表空間中,與此類似,已有的索引也可以通過重新創建命令ALTER INDEX REBUILD ONLINE,直接遷移到加密表空間中去。

  和加密列一樣,在創建加密表空間之前,數據庫加密wallet必須先打開才行,通過CREATE TABLESPACE命令中新的ENCRYPTION指令,新的表空間將會自動應用指定的加密算法到所有存儲在其內部的對象,默認采用的是AES 128位加密算法,但可以應用任意一個標準的加密算法(3DES168,AES128,AES192和AES256之一),如果不出什么問題的話,一個加密表空間可以傳輸到一個不同的Oracle 11g數據庫中,只要源和目標數據庫服務器使用了相同的endianness,并共享了相同的加密wallet即可。

  但注意臨時表空間和UNDO表空間不能使用這類加密算法,同樣,擴展表源數據和擴展LOB(如BFILE)也不能加密。最后,由于加密密鑰是在表級應用的,因此無法為加密表空間內的加密對象執行全局rekey,但在初始化加密表空間時可以使用這個方法來執行一次rekey操作。

  為了說明加密表空間的特性,我創建了一個新的表空間PATIMAGES,采用了AES 256位加密算法,如清單3中的代碼所示。我將使用這個新的表空間作為容器,存儲后面我們將要討論到的通過SecureFile在表中存儲敏感的醫療信息:使用來自DICOM文件的源數據,在Oracle 11g中存儲醫療影像和相關信息。

  清單3 創建一個加密表空間存儲敏感信息

         DROP TABLESPACE patimages INCLUDING CONTENTS AND DATAFILES;CREATE TABLESPACE patimages
  DATAFILE '/u01/app/oracle/oradata/orcl/patimages01.dbf'

  SIZE 64M REUSE

  EXTENT MANAGEMENT LOCAL

  UNIFORM SIZE 1M

  SEGMENT SPACE MANAGEMENT AUTOENCRYPTION USING 'AES256'DEFAULT STORAGE (ENCRYPT);
 
  DICOM:存儲病人醫療影像和元數據的工業標準

  美國放射學會(ACR)和國家電氣制造聯合會(NEMA)在1993年通過協作將醫學影像和通訊(DICOM)標準化了,為醫學影像設備和相關應用程序的開發提供了可供參照執行的依據,后來成為存儲和傳輸放射影像通用的標準,Oracle 10g R2完全支持DICOM 3.0標準,但是直到Oracle 11g才實現了對DICOM數據進行加密。

  oracle 11g擴展了Oracle 10g R2 中ORDImage對象類型的能力,增加了一個新的ORDDicom對象類型,以便更有效地存儲DICOM影像,由于ORDDicom對象可以存儲在SecureFile LOB中,這樣就可以實現壓縮、重復數據刪除和加密存儲在DICOM文件中的影像和相關的元數據的能力,醫生、大學和醫院使用計算的病人信息,特別是診斷和研究。

  oracle 10gR2提供了轉儲病人信息到xml文件的能力,但現在的ORDDicom對象擴展了這些能力,使得可以直接在Oracle 11g數據庫查詢病人的元數據,這就意味著可以使用新的高級索引特性如XMLIndex數據類型來檢索特殊的病人信息,此外,Oracle 11g現在還可以創建、存儲、展現和檢索存儲在ORDDicom對象內的數據影像的指紋特征,也就是說將會更容易選中正確的病人信息,ORDDicom數據模型也可以幫助保證病人信息的機密性,因為它提供了一個方法可以避免泄露來自DICOM文件病人元數據中的私密信息。

 1、創建DICOM對象

  為了說明如何使用這些強大的功能特性增強Oracle 11g SecureFile的加密能力,我創建了一個新的方案和表MipS.PATIENT_IMAGES,我將使用這個表存儲DICOM元數據,并在ORDDicom和ORDImage數據類型列中存儲影像數據,DICOM_IMAGE列將會存儲來自對應的源文件直接載入的DICOM信息,ANONYMOUS列將會存儲病人的敏感數據,THUMBPRINT列將會存儲來自每個DICOM文件中第一個影像的指紋圖像,清單4顯示了我創建這個表的DDL語句。

  清單4 創建加密的SecureFile LOB存儲敏感信息

  創建一個用戶(MIPS)

  

      DROP USER mips CASCADE;
  CREATE USER mips

  IDENTIFIED BY mips

  DEFAULT TABLESPACE patimages

  TEMPORARY TABLESPACE temp

  QUOTA UNLIMITED ON patimages;

  GRANT CONNECT, RESOURCE TO mips;

  GRANT EXECUTE ANY PROCEDURE to mips;

  GRANT CREATE ANY DIRECTORY TO mips;創建一個新的目錄

  DROP DIRECTORY mips_imgs;

  CREATE OR REPLACE DIRECTORY mips_imgs

  AS '/home/oracle/dicom';

  GRANT READ ON DIRECTORY mips_imgs TO mips;創建一個新表MIPS.PATIENT_IMAGES使用SecureFile LOB存儲DICOM文件。

  DROP table mips.patient_images PURGE;

  CREATE table mips.patient_images (

  patient_id NUMBER

  ,name VARCHAR2(30)

  ,ssn VARCHAR2(11)

  ,dob DATE

  ,dicom_image ORDSYS.ORDDICOM

  ,anonymous ORDSYS.ORDDICOM

  ,thumbprint ORDSYS.ORDIMAGE

  )

  TABLESPACE patimages

  LOB(dicom_image.source.localData)

  STORE AS SECUREFILE (

  TABLESPACE patimages

  DISABLE STORAGE IN ROW

  DEDUPLICATE

  COMPRESS HIGH

  CACHE READS

  )

  LOB(anonymous.source.localData)

  STORE AS SECUREFILE (

  TABLESPACE patimages

  DISABLE STORAGE IN ROW

  DEDUPLICATE

  COMPRESS HIGH

  CACHE READS

  )

  LOB(thumbprint.source.localData)

  STORE AS SECUREFILE (

  TABLESPACE patimages

  DISABLE STORAGE IN ROW

  DEDUPLICATE

  COMPRESS HIGH

  CACHE READS

  )

  ;

  -- 注釋

  COMMENT ON table mips.patient_images

  IS 'Contains Patient metadata and DICOM images';

  COMMENT ON COLUMN mips.patient_images.patient_id

  IS 'Unique identifier for a Patient';

  COMMENT ON COLUMN mips.patient_images.name

  IS 'Patient Name';

  COMMENT ON COLUMN mips.patient_images.ssn

  IS 'Patient Social Security Number';

  COMMENT ON COLUMN mips.patient_images.dob

  IS 'Patient Date of Birth';

  COMMENT ON COLUMN mips.patient_images.dicom_image

  IS 'DICOM LOB';

  COMMENT ON COLUMN mips.patient_images.anonymous

  IS 'Anonymous DICOM LOB';

  COMMENT ON COLUMN mips.patient_images.thumbprint

  IS 'Thumbprint of DICOM image';

  -- 創建索引和約束

  CREATE UNIQUE INDEX mips.patient_images_pk_idx

  ON mips.patient_images(patient_id)

  TABLESPACE patimages;

  ALTER table mips.patient_images

  ADD CONSTRAINT patient_images_pk

  PRIMARY KEY (patient_id);
 


  2、從DICOM源文件轉移到ORDDicom對象

  現在我已經為DICOM信息創建好了適當的資料庫,我將要使用SQL*Loader直接從DICOM源文件中提取并格式化病人元數據,對于我的源數據,我將使用若干個簡單的DICOM文件,這些DICOM文件都是從http://www.barre.nom.fr/medical/下載得到的,病人的姓名和其它信息完全是虛構的,只是為了說明這些概念,清單5顯示了SQL*Loader用于初始化、格式化和從這些源文件中載入DICOM數據到ORDDicom和ORDImage數據類型列的參數文件,以及調用SQL*Loader執行這個初始化數據載入的結果。

  清單5 使用SQL*Loader載入DICOM原始文件到Oracle 11g數據庫中

  -- sql*Loader參數文件: LoadDICOMFromFile.sqlparms

  -- 目的: 這個參數文件將直接從DICOM文件載入DICOM數據到MIPS.PATIENT_IMAGES 表的DICOM_IMAGE 列,它也控制了ANONYMOUS列(它容納匿名的DICOM數據)和THUMBPRINT列(它容納DICOM圖像本身的指紋圖像)的初始化。

         LOAD DATA
  INFILE *

  INTO table mips.patient_images

  TRUNCATE

  FIELDS TERMINATED BY WHITESPACE

  OPTIONALLY ENCLOSED BY '"'

  (

  patient_id INTEGER EXTERNAL

  ,name CHAR

  ,ssn CHAR

  ,dob DATE "yyyy-mm-dd"

  ,fn FILLER CHAR
 
  -- 載入列對象MIPS.PATIENT_IMAGES.DICOM_IMAGE:

  -- 1.) LOB屬性source.localData和DICOM數據一起載入。

  -- 2.) 屬性srcType被設置為"local"。

  -- 3.) 屬性updateTime被初始化到當前日期。

  -- 4.) LOB屬性擴展使用空的LOB進行初始化。

         ,dicom_image COLUMN OBJECT (
  source COLUMN OBJECT (

  localData LOBFILE(fn) TERMINATED BY EOF

  ,srcType CONSTANT 'local'

  ,updateTime EXPRESSION "SYSDATE"

  )

  ,extension LOBFILE(fn) TERMINATED BY EOF

  DEFAULTIF dicom_image.source.srcType='local'

  )
 
  -- 初始化(但不載入)列對象MIPS.PATIENT_IMAGES.ANONYMOUS:

  -- 1.) LOB屬性source.localData和擴展被初始化。

  -- 2.) srcType屬性被初始化為"local"。

  -- 3.) localData LOB將容納DICOM數據的匿名內容。

  -- 4.) srcType屬性被初始化為"local"。

  -- 5.) LOB擴展是一個由ORDDICOM使用的內部字段。

         ,anonymous COLUMN OBJECT (
  source COLUMN OBJECT (

  localData LOBFILE(fn) TERMINATED BY EOF

  DEFAULTIF anonymous.source.srcType='local'

  ,srcType CONSTANT 'LOCAL'

  )

  ,extension LOBFILE(fn) TERMINATED BY EOF

  DEFAULTIF dicom_image.source.srcType='local'

  )
 
  -- 初始化(但不載入)列對象MIPS.PATIENT_IMAGES.THUMBPRINT:

  -- 1.) LOB屬性擴展被一個空的LOB初始化。

  -- 2.) LOB屬性source.localData被一個空的LOB初始化。

  -- 3.) 本地屬性被初始化為1。

  

      ,thumbprint COLUMN OBJECT (
  source COLUMN OBJECT (

  localData LOBFILE(fn) TERMINATED BY EOF

  DEFAULTIF thumbprint.source.local=X'1'

  ,local CONSTANT 1

  )

  )

  )

  BEGINDATA

  101 "Ames, Aldritch" 322-51-1111 1907-12-01 CT-MONO2-16-ankle.dcm

  202 "Barry, Dave" 345-21-2222 1968-12-24 OT-MONO2-8-colon.dcm

  303 "Colson, Charles" 342-43-3333 1931-11-03 MR-MONO2-8-16x-heart.dcm

  404 "Dean, John" 322-09-4444 1942-02-18 NM-MONO2-16-13x-heart.dcm

  505 "Ehrlichman, John" 345-09-5555 1914-08-01 US-PAL-8-10x-echo.dcm

  606 "Haldeman, Robert" 322-18-6666 1918-11-11 US-RGB-8-esopecho.dcm

  >>> sql*Loader results:

  sql*Loader: Release 11.1.0.6.0 - Production on Sat Mar 14 13:00:40 2009

  Copyright (c) 1982, 2007, oracle. All rights reserved.

  Control File: LoadDICOMFromFile.sqlparms

  Data File: LoadDICOMFromFile.sqlparms

  Bad File: LoadDICOMFromFile.bad

  Discard File: none specified

  (Allow all discards)

  Number to load: ALL

  Number to skip: 0

  Errors allowed: 50

  Bind array: 64 rows, maximum of 256000 bytes

  Continuation: none specified

  Path used: Conventional

  table MIPS.PATIENT_IMAGES, loaded from every logical record.

  Insert option in effect for this table: TRUNCATE

  Column Name Position Len Term Encl Datatype

  ------------------------------ ---------- ----- ---- ---- ---------------------

  PATIENT_ID FIRST * WHT O(") CHARACTER

  NAME NEXT * WHT O(") CHARACTER

  SSN NEXT * WHT O(") CHARACTER

  DOB NEXT * WHT O(") DATE yyyy-mm-dd

  FN NEXT * WHT O(") CHARACTER

  (FILLER FIELD)

  DICOM_IMAGE DERIVED * COLUMN OBJECT

  *** Fields in DICOM_IMAGE

  SOURCE DERIVED * COLUMN OBJECT

  *** Fields in DICOM_IMAGE.SOURCE

  LOCALDATA DERIVED * EOF CHARACTER

  Dynamic LOBFILE. Filename in field FN

  SRCTYPE CONSTANT

  Value is 'local'

  UPDATETIME EXPRESSION

  sql string for column : "SYSDATE"

  *** End of fields in DICOM_IMAGE.SOURCE

  EXTENSION DERIVED * EOF CHARACTER

  Dynamic LOBFILE. Filename in field FN

  DEFAULT if DICOM_IMAGE.SOURCE.SRCTYPE = 0X6c6f63616c(character 'local')

  *** End of fields in DICOM_IMAGE

  ANONYMOUS DERIVED * COLUMN OBJECT

  *** Fields in ANONYMOUS

  SOURCE DERIVED * COLUMN OBJECT

  *** Fields in ANONYMOUS.SOURCE

  LOCALDATA DERIVED * EOF CHARACTER

  Dynamic LOBFILE. Filename in field FN

  DEFAULT if ANONYMOUS.SOURCE.SRCTYPE = 0X6c6f63616c(character 'local')

  SRCTYPE CONSTANT

  Value is 'LOCAL'

  *** End of fields in ANONYMOUS.SOURCE

  EXTENSION DERIVED * EOF CHARACTER

  Dynamic LOBFILE. Filename in field FN

  DEFAULT if DICOM_IMAGE.SOURCE.SRCTYPE = 0X6c6f63616c(character 'local')

  *** End of fields in ANONYMOUS

  THUMBPRINT DERIVED * COLUMN OBJECT

  *** Fields in THUMBPRINT

  SOURCE DERIVED * COLUMN OBJECT

  *** Fields in THUMBPRINT.SOURCE

  LOCALDATA DERIVED * EOF CHARACTER

  Dynamic LOBFILE. Filename in field FN

  DEFAULT if THUMBPRINT.SOURCE.LOCAL = 0X01(character '')

  LOCAL CONSTANT

  Value is '1'

  *** End of fields in THUMBPRINT.SOURCE

  *** End of fields in THUMBPRINT

  table MIPS.PATIENT_IMAGES:

  6 Rows successfully loaded.

  0 Rows not loaded due to data errors.

  0 Rows not loaded because all WHEN clauses were failed.

  0 Rows not loaded because all fields were null.

  Space allocated for bind array: 83456 bytes(64 rows)

  Read buffer bytes: 1048576

  Total logical records skipped: 0

  Total logical records read: 6

  Total logical records rejected: 0

  Total logical records discarded: 0

  Run began on Sat Mar 14 13:00:40 2009

  Run ended on Sat Mar 14 13:00:49 2009

  Elapsed time was: 00:00:09.65

  CPU time was: 00:00:00.61
 


  3、生成指紋圖像和匿名的元數據

  為了完成ANONYMOUS和THUMBPRINT列的填充,我將使用一些技巧:

  (1)首先,我將通過調用setModel 方法載入ORDDicom對象模型,這個對象模型必須在調用其它方法之前載入。

  (2)然后使用processCopy方法生成一張150x200的JPEG圖像,將其存儲到THUMBPRINT列中。

  (3)最后,我使用makeAnonymous方法創建一個匿名版本的DICOM_IMAGE列數據,并將其存儲到ANONYMOUS列中。

  清單6 顯示了如何在最初被載入MIPS.PATIENT_IMAGES表中的所有行上執行這些方法。

  清單6 從前面載入的ORDDicom對象創建和存儲匿名的病人信息和指紋圖像:

  1)將DICOM模型載入到內存中。

  2)將原始的DICOM文件元數據轉換成對應的元素。

  3)基于原始的DICOM影像以JPEG格式創建一個縮略圖。

  4)生成一個匿名的DICOM文件版本。

  5)將新的信息保存到它們對應的SecureFile LOB中。

        SET SERVEROUTPUT ON
  DECLARE

  dcm_row ORDSYS.ORDDICOM;

  BEGIN
 
   -- 載入DICOM數據模型

  ord_dicom.setDatamodel;

  -- 在醫學圖像表中遍歷所有行

         FOR dcm_row IN (
  SELECT

  patient_id

  ,dicom_image

  ,anonymous

  ,thumbprint

  FROM mips.patient_images

  FOR UPDATE

  )

  LOOP

  BEGIN

  -----
 
  --通過setProperties存儲過程初始化DICOM SecureFile LOB列屬性

  -----

  dcm_row.dicom_image.setProperties();

  -----

  -- 在原始DICOM影像的基礎上構建一個縮略圖圖像

  -----

  dcm_row.dicom_image.processCopy('fileFormat=JPEG fixedScale=150,200', dcm_row.thumbprint);

  -----

  -- 通過makeAnonymous()函數生成DICOM對象的匿名版本

  -----

  dcm_row.dicom_image.makeAnonymous(genUID(dcm_row.patient_id), dcm_row.anonymous);

  -----

  -- 將新產生的信息保存到它們對應的SecureFile LOB中

         -----
  UPDATE mips.patient_images

  SET dicom_image = dcm_row.dicom_image

  ,anonymous = dcm_row.anonymous

  ,thumbprint = dcm_row.thumbprint

  WHERE patient_id = dcm_row.patient_id;

  EXCEPTION

  WHEN OTHERS THEN

  DBMS_OUTPUT.PUT_LINE('Error processing image for Patient ID #' || dcm_row.patient_id);

  END;

  END LOOP;

  COMMIT;

  END;
 
  /4、使用ORDDicom和ORDImage列的內容

  最后,我已經準備好研究這些已經載入到DICOM列的DICOM信息,幸運的是,ORDDicom數據類型使得這些工作變得相當簡單,因為它提供了多種方法來直接查詢病人的元數據屬性,清單7顯示了一個簡單的查詢,它直接從DICOM_IMAGE和THUMBPRINT列查詢多個屬性。

  清單7 查看已經載入到ORDDICOM和ORDIMAGE對象中的元數據

  顯示選擇的內容:

  1)普通數據類型

  2)ORDDICOM數據類型

  3)ORDIMAGE數據類型

         SET LINESIZE 80
  SET PAGESIZE 80

  TTITLE 'Sample Patient Metadata|(from MIPS.PATIENT_IMAGES)'

  COLUMN patient_id FORMAT 99999 HEADING 'Pat|ID'

  COLUMN name FORMAT A20 HEADING 'Patient Name' WRAP

  COLUMN ssn FORMAT A11 HEADING 'Patient SSN'

  COLUMN di_sop_uid FORMAT A30 HEADING 'DICOM Image SOP UID' WRAP

  COLUMN tp_len FORMAT 99999 HEADING 'Thumb|Print|Image|Size'

  SELECT

  PI.patient_id

  ,PI.name

  ,PI.ssn

  ,PI.dicom_image.sop_instance_uid AS di_sop_uid

  ,PI.thumbprint.getcontentlength() AS tp_len

  FROM mips.patient_images PI

  ORDER BY PI.patient_id

  ;

  TTITLE OFF

  Sun Mar 15 page 1

  Sample Patient Metadata

  (from MIPS.PATIENT_IMAGES)

  Thumb

  Print

  Pat Image

  ID Patient Name Patient SSN DICOM Image SOP UID Size

  ------ -------------------- ----------- ------------------------------ ------

  101 Ames, Aldritch 322-51-1111 1.2.840.113619.2.1.2411.103115 5034

  2382.365.1.736169244

  202 Barry, Dave 345-21-2222 1.3.46.670589.17.1.7.0.16 5677

  303 Colson, Charles 342-43-3333 999.999.2.19960619.163000.1.10 3648

  3

  404 Dean, John 322-09-4444 2.16.840.1.113662.5.8796818449 1596

  476.121423489.1.1.3101.5309511

  143

  505 Ehrlichman, John 345-09-5555 999.999.133.1996.1.1800.1.6.25 5252

  606 Haldeman, Robert 322-18-6666 999.999.2.19941105.112000.2.10 4683

  7
 
  校驗存儲在ORDDicom或ORDImage數據類型列中的圖像需要一點技巧,因為需要一個接口才能查看這些圖像,因為這些圖像都采用基于工業標準的格式存儲,如JPEG,TIF,PNG等,所以有大量的免費圖像查看程序可以拿來使用。

  小結

  oracle 11g新的SecureFile特性大大擴展在Oracle數據庫中存儲大對象的能力,并提高了安全性和有效性,SecureFILE LOB的壓縮和重復數據刪除功能在空間利用上更是讓人驚訝,SecureFILE LOB的透明數據加密特性讓存儲在Oracle 11g數據庫中的敏感信息和機密信息安全性更有保障,這些特性讓Oracle 11g數據庫成為美國新的聯邦政府在啟動存儲醫院、病人和醫療元數據方面的主要候選數據庫。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: www,久久久 | 九九亚洲 | 亚洲免费视频网站 | 日本成人午夜影院 | 婷婷天堂网 | 亚洲成人免费观看 | 国产精品夜夜春夜夜爽久久电影 | 四虎首页| 日韩电影在线 | 99久久久无码国产精品 | 国产一级片 | 91免费版在线观看 | 精品色区 | 在线观看亚洲a | 国产一区不卡 | 网址你懂的在线观看 | 99精品免费观看 | 麻豆亚洲| 亚洲不卡在线观看 | 希岛爱理av在线 | 成人精品一区二区 | 国产精品一二三区 | 亚洲国产成人久久一区二区三区 | 人人骚 | 亚洲免费在线观看 | 成人免费在线视频 | 欧美日日| 久久亚洲视频 | 国产精品无码专区在线观看 | 在线视频91 | 欧美精品福利视频 | 久久首页| 亚洲综合在线一区二区三区 | 综合久久一区二区三区 | 日韩成人黄色 | 亚洲一区二区中文字幕 | 中文字幕在线观看的电影 | 国产高清一区二区 | 日韩视频一区二区三区 | 久久精品国产亚洲a∨蜜臀 性视频网站免费 | 精品亚洲一区二区三区 |