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

วันศุกร์ที่ 16 พฤษภาคม พ.ศ. 2557

เรียน 12c multitenant - จะเกิดอะไรขึ้นถ้า Connect PDB และสร้าง UNDO tablespace

อย่างที่เราพอทราบกันดีว่าฐานข้อมูลออราเคิล 12c multitenant (เมื่อเราสร้างฐานข้อมูลแบบ CDB) เราจะใช้ UNDO ร่วมกัน และหากต้องการสร้าง UNDO tablespace ขณะที่เรา connect อยู่ PDB (ไม่ใช่ CDB$ROOT) จะเกิดอะไรขึ้น....
ทดสอบ
SQL>   select name, cdb from v$database;
NAME      CDB
--------- ---
CDB       YES
SQL> select * from v$version;
BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0
PL/SQL Release 12.1.0.1.0 - Production                                                    0
CORE    12.1.0.1.0      Production                                                                0
TNS for Linux: Version 12.1.0.1.0 - Production                                            0
NLSRTL Version 12.1.0.1.0 - Production                                                    0
SQL> show user;
USER is "SYS"
SQL>
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT

SQL> alter session set container=PDB1;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
PDB1
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/cdb/pdb1/system01.dbf
/u01/app/oracle/oradata/cdb/pdb1/sysaux01.dbf
SQL> create undo tablespace undotbs1 datafile '/u01/app/oracle/oradata/cdb/pdb1/undo01.dbf'; 
Tablespace created.
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
TEMP
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/cdb/pdb1/system01.dbf
/u01/app/oracle/oradata/cdb/pdb1/sysaux01.dbf 
SQL> !ls -l /u01/app/oracle/oradata/cdb/pdb1/
total 963292
-rw-r-----. 1 oracle oinstall  20979712 Apr  8 12:01 pdb1_temp01.dbf
-rw-r-----. 1 oracle oinstall 713039872 Apr  9 20:06 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 272637952 Apr  9 20:06 system01.dbf
SQL>
สรุปก็คือ คำสั่งไม่เกิด Error ใดๆ แต่ UNDO tablespace และ database file จะไม่ถูกสร้าง... 

วันพฤหัสบดีที่ 15 พฤษภาคม พ.ศ. 2557

เรียน 12c กับ DDL Log file

บนฐานข้อมูลออราเคิล 12c เราจะพบฟีเจอร์ที่เรียกว่า DDL log file จริงๆ แล้วเราจะพบบน 11.2 เช่นกัน
แต่สิ่งที่ต่างเราจะพบโฟลเดอร์ใหม่ $ADR_HOME/log/ddl เมื่อเราเซตค่า enable_ddl_logging เป็น true แล้วเรา ddl
- CREATE TABLE
- CREATE INDEX
- CREATE USER
- DROP USER
- ETC
เราจะพบ log.xml ที่ $ADR_HOME/log/ddl และสามารถใช้ adrci ในการอ่าน log file
ตัวอย่าง
[oracle@linux01 ddl]$ pwd
/u01/app/oracle/diag/rdbms/orcl17/orcl17/log/ddl
[oracle@linux01 ddl]$
[oracle@linux01 ddl]$ sqlplus  / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sat Apr 19 06:53:50 2014
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> show parameter enable_ddl_logging
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
enable_ddl_logging                   boolean     FALSE
SQL> ALTER SYSTEM SET enable_ddl_logging=TRUE;
System altered.
SQL> conn demo
Enter password:
Connected.
SQL> create table C as select * from tab;
Table created.
SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
[oracle@linux01 ddl]$
[oracle@linux01 ddl]$ ls log.xml
log.xml

[oracle@linux01 ddl]$ ls ../ddl_orcl17.log
../ddl_orcl17.log 
[oracle@linux01 ddl]$ cat log.xml
<msg time='2014-04-19T06:54:28.950+07:00' org_id='oracle' comp_id='rdbms'
 msg_id='opiexe:4181:2946163730' type='UNKNOWN' group='diag_adl'
 level='16' host_id='linux01' host_addr='192.168.111.60'
 version='1'>
 <txt>create table C as select * from tab
 </txt>
</msg>
[oracle@linux01 ddl]$
[oracle@linux01 ddl]$ adrci
ADRCI: Release 12.1.0.1.0 - Production on Sat Apr 19 06:58:17 2014
Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.
ADR base = "/u01/app/oracle"
adrci> show home
ADR Homes:
diag/rdbms/orcl17/orcl17
adrci> SHOW LOG;
ADR Home = /u01/app/oracle/diag/rdbms/orcl17/orcl17:
*************************************************************************
Output the results to file: /tmp/utsout_24419_14020_1.ado
2014-04-19 06:54:28.950000 +07:00
create table C as select * from tab
หมายเหตุ ENABLE_DDL_LOGGING  เราต้องใช้ "Change Management Pack" license เมื่อเซตค่า TRUE

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

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

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


วันอังคารที่ 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