Search

Top 60 Oracle Blogs

Recent comments

Oakies Blog Aggregator

Expert Advice: SEO and Content Marketing

You’ve launched your website or started a blog. Congratulations! Now it’s time to attract an audience. You built a website to reach people with your art, ideas, or products and services. We’ve created a free online session to help you do just that. 

Register for our next 60-minute webinar, Traffic Control: How to Find and Grow an Audience for your Website, to get advice and guidance on attracting the right people to your site.

Date: May 27, 2020
Time: 10:00 a.m. PDT | 11:00 a.m. MDT | 12:00 p.m. CDT | 1:00 p.m. EDT | 17:00 UTC
Cost: Free | Register now
Who’s invited: Content creators, online publishers, and small businesses looking for the best ways to build an audience of loyal customers and dedicated readers.

Topics will include:

  • Understanding your audience.
  • Demystifying SEO.
  • How to optimize your site for local visitors.
  • What does “quality content” really mean?
  • Using email, social media, and paid advertising.
  • How to take advantage of WordPress.com’s marketing tools for audience growth.

Hosts Chris Smith and Kasey Steinbrinck run their own sites and both have worked with a variety of businesses to help them optimize their websites and create strong content. They’ll help you choose what to focus on so that you can make the most of your time. 

After working as an SEO specialist for many years, Chris supports WordPress.com customers with expert advice as a Happiness Engineer. Kasey started his career as a TV news producer and entertainment writer before becoming a content marketer and an independent blogger. Today he works on WordPress.com’s content strategy.

The 60-minute webinar will include detailed instructions on WordPress SEO as well as a Q&A session. Seats are limited so register today to reserve your spot.

10 Ways to Make Your Site More Accessible

Today, Global Accessibility Awareness Day, raises awareness around digital access and inclusion and improving the web experience for everyone. This year, WebAIM analyzed one million homepages for accessibility issues and found that 98% of websites had at least one WCAG (Web Content Accessibility Guidelines) failure on their homepage, such as low-contrast text, missing image alt text, and empty links. These types of accessibility barriers make it difficult or impossible for some visitors — people who are blind, deaf and hard of hearing, and disabled, for example — to use your site.

We encourage you to audit your site to ensure it’s accessible for all readers; the WAVE Web Accessibility Evaluation Tool can identify various errors on your site in seconds. Here are some web accessibility tips to get you started, and be sure to explore the guidelines and resources on the W3C Web Accessibility Initiative (WAI) website for deeper learning.


Use an accessibility-ready theme

You can choose from among a variety of designs for your site, but some themes have features that add complexity, making it harder for disabled people or visitors using screen readers to access your content.

When choosing a theme, consider an accessibility-ready design, like Balasana, a free minimal theme for your business website; or Mayland, a free visual theme that’s great for photographers and storytellers. These themes have been checked by the Theme Review Team and pass basic accessibility requirements.

Examples of six accessibility-ready designs from the WordPress.com Theme Showcasehttps://en-blog.files.wordpress.com/2020/05/screencapture-wordpress-them... 150w, https://en-blog.files.wordpress.com/2020/05/screencapture-wordpress-them... 300w, https://en-blog.files.wordpress.com/2020/05/screencapture-wordpress-them... 768w, https://en-blog.files.wordpress.com/2020/05/screencapture-wordpress-them... 1958w" sizes="(max-width: 1024px) 100vw, 1024px" />

Display your site title and tagline

Many themes allow you to upload a custom header image, which is a visual way to brand your site, display the title of your blog, or promote the name of your business. But some themes may not support alternative text, or the written copy that appears in place of an image on a page if the image fails to load on your visitor’s screen.

Instead of conveying your site title and tagline within a header image, display your site title and tagline text. Go to Manage → Settings, and at the top under Site profile, fill out your Site title and Site tagline. Then, head to Design → Customize, go to Site Identity, and check the box next to Display Site Title and Tagline.

The module in My Sites where you insert your Site Title and Site Taglinehttps://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-10... 150w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-10... 300w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-10... 588w" sizes="(max-width: 441px) 100vw, 441px" />

Structure your pages and posts with appropriate headings

Add headings with the Heading Block to organize pages and posts and make it easier for readers to follow your content, which is especially important for longer pages and posts. Click on the “i” icon in the top toolbar of the block editor to view any errors and incorrect heading sizes.

A popup box that appears in the block editor with information on headings and the structure of your post or pagehttps://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-10... 150w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-10... 300w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-10... 768w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-10... 2014w" sizes="(max-width: 1024px) 100vw, 1024px" />

Select fonts and colors for legibility

Fonts and colors are essential components on your site, adding personality and style and strengthening your visual identity online. Avoid font styles and sizes and color palettes that make your site difficult to read, and pay attention to contrast, or the difference between the darkness of your text and the lightness of your background.

The block editor will display an error message in Color settings when it detects poor color contrast in the specific block you’re working on.

An error message that is displayed in the sidebar of the block editor when low color contrast is detectedhttps://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-9.... 2048w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-9.... 150w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-9.... 300w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-9.... 768w" sizes="(max-width: 1024px) 100vw, 1024px" />

Clearly describe your links

When linking to another page or post on the web, make your linked text descriptive. For example, “click here” is not as effective as “learn how to apply to my writing workshop.”

A short paragraph with correctly linked texthttps://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-11... 150w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-11... 300w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-11... 768w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-11... 1638w" sizes="(max-width: 1024px) 100vw, 1024px" />

Include captions with your images

When adding an image with the Image Block, add a description of the image in the caption underneath it. While captions are optional, they improve the experience for all readers by providing more context.

A photo of a vintage typewriter with a captionhttps://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-3.... 150w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-3.... 300w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-3.... 768w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-3.... 1054w" sizes="(max-width: 1024px) 100vw, 1024px" />

Add alt text to your images

Alt text is essential for people who are blind or use screen readers (they can hear alt text read aloud), or people who have disabled images for speed or bandwidth reasons. Alt text is also important for your site’s SEO — it helps search engines understand what your site content is about.

When adding an image with the Image Block, go to the block’s settings on the right and add the alt text in the box under Image settings.

An example of image alt text written in the Alt Text field in the Image Block's settingshttps://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-11... 150w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-11... 300w, https://en-blog.files.wordpress.com/2020/05/screen-shot-2020-05-18-at-11... 554w" sizes="(max-width: 416px) 100vw, 416px" />

Learn more about W3C’s image accessibility guidelines.

Create easily clickable CTA areas

With the Buttons Block, you can add call-to-action buttons to your pages and posts quickly. For those of you who design and embed your own buttons with Image Widgets, make buttons, icons, and other CTA elements with wide-enough areas that are easy to click or tap from different devices.

You can apply this tip to text links as well. Tapping a linked hashtag or asterisk within a sentence, for example — especially on a small screen — may be difficult for some people.

Include captions or transcripts for multimedia content

If your site includes video content, consider adding captions or including transcripts (documenting speech, sounds, as well as actions seen on-screen). Podcast transcripts are also incredibly helpful; here’s a transcript of a recent Distributed episode with neuroscientist Adam Gazzaley.

It’s best if video and audio content does not auto-play, but if that’s not possible, options to pause or adjust the volume should be obvious on the page.

Never stop learning and improving

This list is just an introduction to a few best practices and guidelines! If you’re interested in learning more, explore the resources on the W3C Web Accessibility Initiative (WAI) website. You can also explore ways to get involved in improving the accessibility of WordPress.


Learn more about Global Accessibility Awareness Day and participate in online events, webinars, and podcasts.

PostgreSQL Shared Buffers vs free RAM

PostgreSQL, like all other database engines, modifies the table and index blocks in shared buffers. People think that the main goal of buffered reads is to act as a cache to avoid reading from disk. But that’s not the main reason as this is not mandatory. For example PostgreSQL expects that the filesystem cache is used. The primary goal of shared buffers is simply to share them because multiple sessions may want to read a write the same blocks and concurrent access is managed at block level in memory. Without shared buffers, you would need to lock a whole table. Most of the database engines use the shared buffers for caching. Allocating more memory can keep the frequently used blocks in memory rather than accessing disk. And because they manage the cache with methods suited to the database (performance and reliability) they don’t need another level of cache and recommend direct I/O to the database files. But not with Postgres. In order to keep the database engine simple and portable, PostgreSQL relies on the filesystem cache. For example, no multiblock read is implemented. Reading contiguous blocks should be optimized by the filesystem read-ahead.
But this simplicity of code implies a complexity for configuring a PostgreSQL database system. How much to set for the shared_buffers? And how much to keep free in the OS to be used for the filesystem cache?

I am not giving any answer here. And I think there is, unfortunately, no answer. The documentation is vague. It defines the recommended value as a percentage of the available RAM. That makes no sense for me. The cache is there to keep frequently used blocks and that depends on your application workload. Not on the available RAM. There is also this idea that because there is double buffering, you should allocate the same size to both caches. But that makes no sense again. If you keep blocks in the shared buffers, they will not be frequently accessed from the filesystem and will not stay in the filesystem cache. Finally, don’t think the defaults are good. The default shared_buffers is always too small and the reason is that a small value eases the installation on Linux without having to think about SHM size. But you have more, need more, and will need to configure SHM and huge pages for it.

My only recommendation is to understand your workload: what is the set of data that is frequently used (lookup tables, index branches, active customers, last orders,…). This should fit in the shared buffers. And the second recommendation is to understand how it works. For the set of data that is frequently read only, this is not so difficult. You need to have an idea about the postgres cache algorithm (LRU/Clock sweep in shared buffers which is static size) and the filesystem cache (LRU with the variable size of free memory). For the set of data that is modified, this much more complex.

Let’s start with the reads. As an example I have run a workload that reads at random within a small set of 150MB. I used pgio from Kevin Closson for that. I’ve executed multiple runs with warying the shared_buffers from smaller than my work set, 50MB, to 2x larger: 50MB, 100MB, 150MB, 200MB, 250MB, 300MB. Then, for each size of shared buffers, I’ve run with variations in the available RAM (which is used by the filesystem cache): 50MB, 100MB, 150MB, 200MB, 250MB, 300MB, 350MB, 400MB. I ensured that I have enough physical memory so that the system does not swap.

I determined the free space in my system:


[ec2-user@ip-172-31-37-67 postgresql]$ sync ; sync ; sync ; free -hw
              total        used        free      shared     buffers       cache   available
              total        used        free      shared     buffers       cache   available
Mem:           983M         63M        835M        436K          0B         84M        807M
Swap:            0B          0B          0B

I also use https://medium.com/@FranckPachot/proc-meminfo-formatted-for-humans-350c6bebc380


[ec2-user@ip-172-31-37-67 postgresql]$ awk '/Hugepagesize:/{p=$2} / 0 /{next} / kB$/{v[sprintf("%9d MB %-s",int($2/1024),$0)]=$2;next} {h[$0]=$2} /HugePages_Total/{hpt=$2} /HugePages_Free/{hpf=$2} {h["HugePages Used (Total-Free)"]=hpt-hpf} END{for(k in v) print sprintf("%-60s %10d",k,v[k]/p); for (k in h) print sprintf("%9d MB %-s",p*h[k]/1024,k)}' /proc/meminfo|sort -nr|grep --color=auto -iE "^|( HugePage)[^:]*" #awk #meminfo                                                                           33554431 MB VmallocTotal:   34359738367 kB                    16777215
      983 MB MemTotal:        1006964 kB                            491
      946 MB DirectMap2M:      968704 kB                            473
      835 MB MemFree:          855628 kB                            417
      808 MB MemAvailable:     827392 kB                            404
      491 MB CommitLimit:      503480 kB                            245
      200 MB Committed_AS:     205416 kB                            100
       78 MB DirectMap4k:       79872 kB                             39
       69 MB Cached:            71436 kB                             34
       55 MB Active:            56640 kB                             27
       43 MB Inactive:          44036 kB                             21
       42 MB Inactive(file):    43612 kB                             21
       29 MB Slab:              30000 kB                             14
       28 MB AnonPages:         29260 kB                             14
       28 MB Active(anon):      29252 kB                             14
       26 MB Active(file):      27388 kB                             13
       14 MB SUnreclaim:        14876 kB                              7
       14 MB SReclaimable:      15124 kB                              7
       13 MB Mapped:            14212 kB                              6
        4 MB PageTables:         4940 kB                              2
        2 MB Hugepagesize:       2048 kB                              1
        1 MB KernelStack:        1952 kB                              0
        0 MB Shmem:               436 kB                              0
        0 MB Inactive(anon):      424 kB                              0
        0 MB HugePages Used (Total-Free)
        0 MB HugePages_Total:       0
        0 MB HugePages_Surp:        0
        0 MB HugePages_Rsvd:        0
        0 MB HugePages_Free:        0
        0 MB Dirty:                 4 kB                              0

Then in order to control how much free RAM I want to set ($fs_MB) I allocate the remaining as huge pages:


sudo bash -c "echo 'vm.nr_hugepages = $(( (835 - $fs_MB) / 2 ))' > /etc/sysctl.d/42-hugepages.conf ; sysctl --system"

This limits the RAM available for the fileystem cache because huges pages cannot be used for it. And the huges pages can be used for the postgres shared buffers:


sed -i -e "/shared_buffers/s/.*/shared_buffers = ${pg_MB}MB/" -e "/huge_pages =/s/.*/huge_pages = on/" $PGDATA/postgresql.conf
grep -E "(shared_buffers|huge_pages).*=" $PGDATA/postgresql.conf
/usr/local/pgsql/bin/pg_ctl -l $PGDATA/logfile restart

Note that I actually stopped postgres before to be sure that no huge pages are used when resizing them:


for pg_MB in 50 100 150 200 250 300 350 400
do
for fs_MB in 400 350 300 250 200 150 100 50
do
/usr/local/pgsql/bin/pg_ctl -l $PGDATA/logfile stop
# set huge pages and shared buffers
/usr/local/pgsql/bin/pg_ctl -l $PGDATA/logfile restart
# run pgio runit.sh
done
done

100% Read only workload on 150MB

Here is the result. Each slide on the z-axis is a size of shared-buffers allocated by postgres. On the x-axis the size of the available RAM that can be used for filesystem cache by the Linux kernel. the y-axis is the number of tuples read during the run.

https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 300w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 768w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 1536w" sizes="(max-width: 1024px) 100vw, 1024px" />

You will never get optimal performance when the frequent read set doesn’t fit in shared buffers. When the read set is larger than the shared buffers, you need more RAM in order to get lower performance. The frequently read set of data should fit in shared buffers.

50% updates on 150MB

Here is the same run where I only changed PCT_UPDATE to 50 in pgio.conf

https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 300w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 768w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 1536w" sizes="(max-width: 1024px) 100vw, 1024px" />

This looks similar but there are two main differences, one visible here and another that is not represented in this graphic because I aggregated several runs.

First, increasing the shared buffers above the set of frequently manipulated data still improves performance, which was not the case with reads. As soon as the shared buffer is above the working set of 150MB the buffer cache hit ratio is at 100%. But that’s for reads. Updates generate a new version of data and both versions will have to be vacuumed and checkpoint.

Here is a graph about blks_read/s which shows that for a read-only workload we do not do any physical reads (I/O calls from the database to the filesystem) as soon as the working set fits in shared buffers. When we write, the read calls still improve when we increase the shared buffers a bit above the modified set. And the physical read efficiency is the best when there is as much free RAM as shared buffers.

https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 300w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 768w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 1536w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 1648w" sizes="(max-width: 1024px) 100vw, 1024px" />

Second point about the write workload, performance is not homogenous at all. Vacuum and Checkpoint happen at regular intervals and make the performance un-predictable. When showing the tuples/second for the 50% write workload, I aggregated many runs to display the maximum throughput achieved. Having the modified set of data fitting in free RAM helps to lower this variation as it avoids immediate physical write latency. The balance between shared buffers and free RAM is then a balance between high performance and predictability of performance: keep free ram as a performance “buffer” between userspace access and disk reads. There are also many parameters to “tune” this like with the frequency of vacuum and checkpoints. And this makes memory tuning very complex. Note that I changed only the shared_buffers here. When increasing shared_buffers for high write throughput, there are other structures to increase like the WAL segments.

The filesystem cache adds another level of un-predictable performance. For example, you may run a backup that reads all the database, bringing the blocks into the Least Recently Used. And I didn’t do any sequential scans here. They benefit from filesystem buffers with pre-fetching. All theses make any quick recommendation incorrect. Buffer cache hit ratios make no sense to estimate the response time improvement as they are not aware of the filesystem cache hits. But looking at them per relation, tables or indexes may help to estimate which relation is frequently accessed. Because that’s what matters: not the size of the database, not the size of your server RAM, not the general buffer cache hit ratio, but the size of data that is read and written frequently by your application.

Cet article PostgreSQL Shared Buffers vs free RAM est apparu en premier sur Blog dbi services.

Oracle Standard Edition on AWS ☁ socket arithmetic

By Franck Pachot

.
Note that I’ve written previously about Oracle Standard Edition 2 licensing before but a few rules change. This is written in May 2020.
TL;DR: 4 vCPU count for 1 socket and 2 sockets count for 1 server wherever hyper-threading is enabled or not.

The SE2 rules

I think the Standard Edition rules are quite clear now: maximum server capacity, cluster limit, minimum NUP, and processor metric. Oracle has them in the Database Licensing guideline.

2 socket capacity per server

Oracle Database Standard Edition 2 may only be licensed on servers that have a maximum capacity of 2 sockets.

We are talking about capacity which means that even when you remove a processor from a 4 socket server, it is still a 4 socket server. You cannot run Standard Edition if the servers have be the possibility for more than 2 sockets per server whether there is a processor in the socket or not.

2 socket used per cluster

When used with Oracle Real Application Clusters, Oracle Database Standard Edition 2 may only be licensed on a maximum of 2 one-socket servers

This one is not about capacity. You can remove a processor from a bi-socket to become a one-socket server, and then build a cluster running RAC in Standard Edition with 2 of those nodes. The good thing is that you can even use Oracle hypervisor (OVM or KVM), LPAR or Zones to pin one socket only for the usage of Oracle, and use the other for something else. The bad thing is that as of 19c, RAC with Standard Edition is not possible anymore. You can run the new SE HA which allows more on one node (up to the 2 socket rule) because the other node is stopped (the 10 days rule).

At least 10 NUP per server

The minimum when licensing by Named User Plus (NUP) metric is 10 NUP licenses per server.

Even when you didn’t choose the processor metric you need to count the servers. For example, if your vSphere cluster runs on 4 bi-socket servers, you need to buy 40 NUP licenses even if you can count a smaller population of users.

Processor metric

When licensing Oracle programs with … Standard Edition in the product name, a processor is counted equivalent to a socket; however, in the case of multi-chip modules, each chip in the multi-chip module is counted as one occupied socket.

A socket is a plastic slot where you can put a processor in it. This is what counts for the “2 socket capacity per server”. An occupied socket is one with a processor, physically or pinned with an accepted hard partitioning hypervisor method (Solaris Zones, IBM LPAR, Oracle OVM or KVM,…). This is what counts for the “2 socket occupied per cluster” rule. Intel is not concerned by the multi-module chip exception.

What about the cloud?

So, the rules mention servers, sockets and processors. How does this apply to modern computing where you provision a number of vCPU without knowing anything about the underlying hardware? In the AWS shared responsibility model you are responsible for the Oracle Licences (BYOL – Bring Your Own Licences) but they are responsible for the physical servers.

Oracle established the rules (which may or may not be referenced by your contract) in the Licensing Oracle Software in the Cloud Computing Environment (for educational purposes only – refer to your contract if you want the legal interpretation).

This document is only for AWS and Azure. There’s no agreement with Google Cloud and then you cannot run an Oracle software under license. Same without your local cloud provider: you are reduced to hosting on physical servers. The Oracle Public Cloud has its own rules and you can license Standard Edition on a compute instance with up to 16 OCPU and one processor license covers 4 OCPU (which is 2 hyper-threaded Intel cores).

Oracle authorizes to run on those 2 competitor public clouds. But they generally double the licenses required on competitor platforms in order to be cheaper on their own. They did that on-premises a long time ago for IBM processors and they do that now for Amazon AWS and Microsoft Azure.

So, the arithmetic is based on the following idea: 4 vCPU counts for 1 socket and 2 sockets counts for 1 server

Note that there was a time where it was 1 socket = 2 cores which meant that it was 4 vCPU when hyper-threading is enabled but 2 vCPU when not. They have changed the document and we count vCPU without looking at cores or threads. Needless to say that for optimal performance/price in SE you should disable hyper-threading in AWS in order to have your processes running on full cores. And use instance caging to limit the user sessions in order to leave a core available for the background processes.

Here are the rules:

  • 2 socket capacity per server: maximum 8 vCPU
  • 2 socket occupied per cluster: forget about RAC in Standard Edition and RAC in AWS
  • Minimum NUP: 10 NUP are ok to cover the maximum allowed 8 vCPU
  • Processor metric: 1 license covers 4 vCPU

Example

The maximum you can use for one database:
2 SE2 processor licences = 1 server = 2 sockets = 8 AWS vCPU
2 SE2 processor licences = 8 cores = 16 OCPU in Oracle Cloud

The cheaper option means smaller capacity:
1 SE2 processor licences = 1 sockets = 4 AWS vCPU
1 SE2 processor licences = 4 cores = 8 OCPU in Oracle Cloud

As you can see The difference between Standard and Enterprise Edition in the clouds is much smaller than on-premises where a socket can run more and more cores. The per-socket licensing was made at a time where processors had only a few cores. With the evolution, Oracle realized that SE was too cheap. They caged the SE2 usage to 16 threads per database and limit further on their competitor’s cloud. Those limits are not technical but governed by revenue management: they provide a lot of features in SE but also need to ensure that large companies still require EE.

But…

… there’s always an exception. It seems that Amazon has a special deal to allow Oracle Standard Edition on AWS RDS with EC2 instances up to 16 vCPU:

https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 300w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 768w, https://blog.dbi-services.com/wp-insides/uploads/sites/2/2020/05/Annotat... 1228w" sizes="(max-width: 1024px) 100vw, 1024px" />

You know that I always try to test what I’m writing in a blog post. So, at least as of the publishing date and with the tested versions, it gets some verified facts.
I started an AWS RDS Oracle database on db.m4.4xlarge which is 16 vCPU. I’ve installed the instant client in my bastion console to access it:


sudo yum localinstall http://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/g...
sudo yum localinstall http://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/g...

This is Standard Edition 2:


[ec2-user@ip-10-0-2-28 ~]$ sqlplus admin/FranckPachot@//database-1.ce45l0qjpoax.us-east-1.rds.amazonaws.com/ORCL

SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 19 21:32:47 2020
Version 19.5.0.0.0

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

Last Successful login time: Tue May 19 2020 21:32:38 +00:00

Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.7.0.0.0

On 16 vCPU:


SQL> show parameter cpu_count

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cpu_count                            integer     16

On AWS:

SQL> host curl http://169.254.169.254/latest/meta-data/services/domain
amazonaws.com

With more than 16 threads in CPU:

SQL> @ snapper.sql ash 10 1 all
Sampling SID all with interval 10 seconds, taking 1 snapshots...

-- Session Snapper v4.31 - by Tanel Poder ( http://blog.tanelpoder.com/snapper ) - Enjoy the Most Advanced Oracle Troubleshooting Script on the Planet! :)


---------------------------------------------------------------------------------------------------------------
  ActSes   %Thread | INST | SQL_ID          | SQL_CHILD | EVENT                               | WAIT_CLASS
---------------------------------------------------------------------------------------------------------------
   19.29   (1929%) |    1 | 3zkr1jbq4ufuk   | 0         | ON CPU                              | ON CPU
    2.71    (271%) |    1 | 3zkr1jbq4ufuk   | 0         | resmgr:cpu quantum                  | Scheduler
     .06      (6%) |    1 |                 | 0         | ON CPU                              | ON CPU

--  End of ASH snap 1, end=2020-05-19 21:34:00, seconds=10, samples_taken=49, AAS=22.1

PL/SQL procedure successfully completed.

I also checked on CloudWatch (the AWS monitoring from the hypervisor) that I am running 100% on CPU.

I tested this on a very limited time free lab environment (this configuration is expensive) and didn’t check whether hyperthreading was enabled or not (my guess is: disabled) and I didn’t test if setting CPU_COUNT would enable instance caging (SE2 is supposed to be internally caged at 16 CPUs but I see more sessions on CPU there).

Of course, I shared my surprise (follow me on Twitter if you like this kind of short info about databases – I don’t really look at the numbers but it seems I may reach 5000 followers soon so I’ll continue at the same rate):

and I’ll update this post when I have more info about this.

Cet article Oracle Standard Edition on AWS ☁ socket arithmetic est apparu en premier sur Blog dbi services.

Oracle Database 19c on Fedora 32

https://oracle-base.com/blog/wp-content/uploads/2020/05/f32-final-816x34... 300w, https://oracle-base.com/blog/wp-content/uploads/2020/05/f32-final-816x34... 768w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" />

Fedora 32 was released at the end of April (see here). Here comes the standard warning.

Here are the usual things I do when a new version of Fedora comes out.

I pushed a Vagrant build to GitHub.

So now you know how to do it, don’t. </p />
</p></div>

    	  	<div class=

Say Hello to the WordPress Block Editor

On June 1 we’ll be retiring our older WordPress.com editor and transitioning to the more recent (and more powerful) WordPress block editor. Want to know how this may affect your site and what you can expect? Read on.

If you’ve launched your WordPress.com site in the past year and a half you may have never seen our older editor and are likely already using the more recent WordPress editor. Those of you who have an older site, though, might recognize this editing experience:

We know it can be frustrating to get used to an online tool only to see it change or go away. Retiring an entire editor — the place where you publish posts and pages on WordPress.com — is not something we would ever do on a whim. What inspired us to take this decision is the positive experience site owners have had with the newer WordPress editor.

Why switch to the WordPress editor? Let us count the ways.

The WordPress block editor was released over a year and a half ago. Since then, it has improved in numerous ways thanks to thousands of enhancements and fixes  — to the point that we’re certain it offers a far superior experience compared to the older WordPress.com editor. Not sure? You can take the WordPress editor for a spin. In case you’ve never encountered it before, here are only some of the features you’ll find in the WordPress block editor that aren’t available in the older WordPress.com editor.

Over 100 content blocks for publishing virtually any type of page or post
Content blocks can be mixed and matched to customize the content of any page or post.

A growing collection of block patterns
Block patterns are simply collections of blocks pre-bundled together to form beautiful designs.

Dozens of beautiful, built-in page templates
Page templates simplify the creation of common pages within WordPress by giving you a beautiful predesigned template to get started.

Customizable styles directly within the editor
You can now customize the look and feel of your website by testing out different fonts directly within the WordPress editor.

What other options do I have?

We hope you give the WordPress editor a try — it’s been the editing experience of choice for millions since it arrived on the scene. That said, we know some of you might prefer to avoid this change. We’re offering two options for those who’d rather stick with an older way of editing your content.

1) Use the Classic block
Within the new WordPress editor you’ll find the Classic block, which replicates the functionality of the Classic editor — that’s the editor that used to be the default until several years ago, well before we introduced the WordPress.com editor. Here’s what it looks like:

2) Opt to use the Classic editor
You also have the choice to switch to the Classic editor. Here’s what it looks like, in case you haven’t seen this one in a while (or ever):

We hope you enjoy the new WordPress editor — give it a try today to get a taste ahead of June 1!

Video : NTH_VALUE : Problem Solving using Analytic Functions

Today’s video is a demonstration of the NTH_VALUE analytic function.

This is based on this article.

You might find these useful also.

The star of today’s video is Connor McDonald. This is his second visit to the channel. I’m sure most of you must know Connor from his blog and AskTom. He also has a YouTube channel here.

Cheers

Tim…


Video : NTH_VALUE : Problem Solving using Analytic Functions was first posted on May 18, 2020 at 8:10 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

VirtualBox 6.1.8

I’m in the middle of doing loads of Vagrant builds and I got a message to say VirtualBox 6.1.8 has been released. </p />
</p></div>

    	  	<div class=

Social Distancing : My Experience

https://oracle-base.com/blog/wp-content/uploads/2020/05/social-distancin... 300w" sizes="(max-width: 232px) 85vw, 232px" />

The UK has started to relax *some* of the lock-down conditions, so I thought I would write down some of my thoughts related to social distancing…

The Good

First and foremost, social isolation and social distancing is predominantly a good thing for me. I live alone, and as I’ve said many times before I like it that way. There is a “work Tim”, a “conference Tim”, a “with friends/family Tim” and a “home Tim”, and it’s the “home Tim” I’m most comfortable with. I’m not talking about some schizophrenic thing. Just different aspects of my personality that I use to cope with different situations. The only authentic me is when I am home alone.

I keep saying to people I’m living my best life at the moment.

The Bad

Having said all that, it’s not been plain sailing. One thing I’m really struggling with is work-life balance. Before this I mostly worked from the office, and my computer at home was for doing my own thing, like the website and blog etc. Since I’ve been working from home the working day has stretched, which has been made worse by some weekend work. When I do eventually switch off, the thought of doing my own thing is really difficult. I feel like I want to walk away from the computer, so that’s what I’ve been doing a lot. I think the solution to this is to define some different phases of the day and try to stick to them. Things have improved since I’ve been actively trying to do this.

Exercise is another issue. The gym is closed, and I find it really hard to be motivated to do anything other than go to the gym. I’ve done very little exercise, which is really not good as I’m a fatty, and being a fatty is not good at the best of times, but it’s even more problematic at the moment. This week I’ve been going on some bike rides at lunch time. Nothing big. Just getting out of the house and moving a bit. Once again, it’s about trying to define phases of the day.

I started the social isolation/distancing thing about a week before most people in the UK. I go to the shop every few days, and go to pick up a prescription once a month. Apart from that I stay home. I think it’s going to remain this way for quite a long time for me, regardless of what the government suggest.

I feel sorry for people who live alone and don’t like it. I feel sorry for families with kids who are going stir crazy. I can’t relate, but I can sympathise.

The Ugly

What this whole thing has taught me is there are some selfish fuckers out there who should go fuck themselves. People who blatantly ignore the rules, without thinking what impact they are having on others. I kind-of expect this behaviour from young people, as they think they are indestructible and are too dumb to think about the bigger picture, so I give them a free pass. What really pisses me off are adults who don’t seem to give a shit.

You don’t know anything about the people around you. You don’t know what their risk factors are. You don’t know if they are worried about relatives they live with that are vulnerable. It is not your position to judge, and you have no right to put them and their families in danger.

Now I admit some people take it too far, like walking in the road when there is nobody on the path, but for the most part people are being sensible and considerate. For those that are not, see my first sentence in this section!

The Good… Again

Despite that there have also been some really positive things.

  • On the whole people seem friendlier and more considerate at the moment.
  • It’s quieter. Lawn mowers are working overtime, but most of the time things are quiet.
  • Life seems a little calmer.
  • I’m not using petrol.

The Future

Some random thoughts from me.

  • I can’t see myself working full time in an office again. I’m not saying I will never go in, but I don’t see myself doing a 5 day week again. My company used to have some issues with working from home, but now we’ve been forced to do it for a few months, I can see a lot of people never going back to the old ways. I’m not sure how they could justify not allowing working from home on a mass scale now.
  • I think it will be quite some time before I consider travelling again, if ever. I had already scaled back my conference stuff, but maybe it’s over for me now. I may change my mind. Time will tell.
  • I want to consume less. Both from a food perspective, and everything else. I’m not a very materialistic person, but I can still cut back. I want my life to be as minimalist as possible.
  • I understand there will be economic hardships as a result of this pandemic, but I hope it has taught people something about themselves. Life doesn’t need to be some dog-eat-dog race. You don’t need as much as you think you do.

OK. The random bullshit is over for now.

Cheers

Tim…


Social Distancing : My Experience was first posted on May 16, 2020 at 10:33 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

APEX 20 patch

I’ve been debugging an issue within an APEX application and wanted to make sure that my local installation was at the same version as apex.oracle.com. So I logged on to my workspace and ran queries on APEX_RELEASE and APEX_PATCHES and discovered that there was a patch available for 20.1.

That patch is 30990551 and you can download it from the usual spot on My Oracle Support. None of the bugs listed in the “Fixed Bugs” helped me with my issue, because it turned out to be my own code Smile. But here is what is fixed in the patch:



31232686 - WEBSHEET SAML AUTH: ERROR WHEN ALLOW PUBLIC ACCESS
31217638 - PAGE DESIGNER 'GROUP BY' RENDERING PREFERENCE REMOVAL FROM CODE
31243923 - REGRESSION: IG CSV EXPORTS DOES NOT ENQUOTE VALUES CONTAINING LF (CHR(10))
31237894 - INTERACTIVE REPORT AND INTERACTIVE GRID HIGHLIGHT DOESN'T SHOW HIGHLIGHT STYLING IN REPORT SETTINGS
31206093 - DARK MODE: SQL WORKSHOP QUERY BUILDER COLOUR CONSTRAST ISSUES
31174941 - UNREADABLE HOME SUB-MENUS WHEN CHANGING ZOOM ON CHROME
31253570 - MEGA MENUS HAVE INCORRECT RESPONSIVE BEHAVIOR
31256032 - INCORRECT COLORS RENDERED IN DARK MODE IN APEX BUILDER AND UT
31224836 - SESSION TIMEOUT WARNING INCORRECTLY DISPLAYS IN THE BUILDER
31286811 - SAML AUTH: ORA-01460 WHEN PARSING THE AUTHN REQUEST XML DOCUMENT
31281836 - INTERACTIVE GRID: DIALOG ERRORS WHEN PDF IS THE ONLY EXPORT FORMAT

Installation was quick and uneventful – just running a script and copying some fresh image directories. As always, read the installation instructions carefully to make sure you run the correct script for your environment.


SQL*Plus: Release 19.0.0.0.0 - Production on Wed May 13 10:45:45 2020
Version 19.6.0.0.0

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

Last Successful login time: Tue May 12 2020 18:17:47 +08:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0

SQL> conn /@db19_pdb1 as sysdba
Connected.

SQL> @catpatch

. ORACLE
.
. Application Express (APEX) 20.1.0.00.13
. Patch Set Exception 30990551
........................................

APEX_VERSION
------------------------------
APEX_SCHEMA
--------------------------------------------------------------------------------------------------------------------------------
20.1.0.00.13
APEX_200100



PL/SQL procedure successfully completed.


Session altered.


APEX_SCHEMA
--------------------------------------------------------------------------------------------------------------------------------
APEX_200100


Session altered.

...wwv_flow_escape

Package body created.

No errors.
...wwv_flow_session

Package body created.

No errors.
...wwv_flow_authentication

Package body created.

No errors.
...wwv_flow_authentication_saml.plb

Package body created.

No errors.

PL/SQL procedure successfully completed.

...devpatch.sql

Session altered.


Grant succeeded.


Session altered.

...wwv_flow_authentication_f4900.plb

Package body created.

No errors.
...wwv_flow_property_dev

Package body created.

No errors.
...patch_31232686.sql

PL/SQL procedure successfully completed.

...patch_31217638.sql

PL/SQL procedure successfully completed.


Commit complete.

...Validating APEX
...(10:46:40) Starting validate_apex for APEX_200100
...(10:46:40) Checking missing sys privileges
...(10:46:40) Re-generating APEX_200100.wwv_flow_db_version
... wwv_flow_db_version is up to date
...(10:46:41) Checking invalid public synonyms
...(10:46:41) Key object existence check
...(10:46:41) Setting DBMS Registry for APEX to valid
...(10:46:41) Exiting validate_apex

PL/SQL procedure successfully completed.

...Recompiling invalid public synonyms

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.

timing for: Complete Patch 30990551
Elapsed: 00:00:03.47

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0

So if you’re running APEX 20, be sure to patch your instance when you get a chance.