วันศุกร์ที่ 26 ตุลาคม พ.ศ. 2555

แก้ไขปัญหาการ Export Oracle 11g สำหรับ Emtry Table ไม่ได้


1.ให้ Run SQL Command

SQL>sqlplus sys/admin as sysdba
SQL>alter system set deferred_segment_creation = FALSE scope=both;

2.สำหรับกรณี ได้สร้าง Table ไปก่อนหน้าจะ Run คำสั่งข้างต้นให้ ทำตามขั้นตอนคือ

1. run คำสั่งเพื่อสร้าง Query Update  สำหรับ Table ที่ยังไม่มีข้อมูลให้สามารถ Export ได้
select 'alter table '|| table_name || ' allocate extent;' from dba_tables where owner='IFSCT';

2.นำผล Query จากข้อ 1 มา Run เช่น
alter table ACCACCOUNTYEAR allocate extent;
alter table ACCBUDGET allocate extent;

3.หลังจากนั้นจะสามารถ Export ได้ สำหรับ Table ที่ยังไม่มีข้อมูล

reference:
http://www.dba-oracle.com/t_oracle_deferred_segment_creation.htm

http://oracle.jookku.com/2011/04/11gr2-export-file-%E0%B8%88%E0%B8%B0%E0%B9%84%E0%B8%A1%E0%B9%88%E0%B9%80%E0%B8%AD%E0%B8%B2-table-%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B9%84%E0%B8%A1%E0%B9%88%E0%B8%A1%E0%B8%B5-data-%E0%B8%A1%E0%B8%B2/

วันอังคารที่ 2 ตุลาคม พ.ศ. 2555

การ Setup Oracle 11g R2 Replicate Data & Structure โดยใช้ Features Oracle Stream

FOR SOURCE DATABASE : gcoop : 
โดยในที่นี้จะทำการ Sync ที่ SCHEMA IFSCT 

Step 1 : เพิ่มเติมในส่วนของ File C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\TNSNAMES.ORA 
เพื่อให้สามารถเข้าถึง Services ของ Oracle ได้ ดังนี้

gcoop =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.235)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =gcoop )
    )
  )

gcoopdr =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.245)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = gcoopdr)
    )
  )

Step 2 : เปิด CMD  แล้วพิมพ์คำสั่ง เพื่อกำหนดให้ Database เก็บ archivelog ก่อน ดังนี้ 
  
set oracle_sid=gcoop
sqlplus sys/admin as sysdba
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog ;
SQL> alter database open;




Step 3 : สร้าง User STREAM เพื่อทำหน้าที่ Sync Data ระหว่าง 2 Database ดังนี้
SQL> conn sys/admin@gcoop as sysdba
SQL> create tablespace STREAM
 datafile 'C:\app\Administrator\oradata\gcoop\stream01.dbf' size 25m
 autoextend on;
SQL> create user STRMADMIN
 identified by strmadmin;
SQL> grant DBA to strmadmin;
SQL> begin
 dbms_streams_auth.grant_admin_privilege (
 grantee =>'strmadmin',
 grant_privileges => TRUE);
 end;
/






Step 4 : สร้าง Database Link ที่ชี้ไปยัง Database ที่ต้องการ Sync ดังนี้
SQL> conn strmadmin/strmadmin@gcoop
SQL> create database link gcoopdr
  connect to strmadmin
  identified by strmadmin
  using 'gcoopdr';
 



Step 5 : กำหนดค่าฐานข้อมูลให้ทำการเก็บ Log การเปลี่ยนแปลงด้วย   
SQL> alter system set global_names=true scope=both;

กรณีที่ 1 ต้องการทำทั้ง Database 
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;

กรณีที่ 2 ต้องการทำบาง Table เท่านั้น 
ให้ Drop กรณีที่ 1 ออกก่อน
SQL>ALTER DATABASE DROP SUPPLEMENTAL LOG DATA ;

แล้ว Add TABLE ที่ ต้องการทำ ตามลำดับ ในที่นี้ เช่น Schema = ifsct และ Table = mbmembmaster
SQL>alter table ifsct.mbmembmaster add supplemental log data (all) columns;




Step 6 : สร้าง Directory สำหรับเก็บ Sync Transaction Data

mkdir C:\app\Administrator\oradata\gcoop\gcoop
sqlplus sys/admin as sysdba
SQL> conn strmadmin/strmadmin@gcoop
SQL> create directory dir_gcoop as 'C:\app\Administrator\oradata\gcoop\gcoop';



เสร็จแล้วให้ทำ Step 1 - 6 อีกครั้ง แต่ที่ เครื่อง gcoopdr ดังนี้

Step 7 : เพิ่มเติมในส่วนของ File C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\TNSNAMES.ORA 
เพื่อให้สามารถเข้าถึง Services ของ Oracle ได้ ดังนี้

gcoop =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.235)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =gcoop )
    )
  )

gcoopdr =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.245)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = gcoopdr)
    )
  )

Step 8 : เปิด CMD  แล้วพิมพ์คำสั่ง เพื่อกำหนดให้ Database เก็บ archivelog ก่อน ดังนี้ 
  
set oracle_sid=gcoopdr
sqlplus sys/admin as sysdba
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog ;
SQL> alter database open;





Step 9 : สร้าง User STREAM เพื่อทำหน้าที่ Sync Data ระหว่าง 2 Database ดังนี้
SQL> conn sys/admin@gcoopdr as sysdba
SQL> create tablespace STREAM
 datafile 'C:\app\Administrator\oradata\gcoopdr\stream01.dbf' size 25m
 autoextend on;
SQL> create user STRMADMIN
 identified by strmadmin;
SQL> grant DBA to strmadmin;
SQL> begin
 dbms_streams_auth.grant_admin_privilege (
 grantee =>'strmadmin',
 grant_privileges => TRUE);
 end;
/




Step 10 : สร้าง Database Link ที่ชี้ไปยัง Database ที่ต้องการ Sync ดังนี้
SQL> conn strmadmin/strmadmin@gcoopdr
SQL> create database link gcoop
  connect to strmadmin
  identified by strmadmin
  using 'gcoop';
 
Step 11 : กำหนดค่าฐานข้อมูลให้ทำการเก็บ Log การเปลี่ยนแปลงด้วย  
SQL> alter system set global_names=true scope=both;

กรณีที่ 1 ต้องการทำทั้ง Database
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;

กรณีที่ 2 ต้องการทำบาง Table เท่านั้น
ให้ Drop กรณีที่ 1 ออกก่อน
SQL>ALTER DATABASE DROP SUPPLEMENTAL LOG DATA ;

แล้ว Add TABLE ที่ ต้องการทำ ตามลำดับ ในที่นี้ เช่น Schema = ifsct และ Table = mbmembmaster
SQL>alter table ifsct.mbmembmaster add supplemental log data (all) columns;



Step 12 : สร้าง Directory สำหรับเก็บ Sync Transaction Data  

mkdir C:\app\Administrator\oradata\gcoopdr\gcoopdr
sqlplus sys/admin as sysdba
SQL> conn strmadmin/strmadmin@gcoopdr
SQL> create directory dir_gcoopdr as 'C:\app\Administrator\oradata\gcoopdr\gcoopdr';





Step 13 : ทำที่เครื่อง gcoop สร้าง Stream script โดยการ RUN PL/SQL

สำหรับตัวแปร
include_ddl  =TRUE แสดงว่าให้แก้ไข Structure ด้วย
perform_actions =TRUE  ให้ทำการ Sync ตรงเข้า ฐานข้อมูลทันที , FALSE = จะสร้างเป็น Script เก็บไว้ที่ Directory ที่สร้างไว้ใน Steps 6 และ 12
bi_directional  = TRUE  เป็นแบบ two-way sync , FALSE = one-way sync จาก source ไปยัง destination.




จะเห็นว่า หลังจาก Run สำเร็จจะมี File เกิดขึ้นที่ Directory ที่ สร้างใน Step 6 ที่ Server gcoop


จะเห็นว่า หลังจาก Run สำเร็จจะมี File เกิดขึ้นที่ Directory ที่ สร้างใน Step 12 ที่ Server gcoopdr


กรณีต้องการยกเลิกการ Sync ให้ Run คำสั่ง 
sqlplus sys/admin@gcoop as sysdba
SQL>exec dbms_streams_adm.remove_streams_configuration;

หรือ กรณีต้องการแก้ไข สามารถ Run Step 13 ได้



วันอังคารที่ 21 สิงหาคม พ.ศ. 2555

การติดตั้ง ระบบ GCOOP Web Application .Net : สำหรับ Developement Server

*ขั้นตอนการติดตั้งนี้ยกตัวอย่างจาก โปรแกรม Prototype ของ ชสอ.(V.2012.08.19)
ซึ่งในส่วนนี้เป็นการติดตั้งที่รวมชุดเครื่องมือพัฒนาเข้าไปด้วยสำหรับเตรียมการพัฒนา และ พร้อมทดสอบระบบไปในตัว ซึ่งมีบางส่วนหากจะติดตั้งเป็น สำหรับ Production จริงๆ ควรตัดออกไปหรือเพิ่มเติมบางส่วน ซึ่งจะอธิบายในภายหลัง

1.ความต้องการระบบขั้นพื้นฐาน

Hardware requirement :
      CPU 2GHz ,
      RAM 2GB -> 4GB,
      HDD 2GB (WebApp ) , 10GB (Temp)

Software requirement :

    OS : Windows Server 2008 R2 (Development Environment)
     #1.IIS7   
     #2.Oracle 10g XE
     #3.Firefox Web Browser 14
     #4.Dot Net Framework 2.0 , 3.5 ,4
     #5.MS Visual Studio .Net  2010 Express  (C#,Web Development)
     #6.Oracle 11g Data Access Components
     #7.Sybase Data Window.Net 2.5
     #8.Sybase Power Builder 12
     #9.GhostScript for PrintService

2.เตรียมฐาน Oracle ข้อมูลให้พร้อม 

2.1.ติดตั้ง Oracle 10g XE 
2.2 แก้ไขค่า Config เพื่อให้สามารถ Remote เข้า Access Oracle Web App ได้ 
เข้า URL http://127.0.0.1:8080/apex Login ด้วย system User



(บน Website ของ Oracle เอง ไม่มี Version นี้ให้ Load แล้วเพราะปัจจุบันเป็น Oracle 11g XE แล้ว)

หรือ ใช้ SQLPLus 

EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

ก็ได้ผมใช่เดียวกัน


2.3 สร้าง Oracle User/Pass และ กำหนดสิทธิ์ ในที่นี้ใช้ User=ifsct ,Password=ifsct

SQL Script




CREATE USER "IFSCT" PROFILE "DEFAULT" IDENTIFIED BY "*******" ACCOUNT UNLOCK
GRANT UNLIMITED TABLESPACE TO "IFSCT" WITH ADMIN OPTION
GRANT "AQ_ADMINISTRATOR_ROLE" TO "IFSCT" WITH ADMIN OPTION
GRANT "CONNECT" TO "IFSCT" WITH ADMIN OPTION
GRANT "DBA" TO "IFSCT" WITH ADMIN OPTION




2.4 Import Oracle DUMP File ด้วยคำสั่ง 
      #imp <USER>/<PWD>/<HOSTNAME or IP>/<SID> FILE=<FILENAME> FULL=y
     >imp ifsct/ifsct@192.168.1.99/gcoop FILE=IFSCT-IORCL-.20120818.165125.dmp FULL=y

2.5 การ Tuning Oracle เพิ่มเติมดังนี้



การเพิ่ม processes , sessions , transaction สูตร

1. Processes = X X  = 1000
2. Sessions   = X*1.1+5     = 1105
3. Transactions = sessions *1.1     = 1215

การ alter  system หลังจาก คำนวณค่าที่ต้องการได้แล้ว จากสูตรข้างบน

alter system set processes =1000 scope=spfile  sid = '*';

alter system set sessions=1105  scope=spfile sid = '*';

alter system set transactions=1215  scope=spfile sid = '*';

หลังจากนั้นให้ stop และ start database ใหม่


3.ติดตั้งโปรแกรมที่จำเป็นสำหรับระบบตามข้อ 1 
3.1 ติดตั้ง IIS7 





3.2.ติดตั้ง Dot Net Framework 

3.2.1 Dot Net Framework 2.0 SDK


3.2.2 Dot Net Framework 3.5 SP1 (ในส่วนนี้หากติดตั้ง IIS7 จะรวมมาอยู่แล้ว)


3.2.3 Dot Net Framework 4 (ในส่วนนี้สามารถข้ามขั้นตอนไปติดตั้ง MS Visual Studio 2010 Express ได้เพราะจะมี มาให้อยู่แล้วเช่นกัน)


3.3.ติดตั้ง MS Visual Studio .Net 2010 Express  (C#,Web Development)


3.3.1 ติดตั้ง Ms Visual .Net 2010 Express Web Developer



3.3.2 ติดตั้ง Ms Visual .Net 2010 Express C#

ตั้งตั้งเสร็จแล้วเปิด Web Developer 


แล้วใส่ Serial



3.4.ติดตั้ง Oracle 11g Data Access Components
Download ที่ : http://download.oracle.com/otn/other/ole-oo4o/ODAC112030_x64.zip

3.4.1 ติดตั้งโปรแกรม Oracle 11.1 Data Access Components for .Net Data Provider








3.4.2 กรณีใน Server ได้มีการติดตั้ง Oracle XE หรือ ตาม ขั้นตอนที่ 2 นั้น ต้องทำการเพิ่มเติม Window Config เพื่อให้ Oracle Path Default ชี้ไปที่ Oracle 10g XE เมื่อเรียกใช้ Oracle Client Command ดังนี้

Click ขวาเลือก Properties 

กดตาม Steps ดังรูป

สร้าง Env variable ใหม่ชื่อ ORACLE_HOME และกำหนด PATH ไปที่ Oracle 10g XE Path

แก้ไข ENV PATH โดยเพิ่ม %ORACLE_HOME%\bin ไว้ด้านหน้าสุด
แล้วกด OK

ทดสอบ Run SQLPLUS จะแสดงเป็น Version 10.2.0.1 


3.5.ติดตั้ง Sybase Data Window.Net 2.5






Copy File *.dll ไปทับยัง Path ที่ติดตั้ง Data Window .Net 



*กรณีที่ Crack ด้วยการ Copy DLL แล้ว Crack ไม่ได้ผล ให้ Download 
http://www.softpedia.com/progDownload/Cracklock-Download-95844.html
มาติดตั้ง 

ติดตั้งแล้ว กด Add Program และ ให้ Run App ผ่าน หน้าจอนี้ 




 

3.6.ติดตั้ง Sybase Power Builder 12 Classic






ทำการ Crack PB





3.7.ติดตั้ง GhostScript for PrintService 



4.ติดตั้ง GCOOP WebApp (FSCT) 
4.1 Extract Project Work space ไว้ที่ Dir C:\GCOOP_ALL  ซึ่งจะได้ PATH ดังนี้

4.2 เปิด File GCOOP_FSCT.sln ด้วย MS Visual Studio 2010 Express 



โปรแกรมจะถามให้สร้าง Path บน IIS กด Yes
ซึ่งเมื่อเปิด IIS จะพบว่าจะยังไม่มี Website ของ Project


Click ที่ Project saving แล้ว กด Run



เมื่อ Run เสร็จแล้วจะพบว่ามี Virtual Path FSCT เพิ่มขึ้นมา 


เลือกตามลำดับ แล้วแก้ไข Field ให้รองรับ App 32 bit และ เพิ่ม Timeout

หลังจากนั้น Click ขวาที่ Folder ที่ Highlight แล้ว เลือก Convert to Application


ตามลำดับจนเป็นดังรูป


จากนั้นเลือกที่ Default Site กดที่  Binding แล้วกด Add 



ให้ Add ข้อมูลตามรูปเพื่อให้รองรับ SSL ในการทำ Single Sign-on 


5.แก้ไขค่า Config ระบบ
5.1 แก้ไข File %WINDIR%/system32/driver/etc/hosts

โดยเพิ่มเติม Domain Name ดังนี้

ซึ่งในที่นี้ชื่อ HOST Server ที่จะบริการ Web App คือ fsct.isc 

192.168.1.99 fsct.isc   
192.168.1.99 sav.fsct.isc
192.168.1.99 sso.fsct.isc
192.168.1.99 ws.fsct.isc
192.168.1.99 wsreport

5.2 แก้ไข ค่า XML Config ในระบบ







5.2.1 ค่า XML Database Connection
แก้ไขที่ Default ให้ตรงกับ Oracle ที่ได้ Import ไปข้อ 2.
คือ 


*แก้ไขเป็น Data Source=192.168.1.98:1521/gcoop:shared;Persist Security Info=True;User ID=ifsct;Password=ifsct

5.2.2 ค่า XML Config ให้ตรวจสอบตัวแปรที่เกี่ยวกับ HOSTNAME ว่าตรงตามข้อ 10.1 หรือไม่ 
  ถ้าไม่ตรงแก้ไขแล้วบันทึกให้ตรง
6.ทดสอบการเข้าใช้งานระบบ ดังนี้

โดยทดสอบเปิดด้วย Firefox 


ทำการ Add not Trusted SSL ในครั้งแรกที่เปิดใช้งาน




เป็นอันเสร็จสิ้นการติดตั้งระบบ