今天的系統在CREATE RELEASES時出現error,但是PO卻有成功建立,log只有一行訊息:
po.plsql.PO_RELGEN_PKG.CREATE_RELEASES.100 exception; SQL code: -20001
看不出來是什麼原因造成error,從Google查也查不出什麼結果,只好從Metalink找看看有沒有相關訊息。
Metalink上文檔 ID 271864.1 提到Inventory Organization missing in Receiving Options,
並提供一段SQL檢查沒有設定Receiving Parameter的organization id(SQL我有修改過):
select organization_id,name from HR_ORGANIZATION_UNITS_V
where organization_id in (select h.organization_id
from APPS.HR_ORGANIZATION_INFORMATION_V h
where h.ORG_INFORMATION1_MEANING = 'Inventory Organization'
and not exists ( select 1 from rcv_parameters r
where r.organization_id = h.organization_id) );
檢查的結果有一個最近剛剛新增的organization沒有設定到Receiving Parameter,
到Setup->Organizations->Organizations內去設定Receiving Information就可以了。
Solaris 無法刪除有權限的檔案
今天在Solaris上要刪除一個檔案時出現錯誤:
rm: aa.txt not removed: Permission denied
先查aa.txt的權限,都有讀寫的權限。
-bash-3.2$ ls -l aa.txt
-rw-rw-rw- 1 test01 users 9 Apr 18 08:59 aa.txt
雖然我是用test02登入,但是同屬於users群組,更何況權限是666,
應該沒有什麼問題才是。
檢查上一層目錄的權限
-bash-3.2$ cd ..
-bash-3.2$ ls -ld US
drwxr-xr-x 2 test01 users 134 Apr 18 09:42 US
原因在於上一層目錄的權限不足,更改目錄權限就可以了。
雖然找到原因很快就解決了問題,但是為了找到這個原因,在google找了好幾篇文件,
就是沒有提到,也沒有想到可能是目錄的問題,所以自己記錄下來。
rm: aa.txt not removed: Permission denied
先查aa.txt的權限,都有讀寫的權限。
-bash-3.2$ ls -l aa.txt
-rw-rw-rw- 1 test01 users 9 Apr 18 08:59 aa.txt
雖然我是用test02登入,但是同屬於users群組,更何況權限是666,
應該沒有什麼問題才是。
檢查上一層目錄的權限
-bash-3.2$ cd ..
-bash-3.2$ ls -ld US
drwxr-xr-x 2 test01 users 134 Apr 18 09:42 US
原因在於上一層目錄的權限不足,更改目錄權限就可以了。
雖然找到原因很快就解決了問題,但是為了找到這個原因,在google找了好幾篇文件,
就是沒有提到,也沒有想到可能是目錄的問題,所以自己記錄下來。
EBS GL Date within an open purchasing period
今天在測試區PO模組測試收料時,出現下列的訊息:GL Date within an open purchasing period
原因是GL Date沒有設定為Open,如下圖更改日期的Status為Open即可
原因是GL Date沒有設定為Open,如下圖更改日期的Status為Open即可
EBS MRP的Planning Manager一直是Running的狀態
今天遇到一個問題,就是MRP執行出來的結果有問題,同事檢查後發現是Planning Manager一直在running,
原則上這支程式很快就會結束,而這支程式沒有正常完成會讓MRP產生有問題的結果。
從Concurrent Request開啟log,直接拉到最後看看執行到哪裡卡住了,
原因是「Could not lock mrp_recommendations rows」,因為無法lock mrp_recommendations,導致錯誤。
由下列的SQL找出mrp_recommendations被誰Lock住。
select vlo.session_id,vlo.object_id,owner,object_name,object_type,locked_mode,
process,oracle_username,os_user_name
from v$locked_object vlo,
dba_objects vdo
where vlo.object_id=vdo.object_id
and object_name =upper('mrp_recommendations');
最後發現是一個Session ID為224的使用者lock住這個表格,同事打電話詢問才知道使用者程式已經當掉,
而使用者就這樣一直放任不管,強制刪除Session之後就順利成功了。
原則上這支程式很快就會結束,而這支程式沒有正常完成會讓MRP產生有問題的結果。
原因是「Could not lock mrp_recommendations rows」,因為無法lock mrp_recommendations,導致錯誤。
由下列的SQL找出mrp_recommendations被誰Lock住。
select vlo.session_id,vlo.object_id,owner,object_name,object_type,locked_mode,
process,oracle_username,os_user_name
from v$locked_object vlo,
dba_objects vdo
where vlo.object_id=vdo.object_id
and object_name =upper('mrp_recommendations');
最後發現是一個Session ID為224的使用者lock住這個表格,同事打電話詢問才知道使用者程式已經當掉,
而使用者就這樣一直放任不管,強制刪除Session之後就順利成功了。
EBS GL Date within an open purchasing period
今天在測試區PO模組測試收料時,出現下列的訊息:GL Date within an open purchasing period
原因是GL Date沒有設定為Open,如下圖更改日期的Status為Open即可
原因是GL Date沒有設定為Open,如下圖更改日期的Status為Open即可
EBS 找指定responsibility包含哪些forms
--選單樹狀結構
Declare
v_check number :=0;
v_space varchar2(200) :='';
i number :=0;
v_top_responsibility varchar2(50) := <權限模組名稱> ;
cursor cur1 is
select a.menu_id,b.sub_menu_id,b.prompt
from fnd_menus_vl a,FND_MENU_ENTRIES_VL b
where a.menu_id=b.menu_id
and a.menu_name='FM_NAVIGATE_10G'
and B.sub_MENU_ID not in (select action_id from FND_RESP_FUNCTIONS a,
fnd_application_vl b,
fnd_responsibility_vl c
where a.application_id=b.application_id
and c.responsibility_id=a.responsibility_id
and c.responsibility_key = v_top_responsibility
and rule_type='M') ;
r1 cur1%rowtype;
Procedure Get_function (v_level number,v_sub_menu number ) is --傳入層級,子選單ID
Cursor Cur2 is
select sub_menu_id,prompt
from FND_MENU_ENTRIES_VL where menu_id=v_sub_menu
and function_id not in (select action_id from FND_RESP_FUNCTIONS a,
fnd_application_vl b,
fnd_responsibility_vl c
where a.application_id=b.application_id
and c.responsibility_id=a.responsibility_id
and c.responsibility_key =v_top_responsibility
and rule_type='F') ;
r2 cur2%rowtype;
Begin
--dbms_output.put_line('aaaa');
v_space :='';
for i in 0..v_level
loop
v_space :=' '||v_space ;
end loop;
For r2 in Cur2 Loop
select count(1) into v_check
from FND_MENU_ENTRIES_VL where sub_menu_id is not null and menu_id=v_sub_menu
and function_id not in (select action_id from FND_RESP_FUNCTIONS a,
fnd_application_vl b,
fnd_responsibility_vl c
where a.application_id=b.application_id
and c.responsibility_id=a.responsibility_id
and c.responsibility_key = v_top_responsibility
and rule_type='F');
If v_check > 0 then
insert into tmp_ddd(a,b) values (v_level,v_space|| r2.prompt);
Get_function (v_level+1,r2.sub_menu_id);
else
insert into tmp_ddd(a,b) values (v_level,v_space || r2.prompt);
--dbms_output.put_line('Top Item_Number:' ||r2.prompt);
end if;
End Loop;
End;
Begin
for r1 in cur1 loop
insert into tmp_ddd(a,b) values (0,r1.prompt);
Get_function (1,r1.sub_menu_id);
end loop;
commit;
End;
Cancel PO時出現錯誤Please undo the changes to the document in current revision
有一個standard PO要Cancel時,出現下列的錯誤訊息,已經確認沒有其他人在使用這張PO,
因為這張PO是由一支客製程式經INTERFACE拋轉出來的,可能是一個bug。
我們的做法是先修改PO Line的其中一筆資料,例如將數量改為1後儲存,重新appoved,
再執行一次cancel就成功了。
Solaris x64 出現錯誤 /usr/lib/extendedFILE.so.1: open failed
用useradd新增了帳號test01、test02之後,登入test01並用su時,出現了下列:
-bash-3.2$ su - test02
ld.so.1: su: warning: /usr/lib/extendedFILE.so.1: open failed: illegal insecure pathname
ld.so.1: su: warning: /usr/lib/extendedFILE.so.1: open failed: illegal insecure pathname
到google查了一下,發現國外的文件上提到這是因為環境變數設定的關係。
在登入到test01的命列下執行:
-bash-3.2$ env | grep LD_PRELOAD_32
LD_PRELOAD_32=/usr/lib/extendedFILE.so.1
LD_PRELOAD_32=/usr/lib/extendedFILE.so.1
-bash-3.2$ export LD_PRELOAD-32=
-bash-3.2$ su - zoe
Password:
Password:
這樣問題就解決了,再將「export LD_PRELOAD-32=」寫到.profile即可。
取消Solaris上帳號已設定密碼到期日
有一個帳號test01已經設定密碼到期日,有兩個方法可以清除。
# cat /etc/shadow | grep test01
test01:$1$1jgzqgOq$AZrtLDm9oSyFrm0.ugLZC.:16170:1:2:3:6::
1、直接修改/etc/shadow,並將相關欄位清除後儲存
2、以參數 -x 來清除設定,並指定值為-1。
# passwd -x -1 test01
驗證:
# cat /etc/shadow | grep test01
test01:$1$1jgzqgOq$AZrtLDm9oSyFrm0.ugLZC.:16170::::6::
# cat /etc/shadow | grep test01
test01:$1$1jgzqgOq$AZrtLDm9oSyFrm0.ugLZC.:16170:1:2:3:6::
1、直接修改/etc/shadow,並將相關欄位清除後儲存
2、以參數 -x 來清除設定,並指定值為-1。
# passwd -x -1 test01
驗證:
# cat /etc/shadow | grep test01
test01:$1$1jgzqgOq$AZrtLDm9oSyFrm0.ugLZC.:16170::::6::
solaris 10 密碼原則
一、記錄歷史密碼功能
它會記錄使用者使用過的密碼,最多可以記錄26組。
如果啟用這個功能後,在變更密碼時將不允許重複之前已使用過的密碼。
編輯/etc/default/passwd,將HISTORY前的註解#移除,並且給予一個大於零的值如下,
HISTORY=5 --> 表示記錄曾使用過的五組密碼
例子:
$ passwd
passwd: Changing password for keven
Enter existing login password:
New Password:
passwd: Password in history list. -->提示新密碼已被使用過
被記錄的密碼放在/etc/security/passhistory,每行的最前面是帳號,後面使用過的加密密碼,
以「:」來區分各組密碼
# cat /etc/security/passhistory
keven:30mTqC53LX0Fg:YpysbwM605wh6:
二、限制密碼錯誤次數的功能
編輯 /etc/security/policy.conf,將LOCK_AFTER_RETRIES的值設定為YES,並將註解#字移除以啟用功能。
編輯/etc/default/login,設定RETRIES的值並將註解#移除,限制密碼最多輸入幾次錯誤,便將帳號鎖住。
另外在/etc/default/login中還有一個SYSLOG_FAILED_LOGINS,是設定幾次登入錯誤後才會送訊息給syslog,
如果設成0,則每次的錯誤都會送訊息給syslog。
使用者在登入失敗後,/etc/shadow中密碼那一欄的最前面會被加上*LK*,即表示這個帳號被鎖住了,如下:
test01:*LK*gRTCELbBZ4Bko:16170::::::6
可以使用passwd -u <USER_NAME>來解開被鎖住的帳號,或者是手動把/etc/shadow裡的*LK*移除就可以了。
# passwd -u test01
passwd: password information changed for test01
這個功能是全域設定,也就是一旦啟用,所有的帳號都適用,如果想排除針對其中一個帳號,
則可以編輯/etc/user_attr並且加入<USER_NAME>::::lock_after_retries=no,例如:
test01::::lock_after_retries=no
三、密碼最小長度
編輯/etc/default/passwd,修改參數PASSLENGTH的值,例如改為最小長度為8
PASSLENGTH=8
以帳號test01來測試
$ passwd
passwd: Changing password for test01
Enter existing login password:
New Password: --> 輸入 root123
passwd: Password too short - must be at least 8 characters.
會提示輸入的密碼太短了。
四、設定帳號到期天數
以test01為例,先執行下列指令
# usermod -f 6 test 01
# passwd -n 1 -x 2 -w 3 test01
參數說明:
usermod
-f 密碼到期後寬限天數
接著可以觀察/etc/shadow中test01的設定
test01:$1$1jgzqgOq$AZrtLDm9oSyFrm0.ugLZC.:16170:1:2:3:6::
格式:name:password:last_change_date:min:max:warn:inactive:expire_date:none
格式說明:Login_Name:Password:更改密碼的最後時間:限制密碼變更相隔天數:密碼到期天數:
密碼過期前警告天數:密碼到期後寬限天數:失效日期:保留欄位
各欄位說明
Login_Name:
這是使用者名稱,與另一個帳號檔/etc/passwd相應
Password:
使用者加密後的密碼
更改密碼的最後時間:
單位是日,由1970/1/1開始起算天數。
例如 (1970/1/1) + 16170 = (2014/4/10),表示test01最後在2014/4/10變更過密碼
限制密碼變更相隔天數:
例如1表示密碼隨時更改後必須經過一天才能再更改。
密碼到期天數:
變更密碼多少天後就必須要設定新密碼,否則這個帳號將會失效。
例如上面的2,表示密碼2天後會到期。
密碼過期前警告天數:
系統預設值是7天,上面的3表示密碼到期日3天前會提示更換密碼
密碼到期後寬限天數:
例如6,代表密碼過期後6天,帳號就會失效。
失效日期:
帳號會在指定日期之後失效。
一樣是以1970/1/1來計算天數,如:(2014/4/10) - (1970/1/1) = 16170
保留欄位:
最後一個欄位是保留的。
它會記錄使用者使用過的密碼,最多可以記錄26組。
如果啟用這個功能後,在變更密碼時將不允許重複之前已使用過的密碼。
編輯/etc/default/passwd,將HISTORY前的註解#移除,並且給予一個大於零的值如下,
HISTORY=5 --> 表示記錄曾使用過的五組密碼
例子:
$ passwd
passwd: Changing password for keven
Enter existing login password:
New Password:
passwd: Password in history list. -->提示新密碼已被使用過
被記錄的密碼放在/etc/security/passhistory,每行的最前面是帳號,後面使用過的加密密碼,
以「:」來區分各組密碼
# cat /etc/security/passhistory
keven:30mTqC53LX0Fg:YpysbwM605wh6:
二、限制密碼錯誤次數的功能
編輯 /etc/security/policy.conf,將LOCK_AFTER_RETRIES的值設定為YES,並將註解#字移除以啟用功能。
編輯/etc/default/login,設定RETRIES的值並將註解#移除,限制密碼最多輸入幾次錯誤,便將帳號鎖住。
另外在/etc/default/login中還有一個SYSLOG_FAILED_LOGINS,是設定幾次登入錯誤後才會送訊息給syslog,
如果設成0,則每次的錯誤都會送訊息給syslog。
使用者在登入失敗後,/etc/shadow中密碼那一欄的最前面會被加上*LK*,即表示這個帳號被鎖住了,如下:
test01:*LK*gRTCELbBZ4Bko:16170::::::6
可以使用passwd -u <USER_NAME>來解開被鎖住的帳號,或者是手動把/etc/shadow裡的*LK*移除就可以了。
# passwd -u test01
passwd: password information changed for test01
這個功能是全域設定,也就是一旦啟用,所有的帳號都適用,如果想排除針對其中一個帳號,
則可以編輯/etc/user_attr並且加入<USER_NAME>::::lock_after_retries=no,例如:
test01::::lock_after_retries=no
三、密碼最小長度
編輯/etc/default/passwd,修改參數PASSLENGTH的值,例如改為最小長度為8
PASSLENGTH=8
以帳號test01來測試
$ passwd
passwd: Changing password for test01
Enter existing login password:
New Password: --> 輸入 root123
passwd: Password too short - must be at least 8 characters.
會提示輸入的密碼太短了。
四、設定帳號到期天數
以test01為例,先執行下列指令
# usermod -f 6 test 01
# passwd -n 1 -x 2 -w 3 test01
參數說明:
usermod
-f 密碼到期後寬限天數
passwd
-n 限制密碼變更相隔天數
-x 密碼到期天數
-w 密碼過期前警告天數
-n 限制密碼變更相隔天數
-x 密碼到期天數
-w 密碼過期前警告天數
接著可以觀察/etc/shadow中test01的設定
test01:$1$1jgzqgOq$AZrtLDm9oSyFrm0.ugLZC.:16170:1:2:3:6::
格式:name:password:last_change_date:min:max:warn:inactive:expire_date:none
格式說明:Login_Name:Password:更改密碼的最後時間:限制密碼變更相隔天數:密碼到期天數:
密碼過期前警告天數:密碼到期後寬限天數:失效日期:保留欄位
各欄位說明
Login_Name:
這是使用者名稱,與另一個帳號檔/etc/passwd相應
Password:
使用者加密後的密碼
更改密碼的最後時間:
單位是日,由1970/1/1開始起算天數。
例如 (1970/1/1) + 16170 = (2014/4/10),表示test01最後在2014/4/10變更過密碼
限制密碼變更相隔天數:
例如1表示密碼隨時更改後必須經過一天才能再更改。
密碼到期天數:
變更密碼多少天後就必須要設定新密碼,否則這個帳號將會失效。
例如上面的2,表示密碼2天後會到期。
密碼過期前警告天數:
系統預設值是7天,上面的3表示密碼到期日3天前會提示更換密碼
密碼到期後寬限天數:
例如6,代表密碼過期後6天,帳號就會失效。
失效日期:
帳號會在指定日期之後失效。
一樣是以1970/1/1來計算天數,如:(2014/4/10) - (1970/1/1) = 16170
保留欄位:
最後一個欄位是保留的。
Solaris 10 密碼的加密安全性
原來Solaris 10 支援四種帳號密碼加密的演算法,如下面的說明:
但是Solaris預設是使用最不安全的加密法__unix__,密碼的長度限制為8個字元,
但是有趣的是輸入的密碼可以超過8個字元。
例如新增一個使用者test01並將其密碼設定為0123456789
# useradd test01
# passwd test01
切換到另一個帳號來測試
# su - keven
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
$ id
uid=100(keven) gid=1(other) -->已經切換到另一個帳號
$ su test01
Password: -->輸入0123456789
$ id
uid=102(test01) gid=1(other)
$ exit
$ id
uid=100(keven) gid=1(other)
$ su test01
Password: -->輸入01234567
$ id
uid=102(test01) gid=1(other)
Solaris 10演算法的設定是放在/etc/security/policy.conf裡面,找一下兩個參數:
CRYPT_ALGORITHMS_ALLOW=1,2a,md5,5,6
此參數是設定可以使用哪些演算法,填入的是識別字,
系統預設已經都填進去了,所以我們不需要改。
CRYPT_DEFAULT=__unix__
預設要使用哪一個演算法,這裡要修改成想要用的演算法識別字。
雖然已經修改CRYPT_DEFAULT,但是由於CRYPT_ALGORITHMS_ALLOW設定允許多種演算法,
所以舊有的密碼還是使用舊的演算法,除非移除CRYPT_ALGORITHMS_ALLOW內的某一項加密法,
否則就是要重新設定新密碼,才能將密碼改為新的加密法。
識別字 | 演算法 | 說明 | Man manual |
1 | crypt_bsdmd5 | MD5演算法(與BSD、Linux相容),密碼最長可達255個字元。 | crypt_bsdmd5(5) |
2a | crypt_bsdbf | Blowfish演算法(與BSD相容),密碼最長可達255個字元。 | crypt_bsdbf(5) |
md5 | crypt_sunmd5 | Solaris的MD5,比BSD及Linux更為安全,密碼最長可達255個字元。 | crypt_sunmd5(5) |
__unix__ | crypt_unix | Unix傳統演算法,密碼最長為8個字元。 | crypt_unix(5) |
但是Solaris預設是使用最不安全的加密法__unix__,密碼的長度限制為8個字元,
但是有趣的是輸入的密碼可以超過8個字元。
例如新增一個使用者test01並將其密碼設定為0123456789
# useradd test01
# passwd test01
切換到另一個帳號來測試
# su - keven
Sun Microsystems Inc. SunOS 5.10 Generic January 2005
$ id
uid=100(keven) gid=1(other) -->已經切換到另一個帳號
$ su test01
Password: -->輸入0123456789
$ id
uid=102(test01) gid=1(other)
$ exit
$ id
uid=100(keven) gid=1(other)
$ su test01
Password: -->輸入01234567
$ id
uid=102(test01) gid=1(other)
Solaris 10演算法的設定是放在/etc/security/policy.conf裡面,找一下兩個參數:
CRYPT_ALGORITHMS_ALLOW=1,2a,md5,5,6
此參數是設定可以使用哪些演算法,填入的是識別字,
系統預設已經都填進去了,所以我們不需要改。
CRYPT_DEFAULT=__unix__
預設要使用哪一個演算法,這裡要修改成想要用的演算法識別字。
雖然已經修改CRYPT_DEFAULT,但是由於CRYPT_ALGORITHMS_ALLOW設定允許多種演算法,
所以舊有的密碼還是使用舊的演算法,除非移除CRYPT_ALGORITHMS_ALLOW內的某一項加密法,
否則就是要重新設定新密碼,才能將密碼改為新的加密法。
用Excel 2010製作免費甘特圖
用Excel 2010製作免費甘特圖,以下是完成圖,其實是用圖表的功能加上修改圖表的選項來仿製甘特圖,
並非真正的甘特圖,如果要用免費的甘特圖軟體,可以下載GanttProject,有支援中文。
官方網址:http://www.ganttproject.biz/
首先將任務、開始日期、天數、完成日期填入工作表中,完成計劃後將資料全選,並在工具列上找到橫條圖。
一定要將資料全選起來,不然Excel有可能會判斷錯誤,畫出不符我們需求的圖表
(日期我算錯了,不過不影響製作,可以事後再修改)
圖表出現之後,修改資料的範圍(藍色框的部份),將資料由D6拉到C6。
「完成日期」只是為了讓Excel一開始不要判斷錯誤而產生錯誤的圖表。
在「藍色線條」上按滑鼠右鍵,選擇「資料數列格式」
依下圖點選「無填滿」,把藍色的線條變成透明,讓圖表看起來像是甘特圖。
接著我們要修改欄、列的參數,在下面日期的部份點選滑鼠右鍵,選「座標軸格式」
下方列是日期,所以選「日期」,並選擇一個類型
再來到「座標軸選項」中設定最小、最大值,讓圖表看起來更像甘特圖,其中最小值、最大值的數字,
是由1900/1/1到指定日期的總天數,例如:2014/4/9-1900/1/1=41737天(可用Excel直接相減得出數值)
「主要刻度間距」改為1,也就是間距為1天
接著回到圖表上,在左方任務列上按滑鼠右鍵,選擇「座標軸格式」
這次只選「類別次序反轉」,會把任務上下翻轉。
最後再將圖表的寬度、長度做一個調整就完成了。
並非真正的甘特圖,如果要用免費的甘特圖軟體,可以下載GanttProject,有支援中文。
官方網址:http://www.ganttproject.biz/
首先將任務、開始日期、天數、完成日期填入工作表中,完成計劃後將資料全選,並在工具列上找到橫條圖。
一定要將資料全選起來,不然Excel有可能會判斷錯誤,畫出不符我們需求的圖表
(日期我算錯了,不過不影響製作,可以事後再修改)
圖表出現之後,修改資料的範圍(藍色框的部份),將資料由D6拉到C6。
「完成日期」只是為了讓Excel一開始不要判斷錯誤而產生錯誤的圖表。
在「藍色線條」上按滑鼠右鍵,選擇「資料數列格式」
依下圖點選「無填滿」,把藍色的線條變成透明,讓圖表看起來像是甘特圖。
接著我們要修改欄、列的參數,在下面日期的部份點選滑鼠右鍵,選「座標軸格式」
下方列是日期,所以選「日期」,並選擇一個類型
再來到「座標軸選項」中設定最小、最大值,讓圖表看起來更像甘特圖,其中最小值、最大值的數字,
是由1900/1/1到指定日期的總天數,例如:2014/4/9-1900/1/1=41737天(可用Excel直接相減得出數值)
「主要刻度間距」改為1,也就是間距為1天
接著回到圖表上,在左方任務列上按滑鼠右鍵,選擇「座標軸格式」
這次只選「類別次序反轉」,會把任務上下翻轉。
最後再將圖表的寬度、長度做一個調整就完成了。
補充說明:
如果遇到下列的情形,圖表的內容相反的話,可以按下「切換列/欄」來改變
Solaris 10 FTP設定
因為系統由HP-UX移至Solaris,所以FTP的需要重新設定,下面是我的做法:
檢查是否有啟用FTP,state是online表示已正常啟用
bash-3.2# svcs -l ftp
fmri svc:/network/ftp:default
name FTP server
enabled true
state online
next_state none
state_time Fri Mar 28 16:41:14 2014
restarter svc:/network/inetd:default
contract_id
目標一:讓使用者ftp登入後只能在家目錄操作,這樣使用者就無法跳到不該瀏覽的目錄
編輯/etc/ftpd/ftpaccess,並加入下列一行:
restricted-uid *
「*」表示所有的帳號都適用,也可以只限制某些帳號(如t01、t02):
restricted-uid t01,t02
目標二:限制密碼輸入錯誤的次數
編輯/etc/ftpd/ftpaccess,修改下列的值:
loginfails 3
上列表示密碼輸入錯誤三次,FTP就會中斷。
目標三:禁止root登入ftp,原則上預設就是無法登入。
檢查root有無在/etc/ftpd/ftpusers,內容如下,則root無法登入
bash-3.2# cat ftpusers
# ident "@(#)ftpusers 1.6 11/08/02 SMI"
#
# List of users denied access to the FTP server, see ftpusers(4).
#
root
daemon
bin
...(略)
目標四:在使用者登入後,顯示訊息
檢查/etc/ftpd/ftpaccess,確認訊息檔的位置
message /etc/ftpd/welcome.msg login
接著在/etc/ftpd中,新增/修改welcome.msg,把欲顯示的訊息填入
目標五:允許ftp登入、拒絕ssh登入
首先在/etc下新增檔案shells,把允許的shell及路徑寫入檔案shells,
/etc/shells主要記錄允許ftp登入的shell。
例如/etc/shells的內容如下:
/usr/bin/bash
/usr/bin/false
有兩個帳號在/etc/passwd如下:
t01:x:110:102::/export/home/t01:/usr/bin/bash
t02:x:111:102::/export/home/t02:/usr/bin/false
所以t01可以登入SSH,也可以登入FTP;t02不可以登入SSH,可以登入FTP
其他詳細的用法可以參考 man ftpaccess
檢查是否有啟用FTP,state是online表示已正常啟用
bash-3.2# svcs -l ftp
fmri svc:/network/ftp:default
name FTP server
enabled true
state online
next_state none
state_time Fri Mar 28 16:41:14 2014
restarter svc:/network/inetd:default
contract_id
目標一:讓使用者ftp登入後只能在家目錄操作,這樣使用者就無法跳到不該瀏覽的目錄
編輯/etc/ftpd/ftpaccess,並加入下列一行:
restricted-uid *
「*」表示所有的帳號都適用,也可以只限制某些帳號(如t01、t02):
restricted-uid t01,t02
目標二:限制密碼輸入錯誤的次數
編輯/etc/ftpd/ftpaccess,修改下列的值:
loginfails 3
上列表示密碼輸入錯誤三次,FTP就會中斷。
目標三:禁止root登入ftp,原則上預設就是無法登入。
檢查root有無在/etc/ftpd/ftpusers,內容如下,則root無法登入
bash-3.2# cat ftpusers
# ident "@(#)ftpusers 1.6 11/08/02 SMI"
#
# List of users denied access to the FTP server, see ftpusers(4).
#
root
daemon
bin
...(略)
目標四:在使用者登入後,顯示訊息
檢查/etc/ftpd/ftpaccess,確認訊息檔的位置
message /etc/ftpd/welcome.msg login
接著在/etc/ftpd中,新增/修改welcome.msg,把欲顯示的訊息填入
目標五:允許ftp登入、拒絕ssh登入
首先在/etc下新增檔案shells,把允許的shell及路徑寫入檔案shells,
/etc/shells主要記錄允許ftp登入的shell。
例如/etc/shells的內容如下:
/usr/bin/bash
/usr/bin/false
有兩個帳號在/etc/passwd如下:
t01:x:110:102::/export/home/t01:/usr/bin/bash
t02:x:111:102::/export/home/t02:/usr/bin/false
所以t01可以登入SSH,也可以登入FTP;t02不可以登入SSH,可以登入FTP
其他詳細的用法可以參考 man ftpaccess
Xmanager無法用xdmcp連線Solaris 10
我是用VirutalBox安裝Solaris 10,但是要在Windows 7中想以xmanager連到Solaris時,
卻一直無法連線,顯示連線失敗,但是印象中Solaris 10預設會啟用xdmcp
在文字介面下,可以用下列的指令重新啟用
[root@sol oswbb]# svcadm enable -r cde-login
相反想要停用可下
[root@sol oswbb]# svcadm disable cde-login
先檢查Process是否有被啟用
# ps -ef |grep dtlogin
root 950 938 0 08:02:55 ? 0:00 /usr/dt/bin/dtlogin -daemon
root 938 1 0 08:02:48 ? 0:00 /usr/dt/bin/dtlogin -daemon
檢查的結果是有啟用的,但是xmanger還是無法連線
檢查Xmanager配置,應該也沒有什麼問題。
xdmcp Conection Method : XDM Query
xdmcp Host: Solaris Server IP
xdmcp Port:177
xdmcp Local Address: Auto Select
最後在網路上有人提到Windows的防火牆的可能性,所以去檢查Win7的設定值
先到 「控制台\所有控制台項目\網路和共用中心」,檢視作用中的網路
VirutalBox的網卡VirtualBox Host-Only Network屬於「公用網路」
再到「控制台\所有控制台項目\Windows 防火牆\允許的程式」,終於找到原因,
原來xmanager在「公用網路」是不被允許的,勾選之後就可以連線了。
卻一直無法連線,顯示連線失敗,但是印象中Solaris 10預設會啟用xdmcp
在文字介面下,可以用下列的指令重新啟用
[root@sol oswbb]# svcadm enable -r cde-login
相反想要停用可下
[root@sol oswbb]# svcadm disable cde-login
先檢查Process是否有被啟用
# ps -ef |grep dtlogin
root 950 938 0 08:02:55 ? 0:00 /usr/dt/bin/dtlogin -daemon
root 938 1 0 08:02:48 ? 0:00 /usr/dt/bin/dtlogin -daemon
檢查的結果是有啟用的,但是xmanger還是無法連線
檢查Xmanager配置,應該也沒有什麼問題。
xdmcp Conection Method : XDM Query
xdmcp Host: Solaris Server IP
xdmcp Port:177
xdmcp Local Address: Auto Select
最後在網路上有人提到Windows的防火牆的可能性,所以去檢查Win7的設定值
先到 「控制台\所有控制台項目\網路和共用中心」,檢視作用中的網路
VirutalBox的網卡VirtualBox Host-Only Network屬於「公用網路」
再到「控制台\所有控制台項目\Windows 防火牆\允許的程式」,終於找到原因,
原來xmanager在「公用網路」是不被允許的,勾選之後就可以連線了。
EBS INV - No open period found for date entered
今天在測試區有一支客製程式是利用INV Interface報廢料號時,發現沒有成功,
錯誤的訊息是NO open period found for date entered,這是因為日期沒有open的緣故
INV--> Accounting Close Cycle -->Inventory Accounting Periods
因為現在已經是四月份,但是可以發現四月的Status是Future,所以按下「Change status...」,
將四月的status改為Open就可以了
錯誤的訊息是NO open period found for date entered,這是因為日期沒有open的緣故
INV--> Accounting Close Cycle -->Inventory Accounting Periods
因為現在已經是四月份,但是可以發現四月的Status是Future,所以按下「Change status...」,
將四月的status改為Open就可以了
Oracle SQL Loader 使用範例
SQL Loader可以快速將大量的資料匯入Oracle的Table中。
例如有一個檔案test01.csv的資料要上傳到tmp_a的Table上。
一、在資料庫中建立名稱為tmp_a的Table
SQL> create table tmp_a
( a varchar2(20),
b varchar2(10),
c varchar2(10) ) ;
二、準備要匯入的資料,以逗點「,」作為每一欄位的分隔,每一行則為每一筆資料。
至於副檔名可用.csv,好處是excel可以直接開啟並編輯.csv的檔案,儲存之後也是.csv的格式。
test01.csv內容如下:
------------------------
John,boy,001
May,Girl,002
三、準備好SQL*Loader Control File,也就是告訴Oracle要如何匯入的設定檔
import.ctl
------------------------------------------
load data
infile 'test01.txt'
into table tmp_a
fields terminated by ","
( a,b,c )
說明如下:
infile 上傳檔案的路徑及檔名,上面表示與Control File相同目錄
into table 要載入到那一個table,上面表示要載入tmp_a
fields terminated by 欄位與欄位的分隔符號
(a,b,c) 要填入資料的表格欄位名稱
四、執行sqlldr,下列是以Linux為作業系統測試
語法:sqlldr DB帳號/密碼 control=控制檔名
$ sqlldr oracle/password control=import.ctl
SQL*Loader: Release 11.2.0.2.0 - Production on Tue Apr 1 10:43:59 2014
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Commit point reached - logical record count 3
Commit point reached - logical record count 6
預設會在相同的目錄下產生一個與控制檔名相同的log檔,例如import.log,
如有問題,可檢查log內容的錯誤訊息
驗證一下資料是否成功匯入tmp_a中
SQL> select * from tmp_a ;
例如有一個檔案test01.csv的資料要上傳到tmp_a的Table上。
一、在資料庫中建立名稱為tmp_a的Table
SQL> create table tmp_a
( a varchar2(20),
b varchar2(10),
c varchar2(10) ) ;
二、準備要匯入的資料,以逗點「,」作為每一欄位的分隔,每一行則為每一筆資料。
至於副檔名可用.csv,好處是excel可以直接開啟並編輯.csv的檔案,儲存之後也是.csv的格式。
test01.csv內容如下:
------------------------
John,boy,001
May,Girl,002
三、準備好SQL*Loader Control File,也就是告訴Oracle要如何匯入的設定檔
import.ctl
------------------------------------------
load data
infile 'test01.txt'
into table tmp_a
fields terminated by ","
( a,b,c )
說明如下:
infile 上傳檔案的路徑及檔名,上面表示與Control File相同目錄
into table 要載入到那一個table,上面表示要載入tmp_a
fields terminated by 欄位與欄位的分隔符號
(a,b,c) 要填入資料的表格欄位名稱
四、執行sqlldr,下列是以Linux為作業系統測試
語法:sqlldr DB帳號/密碼 control=控制檔名
$ sqlldr oracle/password control=import.ctl
SQL*Loader: Release 11.2.0.2.0 - Production on Tue Apr 1 10:43:59 2014
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Commit point reached - logical record count 3
Commit point reached - logical record count 6
預設會在相同的目錄下產生一個與控制檔名相同的log檔,例如import.log,
如有問題,可檢查log內容的錯誤訊息
驗證一下資料是否成功匯入tmp_a中
SQL> select * from tmp_a ;
訂閱:
文章 (Atom)

-
在電腦版的Line輸入文字時,遇到需要換行的情形時,我都是用記事本先寫好再複製上去,這樣就可以有換行的效果,可是這樣的做法好像失去Line的便利性。 於是查了一下,原來有一個設定可以指定Enter換行,而不是發訊息出去。 完成設定之後,要發送訊息就改用Al...
-
Windows7 / Windows8 kill process Linux下要刪除某個程序通常會使用 ps 配合 kill 來刪除程序。 例如:ps -ef |grep [PROCESS NAME] kill -9 [PID] 在Windows下,通常是...
-
Excel有許多實用的公式,善用這些公式可以達成大部份的功能,但是萬一公式無法滿足需求時,可以自訂公式來解決。 自訂公式其實就是自訂函數,先開啟Visual Basic(VBA) 新增一個「模組」 ...