Oracle

您可以獲得 Oracle SecureFile LOB 的文件句柄嗎?

  • January 7, 2019

Oracle 的 SecureFile LOB 是否允許我獲取底層資源的文件句柄。

PostgreSQL throughlo_open帶有 FILESTREAM 的 SQL ServerOpenSqlFilestream都允許您獲取數據庫跟踪的資源的本機文件句柄。Oracle 的替代品是什麼?

  • 使用 PostgreSQL,您可以通過提供僅在事務期間有效的資源 id(大對象 id)來獲得文件句柄,並且數據庫提供文件句柄。
  • 使用 SQL Server,您會得到一個transactionToken僅在事務期間有效的事務,您可以提供給事務處理OpenSqlFilestream以獲取文件句柄。

不,SecureFile 公開 FileHandle

你不能。(內部)LOB 沒有文件句柄。Oracle 將它們的大型二進制實現分為內部或外部的。內部 Lobs 使用OCILobLocatorOCI類型的“Lob Locator”(Oracle 術語)進行跟踪。您可以使用 Oracle 呼叫介面 (OCI) 對它們執行操作。OCI 的操作將 Lob Locator 作為句柄,但在其他方面沒有用處,並且沒有所有 POSIX 操作的等效項。例如,沒有fseek.

外部 LOB

Oracle 提供了一個稱為“BFILE”的“外部 LOB”。BFILE 與磁碟上的路徑相關聯。使用該路徑,您可以使用 手動打開文件open,但沒有事務令牌,並且文件句柄在事務結束時不會關閉。請注意,“BFILE”不支持重複數據刪除、壓縮或加密,對於這些功能,您將留給磁碟的底層文件系統。

C/C++

我假設您正在尋找BLOB class.

https://docs.oracle.com/en/database/oracle/oracle-database/18/lncpp/blob-class.html#GUID-DBABA21B-9ADC-46C4-9E0D-58C66EE3A6AF

請注意,它看起來需要“厚客戶端”(OCI)連接。也就是說,任何client人都需要Oracle Client安裝。(伺服器應該已經安裝了它)

Oracle 文件系統 (OFS)

我本來想的是DBFSOFS。這些功能允許您將 aTABLE轉換為文件系統。如果你在 Linux 上,你甚至mount可以。

https://oracle-base.com/articles/12c/ofs-and-dbfs-enhancements-12cr2

引用自:https://dba.stackexchange.com/questions/226518