oracle數(shù)據(jù)庫(kù)語(yǔ)法,oracle數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)
- 夕逆IT
- 前端設(shè)計(jì)
- 2023-08-13
- 396
各位老鐵們好,相信很多人對(duì)oracle數(shù)據(jù)庫(kù)語(yǔ)法都不是特別的了解,因此呢,今天就來(lái)為大家分享下關(guān)于oracle數(shù)據(jù)庫(kù)語(yǔ)法以及oracle數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)的問(wèn)題知識(shí),還望可...
各位老鐵們好,相信很多人對(duì)oracle數(shù)據(jù)庫(kù)語(yǔ)法都不是特別的了解,因此呢,今天就來(lái)為大家分享下關(guān)于oracle數(shù)據(jù)庫(kù)語(yǔ)法以及oracle數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)的問(wèn)題知識(shí),還望可以幫助大家,解決大家的一些困惑,下面一起來(lái)看看吧!
oracle鎖表、解鎖的語(yǔ)句
一些ORACLE中的進(jìn)程被殺掉后,狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間不釋放,有時(shí)實(shí)在沒(méi)辦法,只好重啟數(shù)據(jù)庫(kù)?,F(xiàn)在提供一種方法解決這種問(wèn)題,那就是在ORACLE中殺不掉的,在OS一級(jí)再殺。
1.下面的語(yǔ)句用來(lái)查詢(xún)哪些對(duì)象被鎖:selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id=o.object_idandl.session_id=s.sid;
2.下面的語(yǔ)句用來(lái)殺死一個(gè)進(jìn)程:altersystemkillsession'24,111';(其中24,111分別是上面查詢(xún)出的sid,serial#)【注】以上兩步,可以通過(guò)Oracle的管理控制臺(tái)來(lái)執(zhí)行。
3.如果利用上面的命令殺死一個(gè)進(jìn)程后,進(jìn)程狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間沒(méi)有被釋放,那么可以在os一級(jí)再殺死相應(yīng)的進(jìn)程(線(xiàn)程),首先執(zhí)行下面的語(yǔ)句獲得進(jìn)程(線(xiàn)程)號(hào):selectspid,osuser,s.programfromv$sessions,v$processpwheres.paddr=p.addrands.sid=24(24是上面的sid)4.在OS上殺死這個(gè)進(jìn)程(線(xiàn)程):1)在unix上,用root身份執(zhí)行命令:#kill-912345(即第3步查詢(xún)出的spid)2)在windows(unix也適用)用orakill殺死線(xiàn)程,orakill是oracle提供的一個(gè)可執(zhí)行命令,語(yǔ)法為:orakillsidthread其中:sid:表示要?dú)⑺赖倪M(jìn)程屬于的實(shí)例名thread:是要?dú)⒌舻木€(xiàn)程號(hào),即第3步查詢(xún)出的spid。例:c:>orakillorcl12345
如何自學(xué)oracle數(shù)據(jù)庫(kù)
第一步:學(xué)習(xí)oracle安裝。
第二步:學(xué)習(xí)oracle基礎(chǔ)語(yǔ)法知識(shí)。
第三步:實(shí)際操作基礎(chǔ)語(yǔ)法指令。
第四步:學(xué)習(xí)存儲(chǔ)過(guò)程、function、sequence(序列)等高級(jí)知識(shí)。
第五步:學(xué)習(xí)oracle高級(jí)優(yōu)化。參考書(shū)籍:《oracle從入門(mén)到精通》
備注:oracle也算是一門(mén)語(yǔ)言,即使半個(gè)月或者是半年也無(wú)法學(xué)習(xí)透徹的,建議根據(jù)上面的思路逐層深入學(xué)習(xí)即可。
ORACLE數(shù)據(jù)庫(kù),查詢(xún)表名,查詢(xún)列名,查詢(xún)列中所有數(shù)據(jù)的語(yǔ)法分別是
1.查詢(xún)所有表的表名:selecttable_namefromuser_tables解釋?zhuān)簭南到y(tǒng)表user_tables中可以查找出所有的表名字。
2.查詢(xún)表中的所有列名:desctabletablename(表名)。解釋?zhuān)和ㄟ^(guò)desc(描述)tablename即可查找出表中的所有字段。3.查詢(xún)所有數(shù)據(jù):select*fromtablenamet。解釋?zhuān)和ㄟ^(guò)select命令可以從tablename中查找出所有的表數(shù)據(jù)。oracle connection語(yǔ)法,怎么理解
connectbylevel的語(yǔ)法由于構(gòu)造大量的數(shù)據(jù)的時(shí)候特別有用,但是如果沒(méi)有真正理解其中的含義,濫用就會(huì)導(dǎo)致生產(chǎn)大量的數(shù)據(jù)通常情況下錯(cuò)誤的理解是基數(shù)記錄和基數(shù)記錄的笛卡爾積,笛卡爾積是沒(méi)錯(cuò),但是兩個(gè)因子并不都是基數(shù)記錄,其中一個(gè)是上1個(gè)level的記錄,知道這點(diǎn)很總要,否則會(huì)生產(chǎn)大量的超出你預(yù)想的記錄數(shù)出來(lái),具體看測(cè)試過(guò)程。
oracle數(shù)據(jù)庫(kù)的全文檢索
Oracle全文檢索配置方法:
1.檢查數(shù)據(jù)庫(kù)是否具有全文檢索功能(這是針對(duì)已經(jīng)建成使用的數(shù)據(jù)庫(kù))
查看用戶(hù)中是否存在ctxsys用戶(hù),查詢(xún)角色里是否存在ctxapp角色。以上兩個(gè)中的1個(gè)不滿(mǎn)足(不存在),則說(shuō)明沒(méi)有裝過(guò)全文檢索功能。
使用contains函數(shù)的時(shí)候,若沒(méi)有全文檢索則會(huì)報(bào)錯(cuò)的。
2.若沒(méi)有,則需要手動(dòng)建立,先建立全文檢索要使用的空間
sqlplus/assysdba--進(jìn)入控制臺(tái)
createtablespaceIdx_ctxsysdatafile'/oradata/sg186fx/ctxsys01.dbfsize10240Mautoextendonnext32Mmaxsize20480M;--創(chuàng)建全文檢索使用的表空間
3.創(chuàng)建全文檢索使用的用戶(hù)和角色及相應(yīng)的包,則需要執(zhí)行oracle自帶的一個(gè)腳本:cd$ORACLE_HOME/ctx/admin/catctx.sql
還是在sqlplus中執(zhí)行:
@?/ctx/admin/catctx.sqlctxsysIdx_ctxsystempnolock
在執(zhí)行這個(gè)腳本的時(shí)候,輸入了幾個(gè)參數(shù),第一個(gè)參數(shù)ctxsys為ctxsys用戶(hù)的密碼
第二個(gè)參數(shù)Idx_ctxsys為ctxsys用戶(hù)要使用的表空間
第三個(gè)參數(shù)temp為ctxsys用戶(hù)使用的臨時(shí)表空間
第四個(gè)參數(shù)nolock為ctxsys用戶(hù)處于解鎖狀態(tài)。
4.創(chuàng)建完成后,要登錄ctxsys用戶(hù)
connectctxsys/ctxsys
執(zhí)行以下腳本:@?/ctx/admin/defaults/drdefus.sql(這是個(gè)很重要的腳本,后面創(chuàng)建索引會(huì)使用該腳本創(chuàng)建的信息)
5.創(chuàng)建全文索引語(yǔ)法分析器
先要明確使用全文索引的用戶(hù),我要使用全文索引的是sgpm用戶(hù)
因此
grantexecuteonctxsys.ctx_ddltosgpmwithgrantoption;
connectsgpm/sgpm
設(shè)置語(yǔ)法分析器:
execctx_ddl.drop_preference('chinalexer');execctx_ddl.create_preference('chinalexer','chinese_lexer');
設(shè)置詞法屬性:
execctx_ddl.drop_preference('idx_c_store');
beginctx_ddl.create_preference('idx_c_store','BASIC_STORAGE');ctx_ddl.set_attribut('idx_c_store','I_TABLE_CLAUSE','tablespacesIdx_ctxsy');ctx_ddl.set_attribute('idx_c_store','I_INDEX_CLAUSE','tablespaceIdx_ctxsycompress2');end;/
6.創(chuàng)建索引
createindexsgpm.idx_c_cons_nameonsgpm.c_cons(cons_name)indextypeisctxsys.contextparameters('lexerchinalexerstorageidx_c_store');
7.同步索引
variablejobnonumber;begindbms_job.submit(:jobno,'pkg_sp_tools.p_cont_sys_index();',sysdate,'trunc(sysdate)+19/24+1');--執(zhí)行的是個(gè)性化方法。end;/
普通的就是用:
execctx_ddl.sync_index('idx_c_cons_name');
到此,全文檢索創(chuàng)建成功,contains函數(shù)就可以正常使用了。
注意:創(chuàng)建的過(guò)程中會(huì)出現(xiàn)ORA-29879:cannotcreatemultipledomainindexonacolumnlistusingsameindextype,這說(shuō)明在其他用戶(hù)下已經(jīng)建立了該索引。
Oracle數(shù)據(jù)庫(kù)已有數(shù)據(jù)的表的字段默認(rèn)值設(shè)置
在Oracle數(shù)據(jù)庫(kù)中,可以使用ALTERTABLE語(yǔ)句來(lái)設(shè)置表的字段默認(rèn)值。例如,要為表中的某個(gè)字段設(shè)置默認(rèn)值為'N/A',可以使用以下語(yǔ)法:
ALTERTABLE表名MODIFY(字段名DEFAULT'N/A');
這將修改表的字段定義,使其具有指定的默認(rèn)值。如果不指定默認(rèn)值,則字段將使用數(shù)據(jù)庫(kù)的默認(rèn)設(shè)置。注意,修改表的字段默認(rèn)值可能會(huì)影響現(xiàn)有數(shù)據(jù),因此在執(zhí)行此操作之前,請(qǐng)確保了解其潛在影響,并備份數(shù)據(jù)以防萬(wàn)一。
關(guān)于oracle數(shù)據(jù)庫(kù)語(yǔ)法的內(nèi)容到此結(jié)束,希望對(duì)大家有所幫助。
本文鏈接:http://xinin56.com/qianduan/899.html