TIPTOP ERP ORACLE BOM QTY
/*正解*/
select bmb01, bmb03, level, bmb06,
LTRIM(sys_connect_by_path(bmb01, '->'), '->') fpath,
LTRIM(sys_connect_by_path(bmb06, '->'), '->') ausage,
str_mult(sys_connect_by_path(bmb06, '*')) quate
from bmb_file
start with bmb01 like '01DS102200G%'
connect by prior bmb03=bmb01
/*或是使用 olap 內建的FUNCTION, 因為我的環境沒安裝這東西所以無法使用*/
select bmb01, bmb03, level, bmb06,
LTRIM(sys_connect_by_path(bmb01, '->'), '->') fpath,
LTRIM(sys_connect_by_path(bmb06, '->'), '->') ausage,
dbms_aw.eval_number(ltrim(sys_connect_by_path(bmb06, '*'), '*')) quate
from bmb_file
start with bmb01 like '01DS102200G%'
connect by prior bmb03=bmb01
CREATE OR REPLACE FUNCTION GWH.str_mult(p_str IN VARCHAR2) RETURN NUMBER
AS
l_str VARCHAR2(1000):=p_str||'*';
l_n NUMBER;
l_data NUMBER:=1;
BEGIN
IF instr(l_str,'*')=1 THEN
l_str:=SUBSTR(l_str,2);
END IF;
LOOP
l_n:=instr(l_str,'*');
EXIT WHEN (NVL(l_n,0)=0);
l_data:=l_data*TO_NUMBER(SUBSTR(l_str,1,l_n-1));
l_str:=SUBSTR(l_str,l_n+1);
END LOOP;
RETURN l_data;
END;
2014年7月21日 星期一
2014年5月27日 星期二
informix table lock
select unique
dbsname db,
tabname ,
--zt02,
case
when type="S" then "shared lock"
when type="IS" then "intent shared lock"
when type="SIX" then "shared intent excl lock"
when type="XS" then "shared key value by RR"
when type="IX" then "intent excl lock"
when type="X" then "exclusive lock"
when type="XR" then "excl key value by RR"
when type="U" then "update lock"
when type="B" then "byte lock"
else
"unknown lock type"
end lock_type,
lpad(owner,5) ses_id,
lpad(waiter,5) wait_id
from sysmaster:syslocks
-- left outer join ds:zt_file on zt01=tabname
where tabname != 'sysdatabases'
找出 wait_id 有值的.代表他在等某一個東西 release.
nstat -g ses | grep 88999 (note ses_id)
find session id to query processs id 再去KILL 他.
dbsname db,
tabname ,
--zt02,
case
when type="S" then "shared lock"
when type="IS" then "intent shared lock"
when type="SIX" then "shared intent excl lock"
when type="XS" then "shared key value by RR"
when type="IX" then "intent excl lock"
when type="X" then "exclusive lock"
when type="XR" then "excl key value by RR"
when type="U" then "update lock"
when type="B" then "byte lock"
else
"unknown lock type"
end lock_type,
lpad(owner,5) ses_id,
lpad(waiter,5) wait_id
from sysmaster:syslocks
-- left outer join ds:zt_file on zt01=tabname
where tabname != 'sysdatabases'
找出 wait_id 有值的.代表他在等某一個東西 release.
nstat -g ses | grep 88999 (note ses_id)
find session id to query processs id 再去KILL 他.
2014年5月6日 星期二
informix table extent 相關
Informix DB:
create table 時 informix 會先allocate 一個空間給這個TABLE 使用. 如果空間不夠時. informix 會再allocate 一個空間來使用.如果這二個空間剛好都是連在一起,在Informix 中我們叫他為一個 extent,資料庫長時間使用下有可能使得TABLE的EXTENT 值變大.大過一定值(200以上?) 會出現錯誤.這時我們就要重新規劃了.
先用以下命令去找.所有資料庫table extent與他的SIZE
select
dbsname,
tabname,partnum,
count(*) num_of_extents,
sum(pe_size) total_size
from
systabnames, sysptnext
where
partnum = pe_partnum
and partnum > 99
and dbsname <> "sysmaster"
and dbsname <> "sysutils"
and tabname <> "TBLSpace"
group by 1,2,3
order by 1,5 desc ;
我查出我的MYTABLE001 他空用有201個EXTENT 共 771400 KB ,
這時我要先建一個TABLE 內容與原TABLE 名稱多加個_TEMP 並同時給他初始大小與增大大小(KB)
CREATE TABLE tiptop.mytable001_temp (
imk01 CHAR(20),
imk02 CHAR(10),
imk03 CHAR(10),
imk09 DECIMAL(15,3)
)
EXTENT SIZE 921600 NEXT SIZE 61440
LOCK MODE PAGE
之後再把資料insert 到Temp table
insert into mytable001_temp select * from mytable001
再把原TABLE DROP, 再把temp table rename 到原table
drop table mytable001
RENAME TABLE mytable001_temp TO mytable001
經過這次的轉換後.沒問題了.
注意.要先把原來的 trigger, index 相關語法備份下來喔
create table 時 informix 會先allocate 一個空間給這個TABLE 使用. 如果空間不夠時. informix 會再allocate 一個空間來使用.如果這二個空間剛好都是連在一起,在Informix 中我們叫他為一個 extent,資料庫長時間使用下有可能使得TABLE的EXTENT 值變大.大過一定值(200以上?) 會出現錯誤.這時我們就要重新規劃了.
先用以下命令去找.所有資料庫table extent與他的SIZE
select
dbsname,
tabname,partnum,
count(*) num_of_extents,
sum(pe_size) total_size
from
systabnames, sysptnext
where
partnum = pe_partnum
and partnum > 99
and dbsname <> "sysmaster"
and dbsname <> "sysutils"
and tabname <> "TBLSpace"
group by 1,2,3
order by 1,5 desc ;
我查出我的MYTABLE001 他空用有201個EXTENT 共 771400 KB ,
這時我要先建一個TABLE 內容與原TABLE 名稱多加個_TEMP 並同時給他初始大小與增大大小(KB)
CREATE TABLE tiptop.mytable001_temp (
imk01 CHAR(20),
imk02 CHAR(10),
imk03 CHAR(10),
imk09 DECIMAL(15,3)
)
EXTENT SIZE 921600 NEXT SIZE 61440
LOCK MODE PAGE
之後再把資料insert 到Temp table
insert into mytable001_temp select * from mytable001
再把原TABLE DROP, 再把temp table rename 到原table
drop table mytable001
RENAME TABLE mytable001_temp TO mytable001
經過這次的轉換後.沒問題了.
注意.要先把原來的 trigger, index 相關語法備份下來喔
2014年4月29日 星期二
Raspberry keyboard layout problem.
sudo vi /etc/default/keyboard
change XKBLAYOUT= "gb" to "us"
save and reboot .
change XKBLAYOUT= "gb" to "us"
save and reboot .
2014年1月7日 星期二
DD-WRT 用Telnet 進去 清空所有設定.
參考:
http://www.dd-wrt.com/wiki/index.php/Factory_Defaults#From_the_Command_Line_.28Telnet_or_SSH_or_Web_GUI.29
因為restore 錯的設定所以WEB 起不來.只好回復成最初值.
用telnet 登入 ddwrt
mtd erase nvram;
reboot
之後就可以用 root/admin 來登入系統了.
http://www.dd-wrt.com/wiki/index.php/Factory_Defaults#From_the_Command_Line_.28Telnet_or_SSH_or_Web_GUI.29
因為restore 錯的設定所以WEB 起不來.只好回復成最初值.
用telnet 登入 ddwrt
mtd erase nvram;
reboot
之後就可以用 root/admin 來登入系統了.
2014年1月3日 星期五
aspnet membership 忘記密碼.
這方式只能選用一個已知的密碼 用他的密碼來改寫到別的使用者上
假如我知到 webadmin 這個密碼為 XXXXX 我可以以下的語法來得知密碼的相關值.
SELECT password, passwordformat, passwordsalt
FROM aspnet_membership am
INNER JOIN aspnet_users au ON (au.userid = am.userid)
INNER JOIN aspnet_applications aa ON (au.applicationId = aa.applicationid)WHERE au.username = 'webadmin'
AND aa.applicationname = '/'
h9GkIbUU2XOA+uDdHFJqBFmz6Qs= 1 nRbbbGybfWjhcG3iseVRrQ==
依以上的值再執行storeprocedure 來對其他使用者修改密碼.
DECLARE @changeDate datetime
SET @changeDate = getdate()
EXEC aspnet_Membership_setPassword '/',
'webuser001',
'h9GkIbUU2XOA+uDdHFJqBFmz6Qs=',
'nRbbbGybfWjhcG3iseVRrQ==',
@changeDate,
1
改完後. webuser001 就可以用 xxxx (原webadmin)的密碼來登入了.
假如我知到 webadmin 這個密碼為 XXXXX 我可以以下的語法來得知密碼的相關值.
SELECT password, passwordformat, passwordsalt
FROM aspnet_membership am
INNER JOIN aspnet_users au ON (au.userid = am.userid)
INNER JOIN aspnet_applications aa ON (au.applicationId = aa.applicationid)WHERE au.username = 'webadmin'
AND aa.applicationname = '/'
h9GkIbUU2XOA+uDdHFJqBFmz6Qs= 1 nRbbbGybfWjhcG3iseVRrQ==
依以上的值再執行storeprocedure 來對其他使用者修改密碼.
DECLARE @changeDate datetime
SET @changeDate = getdate()
EXEC aspnet_Membership_setPassword '/',
'webuser001',
'h9GkIbUU2XOA+uDdHFJqBFmz6Qs=',
'nRbbbGybfWjhcG3iseVRrQ==',
@changeDate,
1
改完後. webuser001 就可以用 xxxx (原webadmin)的密碼來登入了.
2013年12月11日 星期三
忘了WINDOWS 2008 密碼
用 Server 2008 光碟開機
1. 到安裝畫面時先按 [shift} + [f10] 進 命令提示視窗
2. 進到 system32 把 magnify.exe 先備份為 magnify.bak
-> ren magnify.exe magnify.bak
3. 把cmd.exe 替換為 magnify.exe
-> copy cmd.exe magnify.exe
4. 重開機啟動 Server 2008 在登入時. 點選 協助工具,然後執行 "放大鏡工具"
5. 這時候就會出現一個命令提示視窗 注意!! 權限是 System !!! 這時候就可以改密碼了...
-> ex: net user administrator <password>
6.萬一被停用, 可重新啟用user
net user administrator /active:yes
1. 到安裝畫面時先按 [shift} + [f10] 進 命令提示視窗
2. 進到 system32 把 magnify.exe 先備份為 magnify.bak
-> ren magnify.exe magnify.bak
3. 把cmd.exe 替換為 magnify.exe
-> copy cmd.exe magnify.exe
4. 重開機啟動 Server 2008 在登入時. 點選 協助工具,然後執行 "放大鏡工具"
5. 這時候就會出現一個命令提示視窗 注意!! 權限是 System !!! 這時候就可以改密碼了...
-> ex: net user administrator <password>
6.萬一被停用, 可重新啟用user
net user administrator /active:yes
訂閱:
文章 (Atom)