Sep-13

25-Sep

Oracle open world

https://blogs.oracle.com/oracleopenworld/entry/larry_ellison_keynote_everything_runs#more-1368107

Table recovery

http://www.pythian.com/blog/table-recovery-with-rman-in-database-12c/

Linux user session details

$ more /proc/<pid>/statm

$ more /proc/<pid>/status

Log sync and parallel log writes

http://tonyhasler.wordpress.com/2011/07/

Oracle IMU notes.

IMU – In Memory Undo is the change vector for undo block changes due to a transaction where transaction redo is stored in Private redo strands.  You can disable or enable this feature by setting the parameter, by default it is TRUE.

 Parameter                                          Session Value   Instance Value<br
 -------------------------------------------------- --------------- ---------------
 _in_memory_undo                                    TRUE            TRUE
 

When you enable IMU, you can see the IMU buffers through x$ktifp as

 SQL>set pagesize 60
 SQL> select ADDR,KTIFPNO, KTIFPSTA, KTIFPXCB xctaddr,
 to_number(KTIFPUPE, 'XXXXXXXXXXXXXXXX')-
 to_number(KTIFPUPB, 'XXXXXXXXXXXXXXXX') ubsize,
 (to_number(KTIFPUPB, 'XXXXXXXXXXXXXXXX')-  to_number(KTIFPUPC, 'XXXXXXXXXXXXXXXX'))*-1 ubusage,
 to_number(KTIFPRPE, 'XXXXXXXXXXXXXXXX')- to_number(KTIFPRPB, 'XXXXXXXXXXXXXXXX') rbsize,
 (to_number(KTIFPRPB, 'XXXXXXXXXXXXXXXX')-to_number(KTIFPRPC, 'XXXXXXXXXXXXXXXX'))*-1 rbusage,
 KTIFPPSI,KTIFPRBS,KTIFPTCN
 from x$ktifp;
 ADDR                KTIFPNO   KTIFPSTA XCTADDR              UBSIZE    UBUSAGE     RBSIZE    RBUSAGE   KTIFPPSI   KTIFPRBS   KTIFPTCN
 ---------------- ---------- ---------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
 00007FE117EDB948          0          1 000000011BF3C6A0      64000      53064     126464      51556          2         64       9198
 00007FE117EDB948          1          0 00                    64000          0          0          0      65535 2147483647         78
 00007FE117EDB948          2          0 00                    64000          0          0          0      65535 2147483647          5
 00007FE117EDB948          3          0 00                    64000          0          0          0      65535 2147483647          1
 00007FE117EDB948          4          0 00                    64000          0          0          0      65535 2147483647          1
 00007FE117EDB948          5          0 00                    64000          0          0          0      65535 2147483647         24
 00007FE117EDB948          6          0 00                    64000          0          0          0      65535 2147483647        297
 00007FE117EDB948          7          0 00                    64000          0          0          0      65535 2147483647          6
 00007FE117EDB948          8          0 00                    64000          0          0          0      65535 2147483647       6233
 00007FE117EDB948          9          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         10          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         11          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         12          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         13          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         14          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         15          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         16          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         17          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         18          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         19          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         20          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         21          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         22          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         23          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         24          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         25          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         26          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         27          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         28          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         29          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         30          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         31          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         32          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         33          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         34          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         35          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         36          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         37          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         38          0 00                    64000          0          0          0      65535 2147483647          0
 00007FE117EDB948         39          0 00                    64000          0          0          0      65535 2147483647          0

 40 rows selected.
 

There are 40 IMU buffers derived from the transaction parameter.  The number of IMU memory will be 10% of the transactions, in our case it is 400.

 SQL> show parameter transactions
 NAME                                 TYPE                             VALUE
 ------------------------------------ -------------------------------- ------------------------------
 transactions                         integer                          400
 

These 40 IMU buffers are protected by 40 IMU latches

 SQL>; select name,count(*) from v$latch_children
 where name='In memory undo latch'
 group by name;
 NAME                                                               COUNT(*)
 ---------------------------------------------------------------- ----------
 In memory undo latch                                                     40
 

24-Sep

IMU and private redo strand notes

http://avdeo.com/2013/09/22/redo-behavior/

http://yong321.freeshell.org/oranotes/IMU.txt

http://blog.tanelpoder.com/files/Oracle_Performance_Scalability_10g_11g.pdf

The private redo strand behaviour if redo buffer size is more thna redo log file

http://nzdba.wordpress.com/tag/xkcrfstrand/http://nzdba.wordpress.com/tag/xkcrfstrand/

There are PUBLIC and PRIVATE redo strands.  Private redo strands is part shared pool and defined in SGA and can view in v$sgastat

 SQL> Select  *  from  V$sgastat  WHERE  name  like  '%strand%' ;
 POOL                   NAME                               BYTES
 ------------              --------------------------         ----------
 shared pool      private strands               3677184
 

LOG BUFFER is divided into mutiple buffers known as PUBLIC Strands.

You can list the private strands from X$KCRFSTRAND

 SQL> select INDX,  last_buf_kcrfa,
 3  PNEXT_BUF_KCRFA_CLN nxtbufadr,
 4  NEXT_BUF_NUM_KCRFA_CLN nxtbuf#,
 5  BYTES_IN_BUF_KCRFA_CLN "B/buf",
 6  PVT_STRAND_STATE_KCRFA_CLN state,
 7  STRAND_NUM_ORDINAL_KCRFA_CLN strand#,
 8  PTR_KCRF_PVT_STRAND stradr,
 9  INDEX_KCRF_PVT_STRAND stridx,
 10  SPACE_KCRF_PVT_STRAND strspc,
 11  TXN_KCRF_PVT_STRAND txn,
 12  TOTAL_BUFS_KCRFA totbufs#,
 13  STRAND_SIZE_KCRFA strsz
 14  from X$KCRFSTRAND where LAST_BUF_KCRFA='00';

 INDX LAST_BUF_KCRFA   NXTBUFADR           NXTBUF#      B/buf      STATE    STRAND# STRADR               STRIDX     STRSPC        TXN   TOTBUFS#      STRSZ
 ---------- ---------------- ---------------- ---------- ---------- ---------- ---------- ---------------- ---------- ---------- ---------- ---------- ----------
 2 00               00                        0          0          0 3735928559 000000011CF2C054 3735928559     126464          0        249     132096
 3 00               00                        0          0          0 3735928559 000000011CF4D054 3735928559     126464          1        249     132096
 4 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 5 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 6 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 7 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 8 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 9 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 10 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 11 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 12 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 13 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 14 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 15 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 16 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 17 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 18 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 19 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 20 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 21 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 22 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 23 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 24 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 25 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 26 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 27 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 28 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 29 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 30 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 31 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 32 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 33 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 34 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 35 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 36 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 37 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 38 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 39 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 40 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 41 00               00                        0          0          0 3735928559 00                        0          0          0        249     132096
 40 rows selected.
 

The 40 private strands derived from the 10% TRANSACTIONS parameter which is configured to 400.  Each PRIVATE redo strand is sizing to 132096 bytes – 128KB + 1KB overhead.

 SQL> show parameter transactions
 NAME                                 TYPE                             VALUE
 ------------------------------------ -------------------------------- ------------------------------
 transactions                         integer                          400
 

Out of 40 private strands, there are only 2 got valid address and rest are disabled initially.  Extra private strands will get activated as and when the number of transactions need more redo strands. If there are more concurrent transactions than private strands, then the redo will be directly written to the PUBLIC strands.

Number of PUBLIC strands decided by the underscore parameter

 SQL> col "Parameter" FOR a50
 SQL> col "Session Value" FOR a15
 SQL> col "Instance Value" FOR a15
 SQL> SELECT a.ksppinm "Parameter", b.ksppstvl "Session Value", c.ksppstvl "Instance Value"
 2  FROM x$ksppi a, x$ksppcv b, x$ksppsv c
 3  WHERE a.indx = b.indx AND a.indx = c.indx
 4  -- AND substr(ksppinm,1,1)='_'
 5  AND a.ksppinm LIKE '%&amp;parameter%'
 6  ORDER BY a.ksppinm;
 Enter value for parameter: _log_parallelism_max
 old   5: AND a.ksppinm LIKE '%&amp;parameter%'
 new   5: AND a.ksppinm LIKE '%_log_parallelism_max%'
 Parameter                                          Session Value   Instance Value
 -------------------------------------------------- --------------- ---------------
 _log_parallelism_max                               2               2
 

The database is configured to have 2 PUBLIC strands in log buffer and can be viewed from X$KCRFSTRAND.


SQL> select INDX,

2  last_buf_kcrfa,

3  PNEXT_BUF_KCRFA_CLN nxtbufadr,

4  NEXT_BUF_NUM_KCRFA_CLN nxtbuf#,

5  BYTES_IN_BUF_KCRFA_CLN "B/buf",

6  PVT_STRAND_STATE_KCRFA_CLN state,

7  STRAND_NUM_ORDINAL_KCRFA_CLN strand#,

8  PTR_KCRF_PVT_STRAND stradr,

9  INDEX_KCRF_PVT_STRAND stridx,

10  SPACE_KCRF_PVT_STRAND strspc,

11  TXN_KCRF_PVT_STRAND txn,

12  TOTAL_BUFS_KCRFA totbufs#,

13  STRAND_SIZE_KCRFA strsz

14  from X$KCRFSTRAND where LAST_BUF_KCRFA!='00';

INDX LAST_BUF_KCRFA   NXTBUFADR           NXTBUF#      B/buf      STATE    STRAND# STRADR               STRIDX     STRSPC        TXN   TOTBUFS#      STRSZ

---------- ---------------- ---------------- ---------- ---------- ---------- ---------- ---------------- ---------- ---------- ---------- ---------- ----------

0 0000000062A21E00 0000000060240800        243          0          0 3735928559 00                        0          0          0      81920   41943040

1 0000000065221E00 0000000065222000      81919          0          0 3735928559 00                        0          0          0      81920   41943040

LOG BUFFER is configured to 83886080 bytes which is divided into two PUBLIC strands each equal to 41943040 bytes each.


SQL> show parameter log_buffer

NAME                                 TYPE                             VALUE

------------------------------------ -------------------------------- ------------------------------

log_buffer                           integer                          83886080

There are total 42 redo strands including both 40 PRIVATE and 2 PUBLIC. These 42 PUBLIC and PRIVATE strands are protected by 42 ‘REDO ALLOCAITON’ latches.


SQL> select NAME,count(*) from v$latch_children where NAME like '%redo allocation%' group by name;

NAME                                                               COUNT(*)

---------------------------------------------------------------- ----------

redo allocation                                                          42

In the fllowing situations, PRIVATE REDO strands are not available

  • When the database is configured with flashback
  • When the database is configured with supplemental  logging
  • Not implemented in RAC

23-Sep

private redo strands

http://oracleadmins.wordpress.com/2008/08/30/a-new-learning-imu-private-redo-strand/

Base table : x$kcrfstrand

20-Sep

11.2 onwards, you need not set FAL_CLIENT for a standby database.

http://docs.oracle.com/cd/E11882_01/server.112/e25608/whatsnew.htm#sthref6

You cna use the below SQL to flush redo to the standby Database during the failover time.

SQL> ALTER SYSTEM FLUSH REDO

19-Sep

Exadata and MBRC

http://jongsma.wordpress.com/2013/09/18/exadata-system-stats-and-mbrc/#more-1367846

MViews and partition exchange

http://jonathanlewis.wordpress.com/2013/09/11/mv-refresh-3/#more-1367426

ORA-01031: insufficient privileges – while creating a FOREIGN KEY constraint.  Missing REFERENCES privilage.


SQL>conn thomas/Thomas

Connected.

SQL> create table dept (deptid number,dname varchar2(25));

Table created.

SQL> alter table dept add constraint p_deptid primary key (deptid);
 Table altered.

SQL> grant select on dept to roy ;

Grant succeeded.

SQL>conn roy/roy

Connected.

SQL>create table emp(empid number,ename varchar2(25),deptid number);

Table created.

SQL>alter table emp add constraint f_deptid FOREIGN KEY (deptid) REFERENCES thomas.dept (deptid);

alter table emp add constraint f_deptid FOREIGN KEY (deptid) REFERENCES thomas.dept (deptid)

ERROR at line 1: ORA-01031: insufficient privileges

SQL> conn thomas/thomas

Connected.

SQL>grant references on dept to roy;

Grant succeeded.

SQL> conn roy/roy

Connected.

SQL> alter table emp add constraint f_deptid FOREIGN KEY (deptid) REFERENCES thomas.dept (deptid);

Table altered.

18-Sep

ROW limiting for a DETERMINISTIC query – 12c new feature.

http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_10002.htm#SQLRF55636

THP – Linux Transparent Huge Pages

https://blogs.oracle.com/linux/entry/performance_issues_with_transparent_huge

17-Sep

AWR wait reporting

http://databaseperformance.blogspot.in/2013/09/awr-summary-reporting-3-waits.html

12c – last successful login time

http://arup.blogspot.in/2013/09/last-successful-login-time-in-sqlplus.html

Oracle Magazine – Sept-2013 published

http://www.oracle.com/technetwork/issue-archive/2013/index.html

Exadata _SERIAL_DIRECT_READ

http://blog.tanelpoder.com/2013/05/29/forcing-smart-scans-on-exadata-is-_serial_direct_read-parameter-safe-to-use-in-production/#more-2191

15-Sep

ASH wait chain history – Tanel

http://blog.tanelpoder.com/2013/09/11/advanced-oracle-troubleshooting-guide-part-11-complex-wait-chain-signature-analysis-with-ash_wait_chains-sql/?utm_source=rss&utm_medium=rss&utm_campaign=advanced-oracle-troubleshooting-guide-part-11-complex-wait-chain-signature-analysis-with-ash_wait_chains-sql

System statistics

http://kerryosborne.oracle-guy.com/2013/09/system-statistics-exadata-mode/#more-1367568

Adaptive execution plans.

https://blogs.oracle.com/optimizer/entry/what_s_new_in_12c

Adaptive execution plans – Thomas Kyte

http://www.youtube.com/watch?v=9o9iuxNBciQ&feature=youtu.be

To enbale Adaptive Execution plans, make sure we set OPTIMIZER_ADAPTIVE_REPORTING_ONLY to FALSE.

http://docs.oracle.com/cd/E16655_01/server.121/e17615/refrn10327.htm

Moving – renameing data files online.

http://www.youtube.com/watch?v=gTcuJBVgSQc

Automatic data optimization – 12c

http://www.oracle.com/technetwork/database/enterprise-edition/automatic-data-optimization-wp-12c-1896120.pdf?ssSourceSiteId=ocomen

Database growth Survey

http://www.oracle.com/us/products/database/2013-database-growth-survey-2012286.pdf

Fix for Oracle debug issue

http://blog.red-database-security.com/2013/09/13/fix-for-oradebug-disable-auditing-available-11-2-0-3/#more-1367533

SQL ROLLUP function in GROUP BY

http://www.grassroots-oracle.com/2013/09/sql-101-group-by-rollup.html#more-1367519

Playing with SQL_ID

http://carlos-sierra.net/2013/09/12/function-to-compute-sql_id-out-of-sql_text/#more-1367497

Oracle 12c upgrade exam

https://blogs.oracle.com/certification/entry/0856_18#more-1367488

Oracle Sept-2013 News Letter

http://www.oracle.com/us/dm/h2fy11/100221570-index-oem-2004167.html?msgid=3-8958957343

Analytical Function – ROLLUP, CUBE, GROUPING

http://www.oracle-base.com/articles/misc/rollup-cube-grouping-functions-and-grouping-sets.php#rollup

11-Sep

IMU – In Memory Undo Management

http://www.trutek.com/uploads/docs/In%20Memory%20Undo%201g_1

ASH Usage

http://www.kylehailey.com/finding-the-slowest-sql-execution-of-the-same-query/

05-Sep

Oracle Advanced Compression Option  (ACO) :  In Oracle 12c Oracle automatically optimizes (compresses) the data in a table.  Oracle detects the compression candidates using ‘Heat Map’ where ever maximum changes happenes or the defined conditions met.    ‘Meat Map’ and ADO (Automatic Data Optimization)  works togather to detect and compress the data automatically, helps to implement Information Lifecyle Management (ILM) strategies.

An ADO policy can be defined as – After 5 days of modification compress the data automatically – Smart Compression.

SQL> ALTER TABLE EMP ILM ADD POLICY ROW STORE  COMPRESS ADVANCED SEGMENT AFTER 5 DAYS OF NO MODIFICATION;

SQL> ALTER TABLE EMP ILM ADD POLICY TIER TO usertbs            ==> Move the table to a different tablespace when a condition meets -l ike the TBS is full

02-Sept

To get HUGEPAGE size :

$ grep Huge /proc/meminfo

AMM do not compatiable with HUGEPAGES.  Size can be range from 2MB to 256MB.   Without HugePages, the memory of the SGA is divided into 4K pages and managed by Linux kernal .

http://www.pythian.com/blog/pythian-goodies-free-memory-swap-oracle-and-everything/

$ cat /proc/24661/smaps

$cat /proc/ <nnnnnnn>/smaps    ==> Where nnnnnnn is any Oracle unix process ID

_ksmg_granule_size    => SGA Granule size

Why HUGEPAGE – The mappings from virtual to physical address are performed so often that CPU manufacturers have created a special cache inside the CPU called the TLB Cache – Translation Look-aside Buffer. It has the latest 512 translations (typically). If you have a larger page, then these 512 slots can cover much more memory, and the chances of having a cache hit increase. If there is a cache miss, then up to three additional memory reads (from RAM) need to be performed to find the correct RAM address to read. This can waste a significant amount of CPU time.

Why AMM won’t work with HUGEPAGES

http://kevinclosson.wordpress.com/2007/08/23/oracle11g-automatic-memory-management-and-linux-hugepages-support/

Oracle AMM uses Memory mapped files using /dev/shm.  However HUGEPAGES do not support this implementation, using SYSTEM V style IPC memory management.   /dev/shm implementation, one program can create shared memory and other programs can access it as long as got permission to it.

http://blog.tanelpoder.com/2007/08/21/oracle-11g-internals-part-1-automatic-memory-management/

When you start Oracle database and if not enough HOUGEPAGES available, oracle ignores the HUGEPAGES and allocate memory from regular pool without complaining.    See the MOS note: 361323.1

While high paging /swaping LINUX environment, you can get the page table size by

$ cat /proc/meminfo | grep PageTables

PageTables:        11744 kB

SQL Tuning Advisor:  Automatic Tuning Optimizer creates the SQL profile and stores the auxiliary statistics related to that SQL.   ATO uses sampling, partial execution and past execution history to capture the auxiliary data.

 

Advertisements
  1. April 6, 2016 at 4:49 am

    DB version: Oracle 12.1

    SQL> create table system.test (col1 number,col2 number, col3 number);

    Table created.

    SQL> create index system.idx1 on system.test (col2,col1);

    Index created.

    SQL> alter table system.test ADD PRIMARY KEY (col1) using index;

    Table altered.

    SQL> select count(*) from dba_indexes where table_name=’TEST’ and owner=’SYSTEM’;

    COUNT(*)
    ———-
    2
    —————————————————————————————

    But if we do the same steps but just change the index order
    SQL> create index system.idx1 on system.test (col1,col2);

    Index created.

    we get total no of indexes for table=1

    SQL> select count(*) from dba_indexes where table_name=’TEST’ and owner=’SYSTEM’;

    COUNT(*)
    ———-
    1
    can you please explain why oracle doesn’t use the existing index in first case.

    Thanks!!

  2. April 6, 2016 at 5:35 am

    Multiple reasons –

    To use a multi-column index for a primary key, the key should be the leading index columns. Remember, Oracle support only “Index Skip Scan” for non-leading columns. ROWID mapping will be always based on leading columns.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: