此篇文章是為了瞭解 Descriptive Flesfields 的觀念與作法,並與 EBS 的 Application:WIP Standard Options 作關連來實作,這樣的好處在於不用針對 Application 客製任何程式,就可以增加欄位,並且可以用來收集資料,不過它也有侷限,一個 Application 最多的彈性欄位 ( Flexfield ) 只能有 15 個,從Attribute1 到 Attribute15 。

N:Bill Of Material/Routings/Standard Operations
EBS_FF_Descriptive.png  

  預期的成果如上圖,在 Standard Operations 的頁面最右邊的[.],點選後,會出現一個 Form:Operation Information,讓您可以用 LOV 的選單模式挑選所要的值。

   首先,先建立 Validate Sets:wip_resource_code 用來規範欄位的格式及顯示的方法。

N:Bills Of Material/Setup/Validation/Sets
EBS_FF_Sets_wipResource.png  

  針對此 Validate Sets:wip_resource_code 預先設定有那些資料可以選擇。

N:Bills Of Material/Setup/Validation/Values
EBS_FF_values_wipResource.png  

  因為是要對 Standard Operation 這個 Form 增加彈性欄位,若不瞭解 Application 與 Title 的相關資訊,可以利用 「Help/Diagnostics/Examine」 來作查詢。

EBS_Examine.png  

  在 Block 可以選擇 $DESCRIPTIVE_FLEXFIELD$ ,Field 選擇 B_STD_OPS.DF ,系統會自動顯示出 Application 的相關資訊:Operation Information (Bills of Material) 。

EBS_Examine_Field_Value.png  

  利用上面查詢到的資料,就可以在 Descriptive Segments 中針對 Application 為 Bills Of Material 且 Title 為 Operation Information 的 From 作彈性欄位的設定。 

N:Bills Of Material/Setup/Flexfields/Descriptive Segments
EBS_FF_Descriptive_Operation_Information_Segment.png  

   選擇好後按下 Segments,將之前設定好的 Value Set :wip_resource_code 選進來,Column 欄位可指定放在預留 15 個 Attribute1-15中的那一欄位。

EBS_FF_Descriptive_Operation_Information_Summary.png  

   作完以上的設定後,最後別忘了將 Freeze Flexfield Definition 打勾,並按下 Compile ,系統會自動建立一個 View ,除了提示您是否有成功外,還會告訴您這個 View 的名字;完成後,再回到 Standard Operations,就會有預期的效果。

EBS_FF_Descriptive_Operation_Information.png  

  整個作業流程整理如下:

  1. 找到 Application 及 title
  2. uncheck Freeze Fexfild definitions
  3. 選取context code 後點segment
  4. 增、修 Segments Summary 的欄位
  5. 退出時,check Freeze Fexfild definitions,並compile
文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

loging to oracle DB  在進入 OS 之後:

[orajdemo@jdbs1 tmp]$ sqlplus /nolog

這樣的登入資料庫,帳號就會變成是 SYS ,取得 SYSDBA 的角色,可以用 SYSDBA 登入資料庫,你即使不知道 SYSTEM 的密碼,你也可以變更
SQL> connect /as sysdba
Connected.

但如果你要改成 SYSTEM 帳號登入,那當然就還是得要有 SYSTEM 的密碼。
Enter user-name: system
Enter password:
Connected.

 

Q:Oracle的啟動指令為何?
A:>startup [force] [restrict] [open[RECOVER] |mount|nomount] file=filename
例:>startup nomount pfile=init.ora (資料庫未建立時應以此方式載入參數檔)

Q:續上,如何掛上資料庫? (若資料庫已建立時)
A:>alter database [ mount | open[read write|read only] ]

Q:Oracle的啟動程序為何?
A:shutdown-> nomount(instance started) -> mount(control file
open) -> open(all files opened)

Q:Oracle的shutdown程序為何?(快 -> 慢)
A:>shutdown[abort | immediate | transactional | normal]

Q:顯示參數值?
A:>show parameter

Q:動態更改參數值?
A:>alter session set parameter_name = values
  >alter system set parameter_name = values [DEFERRED]
例:
>alter session set SQL_TRACE=true;
  >alter system set TIMED_STATISTICS=true;
  >alter system set SORT_AREA_SIZE=131072 DEFERRED;

Q: 如何增加 Control File
A:
1. 將Oracle的Database Shut down
2. 用OS(operation system)的命令將現行的Control file 複制到另一目錄
3. 在參數檔(init.ora)中加入此Control file(需含完整路徑)
4. 重新起動DataBase

Q: v$logfile 中的 STATUS是何意?
A:
空白:表現在正在使用
INVALID : 表可能有問題
STALE: 表剛加入的Log File
DELETED: 表很久沒用的Log File

Q: 如何強迫轉換到另一個 Redo Log File (Forcing Log Switches)
A: >alter system switch logfile;

Q: Forcing Checkpoints for Redo Log File
A: >alter system checkpoint;

Q: 如何控制Redo Log File 的檢查時間?
A:
LOG_CHECKPOINT_INTERVAL
LOG_CHECKPOINT_TIMEOUT
FAST_START_IO_TARGET

Q: 如何增加 Redo Log Groups ?
A: >alter database [database] add logfile [group integer] filespace size integer m/k
例: >alter database add logfile group 3 ‘$HOME/data/disk4/redo0401.rdo’ size 500k;

Q: 如何加 Redo Log Members
A: >alter database [database] add logfile member ‘filename’ [reuse],’filename’ [reuse] to group integer
例: >alter database add logfile member '$HOME/data/disk4/redo0402.rdo' to group 4

Q: 如何重新配置/更名online Redo Log Files?
A: 1. 被重新配置/更名 的檔名需存在
例: >alter database rename file '$HOME/data/disk4/redo0401.rod'  to '$HOME/data/disk4/redo0401.rdo'
Q: 如何Drop Redo Log Group
A: > alter database [database] drop logfile {group integer|‘filename’}
例: >alter database drop logfile group 2;
註:檔案仍存在,需用OS命令移除,如:#rm $HOME/redo0402.rdo

Q: 如何 Drop Redo Log Members
A: >alter database [database] drop logfile member ‘filename’
例: >alter database drop logfile member ‘$HOME/redo0402.rdo’;
註:檔案仍存在,需用OS命令移除,如:#rm $HOME/redo0402.rdo

Q: 如何查詢有多少DataFile?
A: >select name from v$datafile;
Or >select file_name, tablespace_name from dba_data_files;

Q: 查詢 Redo Log File?
A: >select * from v$logfile;

Q: 如何清除Redo Log File內的資料?
A: >alter database clear [unarchived] logfile group integer|
例:>alter database clear logfile group 2
註: 1.參數unarchived 是當不在備份模式時才加入的
   2.正在作用的Redo Logfile無法清除

Q: 查詢TableSpace的狀態
A: select tablespace_name, status from dba_tablespaces;

Q: 如何查詢Table的欄位?
A: >describe TableName
 

Q: 如何改變tablespace的狀態在online或offline
A:
>alter tablespace user_indx online;
>alter tablespace user_indx offline;

Q:何種情況要將tablespace改為offline的狀態?
A:
1.離線備份(雖然也可以線上備份)
2.當資料庫是open狀態時,進行回存tablespace
3.當資料庫是open狀態時,刪除data file
4.不讓使用者存取時
 

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

在 Oracle EBS 的訂單模組( OM : Order Management) 有提供訂單匯入的功能,主要操作的 Table 有兩個 : OE_HEADERS_IFACE_ALL、OE_LINES_IFACE_ALL,詳細請參考 Oracle 官方文件:115omapi.pdf 。以下以範例來作說明:

範例1 : 新訂單

-- Insert a Sales Order Header and make the Order's Status is Booked. (表頭:OE_HEADERS_IFACE_ALL,並作 Booked)

INSERT INTO OE_HEADERS_IFACE_ALL (
order_source_id
,orig_sys_document_ref
,creation_date
,created_by
,last_update_date
,last_updated_by
,operation_code
,sold_to_org_id
,booked_flag
,org_id
,customer_po_number )
VALUES (
1001 --order_source_id
,'12345691' --orig_sys_document_ref
,SYSDATE --creation_date
,-1 --created_by
,SYSDATE --last_update_date
,-1 --last_updated_by
,'INSERT' --operation_code
,1891 --sold_to_org_id
,'Y' --booked_flag
,77 --org_id (for specific ou)
,'12345691' -- customer_po_number 
);

-- Insert a Sales Order Line (表身:OE_LINES_IFACE_ALL)

INSERT INTO OE_LINES_IFACE_ALL (
order_source_id
,orig_sys_document_ref
,orig_sys_line_ref
,inventory_item_id
,ordered_quantity
,operation_code
,created_by
,creation_date
,last_updated_by
,last_update_date
,ship_from_org_id
)
VALUES (
1001 --order_source_id
,'12345691' --orig_sys_document_ref
,'1' --orig_sys_line_ref
,285730 --inventory_item_id
, 1 --ordered_quantity
, 'INSERT' --operation_code
, -1 --created_by
, SYSDATE --creation_date
, -1 --last_updated_by
, SYSDATE --last_update_date
, 77 -- ship_from_org_id
);

範例2 : 訂單變更 (Line 1->qty 0 ; Line 2 new with qty 2)

-- Insert a Sales Order Header and make the Order's Status is Booked.(表頭:OE_HEADERS_IFACE_ALL)

INSERT INTO OE_HEADERS_IFACE_ALL 
(
change_sequence
,order_source_id
,orig_sys_document_ref
,creation_date
,created_by
,last_update_date
,last_updated_by
,operation_code
,sold_to_org_id
,booked_flag
,org_id
,customer_po_number
,force_apply_flag )
VALUES (
1--change_sequence
,1001 --order_source_id
,'12345691' --orig_sys_document_ref
,SYSDATE --creation_date
,-1 --created_by
,SYSDATE --last_update_date
,-1 --last_updated_by
,'UPDATE' --operation_code
,1891 --sold_to_org_id
,'Y' --booked_flag
,77 --org_id (for specific ou)
,'12345691' --customer_po_number
,'Y' -- force_apply_flag  
);

-- Insert a Sales Order Line 1 (表身:OE_LINES_IFACE_ALL)

INSERT INTO OE_LINES_IFACE_ALL 
(
change_sequence
,order_source_id
,orig_sys_document_ref
,orig_sys_line_ref
,inventory_item_id
,ordered_quantity
,operation_code
,created_by
,creation_date
,last_updated_by
,last_update_date
,change_reason
)
VALUES (
1--change_sequence
,1001 --order_source_id
,'12345691' --orig_sys_document_ref
,'1' --orig_sys_line_ref
,285730 --inventory_item_id
, 0 --ordered_quantity
, 'UPDATE' --operation_code
, -1 --created_by
, SYSDATE --creation_date
, -1 --last_updated_by
, SYSDATE --last_update_date
,'Not provided ' -- change_reason
);

-- Insert a Sales Order Line 2 (表身:OE_LINES_IFACE_ALL)

INSERT INTO OE_LINES_IFACE_ALL 
(
change_sequence
,order_source_id
,orig_sys_document_ref
,orig_sys_line_ref
,inventory_item_id
,ordered_quantity
,operation_code
,created_by
,creation_date
,last_updated_by
,last_update_date
,change_reason
)
VALUES (
1--change_sequence
,1001 --order_source_id
,'12345691' --orig_sys_document_ref
,'2' --orig_sys_line_ref
,285730 --inventory_item_id
, 2 --ordered_quantity
, 'INSERT' --operation_code
, -1 --created_by
, SYSDATE --creation_date
, -1 --last_updated_by
, SYSDATE --last_update_date
,'Not provided ' -- change reason
);

範例3 : 訂單單身拆行 (Line 2 由數量qty 200 拆成 Line1 -> qty 2 & Line2 -> qty 198)

-- Insert a Sales Order Header and make the Order's Status is Booked.(表頭:OE_HEADERS_IFACE_ALL)

INSERT INTO OE_HEADERS_IFACE_ALL 
(
change_sequence
,order_source_id
,orig_sys_document_ref
,creation_date
,created_by
,last_update_date
,last_updated_by
,operation_code
,sold_to_org_id
,booked_flag
,org_id
,customer_po_number
,force_apply_flag )
VALUES (
1--change_sequence
,1001 --order_source_id
,'12345691' --orig_sys_document_ref
,SYSDATE --creation_date
,-1 --created_by
,SYSDATE --last_update_date
,-1 --last_updated_by
,'UPDATE' --operation_code
,1891 --sold_to_org_id
,'Y' --booked_flag
,77 --org_id (for specific ou)
, '12345691' --customer_po_number
,'Y' -- force_apply_flag 
);

-- Insert a Sales Order Line 1 (表身:OE_LINES_IFACE_ALL)

INSERT INTO OE_LINES_IFACE_ALL (
change_sequence
,order_source_id
,orig_sys_document_ref
,orig_sys_line_ref
,shipment_number
,inventory_item_id
,ordered_quantity
,operation_code
,created_by
,creation_date
,last_updated_by
,last_update_date
,change_reason
)
VALUES (
1--change_sequence
,1001 --order_source_id
,'12345691' --orig_sys_document_ref
,'2' --orig_sys_line_ref
, NULL --shipment_number
,285730 --inventory_item_id
, 2 --ordered_quantity
, 'UPDATE' --operation_code
, -1 --created_by
, SYSDATE --creation_date
, -1 --last_updated_by
, SYSDATE --last_update_date
,'Not provided ' --change reason
);

-- Insert a Sales Order Line 2 (表身:OE_LINES_IFACE_ALL)

INSERT INTO OE_LINES_IFACE_ALL (
change_sequence
,order_source_id
,orig_sys_document_ref
,orig_sys_line_ref
,shipment_number
,inventory_item_id
,ordered_quantity
,operation_code
,created_by
,creation_date
,last_updated_by
,last_update_date
,change_reason
,split_from_line_ref )
VALUES (
1--change_sequence
,1001 --order_source_id
,'12345691' --orig_sys_document_ref
,'21' --orig_sys_line_ref
, '2' --shipment_number
,285730 --inventory_item_id
, 198 --ordered_quantity
, 'INSERT' --operation_code
, -1 --created_by
, SYSDATE --creation_date
, -1 --last_updated_by
, SYSDATE --last_update_date
,'Not provided ' -- Change reason
,'2' --split_from_line_ref
); 

範例4 : 以客戶料號 Import

-- Insert a Sales Order Header and make the Order's Status is Booked.(表頭:OE_HEADERS_IFACE_ALL)

INSERT INTO OE_HEADERS_IFACE_ALL 
(
change_sequence
,order_source_id
,orig_sys_document_ref
,creation_date
,created_by
,last_update_date
,last_updated_by
,operation_code
,sold_to_org_id
,booked_flag
,org_id
,customer_po_number
,force_apply_flag )
VALUES (
1--change_sequence
,1001 --order_source_id
,'12345691' --orig_sys_document_ref
,SYSDATE --creation_date
,-1 --created_by
,SYSDATE --last_update_date
,-1 --last_updated_by
,‘INSERT' --operation_code
,1891 --sold_to_org_id
,'Y' --booked_flag
,77 --org_id (for specific ou)
, '12345691' --customer_po_number
,'Y' -- force_apply_flag 
);

-- Insert a Sales Order Line (表身:OE_LINES_IFACE_ALL)

INSERT INTO OE_LINES_IFACE_ALL (
change_sequence
,order_source_id
,orig_sys_document_ref
,orig_sys_line_ref
,customer_item_name 
,ordered_quantity
,operation_code
,created_by
,creation_date
,last_updated_by
,last_update_date
,ship_from_org_id
)
VALUES (
1--change_sequence
,1001 --order_source_id
,'12345691' --orig_sys_document_ref
,'3' --orig_sys_line_ref
, 'D210100BT' --customer_item_name 
, 3 --ordered_quantity
, 'INSERT' --operation_code
, -1 --created_by
, SYSDATE --creation_date
, -1 --last_updated_by
, SYSDATE --last_update_date
, 77 -- ship_from_org_id
);
文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

IP Address

如果您要組建一個單一的 IP 網路﹐那麼您得分配相同的 Net ID 給所有主機﹐而各主機的 Host ID 卻必須是唯一的﹐也就是說沒有任何兩個 Host ID 會是一樣的。您的網路還要連上 internet 或其它網路的話﹐那麼您使用的 Net ID 也必須是唯一的﹐也就是必需經過註冊才能獲得否則就會造成衝突了。下面的圖示大致可以說明 Net ID & Host ID 的概念。

NetworkPrefixes.png  

IP Address 的範圍大致可以分成 A、B、C 三個Class

‧A Class 的 IP 使用最前面一組數字來做 Net ID﹐其餘三組做 Host ID
‧B Class 的 IP 使用前面兩組數字來做 Net ID﹐另兩組做 Host ID
‧C Class 的 IP 使用前面三組數字來做 Net ID﹐剩下的一組做 Host ID

Net Mask

等級 開首 網路數目 主機數目 使用範圍
A 0 127 16,777,214 1.x.x.x 到 126.x.x.x
B 10 16,384 16,382 128.x.x.x 到 191.x.x.x
C 110 2,097,152 256 192.x.x.x 到 223.x.x.x
D 1110 - - 224.- 到 239.-
E 1111 - - 240.- 到 255.-

 在我們進行 IP 位址劃分的時候﹐IP 和 Net Mask 都必須一對使用的﹐兩者缺一不可,Net Mask 的作用是來判斷彼此的 IP Address 是否在於同一網段。

‧A Class 的 Net Mask 是 255.0.0.0
‧B Class 的 Net Mask 是 255.255.0.0
‧C Class 的 Net Mask 是 255.255.255.0

例如:139.175.152.254/16 是一個 B Class IP,Net Mask 是255.255.0.0。

IP Address 換成二進位是﹕
10001011.10101111.10011000.11111110

其 Net Mask 是 255.255.0.0 ﹐換成二進位﹕
11111111.11111111.00000000.00000000

然後將 IP 和 mask 加以 AND 運算﹕
10001011.10101111.10011000.11111110
AND
11111111.11111111.00000000.00000000

得出﹕
10001011.10101111.00000000.00000000

換成十進位就是 139.175.0.0 ﹐這個就是 Net ID了。

那麼,怎麼求 Host ID 呢﹖也很簡單﹕

先將 Net Mask 做一個 NOT 運算﹐可以得出﹕
00000000.00000000.11111111.11111111

然後再和 IP 做一次 AND 運算﹐就可以得到 Host ID:
00000000.00000000.10011000.11111110 ﹐

換成十進位就成了﹕0.0.152.254。


然而,由於 Internet 的爆炸性成長﹐IP 的位址買少見少﹐而且在很多機構裡﹐也不是所有機器都有必要使用註冊的 IP 位址。於是﹐我們就在 A﹑B﹑C 這三個層級裡面﹐各劃出一些位址範圍保留給私有位址所用﹐它們分別是﹕

‧10.0.0.0 - 10.255.255.255
‧172.16.0.0 - 172.31.255.255
‧192.168.0.0 - 192.168.255.255

CIDR (Classless Inter-Domain Routing)

原來 IP 位址的分配依功能、應用及範圍的不同,有A、B、C、D、E 五種等級的區分,但也因此導致許多 IP 位址的浪費,因此 IETF (Internet Engineering Task Force) 提出 CIDR (Classless Inter-Domain Routing) 的架構,打破以往等級分類的藩籬,網路規劃完全依照網路遮罩進行定義,使得原來A、B、C等級網路固定長度區塊的劃分,成為變動長度區塊的架構 (超網路,Supernet),讓網路位址的的運用更有彈性。

參考文件:
http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#IPv4_CIDR_blocks

http://www.pcnet.idv.tw/pcnet/network/network_ip_addr.htm

 

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

FileZilla Server 是一套免費的 FTP Server,它的功能強大且簡單設定,大部份都是按 Next & Next,就可以架好一台專屬於您的 FTP Server,且它也支援遠端管理。只要在 FileZilla Server Interface 介面上,選擇 Edit-> Settings 設定選項中 Admin Interfaxe Settings ,設定可以連入及管理的密碼,這樣遠端的電腦只要有裝 FileZilla Server Interface 管理工具就可以從遠端登入這台 FTP Server 作管理了。

FileZilla-Admin-Interfaxe-Settings.png  

以上圖為例:即只允許 10.10.2.0/24 & 10.10.3.0/24 段的 IP 可以連入,注意:這裡 IP Addresses 的設定是以 CIDR 的格式才它接受。

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

Oracle的優化器(Optimizer)有兩種優化方式, Hint也不例外,除了/*+rule*/其他的都是CBO優化方式

  • 基於規則的優化方式(Rule-Based Optimization,簡稱為RBO)
  • 基於成本的優化方式(Cost-Based Optimization,簡稱為CBO)


RBO(Rule-Based Optimization)方式:優化器在分析SQL語句時,所遵循的是Oracle內部預定的一些規則。比如我們常見的,當一個where子句中的一列有索引時去走索引。
CBO(Cost-Based Optimization)方式:它是看語句的成本(Cost),這裡的成本主要指CPU和記憶體RAM。優化器在判斷是否用這種方式時,主要參照的是表及索引的統計資訊。統計資訊給出表的大小、 有多少行、每行的長度等資訊。這些統計資訊起初在庫內是沒有的,是做 Analyze 後才出現的,很多的時侯過期統計資訊會令優化器做出一個錯誤的執行計畫, 因些應及時更新這些資訊。

優化模式(Optimization)包括Rule、Choose、First rows、All rows四種方式:

  •     Rule:基於規則的方式。
  •     Choose:預設的情況下Oracle用的便是這種方式。指的是當一個表或索引有統計資訊,則走CBO的方式,如果表或索引沒統計資訊,表又不是特別的小,而且相應的列有索引時,那麼就走索引,走RBO的方式。
  •     First Rows:它與Choose方式是類似的,所不同的是當一個表有統計資訊時,它將是以最快的方式返回查詢的最先的幾行,從總體上減少了響應時間。
  •     All Rows:也就是我們所說的Cost的方式,當一個表有統計資訊時,它將以最快的方式返回表的所有的行,從總體上提高查詢的輸送量。沒有統計資訊則走RBO的方式

Oracle DB 可以在哪些設定配置上修改預設的優化規則
    A、Instance 層級:我們可以通過在 initSID.ora 檔中設定 OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS 如果沒設定OPTIMIZER_MODE參數則預設用的是Choose方式
    B、Sessions 層級:可通過ALTER SESSION SET OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS來設定。
    C、SQL語句層級:用Hint(/*+ ... */)來設定

為什麼表的某個欄位明明有索引,但執行計畫卻不走索引,原因有下列幾項:
    1、優化模式是 all_rows 的方式
    2、表作過 Analyze,有統計資訊
    3、表很小,Oracle DB 的優化器認為不值得走索引。

SQL Optimizer Hints的用法:

1. 不區分大小寫, 多個提示用空格分開
如:select /*+ hint1(tab1) hint2(TAB1 idx1) */ col1, col2 from tab1 where col1='xxx';

2. 如果表使用了別名, 那麼提示裡也必須使用別名
如:select /*+ hint1(t1) */ col1, col2 from tab1 t1 where col1='xxx';

3. 如果使用同一個表的多個欄位用逗號 "," 號分開
如: select /*+ index(t1.A,t1.B) */ col1, col2
    from   tab1 t1
    where  col1='xxx';

Oracle DB hints 概念:10g資料庫可以使用更多新的optimizer hints來控制優化行為。現在讓我們快速解析一下這些強大的新hints:

1、spread_min_analysis

   使用這一hint,你可以忽略一些關於如詳細的關係,像依賴圖分析等試算表的編譯時間優化規則。其他的一些優化,如創建過濾以有選擇性的定位試算表訪問結構並限制修訂規則等,得到了繼續使用。

   由於在規則數非常大的情況下,試算表分析 ( Analyze ) 會很長。這一提示可以幫助我們減少由此產生的數以百小時計的編譯時間。

例:SELECT /*+ SPREAD_MIN_ANALYSIS */ ...

2、spread_no_analysis

   通過這一hint,可以使無試算表分析( Analyze )成為可能。同樣,使用這一hint可以忽略修訂規則和過濾產生。如果存在一試算表分析,編譯時間可以被減少到最低程度。

例:SELECT /*+ SPREAD_NO_ANALYSIS */ ...

3、use_nl_with_index

   這項hint使CBO通過嵌套迴圈把特定的表格加入到另一原始行。只有在以下情況中,它才使用特定表格作為內部表格:如果沒有指定標籤,CBO必須可以使 用一些標籤,且這些標籤至少有一個作為索引鍵值加入判斷;反之,CBO必須能夠使用至少有一個作為索引鍵值加入判斷的標籤。

例: SELECT /*+ USE_NL_WITH_INDEX (polrecpolrind) */ ...

4、CARDINALITY

  此hint定義了對由查詢或查詢部分返回的基數的評價。注意如果沒有定義表格,基數是由整個查詢所返回的總行數。

例:SELECT /*+ CARDINALITY ( [tablespec] card ) */

5、SELECTIVITY

  此hint定義了對查詢或查詢部分選擇性的評價。如果只定義了一個表格,選擇性是在所定義表格裡滿足所有單一表格判斷的行部分。如果定義了一系列表格,選擇性是指在合併以任何順序滿足所有可用判斷的全部表格後,所得結果中的行部分。

例: SELECT /*+ SELECTIVITY ( [tablespec] sel ) */

然而,注意如果hints CARDINALITY 和 SELECTIVITY都定義在同樣的一批表格,二者都會被忽略。

6、no_use_nl

  Hint no_use_nl 使CBO執行迴圈嵌套,通過把指定表格作為內部表格,把每個指定表格連接到另一原始行。通過這一hint,只有hash join和sort-merge joins會為指定表格所考慮。

例: SELECT /*+ NO_USE_NL ( employees ) */ ...

7、no_use_merge

  此hint使CBO通過把指定表格作為內部表格的方式,拒絕 sort-merge 把每個指定表格加入到另一原始行。

例: SELECT /*+ NO_USE_MERGE ( employees dept ) */ ...

8、no_use_hash

  此hint使CBO通過把指定表格作為內部表格的方式,拒絕hash joins把每個指定表格加入到另一原始行。

例: SELECT /*+ NO_USE_HASH ( employees dept ) */ ...

9、no_index_ffs

  此hint使CBO拒絕對指定表格的指定標籤進行fast full-index scan。 Syntax: /*+ NO_INDEX_FFS ( tablespecindexspec ) */


在SQL優化過程中常見HINT的用法(前10個比較常用, 前3個最常用):

1. /*+ INDEX *//*+ INDEX(TABLE INDEX1, index2) *//*+ INDEX(tab1.col1 tab2.col2) *//*+ NO_INDEX *//*+ NO_INDEX(TABLE INDEX1, index2) */

表明對表選擇索引的掃描方法:
第一種:不指定索引名是讓 oracle 對表中可用索引比較並選擇某個最佳索引;
第二種:指定索引名且可指定多個索引;
第三種:是10g開始有的, 指定列名, 且表名可不用別名;
第四種:即全資料表掃描;
第五種:表示禁用某個索引, 特別適合於準備刪除某個索引前的評估操作. 如果同時使用了 INDEX 和 NO_INDEX 則兩個提示都會被忽略掉.
例如:SELECT /*+ INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX='M';

2. /*+ ORDERED */
FROM子句中默認最後一個表是驅動表,ORDERED將from子句中第一個表作為驅動表. 特別適合於多表連接非常慢時嘗試.
例如:SELECT /*+ ORDERED */ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;

3. /*+ PARALLEL(table1,DEGREE) *//*+ NO_PARALLEL(table1) */
該提示會將需要執行全資料表掃描的查詢分成多個部分(並行度)執行, 然後在不同的作業系統進程中處理每個部分. 該提示還可用於DML語句. 如果SQL裡還有排序操作, 進程數會翻倍,此外還有一個一個負責組合這些部分的進程,如下面的例子會產生9個進程. 如果在提示中沒有指定DEGREE, 那麼就會使用創建表時的預設值. 該提示在預設情況下會使用APPEND提示. NO_PARALLEL是禁止平行作業,否則語句會使用由於定義了並行物件而產生的並行處理.
例如:select /*+ PARALLEL(tab_test,4) */ col1, col2 from tab_test order by col2;

4. /*+ FIRST_ROWS *//*+ FIRST_ROWS(n) */
表示用最快速度獲得第1/n行, 獲得最佳回應時間, 使資源消耗最小化.
在 update 和 delete 語句裡會被忽略, 使用分組語句如 group by/distinct/intersect/minus/union 時也會被忽略.
例如:SELECT /*+ FIRST_ROWS */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';

5. /*+ RULE */
表明對語句塊選擇基於規則的優化方法.
例如:SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';

6. /*+ FULL(TABLE) */
表明對表選擇全域掃描 Full Table Scan 的方法.
例如:SELECT /*+ FULL(A) */ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';

7. /*+ LEADING(TABLE) */
類似於ORDERED提示, 將指定的表作為連接次序中的驅動表.

8. /*+ USE_NL(TABLE1,TABLE2) */
將指定表與嵌套的連接的行源進行連接,以最快速度返回第一行再連接,與 USE_MERGE 剛好相反.
例如:SELECT /*+ ORDERED USE_NL(BSEMPMS) */ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

9. /*+ APPEND *//*+ NOAPPEND */
直接插入到表的最後,該提示不會檢查當前是否有插入操作所需的塊空間而是直接添加到新塊中, 所以可以提高速度. 當然也會浪費些空間, 因為它不會使用那些做了delete操作的塊空間. NOAPPEND提示則相反,所以會取消PARALLEL提示的默認APPEND提示.
例如:insert /*+ append */ into test1 select * from test4;
insert /*+ parallel(test1) noappend */ into test1 select * from test4;

10. /*+ USE_HASH(TABLE1,table2) */
將指定的表與其它行源通過雜湊連接方式連接起來.為較大的結果集提供最佳回應時間. 類似於在連接表的結果中遍歷每個表上每個結果的嵌套迴圈, 指定的hash表將被放入記憶體, 所以需要有足夠的記憶體(hash_area_size或pga_aggregate_target)才能保證語句正確執行, 否則將在磁片裡進行.
例如:SELECT /*+ USE_HASH(BSEMPMS,BSDPTMS) */ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

---------------------------------------------------------------------

11. /*+ USE_MERGE(TABLE) */
將指定的表與其它行源通過合併排序連接方式連接起來.特別適合於那種在多個表大量行上進行集合操作的查詢, 它會將指定表檢索到的的所有行排序後再被合併, 與USE_NL剛好相反.
例如:SELECT /*+ USE_MERGE(BSEMPMS,BSDPTMS) */ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

12. /*+ ALL_ROWS */
表明對語句塊選擇基於開銷的優化方法,並獲得最佳輸送量,使資源消耗最小化. 可能會限制某些索引的使用.
例如:SELECT /*+ ALL+_ROWS */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';

13. /*+ CLUSTER(TABLE) */
提示明確表明對指定表選擇簇掃描的存取方法. 如果經常訪問連接表但很少修改它, 那就使用集群提示.
例如:SELECT /*+ CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

14. /*+ INDEX_ASC(TABLE INDEX1, INDEX2) */
表明對表選擇索引昇冪的掃描方法. 從8i開始, 這個提示和INDEX提示功能一樣, 因為預設oracle就是按照昇冪掃描索引的, 除非未來oracle還推出降冪掃描索引.
例如:SELECT /*+ INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';

15. /*+ INDEX_COMBINE(TABLE INDEX1, INDEX2) */
指定多個點陣圖索引, 對於B樹索引則使用INDEX這個提示,如果INDEX_COMBINE中沒有提供作為參數的索引,將選擇出點陣圖索引的布林組合方式.
例如:SELECT /*+ INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI) */ * FROM BSEMPMS WHERE SAL<5000000 AND HIREDATE<SYSDATE;

16. /*+ INDEX_JOIN(TABLE INDEX1, INDEX2) */
合併索引, 所有資料都已經包含在這兩個索引裡, 不會再去訪問表, 比使用索引並通過rowid去掃描表要快5倍.
例如:SELECT /*+ INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI) */ SAL,HIREDATE FROM BSEMPMS WHERE SAL<60000;

17. /*+ INDEX_DESC(TABLE INDEX1, INDEX2) */
表明對表選擇索引降冪的掃描方法.
例如:SELECT /*+ INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';

18. /*+ INDEX_FFS(TABLE INDEX_NAME) */
對指定的表執行快速全索引掃描,而不是全資料表掃描的辦法.要求要檢索的列都在索引裡, 如果表有很多列時特別適用該提示.
例如:SELECT /*+ INDEX_FFS(BSEMPMS IN_EMPNAM) */ * FROM BSEMPMS WHERE DPT_NO='TEC305';

19. /*+ NO_EXPAND */
對於WHERE後面的OR 或者IN-LIST的查詢語句,NO_EXPAND將阻止其基於優化器對其進行擴展, 縮短解析時間.
例如:SELECT /*+ NO_EXPAND */ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';

20. /*+ DRIVING_SITE(TABLE) */
強制與ORACLE所選擇的位置不同的表進行查詢執行.特別適用於通過dblink連接的遠端表.
例如:SELECT /*+ DRIVING_SITE(DEPT) */ * FROM BSEMPMS,DEPT@BSDPTMS DEPT WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;

21. /*+ CACHE(TABLE) *//*+ NOCACHE(TABLE) */
當進行全資料表掃描時,CACHE提示能夠將表全部緩存到記憶體中,這樣訪問同一個表的使用者可直接在記憶體中查找資料. 比較適合資料量小但常被訪問的表, 也可以建表時指定cache選項這樣在第一次訪問時就可以對其緩存. NOCACHE則表示對已經指定了CACHE選項的表不進行緩存.
例如:SELECT /*+ FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;

22. /*+ PUSH_SUBQ */
當SQL裡用到了子查詢且返回相對少的行時, 該提示可以盡可能早對子查詢進行評估從而改善性能, 不適用於合併連接或帶遠端表的連接.
例如:select /*+ PUSH_SUBQ */ emp.empno, emp.ename, itemno from emp, orders where emp.empno = orders.empno and emp.deptno = (select deptno from dept where loc='XXX');
遠端連接其他資料庫,注意判斷資料庫是否啟動,或者是否有需要的表,否則會出錯

23. /*+ INDEX_SS(TABLE INDEX1,INDEX2) */
指示對特定表的索引使用跳躍掃描, 即當組合索引的第一列不在where子句中時, 讓其使用該索引

參考資料:

http://docs.oracle.com/cd/E11882_01/server.112/e16638/hintsref.htm#autoId0

http://jojo117.iteye.com/blog/584845

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

LVM (Logical Volume Mamager) 概念
使用 LVM,硬碟中的分割區必須加入『Logical Volume Group 邏輯磁區群組(簡稱 VG)』,這種分割區在 LVM 中稱為『Physical Volume 實體磁區(簡稱PV)』,各位可以把 VG 想成是一個大硬碟,然後再從其中切出一塊空間『Logical Volume 邏輯磁區(簡稱 LV)』對應至系統的檔案系統。
 
除了/boot 分割區,其餘的檔案系統皆可在 Volume Group 在這顆虛擬的大硬碟中。/boot 分割區不可以在 VG 中,因為開機管理程式將無法讀取到它。假如您想要  /  檔案系統在 VG 中,您必須另外建立一個  /boot 分割區,使其不屬於VG 的一員。
 
VG 可以分割為幾個 『Logical Volume 邏輯磁區』,將會指定它們的掛載點,例如  /opt  與  /,以及檔案系統類型,如 ext4。當某個檔案系統的容量全滿時,VG 中的剩餘空間可以增加到此檔案系統所對映的邏輯磁區以增大此檔案系統大小。
示意圖如下:

Linux LVM (Logical Volume Manager) Concept.png  

接下來我們用VMWare 來模擬實體機,一步步來安裝 Oracle Linux

Oracle Linux 的來源可從下面取得

https://edelivery.oracle.com/linux

01. 安裝前, 先定義規格

01_oracleLinuxSpec.png

02. 選擇全新安裝

02_oracleLinuxInstallSelect.png

03. 不作安裝來源的檢查

03_oracleLinuxDiskSkip.png

04. 用英文模式來安裝, 因為中文有時翻譯的可能會讓人看不懂

04_oracleLinuxLanguage.png

05. 鍵盤選擇 U.S. English

05_oracleLinuxKB.png

06. 選擇硬碟的類型

06_oracleLinuxStorage.png

07. 硬碟內的資料不保存

07_oracleLinuxDiscardData.png

08. 主機的名稱

08_oracleLinuxHostName.png

09. 時間區域 Time Zone:選亞洲/台北

09_oracleLinuxTZ.png

10. root 的密碼

10_oracleLinuxPW.png

11. 硬碟的配置, 依 LVM 的概念作分配, 選擇自行規劃

11_oracleLinuxHDLayout.png  

12. 先將實體硬碟 sdb & sdc 變成 LVM Physical Volume

12_oracleLinuxLVM01.png

13. 將這兩個LVM Physical Volume (PV):sdb & sdc 加入 Volume Group (VG) VolGroup1 裡

13_oracleLinuxVG_LV.png

14. 記得 /boot 不能放在 LV 裡, 且要將 Force to be a primary paritition 打勾, 這樣系統才開得起來

14_oracleLinuxBoot.png

15. 整個碟碟的規劃如下

15_oracleLinuxLayoutAll.png

16. boot loader 放在 /dev/sda 上, 這樣大致就設定完成

16_oracleLinuxBootLoader.png

17. 因為待會我們要安裝 Oracle Database 12c Release 1 (12.1) , 所以選擇 Customize Now 來挑選必要的 package 軟體

17_oracleLiuxPlatform.png  

The following package groups were included for this installation.

    Base System > Base
    Base System > Compatibility libraries
    Base System > Hardware monitoring utilities
    Base System > Large Systems Performance
    Base System > Network file system client
    Base System > Performance Tools
    Base System > Perl Support
    Servers > Server Platform
    Servers > System administration tools
    Desktops > Desktop
    Desktops > Desktop Platform
    Desktops > Fonts
    Desktops > General Purpose Desktop
    Desktops > Graphical Administration Tools
    Desktops > Input Methods
    Desktops > X Window System
    Applications > Internet Browser
    Development > Additional Development
    Development > Development Tools

安裝 Oracle Database 12c Release 1 (12.1.0.1)  的官方文件可以參考:

http://www.oracle-base.com/articles/12c/oracle-db-12cr1-installation-on-oracle-linux-6.php

http://www.oracle-base.com/articles/12c/oracle-db-12cr1-rac-installation-on-oracle-linux-6-using-virtualbox.php

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

MS SQL Server 2008 R2 在 Windows Server 2008 R2 SP1 上運行一段時日,近來常發現 MS SQL Server 2008 R2 常因 MSSQLSERVER_701:資源集區 'internal' 中的系統記憶體不足,無法執行此查詢 而自動停止 SQLSERVERAGENT 服務,導致 MSSQL Server 自動停止 。

MSDB_Error_701.png

 

Google 一下有人回應:

使用 SQL Server 組態管理員調整 SQL Server 啟動的參數,於原本的參數之後,再加入如下的參數:

;-g384

調整完畢,要重新啟動 SQL Server 服務。參考:http://technet.microsoft.com/zh-tw/library/ms190737.aspx 說明

 MSDB_initParameter.png  

在啟動參數最後加入 ;-g384 ,再觀察看看。

另外,當您執行 Database Engine 的多個執行個體於同一台主機時,可以使用 max server memory 來控制每個 MSSQL SERVER 的最大記憶體使用量

MSDB_Attribute.png  

操作的步驟如下:

1. 在 [物件總管] 中,以滑鼠右鍵按一下伺服器,然後選取 [屬性]。
2. 按一下 [記憶體] 節點。
3. 在 [伺服器記憶體選項] 底下,輸入 [最小伺服器記憶體] 和 [最大伺服器記憶體] 所要的數量。使用預設值可允許 SQL Server 根據可用的系統資源來動態變更它的記憶體需求。 [最小伺服器記憶體] 的預設值是 0,[最大伺服器記憶體] 的預設值是 2147483647 MB。

建議實體記憶體與配置給 MSSQL Server 的記憶體大小如下:

Physical RAM         MaxServerMem Setting
2GB                            1,500
4GB                            3,200
6GB                            4,800
8GB                            6,400
12GB                          10,000
16GB                          13,500
24GB                          21,500
32GB                          29,000
48GB                          44,000
64GB                          60,000
72GB                          68,000
96GB                          92,000
128GB                        12,4000

 

Physical RAM            Target Avail RAM in Task Manager
< 4GB                               512MB – 1GB
4-32GB                              1GB – 2GB
32-128GB                            2GB – 4GB
> 128GB                              > 4GB

以下為實務上的解決方法:

1. 實體記憶容量若總共有8G,則請調整MAX SERVER MEMORY為6 GB,請保留 2GB 給作業系統使用,您可視實際情況再進行調整。請您進行下記憶體的設定確認。
   a. 開啟 Management Studio。
   b. 開啟一個查詢視窗。
   c. 輸入並執行下列的語法:

USE master;
GO

EXEC sp_configure 'show advanced option', '1';
RECONFIGURE;
EXEC sp_configure;

EXEC sys.sp_configure N'max server memory (MB)', N'6144'
GO

RECONFIGURE WITH OVERRIDE
GO

d. 再次輸入下列的語法確認 [max server memory (MB)] 是否已變成 6144。

EXEC sp_configure N'max server memory (MB)';
GO

e. 將sp_configure的 [顯示進階選項] 設定關閉。

USE master;
GO
EXEC sp_configure 'show advanced option', '0';
RECONFIGURE;

2)為了避免 SQL Server Process 被強迫釋放,請您依據以下的作法進行設定[鎖定記憶體分頁] 權限:

a.您的SQL Server 2008 R2 是Standard版本,必須加上SQL Server啟動參數requires trace flag 845, 也就是-T845,設定lock page in Memory才會生效。
Support for Locked Pages on SQL Server 2008 R2 Standard Edition x64, on SQL Server 2005 Standard Edition 64-bit systems, and on SQL Server 2008 Standard Edition 64-bit systems

http://support.microsoft.com/kb/970070/en-us

MSSQL.PNG  

b. 調整 SQL Server Services Account 擁有 Lock Page In Memory 權限:
b-1. 請檢查組態管理員的 SQL Server 和 SQL Server Agent 的啟動帳戶是否為網域帳戶,且此帳戶擁有本機管理者權組的權限。
b-2. 確認SQL Server 和 SQL Server Agent 啟動帳戶擁有 [鎖定記憶體分頁] 權限。

c. 在 "本機安全性原則",如何啟用 [鎖定記憶體分頁選項]:
c-1. 在 [開始] 功能表上,按一下 [執行]。在 [開啟舊檔] 方塊中,輸入 gpedit.msc。此時會開啟 [群組原則] 對話方塊。
c-2. 在 [群組原則] 主控台中,依序展開 [電腦設定] 和 [Windows 設定]。
c-3. 展開 [安全性設定],然後展開 [本機原則]。
c-4. 選取 [使用者權限指派] 資料夾。這些原則會顯示在詳細資料窗格中。
c-5. 在窗格中連按兩下 [鎖定記憶體分頁]。

MSSQL_OS_RAM.png  
c-6. 在 [本機安全性原則設定] 對話方塊中按一下 [新增]。
c-7. 在 [選擇使用者或群組] 對話方塊中加入一個具有執行 sqlservr.exe 權限的帳戶。
c-8. 在命令提示字元下,執行 “gpupdate /force” 或登出您的帳戶再登入本機。
c-9. 重起 SQL Server 服務或重開機器。

(Option)另外,建議您更新至SQL Server 2008 R2 Service Pack 1來避免已知問題。
"Non-yielding Scheduler" error and SQL Server 2008 or SQL Server 2008 R2 stops responding intermittently in Windows Server 2008 or in Windows Server 2008 R2
http://support.microsoft.com/kb/2491214

MicrosoftR SQL ServerR 2008 R2 Service Pack 1 下載
http://www.microsoft.com/zh-tw/download/details.aspx?id=26727
 
建議您可以直接更新到SQL 2008 R2 Service Pack 2來避免更多已知問題
MicrosoftR SQL ServerR 2008 R2 Service Pack 2

http://www.microsoft.com/zh-tw/download/details.aspx?id=30437
http://www.microsoft.com/en-us/download/details.aspx?id=30437

參考文件:

http://technet.microsoft.com/zh-tw/library/aa337311%28v=sql.105%29.aspx

http://technet.microsoft.com/zh-tw/library/ms190737.aspx

http://technet.microsoft.com/zh-tw/library/ms178067.aspx

 

MIS 發表在 痞客邦 留言(0) 人氣()

Profile 的層級設定共分成 6 個等級:Site、Application、 Responsibility、Server、Organization、User;優先引響層面由 Site 最高,依序排列下來,User 最低,以 Utilities:Diagnostics 這個 Profile 來說,若 Site 設為 No,而 User:POLIN.WEI 設為 Yes,代表全部的帳號在使用 Help/Diagnostics/Examine 功能時,需要輸入 APPS 密碼;但 User:POLIN.WEI 不需要輸入APPS密碼就可以使用 Examine 功能了。

EBS_systemProfile.png  

在操作 Oracle Profile 的介面時,有幾點要注意的:

N:System Administrator/Profile/System

EBS_profileQuery.png  

1. Oracle EBS 的 Profile 名稱,冒號前面可能有空格,後面也可能有空格,有時候前後都有空格,導致有些人查了半天說沒有這個 Profile;如果我們無法確切知道要設置的 Profile 名稱時,可以使用多個 % 來作資料查詢,如上面的ICX:Session%Time%。
2. 點擊 Find 之後,如果沒有查到想要的 Profile 參數值時,要點擊工具列上的 Find 按鈕 ( 手電筒的圖示 ),這樣上次輸入的查詢資料還會在,這個是 Oracle EBS 的基本操作。有些人會習慣性的關掉視窗,然後打開,重新輸入條件,花費很多時間在輸入資料及開關視窗上。

 適合全域性的 Profile:System Profile for Site Level

Profile Name

說明

設置建議

FND: Enable Cancel Query

當執行一個超長時間的查詢時,會出現一個Cancel視窗,允許使用者取消。比如我們在SO介面沒有輸入條件就來個Ctrl+F11,由於SO特別多,半天出不來,又不能取消,只好關掉IE重新登錄;有了這個東西就方便多了。

Yes

FND: NATIVE CLIENT ENCODING

用戶端字元集,設置不當報表匯出可能亂碼

同DB

ICX: Client IANA Encoding

Client IANA Encoding used for setting up charset in HTTP response

同DB

Utilities:Diagnostics

控制Help/Diagnostics/Examine是否需要輸入APPS密碼,Yes不需要,No需要

No

Java Look and Feel

設置介面風格,Oracle就是預設的藍色調,Generic就是傳統Windows風格。

Oracle

Java Color Scheme

設置具體的介面顏色

null

Initialization SQL Statement - Custom

設置每個人登錄EBS的時候需要執行的PL/SQL代碼,這個可以用來啟動Trace等,想做什麼都行

Begin null; end;

ICX:Session Timeout

Application使用者Session在多少分鐘內沒有資料庫操作(在Form上點來點去不一定有資料庫操作)就算超時;這個和Zone.Properties設定檔中的session.timeout(單位是秒)要一致;可以設置在用戶層

測試環境:30,正式環境:2000

ICX: Limit Time

如果ICX: Session Timeout沒有設置,那麼不管使用者有沒有資料庫操作,都用這個作為Session有效的最大小時數

 

ICX: Limit Connect

Session最大的連接次數

 

ICX: Report Image

Report的圖像路徑

 http://erp.com:8000/OA_MEDIA

ICX: Date format mask

日期格式,可以針對用戶設置

 

PO: Set Debug Workflow ON

PO工作流的Debug資訊,存在po_wf_debug

No

Concurrent:Report Access Level

報表Output的查看許可權,分為User和Responsibility。如果是User那麼只有運行該報表的使用者可以查看Output,不管他切換到哪個職責。如果是Responsibility,只要能進入運行報表的職責就可以查看。

User

Self Service Personal Home Page mode

登錄之後的主頁模式,需重啟Apache
Framework only:職責+職責菜單
Personal Home Page:點職責直接進入
Personal Home Page with Framework

 

Enable Timezone Conversions

是否啟用Timezone,默認N,必須在Site層設置

 

Server Timezone

必須與資料庫的Timezone一致,只能在Site層設置

 

Client Timezone

必須在User層設置

 

RRA: Enabled

必須設置為Yes

 

RRA: Service Prefix

通常放空

 

 

 適合 Responsibility 的 Profile

Profile Name

Responsibility

說明

設置建議

INV: Updateable item name

Inventory

Yes: 可以修改料號 Item Name

空白

WIP:Job Name Updatable Work In Process  No, 控管使用者無法修改工單號碼Job Name  No
       
文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

基本概念:

_ALL:基本表單,保存多組織資料,裡面有一個Org_Id欄位,一般不直接出現在我們的DML中去掉_all的視圖,根據使用者環境過濾掉組織,相當於普通的基表,我們直接使用它,就當它是基本表單
_V   :VIEW,給Form用
_KFV:啟用關鍵性彈性域的時候動態生成的VIEW,包含Concact過的欄位組合
_DFV:啟用描述性彈性域的時候動態生成的VIEW,我們取彈性域子段的描述的時候,需要用使用者出口函數
_TL  :基本表單,有language欄位,us肯定有
_VL  :VIEW,根據環境設置過濾語種,所以做報表用_vl _s,序號 _API,Package,保證向後相容
_PKG:Package,Program
_SV  :Package,供Form調用
   GL: General Ledger 總帳,使存儲會計資訊的中心,接收來自財務和製造模組的會計資訊
   GL包括:
      採購 Purchasing ,
      應付 Account Payable ,
      資產 Fixed Assets,
      應收 Accounts Receivable,
      庫存 Inventory,
      訂單 Order Management 6 個模組!

Oracle EBS 示意圖:

EBS_Structure.png  

 

 針對上圖的概念,將各階層作下列的解釋,其中 ASIR 的是虛擬的公司組織:

層次

名稱

說明

BG

ASIR Business Group

組織層次的最高層,用來遮罩HR資訊

SOB

ASIR Books

帳本,財務資料階層的最高層

LE

LE ASIR

法律實體/法人機構,對外提供財務報告和稅務報告

OU

OU TW

遮罩OM/PO/AR/AP等模組資料

INV

INV MASTER

庫存主組織,一般用來定義ITEM,不做業務

INV

INV TAIPEI

實際發生庫存業務的工廠、倉庫等,遮罩BOM/ENT/INV/WIP/MRP等模組資料

SUBINV

Finished Goods/FSG1

倉庫,實體的倉庫,存放產成品

SUBINV

Raw Material/RM01

倉庫,實體的倉庫,存放產原材料

SUBINV

Expense INV/EXP1

倉庫,費用倉庫,不必跟蹤數量

SUBINV

Staging Area/STA1

倉庫,具體的庫房,暫存倉庫/線邊倉

 INV庫存
organization 有兩個含義:
1. 經營單位(Operation Unit)主要為了獨立核算此組織
2. 庫存組織(Inventory Organization),例如倉庫

 建立一個存貨組織 (Inventory Organization) 的步驟如下:

  • N: INV/Setup/Organizations/Locations:定義地址
  • N: INV/Setup/Organizations/Organizations:定義組織
  • N: INV/Setup/Organizations/Parameters:定義組織的參數
     (定義 Item Master Organization、Cost Method、Revision、Lot、Serial Contral...)
  • N: INV/Setup/Organizations/Organization Access:定義 Responsibility 可以存取那些組織
  • N: INV/Setup/Organizations/Subinventories:定義組織裡有那些倉庫 (Subinventory)
  • N: INV/Setup/Organizations/Stock Locators:定義倉庫的儲位

參考:

http://space.itpub.net/7434747/spacelist-blog-itemtypeid-77980

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()