今天在開發Oracle ERP的Report時,想以下列的PL/SQL來找出登入的員工姓名,
但是卻發現Report執行出來的結果都是空白。

begin

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

有一支Concurrent Request執行時間很久,想找出是那一段SQL花費了最多的時間。
可以到Program內找出想要Trace的Concurrent Request,再勾選Trace來追踨執行的過程。


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

今天在EBS 11i上要Applove盤點過帳的項目時,出現下列的錯誤:
DISK I/O error on temporary record buffer file /var/tmp/...

使用者也打電話反應要查詢一張有30筆料號的採購單時,只出現3筆料號。

到HP-UX下去查詢磁碟容量:
# bdf

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

為了測試Oracle 9i新增的MERGE語法,建立了兩個測試表格。

歷屆選手表
create table sportsman_history (name  varchar2(30),live_area  varchar2(100)) tablespace users;
insert into sportsman_history values ('張三','台南市') ;
insert into sportsman_history values ('李四','新北市') ;
insert into sportsman_history values ('王五','宜蘭縣') ;
commit;

選手申請表
create table apply_temp (name  varchar2(30),live_area  varchar2(100))tablespace users;
insert into apply_temp values ('張三','嘉義市') ;
insert into apply_temp values ('李四','新北市') ;
insert into apply_temp values ('陳七','屏東縣') ;
commit;


SQL> column name format a20;
SQL> column live_area format a20;
SQL> select * from sportsman_history;

NAME                 LIVE_AREA
-------------------- --------------------
張三                 台南市
李四                 新北市
王五                 宜蘭縣


SQL> select * from apply_temp;

NAME                 LIVE_AREA
-------------------- --------------------
張三                 嘉義市
李四                 新北市
陳七                 屏東縣


判斷「選手申請表」中沒有「歷屆選手表」的姓名,則新增到「歷屆選手表」,否則更新「歷屆選手表」的資料
SQL> MERGE INTO sportsman_history sh USING  apply_temp at
         ON (sh.name=at.name)
         WHEN MATCHED THEN UPDATE SET sh.live_area=at.live_area
         WHEN NOT MATCHED THEN INSERT VALUES (at.name,at.live_area);


SQL> select * from sportsman_history;

NAME                 LIVE_AREA
-------------------- --------------------
陳七                 屏東縣
張三                 嘉義市
李四                 新北市
王五                 宜蘭縣


如果是以PL/SQL來寫,程式應該如下:
declare
    v_check  number;    
     cursor cur_1 is
         select * from apply_temp at ;   
     r1 cur_1%rowtype;    
begin
    for r1 in cur_1 loop
         select count(1) into v_check from sportsman_history sh
            where sh.name=r1.name;
         if v_check >0 then
              update sportsman_history sh set sh.name=r1.name;
          else
              insert into sportsman_history sh values (r1.name,r1.live_area);
          end if;    
     end loop;
end;
   
由上述可知,利用Oracle 9i新增的語法MERGE來完成Insert與update的動作,
只需要對Table進行一次Full Scan就可以完成,執行效率較高。

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

在Oracle 11g新建一個帳號test01,登入時出現ORA-01045錯誤
SQL> connect test01/oracle;
ERROR:
ORA-01045: user TEST01 lacks CREATE SESSION privilege; logon denied

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

在啟用Oracle listener時,出現了下列的錯誤,
$ lsnrctl start
TNS-12537: TNS:connection closed
TNS-12560: TNS:protocol adapter error
  TNS-00507: Connection closed
   Linux Error: 29: Illegal seek
  
檢查了listener.ora,似乎沒有什麼錯誤,改了幾個參數後,仍然出現錯誤。
檢查了Listener Log File也看不出來什麼訊息,最後在網路上一個外國的論譠,有人提到是hosts設定的問題。
於是到/etc下去看hosts的設定,就是127.0.0.1設定的問題。
把127.0.0.1 test01 test01改回127.0.0.1 localhost.localdomain localhost就正常啟動linstener
可能是listener在啟動時會使用localhost,而不是使用127.0.0.1

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

我的ifive mini 原本還可以調整USB接口的角度來充電,但是幾天前無論如何調整都沒有辦法充電,心想該不會是故障了吧。
先確認看看是不是USB線與充電器的問題,把一條短的USB線接口剪掉,一共有四條線,接上充電器後用三用電表測試,
結果是正常的,看來真的是故障了。
因為還在保固期間內,所以先與遠瀚科技聯絡並提供機身序號後,就把ifive mini寄回給遠瀚科技維修部,
他們的動作挺快的,兩天後我就收到維修後的ifive mini,一切又恢復正常。

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

昨天上課時聽到10g以後的Archive Log的預設位置在USE_DB_RECOVERY_FILE_DEST,保存在Flash recovery area,
但是Flash recovery area的預設大小為2G,有可能會導致Archive Log空間不足。

所以今天就拿虛擬機來測試看看,查詢目前Flash Recovery Area內Archive Log的使用量
SQL> select percent_space_used from v$flash_recovery_area_usage where file_type='ARCHIVED LOG';

PERCENT_SPACE_USED
------------------
                0
                 
                 
將LOG_ARCHIVE_DEST_1清空。
SQL> alter system Set LOG_ARCHIVE_DEST_1='' scope=spfile;

重開DB到open階段
SQL> shutdown immedite;
SQL> startup;

查詢Archivelog狀態,可以發現Archive destination預設是USE_DB_RECOVERY_FILE_DEST
SQL> archive log list;
Database log mode            Archive Mode
Automatic archival            Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     396
Next log sequence to archive   398
Current log sequence            398

強制切換Redolog,產生archive log
SQL> alter system switch logfile;

再次查詢Flash Recovery Area內Archive Log的使用量
SQL> select percent_space_used from v$flash_recovery_area_usage where file_type='ARCHIVED LOG';

PERCENT_SPACE_USED
------------------
            .02

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

原本的db_name為orcl,測試將改為testdb

直接用nid來更改db_name、db_id,可免去許多步驟,參數help='Y'可以看到說明
$ nid help='Y'
DBNEWID: Release 11.2.0.2.0 - Production on Mon Jun 17 01:26:21 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

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

今天出現一個很奇怪的情形,PO在收料之時,料號已被停用,重新啟用料號後,要入庫時就出現了錯誤。
而且不論是執行更正或退貨都會出現相同的問題(EBS的版本是11.5.10.2)。

rvtptcontrol failed

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