自從 Steve Jobs 重新加入 Apple 之後,這蘋果公司一出手總是讓人震驚與讚嘆。 今年 2014年 6 月 2 日蘋果在 WWDC 年度會議上宣告 Swift 語言正式誕生,這更讓蘋果迷既驚喜,又是擔憂。驚喜的是新語言擺脫舊有的包袱,但擔憂的是凡事又得重新另起 -- 除了架構 Framework Library 運用上沒有多大改變之外。 Swift 融合各家語言的優點,考慮安全性及效能,所以盲人摸象,每個人都可看到自己熟習的程式語言的影子。學習新的程式語言,其 Learning Curve 的長短不一。不過,誘使 Developer 願意跳火坑去學,倒不是語言的精簡良莠,反倒是學習之後,這語言能帶給 Developer 多少效益,即能從中獲取多少利益。 Swift 天生嬌貴,生來就有個富爸爸,所以就注定萬眾所矚。截至今年12月,在TOBIE的排名已躍升 17名。雖然遠遠落後排名第 3 的原開發語言 Objective-C,但在 Developer 心中都明白,Objective-C 將淡出,這只是時間問題。對新加入開發 iPhone / iPad 等 iDevice 的 Developer而言, Swift 會成為必要的首選。 Swift 提供一個很好的工具 Playground。這工具允許 Developer 寫些小程式測試欲新增到專案的概念,藉此立即得知結果。這對 Developer 而言相當有幫助。過去 Developer 大部分必須在專案裡直接寫 Code,才能測試結果。除此,Playground 這所得即所見的直接操作,讓學習 Swift 以及 iOS 所提供的 Library 更快速、更直接,加速 Developer 大膽假設、小心求證的時程。這工具將成為 Swift 教學上的利器。 Swift 簡潔的語句著實令人著迷。它除去一般程式語言繁瑣的限制,反倒是著重在程式的精神。例如:程式每個 statement 段落結尾在 C / Objective-C 非得要以分號 (;) 區隔,而 Swift 就人性化多了,無須有此記憶上的累贅。又例如:眾所皆知 Developer 被教育專案中第一個被執行的函式 function 是 main(),而 Swift 則認為只要 function 在 Global Scope,那執行就會由那點開始。 另外, Swift 的 function 解除了只能 return 一個值或一個物件的限制,而允許 return 多個值。 對 Swift 而言, function 可視為變數。這些亮點增加了開發程式的彈性。 該不該立即跟上這波 Swift 的列車? 跟吧! 若你是Mobil Device 的 Developer,你沒有不跟的權利。雖說 Android 是個選項,然而君不見有 Developer 能在 Android 平台上撈到油水錢嗎? 反倒是在 iOS 平台開發倒是出現不少小富翁。會有這樣的現象可能歸諸於 PC 使用者的餘孽,認為甚麼都是免費的,要錢的就用破解版、盜版。此外,Andorid 眾手機廠商的版本不一致,對 Developer 而言是個困擾。再者, Swift 將是大勢所趨,Apple 淘汰避免 Objective-C 的開發只是時程問題。在這 IT 光速度的年代,能追趕這腳步已不容易,但觀望只能加速 IT 人員的淘汰吧!
“Those who are in love with practice without knowledge are like the sailor who gets into a ship without rudder or compass and who never can be certain [where] he is going. Practice must always be founded on sound theory.” by Leonardo da Vinci
2014年12月21日 星期日
也談談 Apple 的新開發語言 Swift
2014年11月12日 星期三
【Oracle 筆記 】Find What Patches Have Been Applied to Oracle Database
1. login as ORACLE_HOME dba 2. command: $ORACLE_HOME/OPatch/opatch lsinventory[dba@dev OPatch]$ cd $ORACLE_HOME/OPatch [dba@dev OPatch]$ ./opatch lsinventory Oracle Interim Patch Installer version 11.2.0.3.0 Copyright (c) 2012, Oracle Corporation. All rights reserved. Oracle Home : /u01/proddb/proddb/11.2.2 Central Inventory : /etc/oraInventory from : /u01/proddb/proddb/11.2.2/oraInst.loc OPatch version : 11.2.0.3.0 OUI version : 11.2.0.2.0 Log file location : /u01/proddb/proddb/11.2.2/cfgtoollogs/opatch/opatch2014-11-13_11-50-21AM_1.log Lsinventory Output file location : /u01/proddb/proddb/11.2.2/cfgtoollogs/opatch/lsinv/lsinventory2014-11-13_11-50-21AM.txt -------------------------------------------------------------------------------- Installed Top-level Products (1): Oracle Database 11g 11.2.0.2.0 There are 1 products installed in this Oracle Home. Interim patches (2) : Patch 10160615 : applied on Fri Apr 05 00:09:38 CST 2013 Unique Patch ID: 13348800 Created on 17 Jan 2011, 05:06:03 hrs PST8PDT Bugs fixed: 10160615 Patch 10149223 : applied on Fri Apr 05 00:08:03 CST 2013 Unique Patch ID: 13073567 Created on 25 Oct 2010, 03:35:14 hrs PST8PDT Bugs fixed: 10149223 -------------------------------------------------------------------------------- OPatch succeeded.
To know what db patches the DB server has applied,just look up table, registry$history . For example:time action name ver ID COMMENTS BUNDLE_SERIES ------------------------------ ---------- ------- ---------- ---------- ------------------------ --- 17-OCT-09 09.51.47.000000 PM UPGRADE SERVER 10.2.0.1.0 Upgraded from 9.2.0.8.0 18-OCT-09 12.39.34.000000 AM UPGRADE SERVER 10.2.0.4.0 Upgraded from 10.2.0.1.0 25-OCT-09 07.43.22.000000 PM APPLY SERVER 10.2.0.4 2 PSU 10.2.0.4.2 PSU 25-OCT-09 07.59.46.000000 PM CPU 6452863 view recompilation 21-MAR-10 09.42.19.000000 AM APPLY SERVER 10.2.0.4 3 PSU 10.2.0.4.3 PSU 21-MAR-10 09.44.01.000000 AM CPU 6452863 view recompilation 13-JUN-10 10.35.37.000000 AM APPLY SERVER 10.2.0.4 4 PSU 10.2.0.4.4 PSU 13-JUN-10 10.41.06.000000 AM CPU 6452863 view recompilation 04-APR-13 09.36.51.293731 PM VIEW INVAL 8289601 view invalidation IDATE 04-APR-13 09.36.51.781277 PM UPGRADE SERVER 11.2.0.2.0 Upgraded from 10.2.0.4.0 04-APR-13 09.38.39.183463 PM APPLY SERVER 11.2.0.2 0 Patchset 11.2.0.2.0 PSU 11 rows selected.
事實上,Oracle 也提供一個非常簡單驗證上 Patch 是否成功的方式,即是檢查 AD_BUGS 這表,檢查方式如下: SELECT * FROM AD_BUGS WHERE BUG_NUMBER = <patch_number> 參考 1. OPatch Utility and Commands, https://docs.oracle.com/cd/B16240_01/doc/em.102/e15294/options.htm
【Oracle 筆記 】OPatch Patch 6880880: UnsupportedClassVersionError
現象: Oracle DB version 11.2.0.2.0, 安裝 OPatch Patch 6880880 for OPatch 11.2.0.3.6 (p6880880_112000_LINUX-x86-64.zip) 後,驗證安裝時,發現下列錯誤: [mgr@dev OPatch]$ ./opatch version Exception in thread "main" java.lang.UnsupportedClassVersionError: oracle/opatch/OPatch (Unsupported major.minor version 49.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) OPatch failed with error code 1 Review: 查看 oraparam.ini 的 OUI Version 時 ,發現 OUI_VERSION=11.2.0.2.0,而 Patch 6880880 OPatch 11.2.0.3.6 也支援 OUI v 11.2.*,但為何解壓縮後,無法使用?$ vi /u01/proddb/proddb/11.2.2/oui/oraparam.ini
以 java -version 查看support 的版本為 build 1.6.0_10-b33,表面看起來此OPatch 11.2.0.3.6 官方文件也說明只需要 JDK / JRE v. 1.5.0 或更高版本,即能運作正常,然而實際上仍然報錯。 這此找向下相容版本 p6880880_111000_LINUX-x86-64.zip,安裝後驗證仍然報錯。問題在那裏? 接著試著從 README 檔案這句話 The OUI version must be 11.2.* 著手,找出目前環境下 OUI 安裝的版本,。發現 OUI Version 為 10.1.0.6.0。所以重新下載,選定 p6880880_111000_LINUX-x86-64.zip 這版本安裝。安裝完後驗證:[mgr@dev OPatch]$ opatch version Oracle Interim Patch Installer version 1.0.0.0.64 Copyright (c) 2011 Oracle Corporation. All Rights Reserved.. Oracle recommends you to use the latest OPatch version and read the OPatch documentation available in the OPatch/docs directory for usage. For information about the latest OPatch and other support-related issues, refer to document ID 293369.1 available on My Oracle Support (https://myoraclesupport.oracle.com) OPatch Version: 1.0.0.0.64
結論: 1. p6880880 官方文件有誤導: p6880880_112000_LINUX-x86-64.zip 官方說明支援的 platform 包含 Oracle 11.2.0.2.0 ,但事實並非如此。 2. 造成此現象的原因有可能 Oracle DB 由 10g 升級,而 OUI version 為 10.1.0.6.0 3. 此新版本的 OPatch 由下列 help 中與舊的相對照,可看出提供許多新功能: 注意: Oracle AP server 與 DB server 各有 OPatch 工具。 Oracle AP server 的 OPatch 是以 AP 帳號登入,位置在 $ORACLE_HOME/OPatch 之下,而 Oracle DB server 的 OPatch 是以 DB 帳號登入,位置同樣也在 $ORACLE_HOME/OPatch 之下。此次原因發生於上 AP sever 的 Patch,而非上 Oracle DB server 的 Patch。 新的 OPatch:[mgr@dev OPatch]$ opatch -h Oracle Interim Patch Installer version 1.0.0.0.64 Copyright (c) 2011 Oracle Corporation. All Rights Reserved.. Oracle recommends you to use the latest OPatch version and read the OPatch documentation available in the OPatch/docs directory for usage. For information about the latest OPatch and other support-related issues, refer to document ID 293369.1 available on My Oracle Support (https://myoraclesupport.oracle.com) Usage: opatch [ -h[elp] ] [ -r[eport] ] [ command ] command := apply lsinventory napply nrollback query rollback util version
舊的 OPatch::= -help Displays the help message for the command. -report Print the actions without executing. [mgr@dev OPatch]$ opatch -h Oracle Interim Patch Installer version 1.0.0.0.58 Copyright (c) 2007 Oracle Corporation. All Rights Reserved.. We recommend you refer to the OPatch documentation under OPatch/docs for usage reference. We also recommend using the latest OPatch version. For the latest OPatch version and other support related issues, please refer to document 293369.1 which is viewable from metalink.oracle.com Usage: opatch [ -h[elp] ] [ -r[eport] ] [ command ] command := apply lsinventory query rollback version
參考: 1. https://updates.oracle.com/download/6880880.html 2. https://docs.oracle.com/cd/B16240_01/doc/em.102/e15294/options.htm:= -help Displays the help message for the command. -report Print the actions without executing.
2014年11月11日 星期二
【Oracle 筆記 】The system has not been taken off maintenance mode completely.
現象 重新啟動 Oracle EBS 時候,系統無法連結,出現下列錯誤訊息: Error Message: The system has not been taken off maintenance mode completely. Please contact your System Administrator 事實上,在整個上 patch 的過程中,完全依照下列順序,為何還會有錯誤發生呢? 1. enable Maintenance mode 2. adstpall.sh 3. shut down database 4. apply patch 5. startup database 6. adstrtal.sh 7. disable Maintenance mode 檢查 1. 以 apps 帳號,由 DB 查詢 APPS_MAINTENANCE_MODE 的 status:[dba@tw]$ sqlplus apps/xxxxxx SQL*Plus: Release 11.2.0.2.0 Production on Wed Nov 12 10:59:12 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select fnd_profile.value('APPS_MAINTENANCE_MODE') from dual; FND_PROFILE.VALUE('APPS_MAINTENANCE_MODE') -------------------------------------------------------------------------------- NORMAL
2. 採用 Bounce Apache Server 建議 首先,確認 Maintenance Mode 是 Disabled,之後依序下列順序操作:$COMMON_TOP/admin/scripts/$TWO_TASK*/adapcctl.sh stop wait for 30 seconds $COMMON_TOP/admin/scripts/$TWO_TASK*/adapcctl.sh start
/u01/apps/PROD/inst/apps/PROD_xxxx-xxx-erp/admin/scripts/adapcctl.sh
or $INST_TOP/admin/scripts/adapcctl.sh
結論
事實上,在 Bounce Apache Server 之後,連結 Oracle EBS 仍有此錯誤訊息,但重新執行下列作業後,系統才恢復正常運作:
1. enable Maintenance mode ( adadmin )
2. shutdown AP server ( adstpall.sh apps/xxxxxx )
3. startup AP server ( adstrtal.sh apps/xxxxxx )
4. disable Maintenance mode ( adadmin )
參考
1. Oracle Applications Maintenance Procedures
http://download.oracle.com/docs/cd/B53825_03/current/acrobat/121admp.pdf
2. How to Stop and Start (Bounce) the Apache Server [ID 204218.1]
***Checked for relevance on 16-Apr-2013***
goal: How to stop and start (bounce) the apache server
fact: Oracle Application Object Library 11.5.10.2 and later
fact: Oracle HTTP Server Powered by Apache 1.3+
fact: Oracle Human Resources 11.5.10.2 and later
fact: Oracle Self Service Human Resources 11.5.10.2 and later
fix:
Log in to the httpd server
cd $SCRIPTS
type
adapcctl.sh stop
Wait 30 seconds
Type
adapcctl.sh start
Apache Server has been bounced.
2014年11月10日 星期一
【Oracle 筆記 】Oracle Date Format - RR ?
在DB參數設定檔,發現 nls_date_format 被設定為 'DD-MON-RR',而不是 'DD-MM-YY' 之類。查看 Oracle 官方網站 [1]時,不得不驚訝這是當初千禧年蟲蟲危機所遺留下來的毒害。若日期為 '1-JAN-00' 那代表的是那一年? 1900 年 或是 2000 年? 在這之前 coding 儘量節省欄位,年份只保留後 2 位數字並不為過。然而,沒想到恐龍商業軟體仍然存在 (尤其是 COBOL 商業軟體),在堪用與好用的考量下,除掉這蟲蟲成了 2000 年前的大事。這也是當年程式設計者始料未及。 參考 1. OLAP DML REFERENCE, DATE_FORMAT, https://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_commands_1029.htm#OLADM780
2014年11月9日 星期日
【Oracle 筆記 】語系支援 Language Support
使用者連上DB之後,查看目前的NLS參數設定 不同使用者會因設定不同,而看到不同的內容。SQL> select * from nls_session_parameters PARAMETER VALUE 1 NLS_LANGUAGE AMERICAN 2 NLS_TERRITORY AMERICA 3 NLS_CURRENCY $ 4 NLS_ISO_CURRENCY AMERICA 5 NLS_NUMERIC_CHARACTERS ., 6 NLS_CALENDAR GREGORIAN 7 NLS_DATE_FORMAT DD-MON-RR 8 NLS_DATE_LANGUAGE AMERICAN 9 NLS_SORT BINARY 10 NLS_TIME_FORMAT HH.MI.SSXFF AM 11 NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM 12 NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR 13 NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 14 NLS_DUAL_CURRENCY $ 15 NLS_COMP BINARY 16 NLS_LENGTH_SEMANTICS BYTE 17 NLS_NCHAR_CONV_EXCP FALSE
查看目前 Oracle Instance NLS 參數設定:SQL> select * from nls_instance_parameters PARAMETER VALUE 1 NLS_LANGUAGE AMERICAN 2 NLS_TERRITORY america 3 NLS_SORT binary 4 NLS_DATE_LANGUAGE 5 NLS_DATE_FORMAT DD-MON-RR 6 NLS_CURRENCY 7 NLS_NUMERIC_CHARACTERS ., 8 NLS_ISO_CURRENCY 9 NLS_CALENDAR 10 NLS_TIME_FORMAT 11 NLS_TIMESTAMP_FORMAT 12 NLS_TIME_TZ_FORMAT 13 NLS_TIMESTAMP_TZ_FORMAT 14 NLS_DUAL_CURRENCY 15 NLS_COMP binary 16 NLS_LENGTH_SEMANTICS BYTE 17 NLS_NCHAR_CONV_EXCP FALSE
查看目前 Oracle Database NLS 參數設定:SQL> select * from nls_database_parameters PARAMETER VALUE 1 NLS_NCHAR_CHARACTERSET AL16UTF16 2 NLS_LANGUAGE AMERICAN 3 NLS_TERRITORY AMERICA 4 NLS_CURRENCY $ 5 NLS_ISO_CURRENCY AMERICA 6 NLS_NUMERIC_CHARACTERS ., 7 NLS_CHARACTERSET UTF8 8 NLS_CALENDAR GREGORIAN 9 NLS_DATE_FORMAT DD-MON-RR 10 NLS_DATE_LANGUAGE AMERICAN 11 NLS_SORT BINARY 12 NLS_TIME_FORMAT HH.MI.SSXFF AM 13 NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM 14 NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR 15 NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 16 NLS_DUAL_CURRENCY $ 17 NLS_COMP BINARY 18 NLS_LENGTH_SEMANTICS BYTE 19 NLS_NCHAR_CONV_EXCP FALSE 20 NLS_RDBMS_VERSION 11.2.0.2.0
DBA 亦可使用 show parameter nls 指令查看 Database NLS 的設定。 若要修改 NLS 參數設定,則要先查詢 Oracle 提供那些參數的設定值。這些設定值可以從 Data Dictionary中的 v$nls_valid_valuses 這 View 得知。SQL> select * from v$nls_valid_values where value in ('AL16UTF16','AMERICAN','AMERICA','UTF8'); PARAMETER VALUE ISDEPRECATED 1 LANGUAGE AMERICAN FALSE 2 TERRITORY AMERICA FALSE 3 CHARACTERSET UTF8 FALSE 4 CHARACTERSET AL16UTF16 FALSE
修改 NLS 參數設定SQL> select * from nls_session_parameters where parameter = 'NLS_DATE_FORMAT'; PARAMETER VALUE 1 NLS_DATE_FORMAT DD-MON-RR
修改 nls_data_format 的參數設定:SQL> alter session set nls_date_format = 'MM/DD/YY';
確認修改是否成功:SQL> select * from nls_session_parameters; PARAMETER VALUE 1 NLS_LANGUAGE AMERICAN 2 NLS_TERRITORY AMERICA 3 NLS_CURRENCY $ 4 NLS_ISO_CURRENCY AMERICA 5 NLS_NUMERIC_CHARACTERS ., 6 NLS_CALENDAR GREGORIAN 7 NLS_DATE_FORMAT MM/DD/YY 8 NLS_DATE_LANGUAGE AMERICAN 9 NLS_SORT BINARY 10 NLS_TIME_FORMAT HH.MI.SSXFF AM 11 NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM 12 NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR 13 NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR 14 NLS_DUAL_CURRENCY $ 15 NLS_COMP BINARY 16 NLS_LENGTH_SEMANTICS BYTE 17 NLS_NCHAR_CONV_EXCP FALSE
2014年11月2日 星期日
【Oracle 筆記 】Client / DB server connect 設定
Oracle DB 的 client / server connection 的設定是最基本的,兩端設定都要一致才能溝通。例如: 在 Server 端找出設定值:[test@tw-srv-ora admin]$ echo $INST_TOP /u01/apps/TEST/inst/apps/TEST_tw-srv-ora [test@tw-srv-ora admin]$ cd $INST_TOP/ora/10.1.2/network/admin [test@tw-srv-ora admin]$ ls listener.ora tnsnames.ora TEST= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=tw-srv-ora.elvismeng.com.tw)(PORT=1522)) (CONNECT_DATA= (SERVICE_NAME=TEST) (INSTANCE_NAME=TEST) ) )
在 client 端,將此設定值 copy 至 tnsnames.ora 即可。此檔案放在 C:\orant\net80\admin 下。 設定後,可用Oracle 附送的工具 PL PLus 80,或是 PL/SQL Developer 做連結測試。測試方式如下:User Name : (Oracle DB 帳號) Password : (Oracle DB 密碼) Host String: (Oracle Instance SID, 例如: TEST)
2014年10月31日 星期五
【Oracle 筆記 】Oracle EBS: 你的 Instance 是用那一個 ORACLE_HOME?
乍看這標題會很納悶。的確,尤其以 adpatch 指令做 AutoPatch 時,被問到下列 prompt 出來的問題,還會猶豫一下: You are about to use or modify Oracle Applications product tables in your ORACLE database 'PROD' using ORACLE executables in '/u01/apps/PROD/apps/tech_st/10.1.2'. Is this the correct database [Yes] ? 對於剛開始懵懂無知的人或許只要按下 return 鍵,心理就暗自祈禱。但,事實上比較仔細的人在以 adstpall.sh 指令 shutdown EBS AP 時,在起始要關閉 Forms server 當下有段 log 顯示:**************************************************** You are running adformsrvctl.sh version 120.15.12010000.3 Stopping FORMS Server (Socket Mode) ... Forms Server stopped... adformsrvctl.sh: exiting with status 0 adformsrvctl.sh: check the logfile /u01/apps/PROD/inst/apps/PROD_tw-srv/logs/ora/10.1.2/forms/socket.log for more information ... .end std out. .end err out. ****************************************************
看到這行 /u01/apps/PROD/inst/apps/PROD_tw-srv/logs/ora/10.1.2/forms/socket.log ,我們更加篤定我們的 Instance 使用的是 10.1.2 這 ORACLE_HOME,而非 10.1.3 的 ORACLE_HOME。 事實上在更稍早時,我們應該很確定此 Instance 使用 ORACLE_HOME 的版本。例如: 我們規劃 client 端的 Form 以 socket 方式與 Forms Server 連結,這就注定 Instance 的 ORACLE_HOME 的版本。 若 Client 端以 servlet 方式,則 ORACLE_HOME 使用 10.1.3 版本。這 2 個版本之間的差異,先窺其目錄結構大致上可知道:[mgr@tw-srv 10.1.2]$ pwd /u01/apps/PROD/inst/apps/PROD_tw-srv/ora/10.1.2 [mgr@tw-srv 10.1.2]$ ls -l total 20 drwxr-xr-x 2 mgr mgr 4096 Apr 4 2014 bin drwxr-xr-x 3 mgr mgr 4096 Apr 4 2014 forms drwxr-xr-x 3 mgr mgr 4096 Apr 4 2014 network -rw-r--r-- 1 mgr mgr 3140 Oct 24 00:11 PROD_tw-srv.env drwxr-xr-x 3 mgr mgr 4096 Apr 4 2014 reports [mgr@tw-srv 10.1.3]$ pwd /u01/apps/PROD/inst/apps/PROD_tw-srv/ora/10.1.3 [mgr@tw-srv 10.1.3]$ ls -l total 36 drwxr-xr-x 3 mgr mgr 4096 Apr 4 2014 Apache drwxr-xr-x 2 mgr mgr 4096 Apr 4 2014 cfgtoollogs drwxr-xr-x 2 mgr mgr 4096 Apr 4 2014 config drwxr-xr-x 2 mgr mgr 4096 Apr 4 2014 deconfig drwxr-xr-x 6 mgr mgr 4096 Apr 5 2014 j2ee drwxr-xr-x 3 mgr mgr 4096 Apr 4 2014 javacache drwxr-xr-x 3 mgr mgr 4096 Apr 4 2014 network drwxr-xr-x 5 mgr mgr 4096 Apr 4 2014 opmn -rw-r--r-- 1 mgr mgr 3240 Oct 24 00:11 PROD_tw-srv.env
若 Instance 的 ORACLE_HOME 採用 10.1.2 (Oracle Tools Home),這是早期 client / server 彼此做 communication 的版本,屬於舊的版本,而 10.1.3 (Oracle OC4J Home) 則採用 Apache / J2EE 等技術,屬於後期開發,而被採用作為 Oracle Fusion 的 Middleware 技術。前者老而穩定,而後者新,需上 patch。Instance 選用不同的 ORACLE_HOME 版本,對後續 Oracle EBS 的管理維護影響很大! 參考: 1. http://blog.csdn.net/cai_xingyun/article/details/40394497
2014年10月30日 星期四
【Oracle 筆記 】Oracle Forms Server 與 Forms Client 的連結
Oracle EBS 的 AP Sever 包含 Forms server,而啟動此 server 時, 會產生 frmsrv 這 process。既然為 server process,就會定義所謂的 port number,提供 connection 的 service 以及其他相關的設定。 各 client 連線到此 AP server 時,此 server 也會為各自的 client 產生對應的 process,作為資料傳輸的 interface。 Forms (Socket) 的 server 是以 adformsrvctl.sh 指令來 startup / stop Forms Server in Socket Mode,此指令在 /u01/apps/PROD/apps/tech_st/10.1.2/bin 的目錄下。 Forms (Socket) 產生 server process 時,其環境設定值可參考由 AutoConfig 所產生的檔案 appsweb.cfg ( 在 $INST_TOP/ora/10.1.2/forms/server 目錄下 ),而若要自行定義 Forms 的參數,可參考 Metalink 的文件 387859.1 在此以簡單的實例來說明 Forms server / client 的關係: Forms Server Process:mgr 23268 1 0 Oct30 ? 00:00:00 frmsrv host tw-srv port 9000 pool 1 exe frmweb log /u01/apps/PROD/inst/apps/PROD_tw-srv /logs/ora/10.1.2/forms/socket.log em 1 Forms Client Process: mgr 327 23268 0 08:04 ? 00:00:02 frmweb webfile=5,20,twhc-srv-erp_9000,/u01/apps/PROD/inst/apps/PROD_tw-srv/logs/ora/10.1.2/forms/socket.log mgr 1430 23268 0 11:17 ? 00:00:01 frmweb webfile=5,51,twhc-srv-erp_9000,/u01/apps/PROD/inst/apps/PROD_tw-srv/logs/ora/10.1.2/forms/socket.log mgr 2465 23268 0 08:07 ? 00:01:08 frmweb webfile=5,22,twhc-srv-erp_9000,/u01/apps/PROD/inst/apps/PROD_tw-srv/logs/ora/10.1.2/forms/socket.log
我們來解析 Forms server process 這 startup 指令:frmsrv host tw-srv port 9000 pool 1 exe frmweb log /u01/apps/PROD/inst/apps/PROD_tw-srv
frmsrv => 以 mgr 帳號,切換到 $ORACLE_HOME/bin ( /u01/apps/PROD/apps/tech_st/10.1.2 )之下,可找到此執行檔 frmweb host tw-srv => 以 $ hostname -a 指定找出,亦可參考 /etc/hosts 檔案 port 9000 => 這 frmweb 使用的 port number 被定義在 $INST_TOP ( /u01/apps/PROD/inst/apps/PROD_tw-srv ) 目錄下的 conf_PROD.txt 檔案中,而以 s_formsport = 9000 此參數定義。 pool 1 => exe frmweb => log /u01/apps/PROD/inst/apps/PROD_tw-srv => frmweb 的 server proces 定義了 Log 的目錄,這目錄為 $INST_TOP/logs/ora/10.1.2/forms,也就是說所有的 client process 都寫在 $INST_TOP/logs的目錄下。例如: client process pid = 327 時,將來有關此 client 的 connection 的 log 會寫入 /u01/apps/PROD/inst/apps/PROD_tw-srv/logs/ora/10.1.2/forms 目錄下。 參考: 1. http://blog.csdn.net/cai_xingyun/article/details/40394497
【Oracle 筆記 】Oracle EBS AP shutdown / startup 時,查看連結紀錄
Oracle EBS R12 的 Form Client 標準透過 Servelet 與 Form Server 溝通,但也允許以 WinSocket 方式 (比較不建議,需上 Patch)。 連上 Form Server時,可看到 frmweb 這些 process 等待處理回應。 當我們下 adstpall.sh 停掉 AP server 時,可到 /u01/apps/PROD/inst/apps/PROD_tw-srv/logs/oar/10.1.2/forms/socket.log 查看 Client 連結紀錄。這 log 紀錄 Oracle EBS AP server 在 10/30/14-19:04:26 被 shutdown, 而於 10/30/14-19:18:16 被 startup。[Thu Oct 30 17:18:46 2014 CST]::LISTN: Connection Request [ConnId=482, Addr=xx.xx.xx.103:5128] [Thu Oct 30 17:23:28 2014 CST]::LISTN: Connection Request [ConnId=483, Addr=xx.xx.xx.140:7952] [Thu Oct 30 17:48:05 2014 CST]::LISTN: Connection Request [ConnId=484, Addr=xx.xx.xx.123:7698] [Thu Oct 30 17:56:17 2014 CST]::LISTN: Connection Request [ConnId=485, Addr=xx.xx.xx.103:14089] 10/30/14-19:04:26 :: adformsrvctl.sh version 120.15.12010000.3 10/30/14-19:04:26 :: adformsrvctl.sh: Stopping FORMS Server (Socket Mode) 10/30/14-19:04:26 :: adformsrvctl.sh: exiting with status 0 ================================================================================ 10/30/14-19:18:14 :: adformsrvctl.sh version 120.15.12010000.3 10/30/14-19:18:16 :: adformsrvctl.sh: Starting FORMS Server (Socket Mode) 10/30/14-19:18:16 :: adformsrvctl.sh: exiting with status 0 ================================================================================ FORMS CONNECTION ACTIVITY LOG FILE Developer:Forms/LogRecord [Thu Oct 30 19:18:16 2014 CST]::Server Start-up Data: Server Log Filename: /u01/apps/PROD/inst/apps/PROD_tw-srv/logs/ora/10.1.2/forms/socket.log Server Hostname: tw-srv.elvismeng.com.tw Server Port: 9000 Server Pool: 1 Server Process Id: 23268 [Thu Oct 30 20:11:26 2014 CST]::LISTN: Connection Request [ConnId=0, Addr=xx.xx.xx.131:27909] [Thu Oct 30 20:23:16 2014 CST]::LISTN: Connection Request [ConnId=1, Addr=xx.xx.xx.132:12552] [Thu Oct 30 20:31:19 2014 CST]::LISTN: Connection Request [ConnId=2, Addr=xx.xx.xx:25599]
在 /u01/apps/PROD/inst/apps/PROD_tw-srv/logs/oar/10.1.2/forms 目錄下存放 3 種檔案: *.rti 檔案, frmweb_dump_(pid) 檔案與 .log 檔案。 前面提到,每個 Form Client 登入後,在 AP Server 端都會各自有唯一的 process 作為窗口,與之對應,提供服務。這 process 就是 frmweb 程序。 frmweb process 生成後, 會將登入檔案以 em_(pid).rti 的檔名紀錄,而所有關於 forms 的 frmweb 活動只記錄在 socket.log (若以 socket 溝通) 裡。 例如: 查看一個 frmweb 這 process:[root@tw-srv ~]# ps -ef | grep 14675 dmgr 14675 23268 0 10:50 ? 00:00:01 frmweb webfile=5,49,tw-srv_9000,/u01/apps/PROD/inst/apps/PROD_twhc-srv-erp/logs/ora/10.1.2/forms/socket.log
在這 log 目錄下,找到與之對應的 .rti 登入檔:[root@tw-srv forms]# vi em_14675.rti listener = tw-srv-_9011 pid = 14675 connect = Fri Oct 31 10:50:16 2014 CST ip = 92.68.1.11 user = APPLSYSPUB db_string = PROD ~
至於 frmweb_dump_(pid) 這些檔案紀載 client / server 的 connection 有問題的紀錄,可作為 debug 除錯 Oracle EBS 的參考。例如:[root@tw-srv forms]# vi frmweb_dump_15207 [Tue Jun 24 15:52:18 2014 CST]::Client Status [ConnId=1007, PID=15207] >> ERROR: Abnormal termination of connection, Error Code: 6 FORM/BLOCK/FIELD: APXINWKB:BAT_SUM_FOLDER.DISTRIBUTION_LINE_NUMBER Last Trigger: KEY-COMMIT - (Execution Suspended) Msg:
Last Builtin: COMMIT - (Successfully Completed) ------------- Call Stack Trace [ConnId = 1007, ProcId = 15207] ------------- calling call entry argument values in hex location type point (? means dubious value) -------------------- -------- -------------------- ---------------------------- siehjmpterm()+755 CALL 2 ? A591ED ? FFC2F8 ? 0 ? 0 ? 0 ? CALL CALL (N/A) ------------- End of Call Stack Trace ------------- ~ ~ ~ ~ ~ ~ "frmweb_dump_15207" 46L, 2713C
【Oracle 筆記 】 Apply Oracle Patch Guideline for 10148526
上 Oracle Patch 之前,是否該事先寫下執行計畫? 答案是肯定的。這計畫一方面組織執行的過程,另一方面避免錯誤重複發生,同時也可作為上 Production 環境前,給自己一個萬全的準備。 Oracle 的 Patch 上的手法,只能堪稱手工業的精華。怎麼說? 上 Patch 之前要詳細研讀每個 Readme 檔案,避免粗心大意,造成後續累死人的修復工作。Oracle 已由 Database 供應商,提供為整合 Solution 的廠商,而流通於全球。每個新的 Release 後,使用者得不間斷地藉由 MA 維護,獲得最新 Bug 的修復的 Patch。有些惱人,有些竊喜,而喜的是 Oracle 愈複雜,工作愈有 Security。很諷刺吧 ? 這與 Apple 的 Steve Jobs 行事觀念大異其趣,同時也違背當前 IT 的符合人性的簡化原則,但,這恐龍畢竟是 Oracle 啊,奈何! 以下拿一個上 Patch 的過程為範例,可參考。 Prepare: - download patch 1014526 - study Readme file - Plan: 1. shutdown AP 2. Enable maintenance mode 3. Apply patch tool: adpatch 4. Disable maintenance mode 5. startup AP 6. verify: (1) OS / DB Level: use command 'string' (2) EBS Level Execution: Step 1. shutdown AP # su testmgr [test@dev] cd $APPL_TOP [test@dev] . ./APPSTEST_twhc-srv-oradev [test@dev] cd $INST_TOP/admin/scripts [test@dev] adstpall.sh ( AP account / password required ) Step 2. Enable maintenance mode # su testmgr [test@dev] . ./APPSTEST_twhc-srv-oradev [test@dev] adadmin choose '5 Change Maintenance Mode' and enable it Step 3. Apply patch tool: adpatch # su testmgr [test@dev] . ./APPSTEST_twhc-srv-oradev [test@dev] cd /u01/patch/10148526 [test@dev] adpatch ( SYSTEM & APPS password required ) Step 4. Disable maintenance mode # su testmgr [test@dev] . ./APPSTEST_twhc-srv-oradev [test@dev] adadmin choose '5 Change Maintenance Mode' and disable it Step 5. startup AP [test@dev] adstrtal ( AP account / password required eg. APPS/APPS) Step 6. verify: (1) OS / DB Level: use command 'string' strings -a $AP_TOP/patch/115/import/US/ap12amg.ldt | grep '$Header' strings -a $AP_TOP/forms/US/APXPAWKB.fmx | grep '$Header' this patch will upgrade the related two files to the higher version : APXPAWKB.fmb 120.223.12010000.188 ap12amg.ldt 120.49.12010000.52 (2) EBS Level Duplicate the case and verify if it works
2014年10月29日 星期三
【Oracle 筆記 】上 Oracle Patch 成功嗎?
要驗證 Oracle Patch 安裝是否成功有許多途徑,其中之一是使用 [test@dev 10148526]$ strings -a $AP_TOP/patch/115/import/US/ap12amg.ldt | grep '$Header' # $Header: ap12amg.ldt 120.49.12010000.42 2010/06/14 14:03:41 ppodhiya ship $ [test@dev 10148526]$ strings -a $AP_TOP/forms/US/APXPAWKB.fmx | grep '$Header' $Header: APPSTAND.fmb 120.6.12010000.6 2010/03/10 12:58 dbowles ship $ $Header: APXPAWKB.fmb 120.223.12010000.174 2010/06/22 10:05 dawasthi ship 檢查 Patch 的 readme 檔案,發現需上的版本為 120.223.12010000.188, 所以之前上的 Patch 並沒有成功。 Successful patch installation checks: Confirm APXPAWKB.fmb version 120.223.12010000.188
2014年10月22日 星期三
【Linux 筆記 】下載 Oracle Patch 前,確認 Linux 32 或 64 版本
有 3 種方法可確認 Linux 是 32 位元,或是64位元的版本: 1. 使用 uname 指令 2. 使用 file 指令 3. 使用 getconf 指令 例如,參考下面範例: 1. 使用 uname 指令 [test@tw-srv-erp bin]$ uname -a Linux tw-srv-erp.elvismeng.com.tw 2.6.18-53.el5 #1 SMP Sat Nov 10 19:37:22 EST 2007 x86_64 x86_64 x86_64 GNU/Linux 2. 使用 file 指令 [test@tw-srv-erp bin]$ file /bin/bash /bin/bash: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped 3. 使用 getconf 指令 [test@tw-srv-erp bin]$ getconf LONG_BIT #64bits 64 [test@tw-srv-erp bin]$ getconf LONG_BIT #32bits 64
【Oracle 筆記 】Clone Oracle EBS- 第一階段:Source 系統預備
什麼情況下需 clone 一個 Oracle EBS ? 1. 標準 Clone,為了測試 2. 增加伺服器時 3. 系統轉換時 4. 上 Patch 與版本升級時 為何使用 Rapid Clone 工具? clone 容易, clone 整個系統與資料,而非只是檔案結構 topology,所以啟動後馬上可用。 那該如何進行 Oracle EBS 的 clone ? 這 clone 作業分 3 個階段: 第一階段:Source 系統預備 (Prepare Source System) 第二階段:clone 系統 (Copy Bits) 第三階段:Target 系統配置(Configure Target System) 第一階段:Source 系統預備 1. Verify OS requirements on target system Oracle 建議使用 Rapid Clone 這工具時, Source / Target System 安裝的 OS 要一致,否則需要採取其他相關措施。有關這工具所支援的 OS,請參考 Doc ID 405565.1 2.Verify source and target system software components and versions 檢查 Source / Target System 是否已經安裝壓縮 / 解壓縮等下列工具: zip/unzip/(make, ld, ar)/perl 參考【Oracle 筆記: Clone Oracle EBS 】檢查 Source / Target System 是否已經安裝壓縮 / 解壓縮等工具 接下來,clone 有 4 種類型的 Patch 要上: AD patch, AutoConfig patch, Rapid Clone patch, 與 other patches 3. Apply the latest AD patch 首先,檢查 Source System 是否已安裝 Patch: select bug_number from ad_bugs where bug_number='XXXXXX' 例如: 針對 Oracle EBS 12.1.x 版本,需上 AD Patch 9239089 select bug_number from ad_bugs where bug_number = '9239089' 4. Apply the latest AutoConfig template patch 例如: 需上 AD Patch 387859.1 select bug_number from ad_bugs where bug_number = '387859.1' 5. Apply the latest Rapid Clone patches 例如: 針對 Oracle EBS 12.1.x 版本, 需上以下的AD Patch Patch '9171651','9833058','12404574','12598630','15969020','16958896','13942692','18991480','17889841','18835102' select bug_number from ad_bugs where bug_number in ('9171651','9833058','12404574','12598630','15969020','16958896','13942692','18991480','17889841','18835102') 另外,還有一個適用於Microsoft Windows 所有 Oracle EBS 版本的 Patch 要上: select bug_number from ad_bugs where bug_number = '8246709' 6. Run AutoConfig on the application tiers 參考 Doc ID 387859.1 的 "Run AutoConfig on the Application Tiers" 章節。 7. Synchronize appsutil on the database tier nodes 參考 Doc ID 387859.1 的 "Copy AutoConfig to the RDBMS ORACLE_HOME" 章節。 8. Run AutoConfig on the database tier 參考 Doc ID 387859.1 的 "Run AutoConfig on the Database Tiers" 章節。 9. Maintain Snapshot Information snapshot 是整個系統目前的 View,可分為 APPL_TOP snapshots 與 global snapshots。 要查詢 globla snapshots,可下此指令: select * from all_snapshots; 參考 1. Cloning Oracle Application Release 12 with Rapid Clone (Doc ID 406982.1, Standard Clone),若為 RAC Clone則需參考 Doc ID 559518.1 2. Patch 下載網站: http://support.oracle.com 3. R12.2 Cloning Steps, http://balaoracledba.com/2013/10/23/ 4. Oracle E-Business Suite Release 12 Installation Guidelines (Doc ID 405565.1), https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=342123966819007&id=405565.1&_afrWindowMode=0&_adf.ctrl-state=aieagcvzv_178 5. Using AutoConfig to Manage System Configurations in Oracle E-Business Suite Release 12 , https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=353025954864484&id=387859.1&_adf.ctrl-state=197rdbqksz_169 6. [Tips]如何建立Oracle Materialized View (snapshot) ,http://auneths.blogspot.tw/2013/11/tipsoracle-materialized-view-snapshot.html
2014年10月21日 星期二
【Oracle 筆記: Clone Oracle EBS 】檢查 Source / Target System 是否已經安裝壓縮 / 解壓縮等工具
在 clone 一個 Oracle EBS 生產作業環境中,初步會檢驗 Source / Target System 是否 檢查 Source / Target System 是否已經安裝壓縮 / 解壓縮等下列工具: 例如: 檢查 Source / Target System:[root@erp sysconfig]# which zip /usr/bin/zip [root@erp sysconfig]# which unzip /usr/bin/unzip [root@erp sysconfig]# which make /usr/bin/make [root@erp sysconfig]# which ld /usr/bin/ld [root@erp sysconfig]# which ar /usr/bin/ar [root@erp sysconfig]# which perl /usr/bin/perl
Zip 版本要求 2.3 以上或更高,Unzip 版本要求 5.52 以上或更高,而 Perl 版本要求 5.x 以上。版本資訊可依下列方式查詢: 1. 檢查 zip 版本[root@erp sysconfig]# zip -v Copyright (C) 1990-2005 Info-ZIP Type 'zip "-L"' for software license. This is Zip 2.31 (March 8th 2005), by Info-ZIP. Currently maintained by Onno van der Linden. Please send bug reports to the authors using http://www.info-zip.org/zip-bug.html; see README for details. Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip, as of above date; see http://www.info-zip.org for other sites. Compiled with gcc 4.1.1 20070105 (Red Hat 4.1.1-52) for Unix (Linux ELF) on Jun 7 2007. Zip special compilation options: USE_EF_UT_TIME [encryption, version 2.9 of 22 April 2000] Encryption notice: The encryption code of this program is not copyrighted and is put in the public domain. It was originally written in Europe and, to the best of our knowledge, can be freely distributed in both source and object forms from any country, including the USA under License Exception TSU of the U.S. Export Administration Regulations (section 740.13(e)) of 6 June 2002. Zip environment options: ZIP: [none] ZIPOPT: [none]
2. 檢查 unzip 版本[root@erp sysconfig]# unzip -v UnZip 5.52 of 28 February 2005, by Info-ZIP. Maintained by C. Spieler. Send bug reports using http://www.info-zip.org/zip-bug.html; see README for details. Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ; see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites. Compiled with gcc 4.1.1 20070105 (Red Hat 4.1.1-52) for Unix (Linux ELF) on Jun 6 2007. UnZip special compilation options: COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported) SET_DIR_ATTRIB TIMESTAMP USE_EF_UT_TIME USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported) USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported) VMS_TEXT_CONV [decryption, version 2.9 of 05 May 2000] UnZip and ZipInfo environment options: UNZIP: [none] UNZIPOPT: [none] ZIPINFO: [none] ZIPINFOOPT: [none]
3. 檢查 Perl 版本[root@erp sysconfig]# perl -v This is perl, v5.8.8 built for x86_64-linux-thread-multi Copyright 1987-2006, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. Cloning Oracle Applications Release 12 with Rapid Clone (Doc ID 406982.1)
檢查後,發現無此工具,或是版本過時,則可到下列網站下載更新:zip / unzip : http://www.info-zip.org/ perl : http://www.perl.org/get.html
參考 1. Cloning Oracle Applications Release 12 with Rapid Clone (Doc ID 406982.1)
【Linux 筆記 】root 密碼修改
考慮資安,定期更改伺服器 / 個人 帳號是必須的,而在 Linux 更改 root 的密碼,與更改一般 user 的密碼方式相同,即是下 passwd accountName 來更改。例如:
[root@localhost etc]# passwd root
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost etc]#
一般公司擁有多伺服器,所以不同主機會設定不同的密碼,此時密碼的安全控管很重要。在密碼管理上已有相當多的工具可選用,例如 KeyPass 等工具也相當好用。
【Linux 筆記 】如何更改 Linux 的 hostname 設定
Red Hat Linux 安裝完後,下指令 # hostname 時,會顯示:[root@localhost ~]# hostname localhost.localdomain
而查看 /etc/hostname 時,系統顯示:[root@localhost ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6
我們將 /etc/hosts 這檔案修改為:[root@localhost etc]# vi hosts # Do not remove the following line, or various programs # that require network functionality will fail. #127.0.0.1 localhost.localdomain localhost #::1 localhost6.localdomain6 localhost6 127.0.0.1 tw-srv-erp.elvismeng.com.tw tw-srv-erp 172.20.1.100 tw-srv-erp.elvismeng.com.tw tw-srv-erp 127.0.0.1 localhost
另外,我們還需修改/etc/sysconfig 目錄下的 network 檔案。查看此目錄,顯示目前network 檔案的內容為:[root@localhost sysconfig]# cat network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=localhost.localdomain
現在讓我們修改 /etc/sysconfig/network 這檔案,在修改前,有些設定要先規劃確定: 1. localhost 命名 (例如: tw-srv-erp ) 2. localdomain 命名 (例如: elvismeng.com.tw) 3. GATEWAY 的 ip 配置 GATEWAY 的設定一般先查看伺服器的 ip 位置,例如: 新增 Linux 伺服器的 ip 為 12.2.1.100,那 GATEWAY 設定為 12.2.1.254[root@localhost sysconfig]# vi network NETWORKING=yes NETWORKING_IPV6=no #HOSTNAME=localhost.localdomain HOSTNAME=tw-srv-erp.elvismeng.com.tw GATEWAY=12.2.1.254
雖然 hostname 的設定完成,但還沒有生效,所以須下 hostname 此指令:[root@localhost sysconfig]# hostname tw-srv-erp
最後,我們驗證看 hostname 是否已經被修改成功:[root@localhost sysconfig]# hostname tw-srv-erp
另外,我們也可用 ping hostname 的方式來驗證:[root@localhost sysconfig]# ping tw-srv-erp PING tw-srv-erp.elvismeng.com.tw (127.0.0.1) 56(84) bytes of data. 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=1 ttl=64 time=0.815 ms 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=2 ttl=64 time=0.067 ms 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=3 ttl=64 time=0.066 ms 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=4 ttl=64 time=0.060 ms 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=5 ttl=64 time=0.067 ms 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=6 ttl=64 time=0.068 ms 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=7 ttl=64 time=0.058 ms 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=8 ttl=64 time=0.068 ms ^C64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=9 ttl=64 time=0.065 ms 64 bytes from tw-srv-erp.elvismeng.com.tw (127.0.0.1): icmp_seq=10 ttl=64 time=0.069 ms --- tw-srv-erp.elvismeng.com.tw ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9000ms rtt min/avg/max/mdev = 0.058/0.140/0.815/0.225 ms [root@localhost sysconfig]#
參考 1. How to Change the Hostname of a Linux System http://www.ducea.com/2006/08/07/how-to-change-the-hostname-of-a-linux-system/ 2. 蔡宗融個人網站,http://www.ichiayi.com/wiki/tech/linux_hostname
【Oracle 筆記 】忘記 Oracle sys 與 system 密碼怎麼辦 ?
1. 首先以 root 系統管理員帳號登入:login as: root root@10.10.1.82's password: Last login: Tue Sep 9 08:14:56 2014 from elvismeng-g10-1042-2
2. 再來切換到 Oracle DBA 帳號:[root@elvismeng-srv-r ~]# su devdba
3. 查看 Oracle DB 的 SID 是否被定義在 devdba 的登入的 profile (若使用 bash shell):[devdba@elvismeng-srv-r root]$ echo ORACLE_SID ORACLE_SID
4. 如無 (依照上例),定義此 Oracle Instance 的識別名稱:[devdba@elvismeng-srv-r root]$ ORACLE_SID=DEV5
5. 定義完後,export 此識別名稱,如此 Unix 環境即可識別:[devdba@elvismeng-srv-r root]$ export ORACLE_SID [devdba@elvismeng-srv-r root]$ echo $ORACLE_SID DEV5
6. 更改 sys 與 system 密碼:[devdba@elvismeng-srv-r root]$ sqlplus /nolog SQL*Plus: Release 11.2.0.2.0 Production on Tue Sep 9 16:01:06 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> connect / as sysdba Connected. SQL> alter user sys identified by sys 2 ; User altered. SQL> alter user system identified by system; User altered. SQL>
參考: http://www.itkee.com/database/detail-1dc1.html
訂閱:
文章 (Atom)