⑴ 關於oracle資料庫加密的函數
Oracle 提供兩種加密方式:
a)加密 API 例如包 和 dbms_crypto 使用這些包,可以構建我們自己的基礎架構,對數據進行加密。 這種方法的靈活性最強,但是構建和管理卻相當復雜。
b)透明的數據加密是 Oracle 資料庫 ;使用該特性後,就不必手動進行密碼管理了。
資料庫管理密碼,但是正如名稱所指,加密是透明的——數據僅僅以加密的方式存儲而已。在Oracle10g中出現了dbms_crypto替代了之前的dbms_obfuscation_toolkit,DBMS_CRYPTO增加了若干新的加密演算法、哈希演算法。
DBMS_CRYPTO還撤銷了對於public組的執行許可權。
⑵ 什麼是Oracle 數據源
簡而言之:數據源DS,就是數據來源DS,也就是資料庫嘛!!
所以有個DSN(Data Source Name)數據源名稱.也就是在系統odbc中注冊的名稱!
ODBC(OpenDatabaseConnectivity,開放資料庫互連)是微軟公司開放服務結構(WOSA,)中有關資料庫的一個組成部分,它建立了一組規范,並提供了一組對資料庫訪問的標准API(應用程序編程介面)。這些API利用sql來完成其大部分任務。ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC。
一個基於ODBC的應用程序對資料庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的資料庫操作由對應的DBMS的ODBC驅動程序完成。也就是說,不論是FoxPro、Access還是Oracle資料庫,均可用ODBCAPI進行訪問。由此可見,ODBC的最大優點是能以統一的方式處理所有的資料庫。
一個完整的ODBC由下列幾個部件組成:
應用程序(Application)。
ODBC管理器(Administrator)。該程序位於Windows95控制面板(ControlPanel)的32位ODBC內,其主要任務是管理安裝的ODBC驅動程序和管理數據源。
驅動程序管理器(DriverManager)。驅動程序管理器包含在ODBC32.DLL中,對用戶是透明的。其任務是管理ODBC驅動程序,是ODBC中最重要的部件。
ODBCAPI。
ODBC驅動程序。是一些DLL,提供了ODBC和資料庫之間的介面。
數據源。數據源包含了資料庫位置和資料庫類型等信息,實際上是一種數據連接的抽象。
各部件之間的關系如圖下圖所示:
應用程序要訪問一個資料庫,首先必須用ODBC管理器注冊一個數據源,管理器根據數據源提供的資料庫位置、資料庫類型及ODBC驅動程序等信息,建立起ODBC與具體資料庫的聯系。這樣,只要應用程序將數據源名提供給ODBC,ODBC就能建立起與相應資料庫的連接。
在ODBC中,ODBCAPI不能直接訪問資料庫,必須通過驅動程序管理器與資料庫交換信息。驅動程序管理器負責將應用程序對ODBCAPI的調用傳遞給正確的驅動程序,而驅動程序在執行完相應的操作後,將結果通過驅動程序管理器返回給應用程序。
在訪問ODBC數據源時需要ODBC驅動程序的支持。用VisualC++5.0安裝程序可以安裝SQLServer、Access、Paradox、dBase、FoxPro、Excel、Oracle和MicrosoftText等驅動程序.在預設情況下,VC5.0隻會安裝SQLServer、Access、FoxPro和dBase的驅動程序.如果用戶需要安裝別的驅動程序,則需要重新運行VC5.0的安裝程序並選擇所需的驅動程序。
⑶ oracle資料庫的警告日誌如何查看
告警日誌文件是一類特殊的跟蹤文件(trace file)。告警日誌文件命名一般為alert_<SID>.log,其中SID為ORACLE資料庫實例名稱。資料庫告警日誌是按時間順序記錄message和錯誤信息。
http://www.cnblogs.com/kerrycode/p/3899558.html
⑷ 從網路API介面上獲取顯示的字元數據,存儲到本地Oracle或MySQL資料庫
很多語言都可以做到,php/nodejs/java/python.....
如果你這些都不會,會shell 也可以做到,寫入mysql沒問題,oracle我不太知道行不行
我給你一個大概的shell例子,你應該就明白了
從json介面獲得的數據是這些:
{
"data":[
{
"opentimestamp":1520237469,
"opentime":"2018-03-0516:11:09",
"opencode":"*,6,4,7,7",
"expect":"20180305061"
},
{
"opentimestamp":1520236868,
"opentime":"2018-03-0516:01:08",
"opencode":"*,4,8,2,9",
"expect":"20180305060"
},
{
"opentimestamp":1520236269,
"opentime":"2018-03-0515:51:09",
"opencode":"*,7,8,4,9",
"expect":"20180305059"
},
{
"opentimestamp":1520235666,
"opentime":"2018-03-0515:41:06",
"opencode":"*,3,9,9,9",
"expect":"20180305058"
},
{
"opentimestamp":1520235069,
"opentime":"2018-03-0515:31:09",
"opencode":"*,1,0,4,9",
"expect":"20180305057"
}
],
"info":"演示介面隱藏第1位數據,實時介面請訪問www.opencai.net查詢、購買或續費",
"code":"cqssc",
"rows":5
}
shell 腳本如下,如果你想獲得這個json的data value
#!/bin/sh
result=$(curl-A"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0)""http://t.apiplus.net/newly.do?code=cqssc&format=json")
echo$result|jq-r".data"
如果你想獲得data 的第一個json數據
#!/bin/sh
result=$(curl-A"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0)""http://t.apiplus.net/newly.do?code=cqssc&format=json")
echo$result|jq-r".data[0]"
如果你想獲得data的第一個json數據opentimestamp的value
#!/bin/sh
result=$(curl-A"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0)""http://t.apiplus.net/newly.do?code=cqssc&format=json")
echo$result|jq-r".data[0]"|jq-r.opentimestamp
如果你想寫入到mysql可以參考下面的語句:
mysql -uroot -proot test -e "insert into ttest (key,value) values ('testkey','testvalue');"
⑸ Oracle與mysql資料庫相比到底強在哪裡
事實上很多應用項目, 剛起步的時候用MYSQL資料庫基本上能實現各種功能需求,隨著應用用戶的增多,數據量的增加,MYSQL漸漸地出現不堪重負的情況:連接很慢甚至宕機,於是就有把數據從MYSQL遷到ORACLE的需求。MySQL作為開源資料庫,也是Oracle旗下的產品。Oracle的資料庫到底強在哪裡呢?Oracle的優勢:
1、兼容性:Oracle產品採用標准SQL,並經過美國u構架標准技術所(NIST)測試,與IBM SQL/DS、DB2、INGRES、IDMS/R等兼容。
2、可移植性:Oracle的產品可運行於很寬范圍的硬體與操作系統平台上。可以安裝在多種 大、中、小型機上,可在多種操作系統下工作。
3、可聯結性:Oracle能與多種通訊網路相連,支持各種協議。
4、高生產率:Oracle產品提供了多種開發工具,能極大地方使用戶進行進一步的開發。
5、開放性:Oracle良好的兼容性、可移植性、可連接性和高生產率使Oracle RDBMS具有良好的開放性。
MySQL的優勢:
1、性能卓越,服務穩定,很少出現異常宕機;
2、開放源代碼無版本制約,自主性及使用成本低;
3、 歷史 悠久,社區和用戶非常活躍,遇到問題及時尋求幫助;
4、軟體體積小,安裝使用簡單且易於維護,維護成本低;品牌口碑效應;
5、支持多種OS,提供多種API介面,支持多種開發語言,對流行的PHP,Java很好的支持
綜上所述,目前兩種資料庫都很流行, 只不過應用場合不同,會了Oracle學習Mysql會更簡單一些, 重慶思庄作為oracle資料庫運維公司,依附運維的優勢,講師均是在職工程師,也是oracle金牌講師,所以思庄是教實用技術的單位,當然我們也是官方授權培訓認證的機構,6-12人精品小班授課,能更全方位的進行系統學習,oracle作為全球做大的資料庫廠商,學習oracle資料庫還是勢在必行!
⑹ 訪問Oracle資料庫與sqlapi C問題,怎麼解決
不正確,要先在客戶端
配置文件
中配置資料庫名,ip在那裡。用戶名/密碼@資料庫名稱在本地配置tnsname打開C:\oracle\ora92\network\ADMIN\tnsnames.ora加入如下參數。ora=(
DESCRIPTION
=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.99)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ora)))註:(192.168.1.99=所要訪問
oracle資料庫
IP地址ora=所要訪問資料庫名稱)然後打開CMD,輸入sqlplususer/password@ora
⑺ 如何在Oracle/2000中調用Windows API函數
1.初始化外部函數
就是說明包含外部函數的動態鏈接庫的位置,並從中分離出外部函數的原型,並將外部函數中主語言的數據類型和PL/SQL數據類型做一一對應的匹配。這是在包體(PackageBody)中進行的。具體分以下幾步:
(1)用OQA_FFI.LOAD_LIBRARY得到包含外部函數的動態鏈接庫的庫柄,此時需提供動態鏈接庫的名字和位置。
(2)用ORA_FFI.REGISTER_FUNCTION得到外部函數的函數柄,這時需提供動態鏈接庫的庫柄和外部函數名。
(3)用ORA_FFI.REGISTER_PARAMETER來注冊外部函數的參數類型,對每一個參數都要提供它的外部函數柄和相應的PL/SQL數據類型。參數注冊的順序必須與它們出現在外部函數原型中的順序一致。
(4)用ORA_FFI.REGISTER_RETURN來注冊外部函數的返回值類型,這時需要提供它的外部函數柄和相應的PL/SQL數據類型。
2.將外部函數和一個PL/SQL子程序相關聯
一個和外部函數建立關聯的PL/SQL子程序,實際上指明了外部函數的內存地址,每次調用這個子程序,實際上是調用與它相對應的外部函數。具體步驟為:
(1)用ORA_FFI.FIND_FUNCTION或ORA_FFI.REGISTER_FUNCTION得到一個函數柄。
(2)在PL/SQL包體的聲明部分,定義一個PL/SQL子程序,它的第一個參數是類型為ORA_FFI.FUNCHANDLETYPE,接下來是依次對應外部函數參數的PL/SQL數據類型的參數。
(3)在這個PL/SQL子程序中加入一個PRAGMA介面。PRAGMA聲明就是通過將控制轉到一個內存地址,來激活這個外部函數。
3.生成一個模仿外部函數的原型的PL/SQL子程序。
這個子程序就是用戶可見的外部函數的PL/SQL介面,用戶按照它的參數類型和返回值類型來使用外部函數,具體步驟為:
(1)在包體的聲明部分,定義一個PL/SQL子程序,它的參數和返回值是和外部函數對應的PL/SQL類型。這就是模仿外部函數原型的一個子程序。
(2)在這個子程序中調用與上步生成的與外部函數相關聯的PL/SQL子程序。
(3)在PL/SQL包的說明(PackageSpefication)部分,輸入這個PL/SQL子程序的原型。
下面是一個完整的為WindowsAPI函數winexec建立PL/SQL介面的例子:
PACKAGEWinExecIS
FUNCTIONWinExec(ExecfileINVARCHAR2,
commandINPLS_INTEGER)
RETURNPLS_INTEGER;
END;/*在包說明部分,是模仿外部
函數原型的PL/SQL函數原型說明*/
PACKAGEBODYWinExecIS
lh_USERora_ffi.libHandleType;/*定義庫柄類型變數*/
fh_WinExecora_ffi.funcHandleType;/*定義函數柄類型變數*/
FUNCTIONi_WinExec(funcHandleINora_ffi.funcHandleType,
ExecfileINOUTVARCHAR2,
commandINPLS_INTEGER)
RETURNPLS_INTEGER;
PRAGMAINTERFACE(C,i_WinExec,11265);
/*步驟2將一個PL/SQL子程序與外部函數相關聯*/
FUNCTIONWinExec(ExecfileINVARCHAR2,
commandINPLS_INTEGER)
RETURNPLS_INTEGER
IS
execfile_lVARCHAR2(512):=Execfile;
rcPLS_INTEGER;
BEGIN
rc:=i_WinExec(fh_WinExec,
execfile_l,
command);
RETURN(rc);
END;
/*步驟3中PL/SQL模仿函數的定義,
它實際上就是調用步驟2中與外部函數建立關聯的那個函數*/
BEGIN
BEGIN
lh_USER:=ora_ffi.find_library('Kernel32.dll');
EXCEPTIONWHENora_ffi.FFI_ERRORTHEN
lh_USER:=ora_ffi.load_library(NULL,'kernel32.dll');
END;/*得到動態鏈接庫的庫柄*/
fh_WinExec:=ora_ffi.register_function
(lh_USER,'WinExec',ora_ffi.PASCAL_STD);
/*得到外部函數的函數柄*/
ora_ffi.register_parameter(fh_WinExec,
ORA_FFI.C_CHAR_PTR);/*參數注冊,原類型為LPCSTR*/
ora_ffi.register_parameter(fh_WinExec,
ORA_FFI.C_INT);/*參數注冊,原類型為UINT*/
ora_ffi.register_return(fh_WinExec,
ORA_FFI.C_INT);/*返回值注冊,原類型為BOOL*/
ENDWinExec;
可以將多個外部函數的PL/SQL介面放在一個包內。要在Developer/2000的FormDesigner中使用這些外部函數,只要把包含這一程序包的程序庫(.PLL)附加進來,使用包名.函數名就可激活這個外部函數。
例如:WinExec.WinExec('c:\windows\notepad.exe',0)
具體WindowsAPI函數數據類型和PL/SQL數據類型的轉換可參照Developer/2000中ProcereBuilder幫助文件中對ORA_FFI軟體包的詳細介紹。
⑻ 有人用過oracle的oci么
oracle調用介面(oracle Call Interface簡稱oci)提供了一組可對oracle資料庫進行存取的介面子常式(函數),通過在第三代程序設計語言(如C語言)中進行調用可達到存取oracle資料庫的目的。
在普通的情況下,用戶可以通過sql和PL/sql來訪問資料庫中的數據。oracle資料庫除了提供sql和PL/sql來訪問資料庫外,還提供了一個第三代程序設計語言的介面,用戶可以通過C、cobol、fortran等第三代語言來編程訪問資料庫。oci就是為了實現高級語言訪問資料庫而提供的介面。oci允許開發者在程序里使用sql和PL/sql來訪問資料庫。開發者可以使用第三代語言來編寫程序,而使用oci來訪問資料庫。
oci是由一組應用程序開發介面(api)組成的,ORACLE提供api的方式是提供一組庫。這組庫包含一系列的函數調用。這組函數包含了連接資料庫、調用SQL和事務控制等。在安裝dbms server或者客戶端的時候,就安裝了OCI。
OCI開發方法實際上是將結構化查詢語言(SQL)和第三代程序設計語言相結合的一種方法。對資料庫的訪問是通過調用OCI庫函數實現的,若將C語言作為宿主語言,那麼ORACLE資料庫調用其實就是C程序中的函數調用,一個含OCI調用的C程序其實就是用C語言編寫的應用程序。這樣的程序既具有SQL語言非過程性的優點又具有C語言過程性的優點,同時還可具有SQL語言的擴展,PL/SQL語言過程性和結構性的優點,因此使得開發出的應用程序具有高度靈活。