Top 60 Oracle Blogs

Recent comments

Oakies Blog Aggregator

Locating Oracle Enterprise Linux Images for Azure

Just like with other UI’s, the Azure portal may not show you the wealth of offerings that can be found in the Azure catalog.  For those Oracle DBAs hoping to build an IaaS VM image from a certified OS version, this means they need Oracle Enterprise Linux and are frustrated when they can’t locate it in the portal.

Empower with the Cloud Shell

Oracle DBAs rarely are fascinated with user interfaces or portals, so when you offer us something like the Azure Cloud Shell, it’s something we should embrace.  I’ve spoke about it before and I will rave about it again here.  If you haven’t set it up, skip the download to your desktop and simply go to Azure Cloud Shell and connect to your Azure account.  Once there, ensure you’ve set the CLI to BASH and use this just as you would Putty or Xterminal. 300w, 768w, 1170w" sizes="(max-width: 800px) 100vw, 800px" />

If you configure it with Azure Cloud Storage, you can even use it as if it were a jump box, housing your scripts, just as I do.  I not only store scripts to automate my Azure processing, I also connect to any VM from this point. 300w, 768w, 1536w, 2048w" sizes="(max-width: 800px) 100vw, 800px" />

Listing Images

You can also run AZ commands from the Azure Cloud Shell prompt.  The following prompt will return a list of all Oracle Enterprise Linux Images:

az vm image list \
   --offer Oracle-Linux \
   --all \
   --publisher Oracle \
   --output table

The output will look like the following: 300w, 768w, 1536w, 2048w" sizes="(max-width: 800px) 100vw, 800px" />

Create an OEL VM

From this list, you can choose the version of Oracle Linux you want and then use the “Urn” to create a VM using the image.  In our example, we’ll create an Oracle Enterprise Linux version 7.6 and request the latest patched version from the catalog:

az vm create \
   --resource-group orHGrp1 \
   --name oraVM1 \
   --image Oracle:Oracle-Linux:7.6:7.6.3:latest \
   --size Standard_DS2_v2 \
   --admin-username azureuser \

Once this is complete, you’ll have an Oracle Enterprise Manager Linux VM, using Standard SSD disk, with the SSH keys set for your user and it will reside in a resource group called oraHGrp1 and be named oraVM1.

There are more steps to be performed before this is ready for Oracle or anything else, but for those wanting to know how to locate the OEL images, here’s your starting point.

Have a great weekend!


Tags:  , ,





Copyright ©  [Locating Oracle Enterprise Linux Images for Azure], All Right Reserved. 2020.

ORA-28050 - Can I drop the SYSTEM User?

Two things most annoy me with the Oracle database in terms of securing it and this is the abundance of default users in most Oracle databases that I perform security audits on and also the massive amount of PUBLIC grants....[Read More]

Posted by Pete On 27/03/20 At 06:11 PM

COVID-19: What Can We Do to Reduce Social Distancing

<<<< COVID-19 Basics: What it is & what it dies to us

<<…. COVID-19 Outlook for the Month(s) Ahead


The impact of COVID-19 on our society and our economy is going to be long and hard. I hope I am not the first to come up with this idea, but just in case… 600w, 150w" sizes="(max-width: 300px) 100vw, 300px" />

Having everyone on lock-down on and off for months will be hard to maintain. But not everyone will need to be in lock-down. You do not need to be locked down if you are immune.

I think we need to look at having a “COVID-19 Immunity Card” – you get the card to prove that you are probably immune to COVID-19 and that you are no longer a danger to others and are not in danger yourself.

Once you have a card you no longer have to abide by social distancing measures in the same way as those not immune. You are also a known “safe” person who can interact with those who are not. This would be particularly reassuring in the “caring” industries.

The number of people with cards will grow over time due to:

  • People being diagnosed with the disease and recovering – not many yet.
  • People being tested and found to have had the disease (possibly without knowing and have recovered) – coming soon?
  • People who have been vaccinated against it – future group.

There are potentially serous drawbacks to this idea. Such a card would be a source of division for as long as we have them and they would be a huge target for criminal activity, but it could help us “sleep with the tiger” of COVID-19.

It could/would allow our economy, health services, and society function more effectively whilst we are living with COVID-19.

Background – Once we “stop” COVID-19 this time, we have a problem…

The UK, like a growing number of countries, is now in a strong, country-wide, social shut-down. The aim is to suppress COVID-19 (see COVID-19: What’s Going To Happen Now ) i.e. drop the levels of person-to-person transmission (The “R” number) below 1. If each person with COVID_19 infects fewer than 1 other person on average, the spread stops. Quickly. It will take another 2-3 weeks for those already infected or sick (as of the date I am writing this, 27/3/20) to develop the symptoms and possibly need hospital treatment, so between now and mid-April we will see cases continuing to rise rapidly, followed by the number of deaths.

Then, something like Mid-April onwards, new cases will drop and, less slowly, the number of deaths.

COVID-19 will have been stopped. However, it will not have gone away, it will still be in the population. If we relax the social isolation we are currently living under, it will start spreading again and we will have another outbreak. Why? As only a small percentage of the population will be immune to the SARS-COV-2 virus. Governments are giving the impression that we will have “beaten COVID-19!” at this point, when the first peak of cases has come and gone, but the scientific consensus is clear that it will return if we all start living normally again. There are several studies going on at present to model what we can do and how. For example, China is relaxing restrictions and the world-wide epidemiological community is watching. For example, this Imperial College Paper on how China is coming out of strict social distancing is interesting.

I think of this as sleeping with a tiger that we don’t want to wake up.

The Imperial/WHO/MRC paper does cover all of this and suggests a way of relaxing social isolation steps and re-introducing them, over a 2 year period. The chances are, this is all going to go on far longer than most people realise and way longer than any of us want!

Reasoning on why COVID-19 will be with us “until something changes”.

The rest of this post is me being an “Armchair Epidemiologist” – proposing untested ideas with only a tenuous grasp of the true facts. But I thought I would put this out there. Note, there will be a lack of links to any solid references from this point. When you see this in articles discussing scientific ideas, it usually indicates it is a thought experiment.

There is general scientific consensus that, if we had better testing, the Case Fatality Rate would be about 1-2%. Case Fatality Rate (CFR) is the percentage of diagnosed cases that die. What we actually need is the Infection Fatality Rate (IFR) of COVID-19:- Taking into account all people who get the disease (whether they show symptoms or not or were tested or not) what is the percentage of people who die. See the Wikipedia entry on CFR for more details of CFR and IFR.

IFR is being argued about by the scientific community as you have to test a large, random set of people to see how common the disease is and testing by most countries is limited to suspected cases. Thus estimates are being made. The really good news is that the estimates of IFR are a lot lower than CFR. numbers seem to vary from 0.2% to 0.6%. See this pre-print of an article on CFR/IFR  and this paper by Nuffield Primary Care Health Sciences  at Oxford University. I’ll be pessimistic and take 0.5%

I am assuming the  Infection Fatality Rate is 0.5%

The reason we need the Infection Fatality Rate is that we can then calculate the number of infected people from the number of people who died – ONCE number of infection and deaths have reduced to low numbers again. You can’t do this (well, I can’t) when the number of new cases or deaths is increasing.

If 10,000 people die in the peak of cases we are currently enduring, if it is killing 0.5% of people and ICU limits are NOT exceeded, that means 2 million people will be immune once the peak has passed (as 99.5% of that 2 million have it and survive).

However, 64 Million will not be immune.

As has been described, we could now relax social distancing and let businesses and the economy start up to some degree again – but then tighten up social distancing again when cases or ICU admissions rise. We have a series of mini-outbreaks.

We have a population of 66 million. At 2 Million becoming immune in each “Outbreak”, we would need 20 outbreaks to get to a level of people who have had the disease where herd immunity is stopping the disease spreading – 60% or 44 or so million people (but we would still have 22 million susceptible to the disease).

With a peak every 2 months (so no single one exceeds the expanded capabilities of our NHS) getting to 60% immunity would take… several years. This is why all those discussions about getting herd immunity in weeks or months is, frankly, naive. We could only have that happen if we did not control the outbreak.

It might be that we can work out a level of social distancing that allows the economy to keep some semblance of normality and the COVID-19 cases at a level the NHS can keep up with, but that is a very, very fine tightrope to walk.

In any case, if we do not simply let COVID-19 rip through our society (killing more people than it would if controlled, as it vastly overwhelms the health services) we have to sleep with the tiger until we we have another option. But I think there is a way to make sleeping with the tiger more comfortable.

People will become immune to SARS-COV-2

A reliable, widely available test for seeing if someone has had COVID-19 and is now resistant to the  SARS-COV-2 is desperately needed and, I think, will become available soon – in a couple of months, long before a vaccine arrives.

We will then have 2 ways of knowing someone is immune:

  • Those who were tested positive for COVID and survived. They are immune.
  • Those that pass an antibody test. They are probably immune – depending on the reliability of the test. There could be several tests that have different levels of reliability.

These people can be given an “I am immune” card and they will not be limited (at least not so much) in lock downs.

Initially there will only be a hundred thousand people who can have the card, as they have been identified by testing to have had COVID_19,  have got better, and are now immune . But, crucially, a disproportionately high percentage of them will be NHS and first responder workers. This is because those groups are suffering very high exposure to COVID-19, by the very nature of what they do. The ranks of these groups are (and will continue to be) literally decimated by COVID-19. Lots and lots and lots of nurses, doctors, lab staff, cleaners, police, paramedics, GPs are going to be in the first wave getting ill.

Once we have the cheap, reliable antibody test , we can look for the rest of the 2 million.

As you can see, the more testing we do, both for having COVID-19 or for having antibodies against SARS-COV-2, the more people we can give an immunity card.

Over time, especially if we have further outbreaks, the number of people who are immune and are found via the above will increase.

Later, when vaccines are developed, there will be a third group of people we can count as immune:

  • Those who are vaccinated
  • Better still, those who are vaccinated and are latter tested for (and pass) an antibody test.

The first vaccines are likely to not be very effective – think the low end of the level of protection the annul ‘flu vaccines achieve, 20-40%. The antibody tests to confirm you have immune to SARS-COV-2 might also vary. But the details on the card will give which tests and vaccines you have had.

The card will hold details of why the person is immune, what test(s) were used to identify they had the disease, what vaccine(s) they had had, and when these events occurred. Minimal details would be held on the card itself.

A central database would hold the details of vaccination & test efficacy, corroborative information about the person etc.

If the reliability of historical tests or vaccinations change, then the immunity status of the individual may change.

The database of information would of course need to be well secured, kept in more than one place (so that a single IT disaster does not destroy all this key information) and protected. These are technical problems that can be solved.

Drawbacks off the COVID-19 Immunity Card

The cards will need to be very reliable, trusted, and protected from abuse.

Both the data they hold (or link to) and the information about the person the card is for needs to be highly dependable. The data needs to specify which sort of immunity this person has, when they were ill (if they have been) or tested, when any vaccine(s) were administered and when. It may turn out that immunity to SARS-COV-2 will reduce over time (that is, our immune systems “forget” about the disease) and the virus may mutate over time such that it avoids our immune response (whether natural or via vaccine).

The link to the person will need to be reliable, so no one can use a stolen or fake card. Obviously pictures, basic information, etc need to be on the card for a quick check, and information on the card links to a data source that can be used to further check identity and give more detailed information about immunity, such as may be needed if the person is in a medical situation.

It strikes me that this is a perfect use for blockchain. Each card, the data associated with it, when & how it is updates, can be accurately tracked in a way that is very, very hard to fake.

The data and the card should link to nothing else. There would be a temptation to be able cross reference the medical data with socioeconomic data, geographic information, even information about shopping habits to see if there are any correlations between between these factors and how people respond to COVID-19. This would be a nightmare as it introduces questions of consent, privacy, abuse of the data, fear of being spied upon.  Ensuring this card is for one purpose alone, with no link to anything else, would reduce the next drawback.

ID cards by the back door.

This will effectively be introducing ID cards, which some people object to strongly on moral or philosophical grounds. I’m not going to do more than note that this is an issue and observe that many societies have ID cards already. If these cards are kept to this one purpose, it would help make them more acceptable.


Of course, as soon as such a valuable thing as a card that allows you to avoid social limitations is available, some people will want one, even though they know they are not immune. Criminals will want to create and sell them, so we need something, probably several things, (again, like a blockchain identifier on the card) to help guard against this. I would also suggest we would want to see strong punishment of individuals who try to use a fake card or get one by deceit. After all, these are probably the same selfish gits who bought all the toilet paper. As for criminals trying to make and sell fake cards, the punishments would be draconian – they would be putting a lot of people at risk.

Two-Tier Society

The cards would by their nature split society. Those who have a card would have more freedom. Those who do not would not.

Some people would never be able to get a card as they are immunocompromised  or similarly unable to be vaccinated.

Human nature says some people would discriminate or persecute people who are not immune if there was a way to identify this. I actually see this as the main reason to not have such a card.

Laws would be required to back up a repeated and strong message about why such discrimination is utterly wrong.

SARS-COV-2 Could Change

We do not yet know how the virus underlying COVID-19 will change over time. It is mutating – but ALL life mutates. We use the mutation to track how SARS-COV-2 has spread across the globe and the mutations, so far, are not known to alter it’s infection rate or how it impacts people (though I think I have seen some suggestions about this on social media that are more trustworthy than general scuttle).

However if it turns out that C-19 becomes C-23 and C-28 etc like Influenzela A, the card scheme still works but you are now stuck with identity cards and potential discrimination against those who are not immune etc.

End Life of the cards

I would want to see an agreed termination point for the cards stated when they are brought in. They or the data they link to will be deleted utterly in 3 years time. This can only be changed by a cross-political-party agreement.


That’s my idea. If you have any comments – for, against, highlight things I have wrong – I would love to hear.

Oracle Restart 19c: silent installation and ASM Filter Driver

Oracle 19c is has been getting a lot of traction recently, and I have been researching various aspects around its installation and use. One topic that came up recently was the installation of Oracle Restart 19c using ASM Filter Driver. ASM Filter Driver has been around for a little while, but I never really looked at it closely. I found very little has been written about ASMFD in the context of Oracle 19c either, so I thought I’d revert the trend and write a series of posts about it (maybe I just didn’t find the relevant articles, I didn’t look too closely)

This blog post and all those that follow in the series are by no means an endorsement for the technology! My only goal is to make the documentation more accessible, I found it a little hard to work out the steps and hope to save you some time. As with every new-ish storage technology it’s imperative to make sure (by means of rigorous testing) that it meets your requirements.

It’s not as simple as it seems

There are actually quite a few nuances to the installation process when trying to install ASM with ASMFD from the beginning, which I’ll detail in the short blog post series to follow. The idea is to install Oracle Restart 19c with ASMFD straight away, no upgrade from ASMLib, no changing from UDEV to ASMFD. Plus it’s a fresh installation, no upgrade from a previous release.

As always I’m using Oracle Linux as the basis for my tests. And since I’m a good citizen I have updated my KVM VMs to the latest and greatest at the time of writing. More details about the environment used can be found in each of the posts in the series.

How do I install ASMFD together with Oracle Restart 19c?

I have studied the documentation, and the way I see it there are essentially 2 ways of installing Oracle Restart 19c with ASMFD:

  • Using UDEV to change permissions on all future ASM disks
  • Labeling future ASM disks using asmcmd to achieve the same goal

According to the certification matrix (MOS 1369107.1), it also matters which Oracle Linux 7/kernel combination you are using.

The easiest thing to do should be switching the Oracle Linux from UEK to the Red Hat Compatible Kernel, and I’m going to write about that first. The simplicity gained by using RHCK is slightly offset by operational caveats such as kernel upgrades etc. But this is a post about Oracle Restart, not the intricacies of switching from UEK to RHCK …

For quite a while now, UEK 5 has been the default kernel for Oracle Linux 7. If you’d like to install Oracle Restart 19c/ASMFD on UEK 5 you can’t do that out of the box, a little magic is necessary.

The following is a list of things I hope to write in the upcoming days. It’s all about a silent installation of Oracle Restart 19c for use with ASMFD:

  • Part 1: RHCK and disk labeling using asmcmd afd_label
  • Part 2: RHCK and UDEV rules
  • Part 3: UEK 5 and disk labeling using asmcmd afd_label
  • Part 4: UEK 5 and UDEV rules

Happy installing!

Oracle disables your multitenant option when you run on EC2

I have installed Oracle 19.6 on an EC2 for our Multitenant Workshop training. And of course, during the workshop we create a lot of PDBs. If you don’t have paid for the Enterprise Edition plus the Multitenant Option you can create at most 3 pluggable database. But with this option you can create up to 252 pluggable databases. Does it worth the price, which according to the public price list is USD 47,500 + 17,500 per processor, which means per-core because Oracle doesn’t count the core factor when your Intel processors are in AWS Cloud (according to the Authorized Cloud Environments paper)? Probably not because Oracle detects where you run and bridles some features depending whether you are on the Dark or the Light Side of the public cloud (according to their criteria of course).

At one point I have 3 pluggable databases in my CDB:

SQL> show pdbs
_________ ____________ ____________ _____________
        2 PDB$SEED     READ ONLY    NO
        3 CDB1PDB01    MOUNTED
        4 CDB1PDB03    MOUNTED
        5 CDB1PDB02    MOUNTED

I want to create a 4th one:

SQL> create pluggable database CDB1PDB04 from CDB1PDB03;

create pluggable database CDB1PDB04 from CDB1PDB03
ERROR at line 1:
ORA-65010: maximum number of pluggable databases created

It fails. The maximum number of pluggable databases is defined by MAX_PDBS, but I defined nothing in my SPFILE:

SQL> show spparameter max_pdbs
--- -------- ------- -----
*   max_pdbs integer

I thought that the default was 4098 (which is incorrect anyway as you cannot create more than 4096) but it is actually 5 here:

SQL> show parameter max_pdbs
-------- ------- -----
max_pdbs integer 5

Ok… this parameter is supposed to count the number of user pluggable databases (the ones with CON_ID>2) and I have 3 of them here. The limit is 5 and I have an error mentioning that I’ve reached the limit. That’s not the first time I see wrong maths with this parameter. But there’s worse as I cannot change it:

SQL> alter system set max_pdbs=6;

alter system set max_pdbs=6
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-65334: invalid number of PDBs specified

I can change it in the SPFILE but it doesn’t help me to create more pluggable databases:

SQL> alter system set max_pdbs=200 scope=spfile;

System altered.

SQL> startup force;

Total System Global Area   2147482744 bytes
Fixed Size                    9137272 bytes
Variable Size               587202560 bytes
Database Buffers           1543503872 bytes
Redo Buffers                  7639040 bytes
Database mounted.
Database opened.

SQL> show parameter max_pdbs
-------- ------- -----
max_pdbs integer 200

SQL> create pluggable database CDB1PDB04 from CDB1PDB03;

create pluggable database CDB1PDB04 from CDB1PDB03
ERROR at line 1:
ORA-65010: maximum number of pluggable databases created

Something bridles me. There’s a MOS Note ORA-65010 When Oracle Database Hosted on AWS Cloud (Doc ID 2328600.1) about the same problem but that’s in (before MAX_PDBS was introduced) which is supposed to be fixed in AUG 2017 PSU. But here I am 3 years later in 19.6 (the January 2020 Release Update for the latest version available on-premises).

So, Oracle limits the number of pluggable databases when we are on a public cloud provider which is not the Oracle Public Cloud. This limitation is not documented in the licensing documentation which mentions 252 as the Enterprise Edition limit, and I see nothing about “Authorized Cloud Environments” limitations for this item. This, and the fact that it can come and go with Release Updates put customers at risk when running on AWS EC2: financial risk and availability risk. I think there are only two choices, on long term, when you want to run your database on a cloud: go to Oracle Cloud or leave for another Database.

How does the Oracle instance know on which public cloud you run? All cloud platforms provide some metadata through HTTP api. I have straced all sendto() and recvfrom() system calls when starting the instance:

strace -k -e trace=recvfrom,sendto -yy -s 1000 -f -o trace.trc sqlplus / as sysdba <<<'startup force'

And I searched for Amazon and AWS here: 300w, 768w, 1121w" sizes="(max-width: 1024px) 100vw, 1024px" />

This is clear: the instance has a function to detect the cloud provider (kgcs_clouddb_provider_detect) when initializing the SGA in a multitenant architecture (kpdbInitSga) with the purpose of detecting non-oracle clouds (kscs_is_non_oracle_cloud). This queries the AWS metadata (documented on Retrieving Instance Metadata):

[oracle@ora-cdb-1 ~]$ curl

When Oracle software sees the name of the enemy in the domain name, it sets an internal limit for the number of pluggable databases that overrides the MAX_PDBS setting. Ok, I don’t need this metadata and I’m root on EC2 so my simple workaround is to block this metadata API:

[root@ora-cdb-1 ~]# iptables -A OUTPUT -d  -j REJECT
[root@ora-cdb-1 ~]# iptables -L
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
REJECT     udp  --  anywhere                udp dpt:domain reject-with icmp-port-unreachable
REJECT     all  --  anywhere                reject-with icmp-port-unreachable

Then restart the instance and it works: I can set or reset MAX_PDBS and create more pluggable databases.

I can remove the rule

[root@ora-cdb-1 ~]# iptables -D OUTPUT -d  -j REJECT

If, for watever reason I want to revert back.

Finally, because they had many bugs with the MAX_PDBS soft limit, there’s a parameter to disable it and this disables also the hard limit:

SQL> alter system set "_cdb_disable_pdb_limit"=true scope=spfile;
System altered.

Thanks to Mauricio Melnik for the heads-up on that:

However, with this parameter you cannot control anymore the maximum number of PDBs so don’t forget to monitor your AUX_COUNT in DBA_FEATURE_USAGE_STATISTICS.

Here was my discovery when preparing the multitenant workshop lab environment. Note that given the current situation where everybody works from home when possible, we are ready to give this training full of hands-on exercises though Microsoft Teams and AWS EC2 virtual machines. Two days to be comfortable when moving to CDB architecture, which is what should be done this year when you plan to stay with Oracle Database for the future versions.

Update 27-MAR-2020

In order not to sound too negative here, this limit on AWS platforms has been removed in the past and this may be a bug re-introduced with the change from 1 to 3 PDBs in Standard Edition.

Cet article Oracle disables your multitenant option when you run on EC2 est apparu en premier sur Blog dbi services.

Create With Confidence — and Better Blocks

In the last few years, the teams working on the block editor have learned a lot about how people build sites now and how they want to build sites in the future.

The latest version represents the culmination of these discoveries, and the next stage in the editor’s evolution.

With better visuals and more advanced features, it’ll keep designers, developers, writers, and editors productive and happy, and — tension-building drumroll — it’s in your editor right now!

What’s new

With a comprehensive visual refresh, a plethora of new features, and dozens of bug fixes, the new block editor comes with a lot to unpack.

What follows is just a small (but delectable) sample of the many ways we’ve upgraded your editing experience. (You can get the full list of goodies in the release notes.)

We hope you enjoy.

A revamped editor UI

The first thing you’ll notice is the slick UI. Buttons, icons, text, and dropdowns are all sporting a contrast boost, with bolder colors and more whitespace between buttons, text labels, and menu items.

The world is made of blocks 1440w, 150w, 300w, 768w, 1024w" sizes="(max-width: 720px) 100vw, 720px" />
The new block editor’s UI

As you navigate through the editor’s menus, individual items are clearly highlighted, allowing you to quickly identify what you’ve selected.

Active menu items have distinct highlights

The block toolbars are now simpler, displaying the most commonly-used features. For example, paragraph blocks show only bold, italic, and link formatting buttons. You’ll find all the extra options in the dropdown menu. 150w, 300w, 768w, 1080w" sizes="(max-width: 1024px) 100vw, 1024px" />
The block toolbar options are simpler and uncluttered

What’s more, instead of listing blocks within a fixed-height container, the block inserter now spans the height of the window. You’ll now see more blocks and block categories at once with less scrolling.

Block inserter spanning the full height of the window 1440w, 150w, 300w, 768w, 1024w" sizes="(max-width: 720px) 100vw, 720px" />
The block inserter spans the full height of your screen

Introducing block patterns

With the block editor as your canvas you can design almost any layout you can imagine – but building intricate page structures should never get in the way of your creative process.

Here’s where the blocks really shine: along with individual blocks, the editor now includes block patterns, a library of predefined and reusable block layouts, that you use on any page or post.

To check out the list of available patterns, click on the block pattern icon (on the top right) to reveal a collection of pre-built layouts: 2048w, 150w, 300w, 768w" sizes="(max-width: 1024px) 100vw, 1024px" />
Block patterns are groups of individual blocks combined to create elegant layouts

Pick the pattern you want to use, and it will appear in your editor ready for you to customize with your own content.

Right now, you’ll find a few introductory patterns – Two Columns of Text, Two Buttons, Cover, and Two Images Side by Side – but we’ll be adding more and more patterns as they’re available. When the block patterns API opens up to third-party authors, you’ll also be able to develop and share your own.

(Have an idea for a great pattern? The block editor developer community is actively seeking ideas. The more ideas they receive, the better your editor will be!)

Colors, colors everywhere

When it comes to words and columns, websites aren’t newspapers: things don’t have to be black and white.

Use the new Text Color selector tool to change the color of sentences, and even individual words and letters. Highlight the text you’d like to change, then click on the arrow dropdown and select “Text Color.” 150w, 300w, 768w, 1314w" sizes="(max-width: 1024px) 100vw, 1024px" />
Select “Text Color” from the options 150w, 300w, 768w, 1306w" sizes="(max-width: 1024px) 100vw, 1024px" />
Pick the color of your word or character


To change the background colors of your columns, select the column and head to the sidebar, to Color settings.

Columns get background colors too!

The road ahead is paved with blocks

There’s still a long way to go, and the editor’s community of contributors hasn’t given its collective keyboards a moment’s rest. Work on polishing UI elements like the sidebar and dropdowns continues along with advancements to block patterns and other exciting features.

Are there ways we could improve the site editing experience even more? Please let us know! We’re always keen to hear how we can make the web a better place for everyone.

How to Move Your Classes Online — and Charge for Them

We are proud to host many websites for language tutors, yoga schools, and personal fitness coaches around the world.

It’s exciting to see how educators and consultants across different industries are getting creative with their online offerings: language teachers conduct 1:1 sessions to help students hone pronunciation, yoga studios livestream group sessions, and instructors lead writing boot camps via Zoom breakout rooms. Even my own strength coach is monitoring my workouts — I launch the camera on my phone, place it against the wall, and do deadlifts while he supervises.

Last year we launched Recurring Payments to support creators, consultants, small businesses, and other professionals in establishing dependable income streams. We were very pleased to discover that online educators using this feature are thriving as well!

Marta, for example, runs Spanish Teacher Barcelona, a Spanish language school located in — you guessed it! — Barcelona. She offers 1:1 sessions and classes in a coworking space in the city’s Gracia neighborhood. For customers that cannot meet in person, she hosts private lessons online, available with a subscription. She offers three subscription plans to meet the variety of needs of her students. 150w, 300w, 768w, 1069w" sizes="(max-width: 1024px) 100vw, 1024px" />

Ready to set up your own subscription-based service or move your existing classes online? Here’s a quick guide to get you set up with the right tools, so you can focus instead on providing the best educational environment possible. 

Set up your online class today

Below, we’ll cover the steps you can take to get your classes or private lessons up and running with the Recurring Payments feature. We’ll also recommend tools to make scheduling 1:1 sessions and operating your classes easier, like the Calendly block and various video conferencing tools. 

1. Create a “Subscribe” page to promote your class or service

You need to convince your customers that your subscription is worth paying for. A typical way to do this is with a “Subscribe” page where you explain the benefits of your services.

Take a look at the “Join” page on, an online publication that publishes and curates nonfiction storytelling on the web and funds stories with memberships: 150w, 300w, 768w, 1852w" sizes="(max-width: 1024px) 100vw, 1024px" />

A few tips to make your offer irresistible:

  • Focus on the benefits for the customer.
  • Provide a few subscription options, such as classes at different frequencies and at different price points.
  • Add testimonials if you can — people love to read reviews.

Create this page by going to My Sites → Pages → Add New.

2. Add a subscription with the Recurring Payments feature

Recurring Payments allows you to create renewable payments. Your subscribers will enter their credit card details, and will then be charged automatically every month or every year.

Recurring Payments is currently available on any of our paid plans. To get started, you’ll need to create a Stripe account, which is a global money transfer service. We partner with Stripe to make sure payments end up safely in your bank account.

You can start collecting Recurring Payments in five minutes.

On the “Subscribe” page you created above, search for the “Recurring Payments” block: 150w, 300w, 768w, 1934w" sizes="(max-width: 1024px) 100vw, 1024px" />

After clicking “Connect to Stripe,” you’ll be able to connect your existing Stripe account or create a new one.

Now you can create your first subscription. 150w, 300w, 768w, 1716w" sizes="(max-width: 1024px) 100vw, 1024px" />

Set the price, frequency (we recommend monthly for start), and the title of your subscription, like Writing Bootcamp, 3 breakout sessions/month or Conversational French for Beginners, 4 classes/month.

That’s it! Your subscription is now created. Once you publish the page and activate your Stripe account, your customers will be able to subscribe to this service.

Subscriptions are dependable: your subscribers will be automatically charged at the beginning of the next renewal period (in a month or a year). You don’t have to remind or nudge them, and they also don’t have to remember to pay you — everything is handled.

For more details, please read this Recurring Payments support article.

Would you rather sell access to your services as a one-time purchase? Check out the Simple Payments feature.

3. Schedule your lessons

Your subscribers can set up a time for their lessons using a service like Calendly, a handy tool that allows them to select a free slot in your schedule. We recently created the Calendly block to bring some of the service’s key features to you. While editing your page, search for the “Calendly” block.

Remember to check if the subscription is active

Before hopping on an online meeting, you need to confirm that the person scheduling a call is indeed a paying subscriber. Check the list of your active Recurring Payments subscribers located in your dashboard under My Sites Earn Payments.

Read more about managing your list of subscribers.

4. Select a tool to host your class

Video conferencing tools are very useful for teaching. Apart from seeing the other person, you can share your screen, send files, or even host a session for multiple people, lecture-style.

You can use Google Hangouts, Skype, or Zoom (which is what we use for our meetings here at Zoom has put together a handy tutorial for teachers.

If you’d like additional setup tips on selecting a theme for your website, adding content and media, and adding students as viewers or contributors, read our support tutorial on building a virtual classroom.

What amazing class are you going to launch?

Setting Users Impossible Passwords BY VALUES and Schema Only Accounts

I plan to try and write some Oracle security based blog posts whilst working from home. These promises when I have made them in the past usually end up not coming true due to other work and things getting more....[Read More]

Posted by Pete On 26/03/20 At 02:38 PM

Large objects are larger than expected

Most customers I encounter nowadays are generally sticking to the defaults when creating their databases from 12c onwards. This means that they’ll be using the UTF8 class of charactersets when configuring their database. As a quick segue from the topic at hand, I think this is a good thing. Having a UTF8 characterset avoids a lot of hassles later when applications encounter a need to store extended characters, and let’s face it, the moment you need to store someone’s name, then at some stage you are going to hit this.

But back to large objects. It is important to realise that a UTF8 characterset has implications with how LOBs will be stored in the database. In a single byte characterset database, then if you need to store a 1 megabyte text file in a CLOB, then it will consume approximately 1 megabyte. But lets look at what happens when you are using a multi-byte database.

SQL> host dir /s /b c:\temp > c:\temp\file1.txt

SQL> host dir c:\temp\file1.txt
 Volume in drive C is OS
 Volume Serial Number is 66D0-4AB5

 Directory of c:\temp

22/03/2020  07:19 PM           635,750 file1.txt
               1 File(s)        635,750 bytes
               0 Dir(s)  54,663,430,144 bytes free

So I have a text file of about 630k, and I’ll now store that as a single CLOB in the database (which was built with AL32UTF8)

SQL> select property_name, property_value
  2  from   database_properties
  3  where  property_name like 'NLS%';

------------------------------ -----------------------------
NLS_COMP                       BINARY
NLS_DUAL_CURRENCY              $
NLS_SORT                       BINARY
NLS_DATE_FORMAT                DD-MON-RR
NLS_CALENDAR                   GREGORIAN
NLS_CURRENCY                   $
NLS_TERRITORY                  AMERICA
NLS_LANGUAGE                   AMERICAN

SQL> create tablespace small_extents 
  2    datafile 'X:\ORACLE\ORADATA\DB19\PDB1\SMALL01.DBF' size 20m
  3    extent management local uniform size 128k;

Tablespace created.

SQL> create table t ( c clob )
  2  lob ( c )store as basicfile
  3  tablespace small_extents;

Table created.

SQL> declare
  2    bf    bfile;
  3    cb    clob;
  5    dest  int := 1;
  6    src   int := 1;
  7    cs    int := 0;
  8    ctx   int := 0;
  9    warn  int := 0;
 10  begin
 11    insert into t (c) values (empty_clob())
 12    returning c into cb;
 14    bf := bfilename('TEMP', 'file1.txt');
 15    dbms_lob.fileopen(bf, dbms_lob.file_readonly);
 16    dbms_lob.loadclobfromfile (
 17      dest_lob      => cb,
 18      src_bfile     => bf,
 19      amount        => dbms_lob.lobmaxsize,
 20      dest_offset   => dest,
 21      src_offset    => src,
 22      bfile_csid    => cs ,
 23      lang_context  => ctx,
 24      warning       => warn);
 25    dbms_lob.fileclose(bf);
 27    commit;
 28  end;
 29  /

PL/SQL procedure successfully completed.

So the CLOB has been stored. Let us take a look at the size of the CLOB in the database.

SQL> select segment_name, bytes
  2  from   user_segments
  3  where  segment_name = 'T'
  4   or segment_name = ( select segment_name from user_lobs where table_name = 'T' )
  5   or segment_name = ( select index_name from user_lobs where table_name = 'T' );

SEGMENT_NAME                        BYTES
------------------------------ ----------
SYS_IL0000082130C00001$           131072
SYS_LOB0000082130C00001$         1572864
T                                  131072

3 rows selected.

SQL> select bytes
  2  from   user_extents
  3  where  segment_name = 'SYS_LOB0000082130C00001$';


12 rows selected.


Even without the LOB index, the LOB data is just over double the size of the original text file. This might come as a surprise, but it is documented in the Large Object Guide

CLOB data is stored in a format that is compatible with UCS-2 if the database character set is multibyte

Hence, if you are doing a database sizing estimate, and you intend to store text data in CLOBs, make sure to take this into consideration when planning your size. In case you are thinking that this is an unreasonable “tax” to pay, don’t forget that all we are really doing is catering to the potential of the file containing extended characters. For example, if I open the original file with a text editor and save that file in UTF16 format, then the file size is similar to that of the CLOB.

SQL> host dir c:\temp\file1*
 Volume in drive C is OS
 Volume Serial Number is 66D0-4AB5

 Directory of c:\temp

22/03/2020  07:19 PM           635,750 file1.txt
22/03/2020  07:33 PM         1,271,500 file1u.txt
               2 File(s)      1,907,250 bytes
               0 Dir(s)  54,639,943,680 bytes free

Expert Advice: How to Make a Great Website for Your Small Business – Webinar

Whether you already own a small business or are exploring the idea of starting one, you’ll come away from this free, 60-minute live webinar with a wealth of actionable advice on how to maximize your digital presence.

Date: Thursday, April 2, 2020
Time: 11:00 am PDT | 1:00 pm CDT | 2:00 pm EDT | 18:00 UTC
Registration link:
Who’s invited: Business owners, freelancers, entrepreneurs, and anyone interesting in starting a small business or side gig.

Hosts Steve Dixon and Kathryn Presner, Happiness Engineers, have many combined years of experience helping small-business owners create and launch successful websites. They’ll give you tips on site design, search engine optimization (SEO), monetization, and mobile optimization. You’ll be able to submit questions beforehand—in the registration form—and during the live webinar.

Everyone is welcome, even if you already have a site, and even if your site wasn’t built on We know you’re busy, so if you can’t make the live event, you’ll be able to watch a recording of the webinar on our YouTube channel.

Live attendance is limited, so be sure to register early. We look forward to seeing you on the webinar!