แสดงบทความที่มีป้ายกำกับ dba แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ dba แสดงบทความทั้งหมด

วันจันทร์ที่ 12 พฤษภาคม พ.ศ. 2557

ทำไมต้องศึกษาออราเคิล Statspack

บ่อยครั้งที่ผมจะบอกเพื่อนที่ทำงานกับผลิตภัณฑ์ที่เกี่ยวกับฐานข้อมูลออราเคิล และไม่เชี่ยวชาญนักในฐานข้อมูลออราเคิล เมื่อมีปัญหาให้สร้างรายงานจาก AWR แล้วส่งมาให้ผมช่วยในการวิเคราะห์ วันนี้เพื่อนผมที่ใช้ Oracle Standard Edition 11G ส่งปัญหา WARNING: Since the DB Time is less than one second, there was minimal foreground activity in the snapshot period. Some of the percentage values will be invalid. ผมจึงแนะนำเพื่อนให้ติดตั้ง Oracle Statspack
ข้อดีในการใช้ Statspack อาจไม่ใช่แค่เพราะไม่เสียค่าใช้จ่ายในการใช้งาน แต่อาจเพราะว่า เราใช้ Oracle Standard One หรือ Standard Edition นั่นเป็นเหตุที่ต้องติดตั้งใช้งาน Oracle Statspack

ผมเลยเริ่มเขียนบทความ ออราเคิล (Oracle) Statspack (ติดตั้งและใช้งานเบื้องต้น)

อย่างไรก็ดีสิ่งที่สำคัญเราควรสามารถวิเคราะห์รายงานที่เกิดจาก Statspack หรือ AWR ได้

ตัวอย่างการติดตั้ง
SQL> connect / as sysdba
SQL> CREATE TABLESPACE PERFSTAT_TS DATAFILE '/u01/app/oracle/oradata/orcl/perfstat_ts01.dbf' size 50M autoextend on maxsize unlimited;
SQL> define default_tablespace='PERFSTAT_TS'
SQL> define temporary_tablespace='TEMP'
SQL> define perfstat_password='password'
SQL> @?/rdbms/admin/spcreate.sql
SQL> undefine perfstat_password
SQL> @?/rdbms/admin/spauto.sql
ตัวอย่างสร้าง Report
SQL> connect perfstat/password
SQL> define begin_snap=9
SQL> define end_snap=10
SQL> define report_name=report_name.txt
SQL> @?/rdbms/admin/spreport.sql

วันอาทิตย์ที่ 22 ธันวาคม พ.ศ. 2556

Oracle SQL Developer 4.0 ใหม่ สำหรับ DBA

บทความครั้งที่แล้วผมได้พูดถึง Oracle SQL Developer 4.0 ใหม่! ถ้าผู้อ่านได้มีโอกาสได้ลองทดสอบ จะพบว่ามีหลายๆ อย่างที่น่าสนใจ และมีฟีเจอร์ใหม่สำหรับ DBA ผู้อ่านสามารถ ดูได้จาก YouTube นี้
หรือลองทดสอบด้วยตัวเอง -:)


วันพฤหัสบดีที่ 12 ธันวาคม พ.ศ. 2556

Oracle SQL Developer 4.0 ใหม่! เพิ่มประสิทธิภาพการใช้งานกับ Oracle Database 12c

วันนี้ผมได้อ่านบทความบท tweeter และ Marketwactch - ออราเคิลได้เปิดตัว Oracle SQL Developer 4.0  (4.0.0.13.80). เราสามารถ Download เพื่อมาทดสอบได้จาก OTN เว็บ. Oracle SQL Developer 4.0 ตัวใหม่นี้ได้แก้ปัญหาเกียวกับบักมากกว่า 500 ตัว เราสามารถอ่านได้ที่...
ผู้ใช้จะพบกับฟีเจอร์ใหม่ๆ อันได้แก่
Database Performance Monitoring
Find Database Object - Search
Command Line
Cart
Reports
UI Enhancements
Data Modeler 4.0
JDK 7 Support
อ้างอิง
http://www.marketwatch.com/story/oracle-sql-developer-40-enhances-support-for-oracle-database-12c-2013-12-12
http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html

วันพุธที่ 2 ตุลาคม พ.ศ. 2556

เริ่มต้นเรียนรู้ Oracle APEX ด้วย Oracle_Developer_Day.ova

หากผู้อ่านสนใจ ในการศึกษา Oracle APEX เราสามารถเริ่มต้นติดตั้ง และเรียนรู้ในการสร้าง workspace ได้มากมายจากอินเตอร์เน็ท Getting Started.
บทความนี้ผมแนะนำการติดตั้ง ova ไฟล์ จาก Oracle Developer Day
สิ่งแรกผู้ติดตั้งต้องมีคือ Oracle VM VirtualBox
หลังจากนั้นดาวน์โหลด Oracle_Developer_Day.ova ต่อด้วย Import


หลังจากนั้นเราสามารถเปลี่ยนค่าบางอย่าง เช่น Memory และ อื่นๆ  ต่อด้วย start ...
หมายเหตุ พลาสเวิร์ด = "oracle"
เมื่อเรา remote เข้าไปไม่ว่าด้วย RDP หรือ ... เราจะทราบ IP Address ปัจจุบัน ต่อจากนั้นเช็คเกี่ยวกับ Oracle APEX -:)
login as: oracle
oracle@192.168.111.15's password:
Last login: Wed Oct  2 19:34:34 2013 from 192.168.111.14
All passwords are oracle or noted if otherwise.

The SQL Developer and Data Modeler scripts are in the directory:
/home/oracle/Desktop/SQLDev_Tutorials/sqldev

To Reset the labs:
SQL Developer:            /home/oracle/reset_sqldev
Application Express:      /home/oracle/reset_apex
In-Memory Database Cache: /home/oracle/reset_imdbcache
XML Database:             /home/oracle/reset_xmldb

Oracle Enterprise Manager
Start: emctl start dbconsole
Stop : emctl stop dbconsole
URL  : https://127.0.0.1:1158/em

*** Please note that this appliance is for testing purposes only,
as such it is unsupported and should not be used as a production environment.


          inet addr:192.168.111.15  Bcast:192.168.111.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0

LD_LIBRARY_PATH set to /home/oracle/app/oracle/product/TimesTen/tt1122/lib:/home/oracle/app/oracle/product/TimesTen/tt1122/ttoracle_home/instantclient_11_2:/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib

ANT_HOME set to /home/oracle/app/oracle/product/TimesTen/tt1122/3rdparty/ant

PATH set to /home/oracle/app/oracle/product/TimesTen/tt1122/bin:/home/oracle/app/oracle/product/TimesTen/tt1122/quickstart/sample_code/oci:/home/oracle/app/oracle/product/TimesTen/tt1122/quickstart/sample_code/odbc:/home/oracle/app/oracle/product/TimesTen/tt1122/quickstart/sample_code/odbc/xla:/home/oracle/app/oracle/product/TimesTen/tt1122/quickstart/sample_code/jdbc:/home/oracle/app/oracle/product/TimesTen/tt1122/quickstart/sample_code/odbc_drivermgr:/home/oracle/app/oracle/product/TimesTen/tt1122/quickstart/sample_code/proc:/home/oracle/app/oracle/product/TimesTen/tt1122/quickstart/sample_code/ttclasses:/home/oracle/app/oracle/product/TimesTen/tt1122/quickstart/sample_code/ttclasses/xla:/home/oracle/app/oracle/product/TimesTen/tt1122/ttoracle_home/instantclient_11_2:/home/oracle/app/oracle/product/TimesTen/tt1122/ttoracle_home/instantclient_11_2/sdk:/home/oracle/app/oracle/product/TimesTen/tt1122/3rdparty/ant/bin:/usr/java/latest/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin:/home/oracle/bin

CLASSPATH set to /home/oracle/app/oracle/product/TimesTen/tt1122/lib/ttjdbc6.jar:/home/oracle/app/oracle/product/TimesTen/tt1122/lib/orai18n.jar:/home/oracle/app/oracle/product/TimesTen/tt1122/lib/timestenjmsxla.jar:/home/oracle/app/oracle/product/TimesTen/tt1122/3rdparty/jms1.1/lib/jms.jar:.:/home/oracle/app/oracle/product/11.2.0/dbhome_2/ucp/lib/ucp.jar:/home/oracle/app/oracle/product/11.2.0/dbhome_2/jdbc/lib/ojdbc6.jar

TNS_ADMIN set to /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin

IP Address is:
          inet addr:192.168.111.15  Bcast:192.168.111.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0
[oracle@localhost ~]$
[oracle@localhost ~]$
[oracle@localhost ~]$ ./apexlistener.sh  status
+ . /etc/rc.d/init.d/functions
++ TEXTDOMAIN=initscripts
++ umask 022
++ PATH=/sbin:/usr/sbin:/bin:/usr/bin
++ export PATH
++ '[' -z '' ']'
++ COLUMNS=80
++ '[' -z '' ']'
+++ /sbin/consoletype
++ CONSOLETYPE=pty
++ '[' -f /etc/sysconfig/i18n -a -z '' ']'
++ . /etc/profile.d/lang.sh
+++ sourced=0
+++ for langfile in /etc/sysconfig/i18n '$HOME/.i18n'
+++ '[' -f /etc/sysconfig/i18n ']'
+++ . /etc/sysconfig/i18n
++++ LANG=en_US.UTF-8
++++ SYSFONT=latarcyrheb-sun16
+++ sourced=1
+++ for langfile in /etc/sysconfig/i18n '$HOME/.i18n'
+++ '[' -f /home/oracle/.i18n ']'
+++ '[' -n '' ']'
+++ '[' 1 = 1 ']'
+++ '[' -n en_US.UTF-8 ']'
+++ export LANG
+++ '[' -n '' ']'
+++ unset LC_ADDRESS
+++ '[' -n '' ']'
+++ unset LC_CTYPE
+++ '[' -n '' ']'
+++ unset LC_COLLATE
+++ '[' -n '' ']'
+++ unset LC_IDENTIFICATION
+++ '[' -n '' ']'
+++ unset LC_MEASUREMENT
+++ '[' -n '' ']'
+++ unset LC_MESSAGES
+++ '[' -n '' ']'
+++ unset LC_MONETARY
+++ '[' -n '' ']'
+++ unset LC_NAME
+++ '[' -n '' ']'
+++ unset LC_NUMERIC
+++ '[' -n '' ']'
+++ unset LC_PAPER
+++ '[' -n '' ']'
+++ unset LC_TELEPHONE
+++ '[' -n '' ']'
+++ unset LC_TIME
+++ '[' -n '' ']'
+++ unset LC_ALL
+++ '[' -n '' ']'
+++ unset LANGUAGE
+++ '[' -n '' ']'
+++ unset LINGUAS
+++ '[' -n '' ']'
+++ unset _XKB_CHARSET
+++ consoletype=pty
+++ '[' -z pty ']'
+++ '[' -n '' ']'
+++ '[' -n '' ']'
+++ '[' -n en_US.UTF-8 ']'
+++ case $LANG in
+++ '[' xterm = linux ']'
+++ unset SYSFONTACM SYSFONT
+++ unset sourced
+++ unset langfile
++ '[' -z '' ']'
++ '[' -f /etc/sysconfig/init ']'
++ . /etc/sysconfig/init
+++ BOOTUP=color
+++ GRAPHICAL=yes
+++ RES_COL=60
+++ MOVE_TO_COL='echo -en \033[60G'
+++ SETCOLOR_SUCCESS='echo -en \033[0;32m'
+++ SETCOLOR_FAILURE='echo -en \033[0;31m'
+++ SETCOLOR_WARNING='echo -en \033[0;33m'
+++ SETCOLOR_NORMAL='echo -en \033[0;39m'
+++ LOGLEVEL=3
+++ PROMPT=yes
+++ AUTOSWAP=no
++ '[' pty = serial ']'
++ '[' color '!=' verbose ']'
++ INITLOG_ARGS=-q
++ __sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'
+ NAME='Oracle Application Express Listener'
+ JAVA_HOME=/usr/java/latest
+ JAVA=/usr/java/latest/bin/java
+ APEXWAR=/home/oracle/listener/apex.war
+ ORACLE_SID=orcl
+ ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
+ OPTIONS=' -Xmx1024m -Xms256m -jar /home/oracle/listener/apex.war standalone >/tmp/apexListener.log '
+ LOGFILE=/tmp/apex_listener.log
++ ps -ef
++ grep apex
++ grep -v apexlistener
++ grep -v grep
++ cut -c9-15
+ PID='  2569 '
++ ps -ef
++ grep apex
++ grep -v apexlistener
++ grep -v grep
++ cut -c9-15
++ wc -l
+ RUNNING=1
+ case "$1" in
+ status
+ echo -n 'Status Oracle Application Express Listener: '
Status Oracle Application Express Listener: + '[' 1 -eq 1 ']'
+ echo APEX Listener running: 2569
APEX Listener running: 2569
+ ps -ef
+ grep 2569
oracle    2569     1  0 19:24 ?        00:00:04 /usr/java/latest/bin/java -Xmx1024m -Xms256m -jar /home/oracle/listener/apex.war standalone >/tmp/apexListener.log
oracle    3690  3673  0 19:43 pts/3    00:00:00 grep 2569
+ exit 0
[oracle@localhost ~]$ netstat -anp | grep 2569
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 :::8888                     :::*                        LISTEN      2569/java
tcp        0      0 ::ffff:127.0.0.1:46995      ::ffff:127.0.0.1:1521       ESTABLISHED 2569/java
tcp        0      0 ::ffff:127.0.0.1:46994      ::ffff:127.0.0.1:1521       ESTABLISHED 2569/java
tcp        0      0 ::ffff:127.0.0.1:46993      ::ffff:127.0.0.1:1521       ESTABLISHED 2569/java
unix  2      [ ]         STREAM     CONNECTED     7717   2569/java
หลังจากนั้นเปิด Browser เพื่อติดต่อ APEX

เมื่อ login เราสามารถสร้าง Workspace เพื่อศึกษาต่อไป

วันอังคารที่ 24 กันยายน พ.ศ. 2556

เรียนรู้ Oracle Multitenant Self-Service Provisioning - BETA

ออราเคิล "Multitenant Self-Service Provisioning" เป็นแอพิเคชั่นที่พัฒนาขึ้น เพื่อให้สามารถจัดการกับ Oracle Database 12c Multitenant ได้ง่ายมากขึ้น การติดตั้งนั้นต้องการ
- Oracle Database 12c Release 1
- Oracle Application Express 4.2.3.00.08
- Oracle Application Express Listener 2.0.4
ผมจะไม่ขอยกตัวอย่างในการติดตั้ง เพราะผู้อ่านสามารถดูได้จาก readme.txt ไฟล์ และ My Post!!! ติดตั้ง PDBSS.
และสามารถดูตัวอย่าง การใช้งาน PDBSS.

วันพุธที่ 18 กันยายน พ.ศ. 2556

APEX 4.2.3 บน CDB

ครั้งที่แล้วได้ลองทดสอบใช้ Patch set 17347169 ในการอัพเกรดฐานข้อมูลออราเคิล 12c CDB - APEX 4.2.3 - อัพเกรด APEX บนฐานข้อมูล 12c (Oracle Multitenant). วันนี้เป็นโอกาสดีในการทดสอบติดตั้ง APEX 4.2.3 บน CDB.
เริ่มต้นด้วยการใช้ apexins_con.sql ติดตั้ง APEX แบบ development บน CDB.
SQL> select CON_ID, NAME, OPEN_MODE from v$pdbs;

    CON_ID NAME                           OPEN_MODE
---------- ------------------------------ ----------
         2 PDB$SEED                       READ ONLY
         3 PDB_OPUN                       READ WRITE

SQL>  select COMP_ID, VERSION, CON_ID from cdb_registry where COMP_ID='APEX';

no rows selected

SQL>
[oracle@test12c ~]$ unzip -l apex_4.2.3.zip|tail
     2256  08-22-2012 10:46   apex/apxconf.sql
     4301  08-15-2013 04:08   apex/apxdvins.sql
     1150  08-22-2012 10:46   apex/apxchpwd.sql
        5  08-22-2012 10:46   apex/apxexit.sql
     4706  03-02-2013 22:19   apex/catapx.sql
      538  03-07-2008 21:20   apex/apxe102.sql
     3271  03-02-2013 22:19   apex/apxxepwd.sql
    13889  06-18-2011 00:08   apex/apexvalidate.sql
---------                     -------
989017663                     12307 files
[oracle@test12c ~]$ ls -la apex_4.2.3.zip
-rw-r--r--. 1 oracle oinstall 162660590 Sep 18 13:15 apex_4.2.3.zip
[oracle@test12c ~]$ cd /tmp/
[oracle@test12c tmp]$ man unzip
[oracle@test12c tmp]$ unzip /home/oracle/apex_4.2.3.zip ^C
[oracle@test12c tmp]$ pwd
/tmp
[oracle@test12c tmp]$ cd apex/
[oracle@test12c apex]$ ls
apex_epg_config_con.sql    apex_rest_config.sql  apxdevrm.sql      apxexit.sql       apxremov2.sql     apxxepwd.sql  images
apex_epg_config_core.sql   apexvalidate.sql      apxdvins_con.sql  apxldimg_con.sql  apxremov_con.sql  builder       load_trans.sql
apex_epg_config.sql        appins.sql            apxdvins.sql      apxldimg.sql      apxremov.sql      catapx.sql    owa
apexins_con.sql            apxchpwd.sql          apxe101.sql       apxpatch.sql      apxrtins_con.sql  core          utilities
apexins.sql                apxconf.sql           apxe102.sql       apxprereq.sql     apxrtins.sql      coreins.sql
apex_rest_config_con.sql   apxdbmig.sql          apxe111.sql       apxrelod.sql      apxsqler.sql      devins.sql
apex_rest_config_core.sql  apxdevrm_con.sql      apxe112.sql       apxremov1.sql     apxxemig.sql      endins.sql
[oracle@test12c apex]$
[oracle@test12c apex]$ ls -l apexins_con.sql
-rw-r--r--. 1 oracle oinstall 2042 Aug 31 13:38 apexins_con.sql
[oracle@test12c apex]$ sqlplus /nolog

SQL*Plus: Release 12.1.0.1.0 Production on Wed Sep 18 14:12:33 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> @apexins_con.sql SYSAUX SYSAUX TEMP /i/

PL/SQL procedure successfully completed.

Performing installation in multitenant container database in the background.
The installation progress is spooled into apexins_con*.log files.

Please wait...

Installation completed. Log files for each container can be found in:

apexins_con*.log

You can quickly scan for ORA errors or compilation errors by using a utility
like grep:

grep ORA- *.log
grep PLS- *.log

SQL> select CON_ID, NAME, OPEN_MODE from v$pdbs;

    CON_ID NAME                           OPEN_MODE
---------- ------------------------------ ----------
         2 PDB$SEED                       READ ONLY
         3 PDB_OPUN                       READ WRITE

SQL> select COMP_ID, VERSION, CON_ID from cdb_registry where COMP_ID='APEX';

COMP_ID                        VERSION                            CON_ID
------------------------------ ------------------------------ ----------
APEX                           4.2.3.00.08                             1
APEX                           4.2.3.00.08                             2
APEX                           4.2.3.00.08                             3
เนื่องจากต้องการใช้ Embedded PL/SQL Gateway เลยเซต HTTP port บน PDB (PDB_OPUN) และเปลี่ยน Password + unlock ให้กับ ANONYMOUS
SQL> alter session set container = PDB_OPUN;

Session altered.

SQL> @apxconf

      PORT
----------
      8080

Enter values below for the XDB HTTP listener port and the password for the Application Express ADMIN user.
Default values are in brackets [ ].
Press Enter to accept the default value.


Enter a value below for the password for the Application Express ADMIN user.


Enter a password for the ADMIN user              []

Session altered.

...changing password for ADMIN

PL/SQL procedure successfully completed.

Enter a port for the XDB HTTP listener [      8080] 8000
...changing HTTP Port

PL/SQL procedure successfully completed.

SQL>
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

Session altered.

SQL> ALTER USER ANONYMOUS IDENTIFIED BY PASSWORD ACCOUNT UNLOCK;

User altered.

SQL> select con_id, account_status from cdb_users where username='ANONYMOUS';

    CON_ID ACCOUNT_STATUS
---------- --------------------------------
         3 OPEN
         2 EXPIRED & LOCKED
         1 OPEN

SQL>
SQL> !lsnrctl status |grep 8000
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test12c)(PORT=8000))(Presentation=HTTP)(Session=RAW))

SQL>
จากนั้นก็ได้เวลาติดตั้ง Embedded PL/SQL Gateway
- apex_epg_config_con.sql ติดตั้ง Embedded PL/SQL Gateway ให้กับ CDB$ROOT, PDB$SEED และ PDB...
- apex_epg_config.sql ใช้ติดตั้งบน PDB ต้องการ
ในตัวอย่างนี้ ผมติดตั้ง Embedded PL/SQL Gateway ใน PDB_OPUN
[oracle@test12c apex]$ ls -l apex_epg_config_con.sql
-rw-r--r--. 1 oracle oinstall 2130 Aug 31 13:38 apex_epg_config_con.sql
[oracle@test12c apex]$ ls -l apex_epg_config.sql
-rw-r--r--. 1 oracle oinstall 831 Apr  6 13:09 apex_epg_config.sql
[oracle@test12c apex]$
[oracle@test12c apex]$
[oracle@test12c apex]$ sqlplus /nolog

SQL*Plus: Release 12.1.0.1.0 Production on Wed Sep 18 18:21:05 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> conn / as sysdba
Connected.
SQL>  alter session set container = PDB_OPUN;

Session altered.

SQL> show con_name

CON_NAME
------------------------------
PDB_OPUN
SQL> @apex_epg_config /tmp

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.

. Loading images directory: /tmp/apex/images

Directory created.

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

Commit complete.

Directory dropped.

timing for: Load Images
Elapsed: 00:02:13.11

PL/SQL procedure successfully completed.


Commit complete.

SQL>
หลังจากนั้นทดสอบเรียกจาก Browser ...
ตอนนี้เราสามารถใช้ APEX 4.2.3 ใน PDB (PDB_OPUN) ผ่าน Embedded PL/SQL Gateway.
จากนั้นเราอาจอนุญาติให้ APEX_040200 นั้นสามารถติดต่อไป Network ข้างนอก
SQL> conn / as sysdba
Connected.
SQL> alter session set container=pdb_opun;

Session altered.

SQL> show con_name

CON_NAME
------------------------------
PDB_OPUN
SQL> DECLARE
  2    ACL_PATH  VARCHAR2(4000);
  3  BEGIN
  4    -- Look for the ACL currently assigned to '*' and give APEX_040200
  5    -- the "connect" privilege if APEX_040200 does not have the privilege yet.
  6
  7    SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
  8     WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;
  9
 10    IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040200',
 11       'connect') IS NULL THEN
 12        DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
 13       'APEX_040200', TRUE, 'connect');
 14    END IF;
 15
 16  EXCEPTION
 17    -- When no ACL has been assigned to '*'.
 18    WHEN NO_DATA_FOUND THEN
 19    DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
 20      'ACL that lets power users to connect to everywhere',
 21      'APEX_040200', TRUE, 'connect');
 22    DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
 23  END;
 24  /
COMMIT;

PL/SQL procedure successfully completed.

SQL>
Commit complete.

SQL>
 อ่านเพิ่มเติม http://docs.oracle.com/cd/E16655_01/install.121/e17958/toc.htm

วันอาทิตย์ที่ 11 สิงหาคม พ.ศ. 2556

เรียนสร้างเทเบิลบนฐานข้อมูลออราเคิล 12c กับ Identity Column

วันนี้ได้มีโอกาสอ่านเกี่ยวกับการสร้างเทเบิลกับ  Identity คอลัมน์ ผมเกิดความสงสัยเลยลองหาข้อมูลและลองทดสอบดู จริงๆ แล้วคล้ายกับการที่เราสร้างเทเบิลแล้วมีการระบุ Sequence ให้กับคอลัมน์ที่ต้องการ อย่างไร? คิดง่ายๆ ว่า Option นี้ เข้ามาช่วยเราในการที่ไม่ต้องสร้าง Sequence เอง...

จะเห็นว่าเราสามารถเลือก ALWAYS (Oracle จะ generate ค่าของ sequence ทุกๆครั้ง เราไม่สามารถระบุค่าเองให้กับคอลัมน์นี้) และ BY DEFAULT (Oracle จะ generate ค่าของ sequence และเรายังสามารถระบุค่าในคอลัมน์นี้ได้เอง แต่ไม่สามารถระบุค่า NULL ยกเว้นเราใช้ BY DEFAULT ON NULL)
จำไว้ว่า  Identity คอลัมน์คือการสร้าง Sequence ดังนั้น USER ต้องมีสิทธิ์ในการสร้าง Sequence นะครับ

ขอใช้ตัวอย่างจาก Oracle Document มานำเสนอนะครับ
SQL> grant create table to demo;

Grant succeeded.

SQL> conn demo
Enter password:
Connected.
SQL> CREATE TABLE t1 (id NUMBER GENERATED AS IDENTITY, name varchar2(20));
CREATE TABLE t1 (id NUMBER GENERATED AS IDENTITY, name varchar2(20))
*
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> conn / as sysdba
Connected.
SQL> grant create sequence to demo;

Grant succeeded.

SQL> conn demo
Enter password:
Connected.
SQL> CREATE TABLE t1 (id NUMBER GENERATED AS IDENTITY, name varchar2(20));

Table created.

SQL> select * from USER_TAB_IDENTITY_COLS;

TABLE_NAME                     COLUMN_NAME                    GENERATION
------------------------------ ------------------------------ ----------
IDENTITY_OPTIONS
------------------------------------------------------------------------------------------------------------------------------------------------------
T1                             ID                             ALWAYS
START WITH: 1, INCREMENT BY: 1, MAX_VALUE: 9999999999999999999999999999, MIN_VALUE: 1, CYCLE_FLAG: N, CACHE_SIZE: 20, ORDER_FLAG: N

SQL> select * from user_sequences;

SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER PARTITION_COUNT S K
------------------------------ ---------- ---------- ------------ - - ---------- ----------- --------------- - -
ISEQ$$_92172                            1 1.0000E+28            1 N N         20           1                 N N

SQL> select * from T1;

no rows selected

SQL> desc T1
 Name                                                                                Null?    Type
 ----------------------------------------------------------------------------------- -------- --------------------------------------------------------
 ID                                                                                  NOT NULL NUMBER
 NAME                                                                                         VARCHAR2(20)

SQL> insert into T1(name) values('Surachart Opun');
1 row created.

SQL> select * from T1;

        ID NAME
---------- --------------------
         1 Surachart Opun

SQL> select * from user_sequences;

SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER PARTITION_COUNT S K
------------------------------ ---------- ---------- ------------ - - ---------- ----------- --------------- - -
ISEQ$$_92172                            1 1.0000E+28            1 N N         20          21                 N N

SQL> insert into T1(name) values('Test Again!');

1 row created.

SQL>  select * from T1;

        ID NAME
---------- --------------------
         1 Surachart Opun
         2 Test Again!

SQL> select * from user_sequences;

SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER PARTITION_COUNT S K
------------------------------ ---------- ---------- ------------ - - ---------- ----------- --------------- - -
ISEQ$$_92172                            1 1.0000E+28            1 N N         20          21                 N N
ตัวอย่างอื่นๆ
SQL> CREATE TABLE t2 (id NUMBER GENERATED BY DEFAULT AS IDENTITY (START WITH 100 INCREMENT BY 10), Name varchar2(20));

Table created.

SQL> select * from USER_TAB_IDENTITY_COLS where table_name='T2';

TABLE_NAME                     COLUMN_NAME                    GENERATION
------------------------------ ------------------------------ ----------
IDENTITY_OPTIONS
------------------------------------------------------------------------------------------------------------------------------------------------------
T2                             ID                             BY DEFAULT
START WITH: 100, INCREMENT BY: 10, MAX_VALUE: 9999999999999999999999999999, MIN_VALUE: 1, CYCLE_FLAG: N, CACHE_SIZE: 20, ORDER_FLAG: N


SQL> select * from t2;

no rows selected

SQL> insert into T2(name) values ('Chart');

1 row created.

SQL> select * from t2;

        ID NAME
---------- --------------------
       100 Chart

***************************************************************************
SQL> CREATE TABLE t3 (id NUMBER  GENERATED BY DEFAULT AS IDENTITY  , name varchar2(20));

Table created.

SQL> CREATE TABLE t4 (id NUMBER  GENERATED BY DEFAULT ON NULL AS IDENTITY , name varchar2(20));

Table created.

SQL>
SQL>
SQL> insert into T3 values(10,'TEST');

1 row created.

SQL> insert into T4 values(10,'TEST');

1 row created.

SQL> select * from T3;

        ID NAME
---------- --------------------
        10 TEST

SQL> c/3/4
  1* select * from T4
SQL> /

        ID NAME
---------- --------------------
        10 TEST

SQL> insert into T3(name) values ('Chart');

1 row created.

SQL> c/3/4
  1* insert into T4(name) values ('Chart')
SQL> /

1 row created.

SQL>  select * from T3;

        ID NAME
---------- --------------------
        10 TEST
         1 Chart

SQL> select * from T4
  2  /

        ID NAME
---------- --------------------
        10 TEST
         1 Chart

SQL>  insert into T3 values(NULL,'AAA');
 insert into T3 values(NULL,'AAA')
                       *
ERROR at line 1:
ORA-01400: cannot insert NULL into ("DEMO"."T3"."ID")


SQL> c/3/4
  1*  insert into T4 values(NULL,'AAA')
SQL> /

1 row created.

SQL> select * from t4;

        ID NAME
---------- --------------------
        10 TEST
         1 Chart
         2 AAA

SQL> CREATE TABLE t5  (id NUMBER  GENERATED ALWAYS AS IDENTITY , name varchar2(20));

Table created.

SQL> insert into T5 values(NULL,'AAA')
  2  /
insert into T5 values(NULL,'AAA')
*
ERROR at line 1:
ORA-32795: cannot insert into a generated always identity column


SQL> insert into T5 values(1,'AAA')
  2  /
insert into T5 values(1,'AAA')
*
ERROR at line 1:
ORA-32795: cannot insert into a generated always identity column


SQL>  insert into T5(name) values('TEST');

1 row created.

SQL> select * from T5;

        ID NAME
---------- --------------------
         1 TEST

หวังว่าจะมีประโยชน์กับเพื่อนๆ นะครับ

วันพุธที่ 22 พฤษภาคม พ.ศ. 2556

เรามาสร้างฐานข้อมูลออราเคิลด้วย DBCA กันครับ

เมื่อคุณจะสร้างฐานข้อมูลสักตัว คุณควรต้องรู้เสียก่อนว่า คุณต้องการสร้างฐานข้อมูลเพื่อใช้งานกับระบบแบบใด OLTP (Online transaction Processing) เช่น ระบบ retail billing, ระบบเว็บที่มีการตอบสนอง realtime
Data Warehouse เช่น ระบบข้อมูล research และ marketing หรือระบบที่ต้องการข้อมูลไปทำ reporting และ data analysis

จากนั้นเรายังต้องรู้เกี่ยวกับ Character Set เพราะเมื่อคุณสร้างฐานข้อมูลแล้วมันจะเป็นการยากที่จะต้องเปลี่ยน Character Set หรือบางครั้งถึงกับต้องสร้างฐานข้อมูลใหม่ ก่อนการเลือก Character Set เราก็ควรที่จะรู้เกี่ยวข้อมูลที่จะเก็บในฐานข้อมูล ว่าเป็นภาษาอะไรบ้าง หรือใช้แค่ภาษาไทยอย่างเดียว

จากนั้นเรามาทำความรู้จัก Database Configuration Assistant (DBCA) คร่าวๆ กัน
DBCA เป็นเครื่องมือที่ช่วยในการสร้างฐานข้อมูออราเคิล ช่วยในการจัดการบางอย่างกับฐานข้อมูล ลบฐานข้อมูล พร้อมกันนี้ใช้ในการจัดการ templates อีกด้วย

อ้างอิง ติดตั้งฐานข้อมูลออราเคิล (Oracle) 11gR2 บน OEL6

ต่อไปนี้คือการใช้ DBCA สร้างฐานข้อมูลคร่าวๆ (เริ่มจากคำสั่ง "dbca" บน linux)


 จากรูปข้างล่าง SID = orcl
Global Database Name = orcl.surachartopun
เมื่อสร้างฐานข้อมูลเรียบร้อย เราจะพบว่า
SQL> select name from v$database;

NAME
---------
ORCL

SQL> show parameter domain

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string      surachartopun








 กรณีนี้ต้องเลือก File System เพราะผมไม่ได้ติดตั้ง Grid Infrastructure และไม่มี ASM

พร้อมระบุ path ที่ต้องการวาง database files
ตัวอย่างหลังติดตั้งเสร็จ
[oracle@oralearning ~]$ ls /u01/app/oradata/*/*
/u01/app/oradata/orcl/control01.ctl  /u01/app/oradata/orcl/redo02.log    /u01/app/oradata/orcl/system01.dbf   /u01/app/oradata/orcl/users01.dbf
/u01/app/oradata/orcl/example01.dbf  /u01/app/oradata/orcl/redo03.log    /u01/app/oradata/orcl/temp01.dbf
/u01/app/oradata/orcl/redo01.log     /u01/app/oradata/orcl/sysaux01.dbf  /u01/app/oradata/orcl/undotbs01.dbf




หมายเหตุ รูปเกี่ยวกับ Memory ใน ฐานข้อมูลออราเคิล 11g
ในส่วนนี้ว่างๆจะอธิบายให้อ่าน เกี่ยวกับ Memory ลองพิจารญาจากรูปข้างบน


จากรูปข้างล่างเราต้องเลือก Character Set ที่เราต้องการ








เป็นอันติดตั้งเรียบร้อย
[oracle@oralearning ~]$ ps -aef |grep pmon
oracle    1634     1  0 21:13 ?        00:00:00 ora_pmon_orcl

ไหนๆ ก็ไหนๆ เรามาลองใช้ NETCA เพื่อสร้าง LISTENER (netca) กัน








[oracle@oralearning ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-MAY-2013 21:29:03

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oralearning)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                22-MAY-2013 21:28:56
Uptime                    0 days 0 hr. 0 min. 6 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oralearning/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oralearning)(PORT=1521)))
Services Summary...
Service "orcl.surachartopun" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.surachartopun" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
ตอนนี้เราก็มีฐานข้อมูลเพื่อการทดสอบ หรือใช้งานจริงกันแล้วนะครับ
ทดสอบเล็กๆ น้อยๆ

SQL> create user demo identified by demo;

User created.

SQL> grant create session to demo;

Grant succeeded.

SQL> connect demo/demo@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.200)(PORT = 1521)))(CONNECT_DATA = (SID = orcl)))
Connected.
SQL> show user
USER is "DEMO"
SQL>
SQL> connect demo/demo@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl.surachartopun)))
Connected.
SQL> show user;
USER is "DEMO"
SQL>
จากตัวอย่างข้างบนเราจะเห็นว่าการติดต่อฐานข้อมูลผ่าน LISTENER ด้วย SID และ SERVICE_NAME จะต่างกันเล็กน้อย ลองทบทวนการสร้างฐานข้อมูลข้างต้น หรือ ลองดูข้างล่าง

oracle@oralearning ~]$ ps -aef |grep pmon | grep -v grep
oracle    1634     1  0 21:13 ?        00:00:00 ora_pmon_orcl

[oracle@oralearning ~]$ lsnrctl service |grep Service
Services Summary...
Service "orcl.surachartopun" has 1 instance(s).
Service "orclXDB.surachartopun" has 1 instance(s).

วันจันทร์ที่ 20 พฤษภาคม พ.ศ. 2556

ติดตั้งฐานข้อมูลออราเคิล (Oracle) 11gR2 บน OEL6

วันนี้เรามาลองติดตั้งฐานข้อมูลออราเคิล 11gR2 บนออราเคิล Linux 6.4 กัน ก่อนอื่นเราสามารถอ่านเพิ่มเติมจาก Oracle Documents ในส่วนของการเตรียมระบบปฏิบัติการ และอื่นๆ ก่อนทำการติดตั้ง
http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm

จากนั้นเราสามารถดาวน์โหลดซอฟแวร์ออราเคิล 11.2.0.1 ได้ที่ http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
[surachart@oralearning ~]$ cat /etc/oracle-release
Oracle Linux Server release 6.4
[surachart@oralearning ~]$
 หมายเหตุ บน Oracle Linux 6 เราจะพบ oracle-rdbms-server-11gR2-preinstall package ที่ใช้ในการช่วยสำหรับทำหน้าที่ในส่วนของ Pre-Install RPM package สำหรับฐานข้อมูลออราเคิล 11gR2

ดังนั้นสิ่งแรกที่ควรต้องติดตั้ง หลังจากเราเตรียมพร้อมระบบปฏิบัติการเสร็จแล้วคือ  oracle-rdbms-server-11gR2-preinstall package :)
[root@oralearning ~]# yum list oracle-rdbms-server-11gR2-preinstall
Loaded plugins: security
Available Packages
oracle-rdbms-server-11gR2-preinstall.x86_64                                         1.0-7.el6                                         ol6_latest
[root@oralearning ~]# yum install oracle-rdbms-server-11gR2-preinstall
Loaded plugins: security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package oracle-rdbms-server-11gR2-preinstall.x86_64 0:1.0-7.el6 will be installed
--> Processing Dependency: xorg-x11-utils for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: gcc-c++ for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: gcc for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: libstdc++-devel for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: glibc-devel for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: compat-libstdc++-33 for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: xorg-x11-xauth for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: libaio-devel for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: ksh for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Processing Dependency: compat-libcap1 for package: oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64
--> Running transaction check
---> Package compat-libcap1.x86_64 0:1.10-1 will be installed
---> Package compat-libstdc++-33.x86_64 0:3.2.3-69.el6 will be installed
---> Package gcc.x86_64 0:4.4.7-3.el6 will be installed
--> Processing Dependency: cpp = 4.4.7-3.el6 for package: gcc-4.4.7-3.el6.x86_64
--> Processing Dependency: cloog-ppl >= 0.15 for package: gcc-4.4.7-3.el6.x86_64
---> Package gcc-c++.x86_64 0:4.4.7-3.el6 will be installed
--> Processing Dependency: libmpfr.so.1()(64bit) for package: gcc-c++-4.4.7-3.el6.x86_64
---> Package glibc-devel.x86_64 0:2.12-1.107.el6 will be installed
--> Processing Dependency: glibc-headers = 2.12-1.107.el6 for package: glibc-devel-2.12-1.107.el6.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.12-1.107.el6.x86_64
---> Package ksh.x86_64 0:20100621-19.el6_4.3 will be installed
---> Package libaio-devel.x86_64 0:0.3.107-10.el6 will be installed
---> Package libstdc++-devel.x86_64 0:4.4.7-3.el6 will be installed
---> Package xorg-x11-utils.x86_64 0:7.5-6.el6 will be installed
--> Processing Dependency: libXxf86misc.so.1()(64bit) for package: xorg-x11-utils-7.5-6.el6.x86_64
--> Processing Dependency: libdmx.so.1()(64bit) for package: xorg-x11-utils-7.5-6.el6.x86_64
--> Processing Dependency: libXxf86dga.so.1()(64bit) for package: xorg-x11-utils-7.5-6.el6.x86_64
---> Package xorg-x11-xauth.x86_64 1:1.0.2-7.1.el6 will be installed
--> Processing Dependency: libXmuu.so.1()(64bit) for package: 1:xorg-x11-xauth-1.0.2-7.1.el6.x86_64
--> Running transaction check
---> Package cloog-ppl.x86_64 0:0.15.7-1.2.el6 will be installed
--> Processing Dependency: libppl_c.so.2()(64bit) for package: cloog-ppl-0.15.7-1.2.el6.x86_64
--> Processing Dependency: libppl.so.7()(64bit) for package: cloog-ppl-0.15.7-1.2.el6.x86_64
---> Package cpp.x86_64 0:4.4.7-3.el6 will be installed
---> Package glibc-headers.x86_64 0:2.12-1.107.el6 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.12-1.107.el6.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.12-1.107.el6.x86_64
---> Package libXmu.x86_64 0:1.1.1-2.el6 will be installed
---> Package libXxf86dga.x86_64 0:1.1.3-2.el6 will be installed
---> Package libXxf86misc.x86_64 0:1.0.3-4.el6 will be installed
---> Package libdmx.x86_64 0:1.1.2-2.el6 will be installed
---> Package mpfr.x86_64 0:2.4.1-6.el6 will be installed
--> Running transaction check
---> Package kernel-uek-headers.x86_64 0:2.6.32-400.26.2.el6uek will be installed
---> Package ppl.x86_64 0:0.10.2-11.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================================
 Package                                            Arch                 Version                                 Repository                Size
================================================================================================================================================
Installing:
 oracle-rdbms-server-11gR2-preinstall               x86_64               1.0-7.el6                               ol6_latest                15 k
Installing for dependencies:
 cloog-ppl                                          x86_64               0.15.7-1.2.el6                          ol6_latest                93 k
 compat-libcap1                                     x86_64               1.10-1                                  ol6_latest                17 k
 compat-libstdc++-33                                x86_64               3.2.3-69.el6                            ol6_latest               183 k
 cpp                                                x86_64               4.4.7-3.el6                             ol6_latest               3.7 M
 gcc                                                x86_64               4.4.7-3.el6                             ol6_latest                10 M
 gcc-c++                                            x86_64               4.4.7-3.el6                             ol6_latest               4.7 M
 glibc-devel                                        x86_64               2.12-1.107.el6                          ol6_latest               973 k
 glibc-headers                                      x86_64               2.12-1.107.el6                          ol6_latest               604 k
 kernel-uek-headers                                 x86_64               2.6.32-400.26.2.el6uek                  ol6_latest               729 k
 ksh                                                x86_64               20100621-19.el6_4.3                     ol6_latest               686 k
 libXmu                                             x86_64               1.1.1-2.el6                             ol6_latest                65 k
 libXxf86dga                                        x86_64               1.1.3-2.el6                             ol6_latest                24 k
 libXxf86misc                                       x86_64               1.0.3-4.el6                             ol6_latest                17 k
 libaio-devel                                       x86_64               0.3.107-10.el6                          ol6_latest                13 k
 libdmx                                             x86_64               1.1.2-2.el6                             ol6_latest                20 k
 libstdc++-devel                                    x86_64               4.4.7-3.el6                             ol6_latest               1.6 M
 mpfr                                               x86_64               2.4.1-6.el6                             ol6_latest               156 k
 ppl                                                x86_64               0.10.2-11.el6                           ol6_latest               1.3 M
 xorg-x11-utils                                     x86_64               7.5-6.el6                               ol6_latest                94 k
 xorg-x11-xauth                                     x86_64               1:1.0.2-7.1.el6                         ol6_latest                34 k

Transaction Summary
================================================================================================================================================
Install      21 Package(s)

Total download size: 25 M
Installed size: 61 M
Is this ok [y/N]: y
Downloading Packages:
(1/21): cloog-ppl-0.15.7-1.2.el6.x86_64.rpm                                                                              |  93 kB     00:02
(2/21): compat-libcap1-1.10-1.x86_64.rpm                                                                                 |  17 kB     00:00
(3/21): compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm                                                                      | 183 kB     00:01
(4/21): cpp-4.4.7-3.el6.x86_64.rpm                                                                                       | 3.7 MB     00:30
(5/21): gcc-4.4.7-3.el6.x86_64.rpm                                                                                       |  10 MB     01:18
(6/21): gcc-c++-4.4.7-3.el6.x86_64.rpm                                                                                   | 4.7 MB     00:35
(7/21): glibc-devel-2.12-1.107.el6.x86_64.rpm                                                                            | 973 kB     00:10
(8/21): glibc-headers-2.12-1.107.el6.x86_64.rpm                                                                          | 604 kB     00:10
(9/21): kernel-uek-headers-2.6.32-400.26.2.el6uek.x86_64.rpm                                                             | 729 kB     00:00
(10/21): ksh-20100621-19.el6_4.3.x86_64.rpm                                                                              | 686 kB     00:03
(11/21): libXmu-1.1.1-2.el6.x86_64.rpm                                                                                   |  65 kB     00:00
(12/21): libXxf86dga-1.1.3-2.el6.x86_64.rpm                                                                              |  24 kB     00:00
(13/21): libXxf86misc-1.0.3-4.el6.x86_64.rpm                                                                             |  17 kB     00:00
(14/21): libaio-devel-0.3.107-10.el6.x86_64.rpm                                                                          |  13 kB     00:00
(15/21): libdmx-1.1.2-2.el6.x86_64.rpm                                                                                   |  20 kB     00:00
(16/21): libstdc++-devel-4.4.7-3.el6.x86_64.rpm                                                                          | 1.6 MB     00:08
(17/21): mpfr-2.4.1-6.el6.x86_64.rpm                                                                                     | 156 kB     00:01
(18/21): oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm                                                       |  15 kB     00:00
(19/21): ppl-0.10.2-11.el6.x86_64.rpm                                                                                    | 1.3 MB     00:13
(20/21): xorg-x11-utils-7.5-6.el6.x86_64.rpm                                                                             |  94 kB     00:00
(21/21): xorg-x11-xauth-1.0.2-7.1.el6.x86_64.rpm                                                                         |  34 kB     00:00
------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                           117 kB/s |  25 MB     03:39
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : libstdc++-devel-4.4.7-3.el6.x86_64                                                                                          1/21
  Installing : mpfr-2.4.1-6.el6.x86_64                                                                                                     2/21
  Installing : cpp-4.4.7-3.el6.x86_64                                                                                                      3/21
  Installing : kernel-uek-headers-2.6.32-400.26.2.el6uek.x86_64                                                                            4/21
  Installing : glibc-headers-2.12-1.107.el6.x86_64                                                                                         5/21
  Installing : glibc-devel-2.12-1.107.el6.x86_64                                                                                           6/21
  Installing : libXmu-1.1.1-2.el6.x86_64                                                                                                   7/21
  Installing : 1:xorg-x11-xauth-1.0.2-7.1.el6.x86_64                                                                                       8/21
  Installing : libdmx-1.1.2-2.el6.x86_64                                                                                                   9/21
  Installing : libXxf86dga-1.1.3-2.el6.x86_64                                                                                             10/21
  Installing : compat-libstdc++-33-3.2.3-69.el6.x86_64                                                                                    11/21
  Installing : libXxf86misc-1.0.3-4.el6.x86_64                                                                                            12/21
  Installing : xorg-x11-utils-7.5-6.el6.x86_64                                                                                            13/21
  Installing : libaio-devel-0.3.107-10.el6.x86_64                                                                                         14/21
  Installing : ppl-0.10.2-11.el6.x86_64                                                                                                   15/21
  Installing : cloog-ppl-0.15.7-1.2.el6.x86_64                                                                                            16/21
  Installing : gcc-4.4.7-3.el6.x86_64                                                                                                     17/21
  Installing : gcc-c++-4.4.7-3.el6.x86_64                                                                                                 18/21
  Installing : ksh-20100621-19.el6_4.3.x86_64                                                                                             19/21
  Installing : compat-libcap1-1.10-1.x86_64                                                                                               20/21
  Installing : oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64                                                                      21/21
  Verifying  : compat-libcap1-1.10-1.x86_64                                                                                                1/21
  Verifying  : xorg-x11-utils-7.5-6.el6.x86_64                                                                                             2/21
  Verifying  : ksh-20100621-19.el6_4.3.x86_64                                                                                              3/21
  Verifying  : gcc-c++-4.4.7-3.el6.x86_64                                                                                                  4/21
  Verifying  : ppl-0.10.2-11.el6.x86_64                                                                                                    5/21
  Verifying  : gcc-4.4.7-3.el6.x86_64                                                                                                      6/21
  Verifying  : libaio-devel-0.3.107-10.el6.x86_64                                                                                          7/21
  Verifying  : libXxf86misc-1.0.3-4.el6.x86_64                                                                                             8/21
  Verifying  : mpfr-2.4.1-6.el6.x86_64                                                                                                     9/21
  Verifying  : oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64                                                                      10/21
  Verifying  : glibc-devel-2.12-1.107.el6.x86_64                                                                                          11/21
  Verifying  : compat-libstdc++-33-3.2.3-69.el6.x86_64                                                                                    12/21
  Verifying  : libXxf86dga-1.1.3-2.el6.x86_64                                                                                             13/21
  Verifying  : 1:xorg-x11-xauth-1.0.2-7.1.el6.x86_64                                                                                      14/21
  Verifying  : libstdc++-devel-4.4.7-3.el6.x86_64                                                                                         15/21
  Verifying  : cpp-4.4.7-3.el6.x86_64                                                                                                     16/21
  Verifying  : libdmx-1.1.2-2.el6.x86_64                                                                                                  17/21
  Verifying  : libXmu-1.1.1-2.el6.x86_64                                                                                                  18/21
  Verifying  : cloog-ppl-0.15.7-1.2.el6.x86_64                                                                                            19/21
  Verifying  : glibc-headers-2.12-1.107.el6.x86_64                                                                                        20/21
  Verifying  : kernel-uek-headers-2.6.32-400.26.2.el6uek.x86_64                                                                           21/21

Installed:
  oracle-rdbms-server-11gR2-preinstall.x86_64 0:1.0-7.el6

Dependency Installed:
  cloog-ppl.x86_64 0:0.15.7-1.2.el6         compat-libcap1.x86_64 0:1.10-1             compat-libstdc++-33.x86_64 0:3.2.3-69.el6
  cpp.x86_64 0:4.4.7-3.el6                  gcc.x86_64 0:4.4.7-3.el6                   gcc-c++.x86_64 0:4.4.7-3.el6
  glibc-devel.x86_64 0:2.12-1.107.el6       glibc-headers.x86_64 0:2.12-1.107.el6      kernel-uek-headers.x86_64 0:2.6.32-400.26.2.el6uek
  ksh.x86_64 0:20100621-19.el6_4.3          libXmu.x86_64 0:1.1.1-2.el6                libXxf86dga.x86_64 0:1.1.3-2.el6
  libXxf86misc.x86_64 0:1.0.3-4.el6         libaio-devel.x86_64 0:0.3.107-10.el6       libdmx.x86_64 0:1.1.2-2.el6
  libstdc++-devel.x86_64 0:4.4.7-3.el6      mpfr.x86_64 0:2.4.1-6.el6                  ppl.x86_64 0:0.10.2-11.el6
  xorg-x11-utils.x86_64 0:7.5-6.el6         xorg-x11-xauth.x86_64 1:1.0.2-7.1.el6

Complete!
[root@oralearning ~]#
[root@oralearning ~]# yum list oracle-rdbms-server-11gR2-preinstall
Loaded plugins: security
Installed Packages
oracle-rdbms-server-11gR2-preinstall.x86_64                                        1.0-7.el6                                         @ol6_latest
[root@oralearning ~]#
จากการติดตั้ง oracle-rdbms-server-11gR2-preinstall package เราควรพบ "oracle" user บนระบบปฏิบัติการ
[root@oralearning ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)

จากนั้นขอสร้างโฟลเดอร์ ที่ต้องการติดตั้งสักซอฟเวอร์สักหน่อย... ตามด้วย Profile และเช็ค hosts ไฟล์
[root@oralearning ~]# mkdir -p /u01/app
[root@oralearning ~]# chown -R oracle:oinstall /u01/app
[root@oralearning ~]# cat /etc/profile.d/oracle.sh
if [ $USER = "oracle" ]; then
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
fi
[root@oralearning ~]# chmod 755 /etc/profile.d/oracle.sh
[root@oralearning ~]#

[root@oralearning ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.111.200 oralearning

ตามด้วยตรวจสอบซอฟแวร์พร้อม uncompress ออราเคิลซอฟแวร์
[oracle@oralearning SRC]$ pwd
/u01/SRC
[oracle@oralearning SRC]$ ls
database  linux.x64_11gR2_database_1of2.zip  linux.x64_11gR2_database_2of2.zip
[oracle@oralearning SRC]$ cd database/
[oracle@oralearning database]$ unzip ../linux.x64_11gR2_database_1of2.zip
[oracle@oralearning database]$ unzip ../linux.x64_11gR2_database_2of2.zip

เมื่อทุกอย่างพร้อม และต้องการติดตั้ง ก็ Connect เข้าไปยังเซิร์ฟเวอร์แบบใช้ GUI... เราอาจใช้ VNC เข้ามาช่วย หรือติดตั้งแบบ silence mode (ตัวอย่าง)


ในตัวอย่างตรงนี้ ผมจะใช้ GUI เพื่อให้ง่าย... หลังจาก Connect VNC และ ทดสอบ xclock  ...จากนั้นเริ่มติดตั้ง
[oracle@oralearning database]$ ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 26674 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 3967 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2013-05-17_06-31-14PM. Please wait ...[oracle@oralearning database]$ You can find the log of this install session at:
 /u01/app/oraInventory/logs/installActions2013-05-17_06-31-14PM.log


กรณีนี้เราเลือกติดตั้งซอฟเวอร์เท่านั้น

หลังจากนั้นเราจะพบประเภทของฐานข้อมูลที่ต้องการติดตั้ง ในกรณีนี้เรามีแค่เครื่องเดียว และไม่มีแชร์ดิสต์ จึงลือก "Single instance database installation"


จากรูปข้างล่าง นั้นคือขั้นตอนที่เลือก database edition. (ขอเลือก Enterprise Edition เพราะเราจะสามารถทดสอบได้ทุกๆ ฟีเจอร์) ตรวจสอบเพิ่มเติม

ในส่วนนี้เซต ORACLE_BASE และ ORACLE_HOME paths



ณ. จุดนี้จะพบว่าการเช็ค packages นั้น Failed สิ่งแรกที่ควรทำ คือการเช็คบนระบบปฏิบัติการ (แต่กรณีนี้ ผมใช้ OL6.4 อาจเป็นไปได้ที่ packages ที่ติดตั้งใหม่กว่า ดังนั้น "Ignore All" สำหรับกรณีนี้)



จากรูปข้างบน เราต้อง login เป็น "root" แล้วรัน scripts จากรูป
[root@oralearning ~]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@oralearning ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
Running Oracle 11g root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/11.2.0/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
[root@oralearning ~]#
เมื่อเรียบร้อย จากนั้นเลือก "OK"

ตอนนี้ติดตั้งเรียบร้อย แล้วครับ
อย่างไรก็ตาม เราสามารถเช็คปัญหาในการติดตั้งที่ได้ที่ /u01/app/oraInventory/logs/installActions2013-05-17_06-31-14PM.log ไฟล์