你好,請問查詢最近12個月的數據oracle的sql應該怎么寫
select*from表
where日期=to_date(to_char(sysdate-1,'/mm/dd'),'/mm/dd');
select*from表
where日期=to_date(to_char(sysdate-7,'/mm/dd'),'/mm/dd');
select*from表
where日期=to_date(to_char(sysdate-30,'/mm/dd'),'/mm/dd');
select*from表
where日期=to_date(to_char(add_months(sysdate,-12),'/mm/dd'),'/mm/dd');
如何查看Oracle數據的所有函數
您好,可以通過以下方式查看Oracle數據的所有函數:
1.使用OracleSQLDeveloper:在SQLDeveloper中,展開“連接”窗格中的數據庫連接,然后展開“函數”選項卡即可查看所有函數。
2.使用OracleSQL命令行:在SQL命令行中,輸入以下命令:
SELECTobject_name,object_type
FROMuser_objects
WHEREobject_type='FUNCTION';
這將返回所有用戶定義的函數名稱和類型。
3.使用Oracle數據字典視圖:在SQL命令行中,輸入以下命令:
SELECTobject_name,object_type
FROMall_objects
WHEREobject_type='FUNCTION';
這將返回所有可訪問的函數名稱和類型,包括系統函數和用戶定義的函數。
無論使用哪種方法,都可以查看Oracle數據的所有函數。
自學Oracle數據庫都要包含哪些方面
作為一個開發工程師主要是掌握對SQL語句的使用,在應用系統開發初期,由于開發數據庫數據比較少,對于查詢sql語句,復雜試圖的編寫等體會不出sql語句各種寫法的性能優劣,但是如果將應用系統提交實際應用后,隨著數據庫中數據的增加,系統的響應速度就成為目前系統需要解決的最主要問題之一。系統優化中一個很重要的方面就是sql語句的優化。對于海量數據,劣質sql語句和優質sql語句之間的速度差別可以達到上百倍,可見對于一個系統不是簡單地能實現其功能就行,而是要寫出高質量的sql語句,提高系統的可用性。
Oracle的sql調優第一個復雜的主題,甚至需要長篇概論來介紹OracleSQL調優的細微差別。不過有一些基本的規則是每個OracleDBA都需要遵從的,這些規則可以改善他們系統的性能。
如果要學會優化SQL語句必須知道SQL語句在ORACLE當中的執行計劃這個問題也是一個長篇大論我簡要的說一下
通常一條SQL有多個執行計劃,那我們如何選擇?那種執行開銷更低,就意味著性能更好,速度更快,我們就選哪一種,這個過程叫做Oracle的解析過程,然后Oracle會把更好的執行計劃放到SGA的SharedPool里,后續再執行同樣的SQL只需在SharedPool里獲取就行了,不需要再去分析。
Oracle提供了6種執行計劃獲取方法,各種方法側重點不同:
選擇時一般遵循以下規則:
1.如果sql執行很長時間才出結果或返回不了結果,用方法1:explainplanfor
2.跟蹤某條sql最簡單的方法是方法1:explainplanfor,其次是方法2:setautotraceon
3.如果相關察某個sql多個執行計劃的情況,只能用方法
4:dbms_xplan.display_cursor或方法6:awrsqrpt.sql4.如果sql中含有函數,函數中有含有sql,即存在多層調用,想準確分析只能用方法5:10046追蹤
5.想法看到真實的執行計劃,不能用方法1:explainplanfor和方法2:setautotraceon
6.想要獲取表被訪問的次數,只能用方法3:statistics_level=all
學會這些明白SQL語句如何執行,遵循怎樣的執行計劃最為重要。
其次就是要會oracle數據泵和radmin的使用,冷備、還原,以及常見的故障處理,部署調優,作為一個程序員其實都可以學習
DataPump從oracledatabase10g開始引入了datapump(數據泵)工具,它提供了一種基于服務器的數據導出導入使用程序。所有的datapump都作為一個服務器進程,數據不再必須由一個客戶程序處理。DataPump工具的導出和導入實現Oracle數據庫之間數據的傳輸。DataPump工具中包含DataPumpExport和DataPumpImport,所使用的命令行客戶程序為expdp和impdp。
【注意】在10g之前,傳統的導出導入分別使用exp工具和imp工具。從oracledatabase10g開始,不僅保留了原有的exp和imp工具,還提供了數據泵導出導入工具expdp和impdp。從11g開始,在傳統的export和import應用程序中可用的任何特性在datapump中都可用。在使用expdp和impdp工具時,應該注意以下幾點:1exp和imp是客戶端工具程序,它們既可以在客戶端使用,也可以在服務器端使用。2expdp和impdp是服務器工具程序,它們只能在oracle服務器端使用,不能再客戶端使用。3imp只適用于exp導出的文件,不適用于expdp導出文件;impdp只適用與expdp導出的文件,不適用于exp導出文件。datapump導出導入所得到的文件跟傳統的import/export應用程序導出導入的文件不兼容。
【pump特點】
與原有的export和import使用程序相比,oracle的datapump工具的功能特點如下:
1在導出或者導入作業中,能夠控制用于此作業的并行線程的數量。
2支持在網絡上進行導出導入,而不需要是使用轉儲文件集。
3如果作業失敗或者停止,能夠重新啟動一個datapump作業。并且能夠掛起恢復導出導入作業。
4通過一個客戶端程序能夠連接或者脫離一個運行的作業。
5空間估算能力,而不需要實際執行導出。
6可以指定導出導入對象的數據庫版本。允許對導出導入對象進行版本控制,以便與低版本數據庫兼容。
【pump數據字典】
數據字典
說明dba_datapump_jobs
顯示運行數據泵作業的信息,也可以使用user_datapump_jobs變量dba_datapump_sessions提供數據泵作業會話級別的信息datapump_paths
提供一系列有效的對象類型,可以將其與export或者impdp的include或者exclude參數關聯起來dba_directories
不過現在oracle的口碑也在走下坡路已經進入中國市場30年的甲骨文突然開始大裁員,且這波裁員來勢極為兇猛,目前已經有900余人被迫離職,裁員幅度高達60%,而且這還只是第一批。雖然因為裁員規模較大引起了人們的注意,但畢竟甲骨文給離職員工的補償也較為良心,這件事也就慢慢過去了,但沒想到不過幾天的時間,網上曝出了甲骨文的老板曾經對中國發表過一些偏激的言論,表示中國是美國最大的競爭對手,要遏制中國,不能給中國培養出很多的工程師。
期待阿里、華為這樣的大公司都已經優化改良了開源的數據庫擁有自己的一套體系,希望能夠出比ORACLE更加優秀的數據出來。在科技領域工作里面的你我他一起加油吧
如何查看Oracle正在執行的sql語句
查詢Oracle正在執行的sql語句及執行該語句的用戶
SELECTb.sidoracleID,b.username登錄Oracle用戶名,b.serial#,spid操作系統ID,paddr,sql_text正在執行的SQL,b.machine計算機名FROMv$processa,v$sessionb,v$sqlareacWHEREa.addr=b.paddrANDb.sql_hash_value=c.hash_value
查看正在執行sql的發起者的發放程序
SELECTOSUSER電腦登錄身份,PROGRAM發起請求的程序,USERNAME登錄系統的用戶名,SCHEMANAME,B.Cpu_Time花費cpu的時間,STATUS,B.SQL_TEXT執行的sqlFROMV$SESSIONALEFTJOINV$SQLBONA.SQL_ADDRESS=B.ADDRESSANDA.SQL_HASH_VALUE=B.HASH_VALUEORDERBYb.cpu_timeDESC
查出oracle當前的被鎖對象
SELECTl.session_idsid,s.serial#,l.locked_mode鎖模式,l.oracle_username登錄用戶,l.os_user_name登錄機器用戶名,s.machine機器名,s.terminal終端用戶名,o.object_name被鎖對象名,s.logon_time登錄數據庫時間FROMv$locked_objectl,all_objectso,v$sessionsWHEREl.object_id=o.object_idANDl.session_id=s.sidORDERBYsid,s.serial#;
kill掉當前的鎖對象可以為
altersystemkillsession'sid,s.serial#‘;
如何用sqlserver連oracle
1、在目的SQLServer數據庫服務器上安裝ORACLEClient軟件或者ORACLEODBCDriver.
通過oracle客戶端,在netmanager中建立“服務(TNSserver)”,并測試連接上oracle數據庫正常
2、在sqlserver的DTS(導入和導出數據工具)進行
(1)選擇數據源:
數據源:oracleinoracle9i
選擇:用戶/系統DSN:
點擊新建DSN:選擇數據源類型:系統數據源,
下一步:選擇驅動程序:oracleinoracle9i,下一步,完成,
進入oracleodbcdriverconfigration頁面
再輸入:datasorcename:GZDS
TNSservername:gz(通過netmanager定義好TNSserver)
user:(oracle登錄用戶)
填寫好以后,進行"TESTConnection"
可以連通,則點擊“ok”,DSN建立完成
數據源選擇完成,點擊“下一步”進入“選擇目的”
(2)選擇目的
目的:用于SQLServer的MicrosoftOLEDB提供程序
服務器:192.168.0.63
選擇:使用sqlserver身份登錄
用戶名:sa密碼:pass
并刷新,選擇好數據庫:test(目的數據庫,提前建立好的)并點擊“下一步”
a.從數據源復制表和數據(下一步:選擇源表及視圖)
b.用一條查詢語句指定要傳輸的數據(進行sql編輯)
(通過以上選擇好要復制的數據表或者相關視圖)
再點擊下一步“保存、調度和復制包”
(3)“保存、調度和復制包”
時間:立即運行
再點擊下一步:進行:“正在完成DTS導入導出”向導
(4)完成:
點擊:“完成”按鈕,系統進入數據復制“正在執行包”的頁面,
可以看到數據正在復雜的進度條
注意:在ORACLE表和SQLServer表之間'轉換'那步很重要,
可以改變默認的字段數據類型,如image->text,decimal->int
oracle與sql有哪些區別
Oracle與SQL是兩個不同的概念,不應該進行比較。1.SQL是結構化查詢語言,主要用于對關系型數據庫進行查詢,它是一種標準語言。2.Oracle是一種關系型數據庫管理系統,它是由Oracle公司開發的,是市面上比較流行的數據庫之一,可以使用SQL語句進行操作。3.因此,可以說Oracle是一種數據庫軟件,而SQL是其操作數據庫的語言,兩者不可混淆。所以,不能簡單地將Oracle與SQL進行對比和區別。