1、oracle中round函數(shù)也是對數(shù)字進(jìn)行截取操作的,但與trunc不同的時,round函數(shù)對截取的數(shù)字進(jìn)行四舍五入運(yùn)算。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、新鄭網(wǎng)站維護(hù)、網(wǎng)站推廣。
2、如果添加上round的第二個參數(shù),它的使用提保留幾位小數(shù)。并進(jìn)行四舍五入運(yùn)算。
3、同樣round的第二個參數(shù)也可以是負(fù)數(shù),它的使用是從小數(shù)位的左側(cè)開始進(jìn)行保留,同時去掉小位數(shù)右側(cè)數(shù)據(jù)。如果小位數(shù)左側(cè)不夠進(jìn)行四舍五入運(yùn)算,那小位數(shù)左側(cè)以0代替,如果能夠進(jìn)行四舍五入則直接在保留位數(shù)前進(jìn)一位數(shù),保留位數(shù)全部以0代替。
4、oracle中替換字符串函數(shù)replace使用方法很簡單。
5、在使用replace函數(shù)的時候如果str1在str不能匹配到,那就直接輸出str內(nèi)容不對str1進(jìn)行替換。
Oracle數(shù)據(jù)庫診斷文件(日志)查看
Diagnostic File(診斷文件)
1:診斷文件的作用
Diagnostic files :
包含了后臺遇見重大事件的信息。
被用于解析問題,
被用于日常管理日志文件。
2:診斷文件日志的分類
分為兩類:
1: alterSID.log
-----background trace files (后臺進(jìn)程跟蹤文件)
2: trace files ---
-----user trace file (用戶trace 文件)
1:對于Background trace files文件的命名:
命名方式: SID_processname_PID.trc 對應(yīng)解釋 SID_進(jìn)程名_進(jìn)程號.trc
2: 對于user trace files 的文件命名為:
SID_ora_PID.trc 解釋: SID_ora_進(jìn)程號.trc
3:對于 alertSID.log 說明:
這個文件是為了記錄: 1:記錄一些操作命令
2:記錄主要事件的結(jié)果
3:以及日常的操作信息
4:被用于診斷數(shù)據(jù)庫錯誤
每一個entry 都有一個time stamp(時間戳)和它關(guān)聯(lián)
該文件必須被ORACLE DBA管理
這個文件的位置在: BACKGROUND_DUMP_DEST
通過 show parameter dump 查看這個文件的位置:
這個文件中也包含數(shù)據(jù)庫的啟動信息相當(dāng)于pfile或者spfile的內(nèi)容。
用管理員登錄:
2:下面是實戰(zhàn)操作:
首先用sysdba登錄后執(zhí)行:
[sql]
SQL show parameter dump
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_core_dump string partial
background_dump_dest string d:\app\topwqp\diag\rdbms\orcl\
orcl\trace
core_dump_dest string d:\app\topwqp\diag\rdbms\orcl\
orcl\cdump
max_dump_file_size string unlimited
shadow_core_dump string none
user_dump_dest string d:\app\topwqp\diag\rdbms\orcl\
orcl\trace
可以看到這些文件的路徑信息。
根據(jù)顯式的信息我找到我的文件位置:
目錄結(jié)構(gòu)如下:
下面說一下如何才能記錄信息到這些日志文件,需要一些開關(guān),如果不開,記錄的只是
一點(diǎn)點(diǎn)信息而已:
兩種方式 能夠讓用戶tracing
1:session 級別的:
使用如下命令:
ALTER SESSSION SET SQL_TRACE = TRUE
第二種是執(zhí)行如下存儲過程:
dbms_system.SET_SQL_TRACE_IN_SESSION
第二個方式是 instance級別的:
設(shè)置初始化參數(shù): SQL_TRACE = TRUE
一般采用session級別的。因為設(shè)置instance級別的容易造成log文件過大;
可以通過alterSID.log文件中的信息制作pfile 或者spfile文件啟動
數(shù)據(jù)庫。
下面采用session級別的修改sql_trace為true即可在user_dump_dest中對應(yīng)文件中看到相應(yīng)的信息。
[sql]
SQL conn /as sysdba
已連接。
SQL alter session set sql_trace = true;
會話已更改。
執(zhí)行過后:查看
orcl_ora_7188.trc文件信息 PS:如果不知道哪個文件就把這個目錄下的全部刪除,再執(zhí)行sql就會看到生成的文件:
查看這個文件信息如下:
很詳細(xì)的執(zhí)行信息:
比如一個語句為:select * from dual
這個文件中會生成如下信息:
[plain]
*** 2013-06-13 22:58:20.776
=====================
PARSING IN CURSOR #1 len=18 dep=0 uid=0 oct=3 lid=0 tim=9184375464 hv=942515969 ad='232363f8' sqlid='a5ks9fhw2v9s1'
select * from dual
END OF STMT
PARSE #1:c=0,e=32,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=9184375458
EXEC #1:c=0,e=50,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=9184376205
FETCH #1:c=0,e=109,p=0,cr=3,cu=0,mis=0,r=1,dep=0,og=1,tim=9184376423
STAT #1 id=1 cnt=1 pid=0 pos=1 obj=115 op='TABLE ACCESS FULL DUAL (cr=3 pr=0 pw=0 time=0 us cost=2 size=2 card=1)'
FETCH #1:c=0,e=2,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=9184376893
是對這個sql的執(zhí)行的詳細(xì)解讀分析
下面貼上今天的部分執(zhí)行的信息:
[plain]
*** 2013-06-13 22:58:20.776
=====================
PARSING IN CURSOR #1 len=18 dep=0 uid=0 oct=3 lid=0 tim=9184375464 hv=942515969 ad='232363f8' sqlid='a5ks9fhw2v9s1'
select * from dual
END OF STMT
PARSE #1:c=0,e=32,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=9184375458
EXEC #1:c=0,e=50,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=9184376205
FETCH #1:c=0,e=109,p=0,cr=3,cu=0,mis=0,r=1,dep=0,og=1,tim=9184376423
STAT #1 id=1 cnt=1 pid=0 pos=1 obj=115 op='TABLE ACCESS FULL DUAL (cr=3 pr=0 pw=0 time=0 us cost=2 size=2 card=1)'
FETCH #1:c=0,e=2,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=9184376893
*** 2013-06-13 23:15:15.474
=====================
PARSING IN CURSOR #1 len=289 dep=0 uid=0 oct=3 lid=0 tim=10199053291 hv=2462394820 ad='232017e0' sqlid='7cfz5wy9caaf4'
SELECT NAME
NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number',
6,'big integer', 'unknown') TYPE,DISPLAY_VALUE
VALUE_COL_PLUS_SHOW_PARAM FROM V$PARAMETER WHERE UPPER(NAME) LIKE
UPPER(:NMBIND_SHOW_OBJ) ORDER BY NAME_COL_PLUS_SHOW_PARAM,ROWNUM
END OF STMT
PARSE #1:c=0,e=438,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=10199053285
=====================
PARSING IN CURSOR #2 len=210 dep=1 uid=0 oct=3 lid=0 tim=10199056088 hv=864012087 ad='29162590' sqlid='96g93hntrzjtr'
select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt,
timestamp#, sample_size, minimum, maximum, distcnt, lowval, hival,
density, col#, spare1, spare2, avgcln from hist_head$ where obj#=:1 and
intcol#=:2
END OF STMT
PARSE #2:c=0,e=568,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=3,tim=10199056084
EXEC #2:c=0,e=1024,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=3,tim=10199057412
FETCH #2:c=0,e=30,p=0,cr=2,cu=0,mis=0,r=0,dep=1,og=3,tim=10199057533
STAT #2 id=1 cnt=0 pid=0 pos=1 obj=411 op='TABLE ACCESS BY INDEX ROWID HIST_HEAD$ (cr=2 pr=0 pw=0 time=0 us)'
STAT #2 id=2 cnt=0 pid=1 pos=1 obj=413 op='INDEX RANGE SCAN I_HH_OBJ#_INTCOL# (cr=2 pr=0 pw=0 time=0 us)'
=====================
PARSING IN CURSOR #2 len=210 dep=1 uid=0 oct=3 lid=0 tim=10199057848 hv=864012087 ad='29162590' sqlid='96g93hntrzjtr'
select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt,
timestamp#, sample_size, minimum, maximum, distcnt, lowval, hival,
density, col#, spare1, spare2, avgcln from hist_head$ where obj#=:1 and
intcol#=:2
END OF STMT
EXEC #2:c=0,e=25,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=3,tim=10199057844
FETCH #2:c=0,e=13,p=0,cr=2,cu=0,mis=0,r=0,dep=1,og=3,tim=10199058128
EXEC #1:c=0,e=7034,p=0,cr=4,cu=0,mis=1,r=0,dep=0,og=1,tim=10199060756
FETCH #1:c=15600,e=13882,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,tim=10199075783
FETCH #1:c=0,e=21,p=0,cr=0,cu=0,mis=0,r=5,dep=0,og=1,tim=10199076326
STAT #1 id=1 cnt=6 pid=0 pos=1 obj=0 op='SORT ORDER BY (cr=0 pr=0 pw=0 time=0 us cost=2 size=2115 card=1)'
STAT #1 id=2 cnt=6 pid=1 pos=1 obj=0 op='COUNT (cr=0 pr=0 pw=0 time=8 us)'
STAT #1 id=3 cnt=6 pid=2 pos=1 obj=0 op='HASH JOIN (cr=0 pr=0 pw=0 time=6 us cost=1 size=2115 card=1)'
STAT #1 id=4 cnt=35 pid=3 pos=1 obj=0 op='FIXED TABLE FULL X$KSPPI (cr=0 pr=0 pw=0 time=70 us cost=0 size=81 card=1)'
STAT #1 id=5 cnt=1915 pid=3 pos=2 obj=0 op='FIXED TABLE FULL X$KSPPCV (cr=0 pr=0 pw=0 time=19 us cost=0 size=203400 card=100)'
關(guān)于alter_SID.log中的內(nèi)容如下: 今天的:
注意這個文件中包含Oracle啟動的參數(shù)信息:可以利用這些信息配置spfile或者pfile文件嘗試用這個配置的文件啟動數(shù)據(jù)庫也可以的
[plain]
Thu Jun 13 22:13:43 2013
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_1 parameter default value as D:\app\topwqp\product\11.1.0\db_1\RDBMS
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up ORACLE RDBMS Version: 11.1.0.6.0.
Using parameter settings in server-side spfile D:\APP\TOPWQP\PRODUCT\11.1.0\DB_1\DATABASE\SPFILEORCL.ORA
System parameters with non-default values:
processes = 150
memory_target = 412M
control_files = "D:\APP\TOPWQP\ORADATA\ORCL\CONTROL01.CTL"
control_files = "D:\APP\TOPWQP\ORADATA\ORCL\CONTROL02.CTL"
control_files = "D:\APP\TOPWQP\ORADATA\ORCL\CONTROL03.CTL"
db_block_size = 8192
compatible = "11.1.0.0.0"
db_recovery_file_dest = "D:\app\topwqp\flash_recovery_area"
db_recovery_file_dest_size= 2G
fast_start_mttr_target = 0
undo_tablespace = "UNDOTBS1"
remote_login_passwordfile= "EXCLUSIVE"
db_domain = ""
dispatchers = "(PROTOCOL=TCP) (SERVICE=orclXDB)"
audit_file_dest = "D:\APP\TOPWQP\ADMIN\ORCL\ADUMP"
audit_trail = "DB"
db_name = "orcl"
open_cursors = 300
diagnostic_dest = "D:\APP\TOPWQP"
Thu Jun 13 22:13:46 2013
PMON started with pid=2, OS id=1888
Thu Jun 13 22:13:46 2013
VKTM started with pid=3, OS id=4296 at elevated priority
Thu Jun 13 22:13:46 2013
DIAG started with pid=4, OS id=6804
VKTM running at (20)ms precision
Thu Jun 13 22:13:46 2013
在ORACLE中返回數(shù)據(jù)集只能用游標(biāo) 如下:
create or replace procedure pr_Select
(OutCursor OUT sys_refcursor) is
begin
--功能返回數(shù)據(jù)集
open OutCursor for
select * from classinfo;
end pr_Select;
樓上所說的分析函數(shù),應(yīng)該能實現(xiàn)lz所說的要求,不過可能還是有些難度的。挺費(fèi)勁。 (不是攻擊哈)
lz所描述的,已經(jīng)知道要取多少條數(shù)據(jù),并且也知道各類分別要多少數(shù)據(jù),那分別取一定量的數(shù)據(jù)再union不也可以么?
select * from table_name where 類型='1' and rownum=(234234*0.6) union
select * from table_name where 類型='2' and rownum=(234234*0.3) union
select * from table_name where 類型='3' and rownum=(234234*0.1)
這樣貌似是個笨辦法,但還算是比較簡單吧
不過有個問題就是,沒法做到“隨機(jī)”了,要實現(xiàn)真正的隨機(jī)又得費(fèi)大勁了
根據(jù)什么批量開PR?
PR可以新建多行PR行,然后你可以把每一條PR行,分別創(chuàng)建成一張采購訂單。