Blog moved

Hi everybody, I have moved my blog to http://kokeiblog.blogspot.com/ .

Leave a Comment

好消息! 港人赴台變相免簽證

今天打開報紙,見到一個好消息 –港人去台灣可以免費簽證。

記得上年去過台灣公幹,都系系機場搞落地簽證。雖然很方便,不過都要搞成十幾分鐘,同埋只可以停留30日。宜家只需要系網上填表,然後print出黎就得。 最重要嘅系網上申請簽證系完全免費。 :-D

港人赴台變相免簽證
2010年08月03日

【本報訊】台灣一直是港人旅遊熱點,當地政府為吸引更多港人遊台,昨日公佈下月起,港人在網上申請台灣簽證不但費用全免,三個月簽證有效期內更可以無限次入出境。香港旅遊業議會認為新簽證規定,是變相免簽證,會刺激更多港人遊台灣。

網上填表即可
台灣當局昨日公佈今年 9月 1日起,簡化香港及澳門居民網上申請簽證程序,港澳居民只要登入移民署網址( http://www.immigration.gov.tw

申請簽證,填上個人資料後自行列印許可同意書,出入境時將有關同意書連同護照一起交出查驗即可;同意書有效期三個月,有效期內可多次入出境,每次可停留 30日。網上簽證費用全免。
台灣觀光協會香港辦事處發言人表示,今次簡化入台簽證作業程序僅適用於網路簽證,其他入台簽證方法及收費維持不變
旅遊業議會總幹事董耀中表示,台灣一向是港人旅遊熱點,今次台灣推出網上簽證不收費用,料會刺激更多港人遊台,「有效期內三個月無限次數入出境,即係變相免簽證」。現時港人網上簽證費用港幣 75元,三個月內可入出境兩次,每次停留 30日。

Leave a Comment

This is a procedure I wrote in order to help me to create a huge table for testing quickly( The idea of the code is borrowed from Tom Kyte’s book). This stored proc takes two parameters, table_name for the name of the table to be created and table_size for the number of rows to be loaded to the newly created table . Some of the advantages of this procedure are that this stored proc create table with nologging and load the data to the table with APPEND hint.
Therefore this stored proc can create a huge table quickly because of minminal redo log generation.

 

CREATE OR REPLACE PROCEDURE Build_Table
     (Table_Name  IN VARCHAR,
      Table_Size  NUMBER)
IS
  sql_stmt  VARCHAR(2000);
  l_cnt     NUMBER := 0;
  l_Rows    NUMBER := Table_Size;
BEGIN
  sql_stmt := ‘create table ‘  –create table structure
             
              ||Table_Name
              ||’ nologging
as select rownum id,
               OWNER, OBJECT_NAME, SUBOBJECT_NAME,
               OBJECT_ID, DATA_OBJECT_ID,
               OBJECT_TYPE, CREATED, LAST_DDL_TIME,
               TIMESTAMP, STATUS, TEMPORARY,
               GENERATED, SECONDARY
  from all_objects a where 1=0′;
 
  EXECUTE IMMEDIATE sql_stmt;
 
  COMMIT;
 
  sql_stmt := ‘insert /*+ APPEND */ into ‘ –load the data
             
              ||Table_Name
              ||’ select rownum,
               OWNER, OBJECT_NAME, SUBOBJECT_NAME,
               OBJECT_ID, DATA_OBJECT_ID,
               OBJECT_TYPE, CREATED, LAST_DDL_TIME,
               TIMESTAMP, STATUS, TEMPORARY,
               GENERATED, SECONDARY
          from all_objects
  where rownum<=:1′;
 
  EXECUTE IMMEDIATE sql_stmt
   USING l_Rows;
 
  l_cnt := l_cnt + SQL%ROWCOUNT;
 
  COMMIT;
 
  WHILE (l_cnt < l_Rows) LOOP
    sql_stmt := ‘insert /*+ APPEND */ into ‘
                ||Table_Name
                ||’ select rownum+:1,
               OWNER, OBJECT_NAME, SUBOBJECT_NAME,
               OBJECT_ID, DATA_OBJECT_ID,
               OBJECT_TYPE, CREATED, LAST_DDL_TIME,
               TIMESTAMP, STATUS, TEMPORARY,
               GENERATED, SECONDARY
          from ‘
                ||Table_Name
                ||’ where rownum <= :2-:3′;
   
    EXECUTE IMMEDIATE sql_stmt
     USING l_cnt,l_Rows,l_cnt;
   
    l_cnt := l_cnt + SQL%ROWCOUNT;
   
    COMMIT;
  END LOOP;
 
  sql_stmt := ‘alter table ‘ –create the primary after loading the data
             
              ||Table_Name
              ||’ add constraint ‘
              ||Table_Name
              ||’_pk primary key(id)’;
 
  EXECUTE IMMEDIATE sql_stmt;
 
  sql_stmt := ‘ BEGIN dbms_stats.gather_table_stats –update the table statistics
   ( ownname    => SYS_CONTEXT (”USERENV”, ”CURRENT_USER”),
     tabname    =>”’
              ||Upper(Table_Name)
              ||”’,
     cascade    => TRUE ); end;’;
 
  EXECUTE IMMEDIATE sql_stmt;
END;
CREATE OR REPLACE PROCEDURE Build_Table
     (Table_Name  IN VARCHAR,
      Table_Size  NUMBER)
IS
  sql_stmt  VARCHAR(2000);
  l_cnt     NUMBER := 0;
  l_Rows    NUMBER := Table_Size;
BEGIN
  sql_stmt := ‘create table ‘  –create table structure
              ||Table_Name
              ||’ nologging
as select rownum id,
               OWNER, OBJECT_NAME, SUBOBJECT_NAME,
               OBJECT_ID, DATA_OBJECT_ID,
               OBJECT_TYPE, CREATED, LAST_DDL_TIME,
               TIMESTAMP, STATUS, TEMPORARY,
               GENERATED, SECONDARY
  from all_objects a where 1=0′;
 
  EXECUTE IMMEDIATE sql_stmt;
 
  COMMIT;
 
  sql_stmt := ‘insert /*+ APPEND */ into ‘ –load the data
              ||Table_Name
              ||’ select rownum,
               OWNER, OBJECT_NAME, SUBOBJECT_NAME,
               OBJECT_ID, DATA_OBJECT_ID,
               OBJECT_TYPE, CREATED, LAST_DDL_TIME,
               TIMESTAMP, STATUS, TEMPORARY,
               GENERATED, SECONDARY
          from all_objects
  where rownum<=:1′;
 
  EXECUTE IMMEDIATE sql_stmt
   USING l_Rows;
 
  l_cnt := l_cnt + SQL%ROWCOUNT;
 
  COMMIT;
 
  WHILE (l_cnt < l_Rows) LOOP
    sql_stmt := ‘insert /*+ APPEND */ into ‘
                ||Table_Name
                ||’ select rownum+:1,
               OWNER, OBJECT_NAME, SUBOBJECT_NAME,
               OBJECT_ID, DATA_OBJECT_ID,
               OBJECT_TYPE, CREATED, LAST_DDL_TIME,
               TIMESTAMP, STATUS, TEMPORARY,
               GENERATED, SECONDARY
          from ‘
                ||Table_Name
                ||’ where rownum <= :2-:3′;
   
    EXECUTE IMMEDIATE sql_stmt
     USING l_cnt,l_Rows,l_cnt;
   
    l_cnt := l_cnt + SQL%ROWCOUNT;
   
    COMMIT;
  END LOOP;
 
  sql_stmt := ‘alter table ‘  –create the primary after loading the data
              ||Table_Name
              ||’ add constraint ‘
              ||Table_Name
              ||’_pk primary key(id)’;
 
  EXECUTE IMMEDIATE sql_stmt;
 
  sql_stmt := ‘ BEGIN dbms_stats.gather_table_stats –update the table statistics
   ( ownname    => ”SYSTEM”,
     tabname    =>”’
              ||Upper(Table_Name)
              ||”’,
     cascade    => TRUE ); end;’;
 
  EXECUTE IMMEDIATE sql_stmt;
END;

References
http://www.dbspecialists.com/files/presentations/load_faster.html

Leave a Comment

ORA-00322: log x of thread y is not current copy(Oracle bug 5238386)

When runing Oracle 10g dataguard, sometimes we may found the following ORA-00322 error in alert log file.
This error is caused by the Oracle Bug 5238386 – ORA-322 possible reading standby redo log header and the problem will not hinder the functions of Oracle as long as it does not occur too frequently.

Errors in file /u01/app/oracle/admin/ORCLSB/bdump/orcsb_mrp0_17795.trc:
ORA-00322: log 6 of thread 1 is not current copy
ORA-00312: online log 6 thread 1: ‘/u03/oradata/ORCLSB/redo01d.log’
ORA-00322: log 6 of thread 1 is not current copy
ORA-00312: online log 6 thread 1: ‘/u02/oradata/ORCLSB/redo01c.log’
Mon May 14 11:27:15 2009
Errors in file /u01/app/oracle/admin/ORCLSB/bdump/orcsb_mrp0_17795.trc:
ORA-00322: log 6 of thread 1 is not current copy
ORA-00312: online log 6 thread 1: ‘/u03/oradata/ORCLSB/redo01d.log’
ORA-00322: log 6 of thread 1 is not current copy
ORA-00312: online log 6 thread 1: ‘/u02/oradata/ORCLSB/redo01c.log’
Mon May 14 11:27:20 2009

However, the Oracle appears to be unable to apply log in the standby database due to ORA-00322 error. You may consdier to fix the problem
by using one of the following methods

 

Fix
—-
1. Apply the fix for the Bug 5238386.

2. Upgrade the database to the version 10.2.0.4 where the issue has already been fixed.

3. Drop the log group and recreate one

ALTER DATABASE RECOVER MANAGED standby database CANCEL;

alter database drop logfile group 6;

alter database add standby logfile group 6
(‘/u02/oradata/ORCLSB/redo01c.log’,
‘/u03/oradata/ORCLSB/redo01d.log’) size 100m

References
———–
Note 294431.1 : ORA-00322 seen in standby alert log when creating a archive log file using SRL.

Leave a Comment

Follow

Get every new post delivered to your Inbox.