Feed aggregator

Oracle Retail Recognized as a Leader in Point of Service in Independent Research Report

Oracle Press Releases - Thu, 2018-08-02 07:00
Press Release
Oracle Retail Recognized as a Leader in Point of Service in Independent Research Report

Redwood Shores, Calif.—Aug 2, 2018

Oracle Retail has been recognized as a leader in point of sale solutions by Forrester Research. “The Forrester Wave™: Point Of Service, Q3 2018” report recognizes Oracle Retail for, “…demonstrated strength in mobile extensions, back office functionality, and the architecture to deliver resilient, responsive, modern, cloud and mobile POS deployments. Oracle clients offered a positive view of Oracle’s global footprint, stability and architecture… Oracle is a best fit for sophisticated international retailers.”

According to Forrester, “The POS market is growing because more digital business professionals see it as a way to address their top challenges. This is in large part because they increasingly trust POS providers to act as strategic partners that help them deliver compelling customer experience (CX) through the path to purchase, return, and repeat purchase.”

“Omnichannel retailers are challenged with creating differentiated customer experiences that convert sales, drive loyalty and personalize service,” said Jeff Warren, vice president, Oracle Retail. “Oracle is uniquely positioned to provide retailers with modern POS infrastructure that arms associates with the tools and insights they need to offer the innovative brand experiences that customers expect.”

Xstore Delivers Resilient, Responsive and Modern Cloud POS Innovation Optimized for Mobile

Oracle Retail Xstore Point-of-Service delivers robust functionality which enables retail associates to deliver on brand promise in store with inventory visibility, customer intelligence, and seamless transactions. Here are some new advances with Oracle Retail Xstore Point-of-Service:

  • Rapid Deployment. With Oracle’s pre-integrated omnichannel suite—which includes Oracle Retail Order Management, Oracle Retail Order Broker, Oracle Retail Customer Engagement, Oracle Commerce Cloud and Oracle Retail Xstore Point-of-Service—we’ve built in the integration, orchestrated the synchronization and engineered the hardware for the ultimate Omnichannel experience.  Retailers can focus on configuring the system to meet their business needs/rules, instead of the building of the entire back-end integration. The out-of-the-box sophisticated customer shopping journeys can be implemented in weeks or months.

  • Enabling Flexible Omnichannel Journeys. Associates are empowered to deliver an experience that matches customer expectations. Oracle Retail enables the consumer journeys required to deliver a superior experience. Associates are now able to add multiple order types in a single transaction and during fulfillment split line and split item to improve their ability to sell down to the last item.

  • Single View of Customer. Today’s shoppers share personal interests to the extent where offers should be specific to them. First-hand data, together within Oracle Retail Customer Insights Cloud Service and Oracle Retail Customer Engagement Cloud Service help retailers understand what customers want, and when they want it.

  • Personalization. Customer Entitlements are delivered as an out of the box component of this suite of solutions. And with the stronger integration between Oracle Marketing Cloud and Oracle Retail Customer Engagement Cloud Service, retailers can personalize offers.

  • Thin Deployment with Oracle MICROS Hardware. Oracle software and hardware are engineered to work better together. Oracle Retail Xstore Point of Service has been engineered for smaller footprints and portability with the Oracle MICROS hardware. The software is now optimized to support sleek and slim hardware the 610 Series 700 tablet and the Compact 310.

  • POS Integration that Streamlines Investigation.  A heightened degree of integration between Oracle Retail XBRi Cloud Service and Oracle Retail Xstore Point-of-Service further enhances the ability of XBRi’s embedded science to pinpoint new sources of risk and deliver purpose-build reports that streamline and support investigative activities while leveraging the best practices built into the Oracle Retail portfolio.

  • Modern Retailing. Oracle Retail Xstore Point-of-Service delivers associate mobility that allows them to engage with their customers on the sales floor where the purchasing decision is made. Blurring the line between the shopping and the purchasing experiences, Xstore’s IP enabled store delivers shared peripherals (printers, PIN pads, and even the cash drawer) significantly increasing capacity while reducing the overall deployment cost.  

  • Secure Payments. Oracle Retail Xstore Point-of-Service offers retailers a secure abstracted payment solution that enables the rapid uptake of emerging payment technologies while removing the burden of PCIDSS overheads.

  • Supporting the Global Footprint. Through a combination of configuration and prepackaged accelerators all within the single code base, Oracle Retail Xstore Point-of-Service delivers a global solution that addresses the many and varying requirements for retailers’ operations around the world.

Continued Global Customer Momentum

Oracle Retail customers continue to augment their transaction experience, improve employee productivity and drive long-term loyalty with Xstore Point of Service:

  • ABC Fine Wine & Spirits modernizes the customer experience with Oracle Retail Xstore Point-of-Service.

  • Luxury Retailer Chalhoub delivers the first Middle East modern, mobile deployment of Xstore in six months.

  • Helzberg Diamonds empowers associates to create meaningful customer experiences by upgrading Oracle Retail Xstore Point-of-Service solution while implementing Oracle Retail Order Broker and Oracle Retail Customer Engagement.

  • Italian Fashion Company Miroglio offers customers a rich shopping experience with Oracle Retail Xstore and Oracle Retail Customer Engagement.

  • Global luggage retailer Samsonite upgraded Oracle Retail Xstore Point-of-Service and Oracle Retail Customer Engagement while adopting Oracle Retail Order Broker Cloud Service.

  • UK specialty retailer Wyevale deploys the latest version of Oracle Retail Xstore Point-of-Service, Oracle MICROS Hardware and Oracle Retail Customer Engagement with Oracle Retail Consulting.

Contact Info
Matt Torres
Oracle
4155951584
matt.torres@oracle.com
About Oracle

The Oracle Cloud offers complete SaaS application suites for ERP, HCM and CX, plus best-in-class database Platform as a Service (PaaS) and Infrastructure as a Service (IaaS) from data centers throughout the Americas, Europe and Asia. For more information about Oracle (NYSE:ORCL), please visit us at www.oracle.com.

About Oracle Retail

Oracle provides retailers with a complete, open, and integrated suite of best-of-breed business applications, cloud services, and hardware that are engineered to work together and empower commerce. Leading fashion, grocery, and specialty retailers use Oracle solutions to anticipate market changes, simplify operations and inspire authentic brand interactions. For more information, visit our website at www.oracle.com/retail

Trademarks

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Talk to a Press Contact

Matt Torres

  • 4155951584

Consumer Research Reveals Majority of Restaurant and Hotel App Users Engage Once a Week

Oracle Press Releases - Thu, 2018-08-02 07:00
Press Release
Consumer Research Reveals Majority of Restaurant and Hotel App Users Engage Once a Week Oracle Food and Beverage Report Highlights Global Consumer Trends In Hospitality App Usage

Redwood Shores, Calif.—Aug 2, 2018

A new report titled Get Appy: Do Consumers Use Restaurant & Hotel Branded Apps revealed that a majority of global consumers (57 percent) have used or are using mobile applications to engage with hospitality operators. The study of 15,000 consumers across Europe, Latin America, Asia-Pacific and North America revealed that of the 23 percent that have at least one restaurant or hotel branded app on their mobile device, 70 percent are using them at least once a week. Increased app engagement across global consumers creates new opportunities to personalize service, incentives and menu offerings and highlights the need for modern food and beverage technology to deliver more meaningful guest experiences.

“Consumers are willing to engage with brands through mobile applications if operators can deliver differentiated value,” said Chris Adams, vice president strategy, Oracle Food and Beverage. “Operators that lean into the mobile opportunity for the food and beverage industry will have a significant competitive advantage with greater insight into service preferences and emerging menu trends.”

  • Of the 23 percent of consumers who have download a restaurant or hotel app, two-thirds have more than three apps on their devices.

  • Asia Pacific leads with 82 percent of consumers using a hospitality app at least once a week compared to 54 percent of consumers in North America.

  • One in five global consumers has at least one app for a food delivery service and 23 percent have a booking app for hotels or restaurants on their device.

  • Almost a third (28 percent) of consumers have paid for food and drink from an app on their mobile device at least once with increased adoption among Asia-Pacific consumers (37 percent)

“Historically development of food and beverage applications has been cost and labor prohibitive for a majority of the marketplace,” said Chris Adams, vice president strategy, Oracle Food and Beverage. “With a modern, cloud-based POS system operators can extend their investment and take control of guest relationships while encouraging long-term loyalty with personalized incentives through an integrated mobile experience.”

Oracle Food and Beverage provides operators with API interfaces through Oracle Hospitality Simphony Cloud Service that allow restaurants to extend their POS with mobile integrations. From mobile apps that enable loyalty or ordering flexibility, to back office applications that facilitate smoother operational efficiencies the open nature of the Simphony Cloud platform supports business growth and innovation.

Contact Info
Matt Torres
Oracle
4155951584
matt.torres@oracle.com
About Oracle

The Oracle Cloud offers complete SaaS application suites for ERP, HCM and CX, plus best-in-class database Platform as a Service (PaaS) and Infrastructure as a Service (IaaS) from data centers throughout the Americas, Europe and Asia. For more information about Oracle (NYSE:ORCL), please visit us at www.oracle.com.

About Oracle Food and Beverage

Oracle Food and Beverage, formerly MICROS, brings 40 years of experience in providing software and hardware solutions to restaurants, bars, pubs, clubs, coffee shops, cafes, stadiums, and theme parks. Thousands of operators, both large and small, around the world are using Oracle technology to deliver exceptional guest experiences, maximize sales, and reduce running costs.

For more information about Oracle Food and Beverage, please visit www.Oracle.com/Food-Beverage

Trademarks

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Talk to a Press Contact

Matt Torres

  • 4155951584

Oracle Recognized as a Leader in 2018 Gartner Magic Quadrant for Mobile App Development Platforms

Oracle Press Releases - Thu, 2018-08-02 07:00
Press Release
Oracle Recognized as a Leader in 2018 Gartner Magic Quadrant for Mobile App Development Platforms For second consecutive year, Oracle positioned as leader based on ability to execute and completeness of vision

Redwood Shores Calif—Aug 2, 2018

Oracle today announced that it has been named a Leader in Gartner’s 2018 Magic Quadrant for Mobile App Development Platforms1.This is the second consecutive year Oracle Mobile Cloud has been recognized as a Leader and further underscores the strength of Oracle’s solution, which offers developers the latest emerging technologies to help build unified multi-channel applications.

As mobile user habits continue to evolve, enterprises are expanding efforts to reach audiences on a variety of platforms. According to Gartner, “55 percent of all organizations will have deployed (used in production) at least one additional app experience in addition to a mobile app by 2020”2. Additionally, the analyst firm predicts that “by 2021 at least one-third of enterprises will have deployed a multi-experience development platform to support mobile, web, conversational and augmented reality development”3. Using Oracle Mobile Cloud, businesses are able to create cohesive experiences across all platforms to engage key stakeholders on the most popular devices and platforms.

“Smartphone adoption continues to grow and mobile apps, while key to engaging customers, are beginning to give way to new technologies like conversational interfaces,” said Suhas Uliyar, vice president, product management, Oracle. “The addition of services like Oracle’s intelligent bots, which can readily build chatbots for customers, will be instrumental for digital transformation as businesses engage with audiences on new and emerging platforms.”

According to Gartner, “Leaders have a strong combination of Ability to Execute and Completeness of Vision. In the MADP sector, this means that Leaders are not only good at cross-platform development, deployment and management across the full life cycle, but also demonstrate strong vision for multiexperience development support. A Leader must also have open architectures and support open standards, while showing a solid understanding of IT requirements, and scalable sales channels and partnerships. Leaders must provide platforms that are easy to purchase, program, deploy and upgrade, and which can connect to a range of systems of record and third-party cloud services.”

Access a complimentary copy of Gartner’s 2018 Magic Quadrant for Mobile App Development Platforms here.

Part of Oracle Cloud Platform, Oracle Mobile Cloud is a complete multi-channel platform managed by Oracle to help developers and enterprises engage intelligently and contextually with customers, business partners and employees through the end user’s channel of choice. It offers no-code solutions and enables customers to deliver engaging, personalized digital experiences that will delight customers across multiple channels. Not only can customers engage via mobile and web channels, but now take advantage of the next leap in technology—artificial intelligence—for all platforms and intelligent bot services. In addition to providing a platform to build engaging experiences across mobile, bots and web, users also get actionable insights via analytics that provide deep understanding of user adoption behavior and app performance across platforms, so businesses can personalize engagement and ensure that everything is running at peak performance. The platform also enables enterprises to connect all backend applications, a key factor to creating a holistic engagement strategy.

1. Source: Gartner, Magic Quadrant for Mobile App Development Platforms, Jason Wong, Van L. Baker, Adrian Leow, Marty Resnick, 17 July 2018

2. Source: Gartner, It's Time for App Leadership to Reframe Mobile App Development Decisions, Marty Resnick, Adrian Leow, Jason Wong, 28 February 2018

3. Source: Gartner, Technology Insight for Multiexperience Development Platforms, Jason Wong, Van L. Baker, William Clark, Adrian Leow, Marty Resnick, Mark Driver, Magnus Revang, Rob Dunie, 21 February 2018

Gartner Disclaimer
Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner’s research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.

Contact Info
Jesse Caputo
Oracle
+1.650.506.5967
jesse.caputo@oracle.com
Nicole Maloney
Oracle
+1.650.506.0806
nicole.maloney@oracle.com
About Oracle

The Oracle Cloud offers complete SaaS application suites for ERP, HCM and CX, plus best-in-class database Platform as a Service (PaaS) and Infrastructure as a Service (IaaS) from data centers throughout the Americas, Europe and Asia. For more information about Oracle (NYSE:ORCL), please visit us at www.oracle.com.

Trademarks

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Talk to a Press Contact

Jesse Caputo

  • +1.650.506.5967

Nicole Maloney

  • +1.650.506.0806

Keep up to Date With Critical Patches

Anthony Shorten - Wed, 2018-08-01 20:39

One of the most important recommendations I give to customers is to keep up to date with the latest patches, especially all the security patches, to improve performance and reduce risk.

For more information refer to the following sites:

Oracle WebLogic, Oracle Linux, Oracle Solaris and Oracle Database patches apply to Oracle Utilities products.

Procedure having OUT parameter vs Function

Tom Kyte - Wed, 2018-08-01 19:06
Thanks for taking up this question. Are there any guidelines regarding when to use a procedure(OUT parameter) vs Function. Both structures can be used to achieve the same objective in specific situation. I have created a function F1 and a procedu...
Categories: DBA Blogs

Oracle Linux containers security

Wim Coekaerts - Wed, 2018-08-01 13:05

I recently did a short webcast that talked about Oracle Linux & Containers and some suggestions around best practices and some security considerations.

The webcast had just a few slides and some of the feedback I received was that there could have been more textual assist to the talking so I promised I would write up a few things that came up during the webcast. Here it is:

We have been providing Oracle Linux along with great support for nearly 12 years. During those years, we have added many features and enhancements. Through upstream contributions, picked up by the various open source projects that are distributed as part of Oracle Linux (in particular UEK) or additional features/services such as Oracle Ksplice or DTrace (released under GPL), etc...

In terms of virtualization, we’ve been contributing to Xen since 2005+.  Xen is the hypervisor used in Oracle VM. A bit more recently, we are also heavily focus on kvm and qemu in Linux.  Of course, we have Oracle VM VirtualBox. So a lot of virtualization work has been going on for a very long time and will continue to be the case for a very long time. We have many developers working on this full time (and upstream).

Container work:

We were early adopters of lxc and were one of the first, if not the first, to certify lxc with enterprise applications such as our database or applications. This was before Docker existed.

Lxc was the initial push to  mainstreaming container support in Linux.  It helped push a lot of projects in the Linux kernel around resource management, namespace support, all the cgroups work,... lots of isolation support really got a big start around this time. Many developers contributed to it and certainly a bunch of openvz concepts got proposed to get merged into the mainline kernel.

A few years after lxc, Docker came to the forefront and really made containers popular - talk about mainstream… and again, we ended up providing Docker from the very beginning and saw a lot of potential in the concept of lightweight small images on Linux for our product set.

Today - everyone talks about Kubernetes, Docker or Docker-alternatives such as Rkt and microservices. We provide Oracle Container Services for use with Kubernetes and Oracle Container Runtime for Docker support to our customers as part of Oracle Linux subscriptions. Oracle also has various Oracle Cloud services that provide Kubernetes and Docker orchestration and automation. And, of course, we do a lot testing and supporting  many Oracle products running in these isolation environments.

The word isolation is very important.

For many years I have been using the world isolation when it comes to containers, not virtualization. There is a big distinction.

Running containers in a Linux environment is very different from running Solaris Zones, or running VMs with kvm or Xen. Kvm or Xen, that’s "real" virtualization. You create a virtual compute environment and boot an entire operating system inside (it has a virtual bios, boots a kernel from a virtual disk, etc). Sure-  there are some optimizations and tricks around paravirtualization but for the most part it’s a Virtual Machine on a real machine. The way Solaris Zones is implemented  is also not virtualization, since you share the same host kernel amongst all zones etc, But - the Solaris Zones  implementation is done as full fledged feature. It’s a full-on isolation layer inside Oracle Solaris top to bottom. You create a zone and the kernel does it all for you right then and there: it creates a completely separate OS container for you, with all the isolation provided across the board. It’s great. Has been around for a very long time, is used widely by almost every Oracle Solaris user and it works great. It provides a very good level of isolation for a complete operating system environment. Just like a VM provides a full virtual hardware platform for a complete operating system environment.

Linux containers, on the other hand, are implemented very differently. A container is created through using a number of different Linux kernel features and you can provide isolation at different layers. So you can create a Linux container that acts very, very similar to a Solaris zone but you can also create a Linux container that has a tremendous amount of sharing amongst other containers or just other processes. The Linux resource manager and various namespace implementations let you pick and choose. You can share what you want, and you can isolate what you want. You have a PID namespace, IPC namespace, User Namespace, Net namespace ,... each of these can be used in different ways or combined in different ways. So there’s no CONTAINER config option in linux, no container feature but there are tools, libraries, programs that use these namespaces and cgroups to create something that looks like a complete isolated environment akin to zones.

Tools like Docker and lxc do all the "dirty work" for you, so to speak. They also provide you with options to change that isolation level up and down.

Heck, you can  create a container environment using bash!  Just echo some values to a bunch of cgroups files and off you go. It’s incredibly flexible.

Having this flexibility is great as it allows for things like Docker (just isolated a process, not a whole operating environment). You don’t have to start with /bin/init or /bin/systemd and bring up all the services. You can literally just start httpd and it sees nothing but itself in its process namespace. Or… sure… you can start /bin/init and you get a whole environment, like what you get by default with lxc.

I think Docker (and things like Docker - Rkt,..) is the best user of all these namespace enhancements in the Linux kernel. I also think that, because the Linux kernel developers implemented resource and namespace management the way they did, it allowed for a project like Docker to take shape. Otherwise, this would have been very difficult to conceive. It allowed us to really enter a new world of… just start an app, just distribute the app with the libraries it needs, isolate an app from everything else, package things as small as possible as a complete standalone unit…

This,in turn, really helped the microservices concept because it makes micro really... micro... Docker-like images give a lot more flexibility to application developers because now you can have different applications running on the same host that have different library needs or different versions of the  same application without having to mess with PATH settings and carving out directories and seeing one big mess of things… Sure, you can do that with VMs… but the drawback of a VM is (typically) that you bring in an entire OS (kernel, operating environment) to then start an app. This can cause a lot of overhead. Process isolation along with small portable images gives you an incredibly amount of flexibility and...sharing...

With that flexibility also comes responsibility - whereas one would have in the order of 10-20 VMs on a given server, you can run maybe 30-40-50 containerized OS environments (using lxc) but you could run literally 1000s of application containers using docker. They are, after all, just a bunch of OS processes with some namespaces and isolation. And if all they run is the application itself, without the surrounding OS supported services, you have much less overhead per app than traditional containers.

If you run very big applications that need 100% performance and power and the best ‘isolation’... you run a single app on a single physical server.

If you have a lot of smaller apps, and you’re not worried about isolation you can just run those apps on a single physical server. Best performance, harder to manage.

If you have a lot of smaller environments that you need to host with different OSs or different OS levels,.. You typically just run tons of VMs on a physical server. Each VM boots its own kernel, has its own virtual disk, memory etc. and you can scale.. 4-16 typical.

If you want to have the best performance where you don’t need that high isolation of separate kernels and independent OS releases down the kernel version (or even something like Windows and Linux  or Oracle Linux  and Ubuntu etc)... then you can consider containers. Super light weight, super scalable and portable.

The image can range from an OS image (all binaries installed, all libraries like a vm or physical OS install) or… just an app binary, or an app binary + libraries it needs. If you create a binary that is statically linked, you can have a container that's exactly 1 file. Isn't that awesome?

Working on Operating Systems at a company that is also a major cloud provider is really great. It gives us direct access to scale. Very, very large scale... and also a direct requirement around security. As a cloud provider we have to work very, very hard towards ensuring security in a multi-tenant environment. Protect customers data from one another. Deploying systems in isolation in an enterprise can be at a reasonable scale and of course security is very important or should be but the single tenancy aspect reduces the complexity to a certain extend.

Oracle Linux is used throughout Oracle cloud as the host for running VMs, as the host for running container services or other services, in our PaaS, SaaS stacks, etc. We work very closely with the cloud development teams to provide the fastest, most scalable solutions without compromising security. We want VMs to run as fast possible, we want to provide container services, but we also make sure that a container running for tenant A doesn’t, in any way, expose any data to a container running for tenant B.

So let’s talk a little bit about security around all this. Security breaches are up. A significant increase of data breaches every month, hacking attempts… just start a server or a VM with a public IP on the internet and watch your log files - within a few minutes you see login attempts and probes. It’s really frightening.

Enterprises used to have 100s maybe 1000s of servers - you have to keep the OS and applications current with security fixes. While reasonably large, still manageable… then add in virtualization and you increase by a  factor the number of instances (10000+)… so you drastically increase your exposure … and then you go another factor or couple of factors up  to microservices and containers - deployed across huge numbers of servers… security becomes increasingly more important and more difficult. 100000+... Do you even know where they run, what they run, who owns them?

On top of all that - in the last 8 or so months: Spectre and Meltdown.  Removing years of assumptions and optimizations everyone has relied upon. We suddenly couldn't trust VMs on the same host being isolated well enough, or processes from snooping on other processes, without applying code changes on the OS side or even in some cases in the applications to prevent exposure.

Patches get introduced. Performance drops.. And it’s not always clear to everyone what the potential exposure is and where you have to really worry and where you might not have to worry too much.

When it comes to container security, there are different layers:

Getting images / content from external (or even internal sites)

There are various places where developers can download 3rd party container images. Whereas in the past one would download source code for some project or download a specific application… these container images (let’s call them docker images) are now somewhat magical blackboxes you download a filesystem layer, or a set of layers. There are tons of files inside but you don’t typically look around, you pull an image and start it… not quite knowing what’s inside… these things get downloaded onto a laptop.. Executed… and … do you know what’s inside? Do you know what it’s doing? Have these been validated? Scanned?

Never trust what you just download from random sites. Make sure you download things that are signed, or have been checksummed and come from reputable places. Good companies will run vulnerability scanners such as Clair or Qualys as part of the process, make sure developers have good security coding practices in place. When you download an image published on Oracle Container Registry, it contains code that we built, compiled, tested, scanned, put together.  When you download something from a random site, that might not be the case.

One problem: it is very easy to get things from the outside world.. # docker pull,  by default, goes to Docker hub.. Companies can’t easily put development environments in place that prevent you from doing that. One thing we are working on with Oracle Containers Runtime using Docker is adding support for access control to Docker image repos. You can lock down which repos are accessible and which aren’t. . for instance: your Docker repo list can be an internal site only, not Docker hub.

When building container images you should always run some form of image scanner.

We are experimenting with Notary - use Notary to digitally sign content so that you  can verify images that are pulled down. We are looking at providing a Notary service and the tools for you to build your own.

Building images

Aside from using Clair or Qualys in your own CI/CD environment, you also have to make sure that you update the various layers (OS, library layer, application layer(s)) with the latest patches. Security errata are released on a regular basis. With normal OS’s whether bare metal or VMs, sysadmins run management software that easily updates packages on a regular basis and keeps things up to date. It’s relatively easy to do so and it is easy to see what is installed on a given server. There might be an availability impact when it comes to kernel updates but for the most part it is a known problem...  Updating containers, while technically, you can argue, it’s easy… just rebuild your images… it does mean that you have to go to all servers running these containers and bring them down and back up. You can’t just update a running image. The ability to do anything at runtime is much more limited than when you run an OS instance with an application. From a security point of view, you have to consider that. Before you start deploying containers at scale, you have to decide on your patch strategy. How often do you update your images, how do you distribute these images, how do you know all the containers that are running and which versions they run, which layers are they running etc.. sorting this out after a critical vulnerability hits will introduce delays and have a negative impact and potentially create large exposure.

So - have a strategy in place to update your OS and application layers with security fixes, have a strategy in place on how to distribute these new image updates and refresh your container farm.

Lock down

If you are a sophisticated user/developer, you have the ability to really add very fine grained controls. With Docker you have options like privileged containers: giving extra access to devices and resources. Always verify that anything that is started privileged has been reviewed by a few people. Docker also provides Linux Capabilities control such as mknod or setgid or chroot or nice etc.. look at your default capabilities that are defined and where possible, remove any and all that are not absolutely needed.

Look into the use of SELinux policies.  While SELinux operates at the host level only, it provides you with an additional security blanket. Create policies to restrict access to files or operations.

There is no SELinux namespace support yet.  This is an important project to work on, we started investigating this, so that you can use SELnux within a container in its own namespace, with its own local container policies.

Something we use a lot as well inside Oracle: seccomp. Seccomp lets you filter syscalls (white list). Now, when you really lock down your syscalls and have a large list, there can be a bit of a performance penalty… We’re doing development work to help improve seccomp’s filter handling in the kernel. This will show up in future versions of upstream Linux and also in our UEK kernel.

What’s nice with seccomp is that if you have an app and you know exactly which few syscalls are required, you can enforce that it will only ever be allowed to access / execute those systemcalls and nothing else will get through in case a rogue library would magically get loaded and try to do something.

So if you are really in need for the highest level of lockdown, a combination of these 3 is ideal. Use seccomp to restrict your system calls exposed to your container, use SELinux policies to control access to processes that are running and what they can do with labels, use capabilities alongside / on top of seccomp to prevent privileged commands to run and run everything non-privileged.

The third major part is the host OS.

You can lock down your container images and such, but remember that these instances all run (typically) on a Linux server. This server runs an OS kernel, OS libraries (glibc)... and security vulnerability fixes need to be applied. Always ensure that you apply errata on the host OS…  I would always recommend customers to use Oracle Ksplice with Oracle Linux

Oracle Ksplice is a service that provides the ability for users to apply critical fixes (whether bugs or vulnerabilities) while the system is up and running with no impact to the applications (or containers).

While not every update can be provided as an online patch, we’ve had a very, very high success rate. Even very complex code changes been fixed or changed using Ksplice.

We have two areas that we can address. Kernel – the original functionality since 2009 and also since a number of years, a handful of userspace libraries. We are in particular focused on those libraries that are in the critical path – glibc being the most obvious one along with openssl.

While some aspects of security are the ability to lock down systems and reduce the attack surface, implement best practices, protect source of truth, prevent unauthorized access as much as possible, etc… if applying security fixes is difficult and have a high impact on availability, most companies / admins will take their time to apply them. Potentially waiting weeks or months or even longer to schedule downtime. Keep in mind that with Ksplice we provide the ability to ensure your host OS (whether using kvm or just containers) can be patched while all your VMs and/or containers continue to run without any impact whatsoever. We have a unique ability to significantly reduce the service impact of staying current with security fixes.

Some people will be quick to say that live migration can help with upgrading VM hosts by migrating VM guest off to another server and reboot the host that was freed up – while that’s definitely a possibility, it’s not always possible to offer live migrate capabilities at scale. It’s certainly difficult in a huge cloud infrastructure.

In the world of containers where we are talking about a 10-100 fold or even more number of instances running per server, this is even more critical. Also, there is no live migration yet for containers. There’s some experimental work but not production quality to migrate a container/Docker instance / Kubernetes pod from one server to another.

As we look more into the future with Ksplice: we are looking at more userspace library patching and see how can make that scale on a container level  - the ability to apply , for instance, glibc fixes within container instances directly without downtime. This is a very difficult problem to solve because there can be 100’s of different versions of glibc running and we also have to ensure images are updated on the fly so that a new instance will be ‘patched’ at startup. This is a very dynamic environment.

This brings me to a final project we are working on in the container world:

Project Kata is a hybrid model of deploying applications with the flexibility and ease of use (small, low overhead) of containers and with the security level of VMs.  The scalability of Kata containers is somewhere in between VMs and native containers. Order of low 1000s not high 1000s. Startup time is incredibly fast. Starting a VM typically take 20-30 seconds, starting Docker instances takes in the order of few milliseconds. Starting a Kata container takes between half a second and 3 seconds depending on the task you run.  A Kata container effectively creates a hardware virtualization context (like kvm uses) and boots a very,  very optimized Linux kernel, that can start up in a fraction of a second, with tiny ramdisk image that can execute the binaries in your container image. It provides enough sharing on the host to scale but it also provides a nice clean virtualization context that helps isolation between processes.

Most, if not all, cloud vendors run container services inside VMs for a given tenant. So the containers are isolated from other tenants through a VM context. But that provides a bit more overhead than is ideal. We would like to be able to provide containers that run as native and low overhead as possible.,.. We are looking into providing a preview for developers and users to play with this. Oracle Linux with UEKR5.  We have a Kata container kernel built that boots in a fraction of a second and we created a tiny package that executes a Docker instance on an Oracle Linux host. It’s experimental,  we are evaluating the advantages and disadvantages (how secure is the kernel memory sharing, how good is performance at scale, how transparent is it to run normal docker images in these kata containers, are they totally compatible etc etc).

Lots of exciting technology work happening.

UW Health Selects Oracle Cloud Applications

Oracle Press Releases - Wed, 2018-08-01 07:00
Press Release
UW Health Selects Oracle Cloud Applications Enhanced business visibility and agility help rapidly growing healthcare organization meet escalating demand and improve patient outcomes

Redwood Shores, Calif.—Aug 1, 2018

UW Health, the integrated health system of the University of Wisconsin-Madison, has selected Oracle Cloud for its enterprise resource planning (ERP) system, which includes Financials, Supply Chain and Human Capital Management. With Oracle Cloud Applications, UW Health can increase business agility, optimize the delivery of healthcare services and improve patient outcomes.

UW Health serves more than 600,000 patients annually, with 1,500 physicians and 17,000 staff at seven hospitals and 87 outpatient clinics. To meet growing demand for its nationally recognized regional health system, UW Health needed to replace its 20-year old legacy systems with one unified cloud-based ERP platform for financials, supply chain management and human resources to support its current and future needs.

“Technology and regulations have accelerated the rate of change in the healthcare industry and our legacy business systems were struggling to keep up,” said Elizabeth Bolt, senior vice president and chief operating officer, UW Health. "To ensure we could continue to deliver the best quality services as we grow, we needed agile systems that can quickly turn data into insight. Going forward, we will manage all of our HR, supply chain and financial data on a single integrated platform.”

“Healthcare organizations operate in a very dynamic environment, with changing regulations, best practices and technologies,” said Rick Jewell, senior vice president of applications development, Oracle. “With Oracle Cloud Applications, the UW Health team will always be on the latest version of our business apps enabling them to benefit from innovative new features that will enhance business agility and productivity, and, most importantly, improve patient care.”

Contact Info
Bill Rundle
Oracle
650.506.1891
bill.rundle@oracle.com
About UW Health

UW Health is the integrated health system associated with the University of Wisconsin-Madison serving more than 600,000 patients each year in the Upper Midwest and beyond with approximately 1,500 physicians and 17,000 staff at six hospitals and more than 87 outpatient sites. UW Health is governed by the UW Hospitals and Clinics Authority and partners with UW School of Medicine and Public Health to fulfill their patient care, research, education and community service missions.

About Oracle

The Oracle Cloud offers complete SaaS application suites for ERP, HCM and CX, plus best-in-class database Platform as a Service (PaaS) and Infrastructure as a Service (IaaS) from data centers throughout the Americas, Europe and Asia. For more information about Oracle (NYSE:ORCL), please visit us at oracle.com.

Trademarks

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Talk to a Press Contact

Bill Rundle

  • 650.506.1891

Oracle Grid 12c Release 2 (12.2) Certified with RAC 12.1 and EBS 12.2

Steven Chan - Tue, 2018-07-31 19:45

I'm pleased to announce Oracle Grid 12c Release 2 (12.2) is now certified when using Oracle 12c Release 12.1 Real Application Clusters (RAC) with Oracle E-Business Suite Release12.2.  When using Oracle RAC 12.1 with Oracle E-Business Suite 12.2, you now have the option to use either Oracle Grid 12c Release 12.2 or 12.1. 

Configuring Oracle Grid and shared storage is a mandatory requirement for deploying Oracle Real Application Clusters (RAC). Note that the Cluster Ready Services (CSR) ORACLE_HOME, other locations and commands may differ between the two Oracle Grid 12c Releases. 

References

Categories: APPS Blogs

Extended Histograms

Jonathan Lewis - Tue, 2018-07-31 17:05

Today’s little puzzle comes courtesy of the Oracle-L mailing list. A table has two columns (c2 and c3), which contain only the values ‘Y’ and ‘N’, with the following distribution:


select   c2, c3, count(*)
from     t1
group by c2, c3
;

C C   COUNT(*)
- - ----------
N Y       1994
Y N      71482

2 rows selected.

The puzzle is this – how do you get the optimizer to predicat a cardinality of zero (or, using its best approximation, 1) if you execute a query where the predicate is:

where   c2 = 'N' and c3 = 'N'

Here are 4 tests you might try:

  • Create simple stats (no histograms) on c2 and c3.
  • Create frequency histograms on c2 and c3
  • Create a column group (extended stats) on (c2,c3) but no histograms
  • Create a column group (extended stats) on (c2,c3) with a histogram on (c2, c3)

If you do these tests you’ll find the estimated cardinalities are (from 12.1.0.2):

  • 18,369 – derived as 73,476 / 4  … total rows over total possible combinations
  • 1,940   – derived as 73,476 * (1,994/73,476) * (71,482/73,476) … total rows * fraction where c2 = ‘N’ * fraction where c3 = ‘N’
  • 36,738 – derived as 73,476 / 2 … total rows / number of distinct combinations of (c2, c3)
  • 997      – derived as 1,994 / 2 … half the frequency of the least frequently occurring value in the histogram

The last algorithm appeared in 10.2.0.4; prior to that a “value not in histogram” would have been given an estimated cardinality of 1 (which is what the person on Oracle-L wanted to see).

In fact the optimizer’s behaviour can be reverted to the 10.2.0.3 mechanism by setting fix-control 5483301 to zero (or off), either with an “alter session” call or inside the /*+ opt_param() */ hint. There is, however, another option – if you get the column stats, then immediately set them (dbms_stats.get_column_stats(), dbms_stats.set_column_stats()) the optimizer defines the stats as “user defined” and (for reasons I don’t know – perhaps it’s an oversight) reverts to the 10.2.0.3 behaviour. Here’s some code to demonstrate the point; as the srcipt header says, I’ve tested it on versions up to 18.1


rem
rem     Script:         histogram_hack_2.sql
rem     Author:         Jonathan Lewis
rem     Dated:          Jul 2018
rem
rem     Last tested 
rem             18.1.0.0        via LiveSQL (with some edits)
rem             12.2.0.1
rem             12.1.0.2
rem

create table t1
as
select 'Y' c2, 'N' c3 from all_objects where rownum <= 71482 -- > comment to avoid format issue
union all
select 'N' c2, 'Y' c3 from all_objects where rownum <= 1994 -- > comment to avoid format issue
;

execute dbms_stats.gather_table_stats(user,'t1',method_opt=>'for all columns size 10 for columns (c2,c3) size 10');

column column_name format a128 new_value m_colname

select  column_name
from    user_tab_cols
where   table_name = 'T1'
and     column_name not in ('C2','C3')
;

set autotrace traceonly explain
select /* pre-hack */ * from t1 where c2 = 'N' and c3 = 'N';
set autotrace off

declare
        l_distcnt number default null;
        l_density number default null;
        l_nullcnt number default null;
        l_srec    dbms_stats.statrec;
        l_avgclen number default null;

begin

        dbms_stats.get_column_stats (
                ownname =>user,
                tabname =>'t1',
                colname =>'&m_colname',
                distcnt =>l_distcnt,
                density =>l_density,
                nullcnt =>l_nullcnt,
                srec    =>l_srec,
                avgclen =>l_avgclen
        );

        dbms_stats.set_column_stats(
                ownname =>user,
                tabname =>'t1',
                colname =>'&m_colname',
                distcnt =>l_distcnt,
                density =>l_density,
                nullcnt =>l_nullcnt,
                srec    =>l_srec,
                avgclen =>l_avgclen
        );

end;
/

set autotrace traceonly explain
select /* post-hack */  * from t1 where c2 = 'N' and c3 = 'N';
set autotrace off

I’ve created a simple table for the data and collected stats including histograms on the two columns and on the column group. I’ve taken a simple strategy to find the name of the column group (I could have used the function dbms_stats.create_extended_stats() to set an SQL variable to the name of the column group, of course), and then run a little bit of PL/SQL that literally does nothing more than copy the column group’s stats into memory then write them back to the data dictionary.

Here are the “before” and “after” execution plans that we get from autotrace:

BEFORE
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |   997 |  3988 |    23  (27)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T1   |   997 |  3988 |    23  (27)| 00:00:01 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("C2"='N' AND "C3"='N')


AFTER
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |     4 |    23  (27)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T1   |     1 |     4 |    23  (27)| 00:00:01 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("C2"='N' AND "C3"='N')

As required – the estimate for the (‘N’,’N’) rows drops down to (the optimizer’s best approximation to ) zero.

Footnote:

An alternative strategy (and, I’d say, a better strategic approach) would have been to create a “fake” frequency histogram that included the value (‘N’,’N’) giving it a frequency of 1 – a method I’ve suggested in the past  but with the little problem that you need to be able to work out the value to use in the array passed to dbms_stats.set_column_stats() to represent the value for the (‘N’,’N’) combination – and I’ve written about that topic in the past as well.

 

A password() function for dmgawk

Yann Neuhaus - Tue, 2018-07-31 16:31

A few days ago, as I was preparing a dmawk script for a presentation, I stumbled against another unexpected error.
The script was attempting to connect to a docbase by providing a docbase name, a user name and a password. But before that, it tested whether a password was provided as a command-line parameter (I know, this is not very secure but it was for demonstration purpose only); if not, it prompted for one using dmawk’s built-in password() function. The full command was:

echo "select count(*) from dm_user" | dmawk -v docbase=dmtest -v username=dmadmin -f select.awk

with select.awk narrowed down to:

cat select.awk
BEGIN {
   passwd = password("please, enter password: ")
   print "password was:", passwd
}

The problem was that when piping something into the script, it didn’t prompt anymore for a password. Without piping, it prompted as expected:

echo "select count(*) from dm_user" | dmawk73 -f ./getpasswd.dmawk
password was:
exiting ...

==> not prompted for password;

dmawk73 -f ./getpasswd.dmawk
please, enter password:
password was: Supercalifragilisticexpialidocious!
exiting ...

==> prompted for password;
Here, the alias dmawk73 points to the content server v7.3’s dmawk, my current version of Documentum contentServer.
Note that the variant below did not work either:

cat query_file 
select
   count(*)
from
dm_user

dmawk73 -f ./getpasswd.dmawk < query_file
password was:
exiting ...

==> not prompted for password;
This proves that what screws up the dmawk’s password() function is the presence of characters in stdin, whether they come from a pipe or from a redirection.
Did they change (a politically correct way to say “break”) something in this version relatively to a previous one ? To be sure, I tried the same tiny script with dmawk from an ancient 5.3 installation I keep around for those puzzling occasions, and guess what ? No special weirdness here, it worked as expected:

dmadmin@dmclient:~/getpasswd$ echo "select count(*) from dm_user" | dmawk53 -f ./getpasswd.dmawk
please, enter password:
password was: Supercalifragilisticexpialidocious
exiting ...

where the alias dmawk53 points to the content server v5.3’s dmawk.
A strace on dmawk53 shows that the device /dev/tty is read for input:

open("/dev/tty", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 4
...
write(4, "please, enter password: ", 24) = 24
read(4, "kdk\n", 4096) = 4
...
close(4) = 0
...
write(1, "password was: kdk\n", 18) = 18
write(1, "exiting ...\n", 12) = 12

For sure, the original behavior was changed somehow around reading from tty and the built-in password() function gets disrupted when something is first input into stdin.
So how to work around this new pesky issue ? Let’s see a few solutions. To be clear, I assume from the beginning that security is not a major concern here. Proposed solutions 4, 5 and 6 however are on the same security level as dmawk’s password() since they restore this function.

1. Give up piping into dmawk

This means that it will not be possible to concatenate the awk script to the previous command. If this is acceptable, why not ? dmawk’s input will have to come from a file, e.g.:

cat query_file 
select
   count(*)
from
dm_user

cat getpasswd_no_pipe.dmawk 
BEGIN {
   while ((getline < query_file) > 0)
      query = query "\n" $0
   close(query_file)
   print "query string is:", query
   pp = password("please, enter password: ")
   print "password was:", pp

   exit

}
END {
  print "exiting ..."
}

Execution:
dmadmin@dmclient:~/getpasswd$ dmawk73 -f getpasswd_no_pipe.dmawk -v query_file=query_file
query is: 
select
   count(*)
from
dm_user

please, enter password: 
password was: Et tu, Brute?
exiting ...

If security matters and command concatenation is not needed, the above may be an acceptable work-around.

2. Using an environment variable

If security is not significant, the password could be passed in a environment variable, e.g.:

cat getpasswd_env.dmawk
BEGIN {
   cmd = "echo $password"
   cmd | getline pp
   close(cmd)
   print "password was:", pp
}
END {
  print "exiting ..."
}

Execution:

export password=Supercalifragilisticexpialidocious!
echo "select count(*) from dm_user" | dmawk73 -f ./getpasswd_env.dmawk
password was: Supercalifragilisticexpialidocious!
exiting ...

Here, it is mandatory to use the export statement because dmawk launches a sub-process to read the parent’s environment variable.
Unlike dmawk, gawk can map the process’ environment into the built-in associative array ENVIRON, which makes accessing $password more elegant and also faster as no sub-process gets spawned:

cat ./getpasswd_env.awk
BEGIN {
   print "password was:", ENVIRON["password"]
   exit
}
END {
   print "exiting..."
}

Execution:

echo "select count(*) from dm_user" | gawk -f ./getpasswd_env.awk
password was: Supercalifragilisticexpialidocious!
exiting...

A little digression here while on the subject of environment variables: it’s a little known fact that the tools iapi and idql supports 3 handy but rarely used environment variables: DM_DOCBASE_NAME, DM_USER_NAME and DM_PASSWORD; if those are set, either as a whole or individually, the above utilities can be launched with the corresponding option -DM_CONNECT_DOCBASE, -DM_CONNECT_USER_NAME and -DM_CONNECT_PASSWORD and the corresponding parameter can be omitted. E.g.:

export DM_DOCBASE_NAME=dmtest
export DM_USER_NAME=kermit
export DM_PASSWORD=conehead
idql -ENV_CONNECT_DOCBASE_NAME -ENV_CONNECT_USER_NAME -ENV_CONNECT_PASSWORD </dev/null
   select count(*) from dm_user
   go
   quit
EoQ
Connected to Documentum Server running Release 7.3.0000.0214  Linux64.Oracle
1> 2> count(*)              
----------------------
                    61
(1 row affected)
1> Bye

However, there is no prompt for missing parameters or unset variables and, quite surprisingly, the command fails silently in such cases.
Nonetheless, the point here is that we could standardize on these variable names and use them with awk, e.g. (dm)awk would pull out those parameters from the environment as follows:

echo "select count(*) from dm_user" | dmawk73 'BEGIN {
   cmd = "echo $DM_DOCBASE_NAME $DM_USER_NAME $DM_PASSWORD"
   cmd | getline docbase_name dm_user_name passwd
   print docbase_name, dm_user_name, passwd ? passwd : "N/A"
   close(cmd)
}'
dmtest kermit conehead 

whereas gawk could chose to access those environment variables through the built-in ENVIRON associative array:

echo "select count(*) from dm_user" | gawk 'BEGIN { print ENVIRON["DM_DOCBASE_NAME"], ENVIRON["DM_USER_NAME"], ENVIRON["DM_PASSWORD"] ? ENVIRON["DM_PASSWORD"] : "N/A"}'
dmtest kermit conehead

which can be more readable in some cases since its indexes are explicitly named vs. positional.
See section 5 below to know what dmawk and gawk have in common regarding Documentum.

3. Reading the password from a file

Here too, let’s admit that security is not important so a cleartext password could be read from a text file as follows:

cat getpasswd_from_file.awk
# Usage:
#    dmawk -v password_file=... -f getpasswd_from_file.dmawk 
BEGIN {
   if (!password_file) {
      print "missing password_file parameter"
      exit
   }
   getline pp < password_file
   close(password_file)
   print "password was:", pp
}

Execution:

cat password_file
Supercalifragilisticexpialidocious!

echo "select count(*) from dm_user" | dmawk -f getpasswd_from_file.awk  -v password_file=password_file
password was: Supercalifragilisticexpialidocious!

No surprise here.

4. Access bash’s read -s command

The bash shell has the built-in command read which take the -s option in order to prevent echoing on the screen the entered characters. Unfortunately, while bash is most of the time a login shell, it is not always the subshell invoked when spawning a command, which awk does when executing things like “cmd | getline”. Actually, it is /bin/sh that is invoked as a subshell under Linux, which is a sym link to /bin/dash (at least the Ubuntu 16.04 and 18.04 I’m using here; under Centos, /usr/bin/sh is symlinked to /usr/bin/dash), a much smaller shell than bash and supposedly faster. So, how to force bash as a subshell ?
I could not find any system setting to configure the choice of the subshell. Obviously, changing the /bin/sh symlink and making it point to /bin/bash works indeed but it is a system-wide change and it is not recommended because of possible compatibility issues.
The solution is to explicitly tell the subshell to make bash execute the read. But it is not enough, we also need to explicitly tell read to get its input from /dev/tty otherwise it gets messed up with any piped or redirected input. Here is a solution:

cat getpasswd_tty.dmawk
BEGIN {
   pp = getpassword("please, enter password: ")
   print "\npassword was:", pp
   exit
}
END {
  print "exiting ..."
}
function getpassword(prompt     , cmd, passwd) {
   cmd = "/bin/bash -c 'read -s -p \"" prompt "\" passwd < /dev/tty; echo $passwd'"
   cmd | getline passwd
   close(cmd)
   return passwd
}

Execution:
echo "select count(*) from dm_user" | dmawk -f  getpasswd_tty.dmawk 
please, enter password: password: 
password was: AreYo7Kidd8ngM3?
exiting ...

Line 11 invokes bash from whatever subshell is launched by dmawk, and asks it to execute the read built-in without echo, with the given prompt, and with its input coming directly from the device /dev/tty.
On line 10, note the function getpassword’s formal parameters cmd and passwd; since the function is called without any effective value for those, they are considered as local variables; this is a common idiom in awk where all variables are global and come to existence as soon as they are referenced.
Under Centos, where /usr/bin/bash is also invoked as a subshell, line 11 can be slightly simplified:

   cmd = "'read -s -p \"" prompt "\" passwd < /dev/tty; echo $passwd'""

This work-around is the easiest and closest to the original built-in password() function.

5. Implement password() in dmgawk

Those who have read my blog here know that we have now a much more powerful implementation of awk in our toolbox, GNU gawk, which we can extend to suit our needs. The above blog describes how to extend gawk with a connectivity to Documentum docbases; I jokingly named the resulting awk dmgawk. As glibc includes the getpass() function just for this purpose, why not use the same approach and add to dmgawk a sensible password() function around C’s getpass() that works as before ? Let’s put our money where our mouth is and implement this function in dmgawk. In truth, it should be noted that getpass() is marked as being obsolete so this alternative should be considered as a temporary work-around.
I won’t copy here all the steps from the above blog though; here are only the distinctive ones.
The interface’s source:

cat ~/dmgawk/gawk-4.2.1/extension/password.c
/*
 * password.c - Builtin function that provide an interface to the getpass() function;
 * see dmapp.h for description of functions;
 *
 * C. Cervini
 * dbi-services.com
 * 7/2018
 */
#ifdef HAVE_CONFIG_H
#include 
#endif

#include "gawkapi.h"

#include "gettext.h"
#define _(msgid)  gettext(msgid)
#define N_(msgid) msgid

static const gawk_api_t *api;   /* for convenience macros to work */
static awk_ext_id_t ext_id;
static const char *ext_version = "password extension: version 1.0";
static awk_bool_t (*init_func)(void) = NULL;

int plugin_is_GPL_compatible;

/*  do_password */
static awk_value_t *
do_password(int nargs, awk_value_t *result, struct awk_ext_func *unused) {
   awk_value_t prompt;
   char *passwd;

   assert(result != NULL);

   if (get_argument(0, AWK_STRING, &prompt)) {
      passwd = getpass(prompt.str_value.str);
   }
   else passwd = getpass("");

   make_const_string(passwd == NULL ? "" : passwd, strlen(passwd), result);
   return result;
}

/*
these are the exported functions along with their min and max arities;
let's make the prompt parameter optional, as in dmawk;
*/
static awk_ext_func_t func_table[] = {
        { "password", do_password, 1, 0, awk_false, NULL },
};

/* define the dl_load function using the boilerplate macro */

dl_load_func(func_table, password, "")

Compilation steps:

cd ~/dmgawk/gawk-4.2.1/extension
vi Makefile.am
append the new library to the pkgextension_LTLIBRARIES list:
pkgextension_LTLIBRARIES =      \
        filefuncs.la    \
        fnmatch.la      \
        fork.la         \
        inplace.la      \
        intdiv.la       \
        ordchr.la       \
        readdir.la      \
        readfile.la     \
        revoutput.la    \
        revtwoway.la    \
        rwarray.la      \
        time.la         \
        dctm.la         \
        password.la

later:
dctm_la_SOURCES       = dctm.c
dctm_la_LDFLAGS       = $(MY_MODULE_FLAGS)
dctm_la_LIBADD        = $(MY_LIBS)

password_la_SOURCES  = password.c
password_la_LDFLAGS  = $(MY_MODULE_FLAGS)
password_la_LIBADD   = $(MY_LIBS)

run the make command:
make

go one level up and run the make command again:
make

At this point, the new gawk is ready for use. Let’s test it:

cat getpasswd.awk
@load "password"

BEGIN {
   passwd = password("please, enter password: ")
   print "password was:", passwd
}

END {
   print "exiting..."
}

Execution:

AWKLIBPATH=~/dmgawk/gawk-4.2.1/extension/.libs echo "select count(*) from dm_user" | ~/dmgawk/gawk-4.2.1/gawk -f ./getpasswd.awk 
please, enter password: 
password was: precipitevolissimevolmente
exiting...

If all is good, install the new extension system-wide as follows:

cd ~/dmgawk/gawk-4.2.1
sudo make install

make an alias to the new gawk:
alias dmgawk=/usr/local/bin/gawk
The usage is simplified now:
echo "select count(*) from dm_user" | dmgawk -f ./getpasswd.awk
please, enter password: 
password was: humptydumpty
exiting...

dmgawk looks more and more like a valuable substitute for dmawk. What gets broken in dmawk can be fixed by dmgawk.

6. And in python ?

Those who use python for their Documentum administration tasks, extended with the Documentum connectivity as proposed in my blog here, are even luckier because python has a library for just about everything but the kitchen sink, and an interface to C’s getpass(), appropriately named getpass(), already exists, see here. Therefore, there is no need to write one using e.g. ctypes. Here is how to call the python’s getpass():

cat getpasswd.py 
#!/usr/bin/python

import getpass

passwd = getpass.getpass(prompt = "Please, enter password: ")
print("The password is: " + passwd)

Execution:
echo "select count(*) from dm_user" | ./getpasswd.py
Please, enter password: 
The password is: Did the quick brown fox jump over the lazy dog ?

No muss, no fuss here.

Conclusion

It’s quite interesting to see how basic things that we take for granted get broken from one Documentum release to another. On the bright side though, those little frustrations gives us the opportunity to look for work-arounds, and write blogs about them ;-). I am eager to find the next dysfunction and pretty confident that Documentum will not be disappoint me in this respect.

 

Cet article A password() function for dmgawk est apparu en premier sur Blog dbi services.

returning top 10 records based on previous records counts

Tom Kyte - Tue, 2018-07-31 06:26
Hi, I have an ordered table of products and customers as follows: <code>rn product customer 1 859274 A 2 859267 A 3 859250 A 4 863592 B 5 862250 B 6 862700 B 7 862694 B 8 862120 B 9 863592 C 10 862250 C 11 862120 D 12 86...
Categories: DBA Blogs

Library Cache Locks and Compiling New PL/SQL Code

Tom Kyte - Tue, 2018-07-31 06:26
Hello! I have a friend that told me that compiling a new piece of Pl/SQL code will put library cache locks on the dependent objects, and that there's a risk for database contention when new code is deployed. In other words, if I go out to a datab...
Categories: DBA Blogs

How to install Oracle RAC 18c in silent mode on Oracle Linux 7.5 with VirtualBox – Part 2

Pierre Forstmann Oracle Database blog - Tue, 2018-07-31 00:19

Both posts document how to install a 2-node Oracle RAC cluster with Oracle 18c on Oracle Linux 7.5 (OL7) with VirtualBox (VBOX).

Part 1 details Oracle Linux installation and configuration and part 2 details Oracle software installation (Grid Infrastructure (GI), Oracle Database) and database creation.
In this article GIMR stands for Grid Infrastructure Management Repository.

Disclaimer: this is only an example that can be used to setup a lab or test system: it is not designed to be used for production purpose.

Grid Infrastructure silent installation

I have created ORACLE_BASE and ORACLE_HOME target directories on both nodes:

# mkdir -p /u01/base
# chown oracle:dba /u01/base
# mkdir /u01/gi18c
# chown oracle:oinstall /u01/gi18c
# chmod -R 775 /u01 

I have created /etc/oraInst.loc to define Oracle Inventory location on both nodes:

# cat /etc/oraInst.loc
inventory_loc=/u01/orainv
inst_group=oinstall
# mkdir  /u01/orainv
# chown oracle:oinstall /u01/orainv

I have unzipped GI media on first cluster node:

$ cd /u01/gi18c
$ unzip -q /stage/LINUX.X64_180000_grid_home.zip 

I have installed cvuqdisk RPM on both nodes. I have run on ol7decn1:

# rpm -iv /u01/gi18c/cv/rpm/cvuqdisk-1.0.10-1.rpm
Preparing packages...
cvuqdisk-1.0.10-1.x86_64

I have run on ol7decn2:

# scp root@ol7decn1:/u01/gi18c/cv/rpm/cvuqdisk-1.0.10-1.rpm .
The authenticity of host 'ol7decn1 (192.168.56.138)' can't be established.
ECDSA key fingerprint is SHA256:xo4lc6xkmEsFroCbIFcGUuWa2yuF7OUzPLVedKhk5dU.
ECDSA key fingerprint is MD5:d2:ef:bc:d9:b7:2a:e5:1f:91:e5:78:42:1b:a5:6e:3a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ol7decn1,192.168.56.138' (ECDSA) to the list of known hosts.
root@ol7decn1's password: 
cvuqdisk-1.0.10-1.rpm                                                                             100% 8860     4.5MB/s   00:00    
# rpm -iv cvuqdisk-1.0.10-1.rpm
Preparing packages...
cvuqdisk-1.0.10-1.x86_64
# 

I have labeled ASM disks for ASMFD on ol7decn1:

# export ORACLE_HOME=/u01/gi18c
# export ORACLE_BASE=/u01/base
# /u01/gi18c/bin/asmcmd afd_label OCRVD /dev/sdb1 --init
# /u01/gi18c/bin/asmcmd afd_label GIMR  /dev/sdc1 --init
# /u01/gi18c/bin/asmcmd afd_label DATA  /dev/sdd1 --init
# /u01/gi18c/bin/asmcmd afd_label RECO  /dev/sde1 --init

In order to avoid following error when installing GI … :

[FATAL] [INS-32250] ADR setup (diagsetup) tool failed. Check the install log for more details.
*ADDITIONAL INFORMATION:*
 - DiagSetup-00010: Diag Setup Usage error: unable to perform create directory operation
 - DiagSetup-00010: Diag Setup Usage error: unable to perform create directory operation
 - Error creating ADR directory
 - DiagSetup-00010: Diag Setup Usage error: unable to perform create directory operation
 - oracle.diagfw.adr.diagsetup.DiagSetupException: DiagSetup-00010: Diag Setup Usage error: unable to perform create directory operation
 -  at oracle.diagfw.adr.diagsetup.DiagSetup.createAdrDir(DiagSetup.java:578)
 -  at oracle.diagfw.adr.diagsetup.DiagSetup.createDirsLocal(DiagSetup.java:418)
 -  at oracle.diagfw.adr.diagsetup.DiagSetup.createDirs(DiagSetup.java:329)
 -  at oracle.diagfw.adr.diagsetup.DiagSetup.executeMain(DiagSetup.java:297)
 -  at oracle.diagfw.adr.diagsetup.DiagSetup.main(DiagSetup.java:260)
 - DiagSetup-00010: Diag Setup Usage error: unable to perform create directory operation
 - oracle.diagfw.adr.diagsetup.DiagSetupException: DiagSetup-00010: Diag Setup Usage error: unable to perform create directory operation
 -  at oracle.diagfw.adr.diagsetup.DiagSetup.createDirs(DiagSetup.java:345)
 -  at oracle.diagfw.adr.diagsetup.DiagSetup.executeMain(DiagSetup.java:297)
 -  at oracle.diagfw.adr.diagsetup.DiagSetup.main(DiagSetup.java:260)

… I have removed following directory created by asmcmd afd_label instructions:

# rm -rf /u01/base/diag

I have created following silent installation script for GI:


cd /u01/gi18c
DISTRIB=$(pwd)
/u01/gi18c/gridSetup.sh -silent                              \
       -responseFile $DISTRIB/install/response/gridsetup.rsp   \
       inventory_location=/u01/orainv                          \
       selected_languages=en                                   \
       oracle.install.option=CRS_CONFIG                        \
       oracle_base=/u01/base/                                  \
       oracle.install.asm.OSDBA=dba                            \
       oracle.install.asm.OSOPER=dba                           \
       oracle.install.asm.OSASM=dba                            \
       oracle.install.crs.config.gpnp.scanName=ol7dec-scan.localdomain \
       oracle.install.crs.config.gpnp.scanPort=1521            \
       oracle.install.crs.config.clusterName=ol7decn           \
       oracle.install.crs.config.gpnp.configureGNS=false       \
       oracle.install.crs.config.clusterNodes=ol7decn1:ol7decn1-vip:HUB,ol7decn2:ol7decn2-vip:HUB \
       oracle.install.crs.config.networkInterfaceList=enp0s8:192.168.56.0:1,enp0s9:192.168.43.0:5 \
       oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE \
       oracle.install.asm.configureGIMRDataDG=true             \
       oracle.install.crs.config.useIPMI=false                 \
       oracle.install.asm.SYSASMPassword=oracle                \
       oracle.install.asm.configureAFD=true                    \
       oracle.install.asm.storageOption=ASM                    \
       oracle.install.asm.diskGroup.diskDiscoveryString=/dev/sdb1,/dev/sdc1 \
       oracle.install.asm.diskGroup.name=OCRVD                 \
       oracle.install.asm.diskGroup.disks=/dev/sdb1            \
       oracle.install.asm.diskGroup.redundancy=EXTERNAL        \
       oracle.install.asm.monitorPassword=oracle               \
       oracle.install.asm.gimrDG.name=GIMR                     \
       oracle.install.asm.gimrDG.disks=/dev/sdc1               \
       oracle.install.asm.gimrDG.redundancy=EXTERNAL           

The above script is using following variables defined in ./install/response/gridsetup.rsp response file:

parameter name description inventory_location Directory where Oracle Inventory will be stored. Must match /etc/oraInst.loc contents. oracle.install.option Must be set to CRS_CONFIG for Grid Infrastructure for cluster. oracle.install.crs.config.gpnp.scanName Must be set to DNS alias for the 3 SCAN listener adresses. oracle.install.crs.config.gpnp.scanPort Must be to set to TCP port to be used by SCAN listener. oracle.install.crs.config.clusterName No dependency for this name. oracle.install.crs.config.gpnp.configureGNS Must be set to FALSE to not use Grid Naming Service (GNS). oracle.install.crs.config.clusterNodes Must be set to public-hostname:vip-hostname:HUB comma separated host name list (for STANDALONE cluster type). oracle.install.crs.config.networkInterfaceList Must be set to network-interface:network-interface-subnet:network-interface_type comma separated strings
where network-interface_type must be set to 1 for public interface and to 5 for private interface (interconnect). oracle.install.crs.config.storageOption Set to FLEX_ASM_STORAGE for OCR and voting disk. oracle.install.asm.configureGIMRDataDG must be set to true to use a separate disk for GIMR database oracle.install.crs.config.useIPMI Must be set to FALSE to not use Intelligent Power Management Interface. oracle.install.asm.configureAFD must be set to TRUE to use ASMFD oracle.install.asm.SYSASMPassword Must be set to SYS password for ASM instance. oracle.install.asm.diskGroup.diskDiscoveryString Used to set ASM instance ASM_DISKSTRING parameter for OCR/voting disk disk group and GIMR disk group oracle.install.asm.diskGroup.name Name of ASM disk group used for OCR and voting disk oracle.install.asm.diskGroup.disks Comma separated ASM disk names list to be used for OCR and voting disk group. oracle.install.asm.diskGroup.redundancy Disk group redundancy used by above ASM disk group. oracle.install.asm.monitorPassword Must be set to ASMSNMP password for ASM instance. oracle.install.asm.gimrDG.name Name of ASM disk group used for GIMR database. oracle.install.asm.gimrDG.diskGroup.disks Comma separated ASM disk names list to be used for GIMR disk group. oracle.install.asm.gimrDG.diskGroup.redundancy Disk group redundancy used by GIMR disk group.

Running this script has generated following output:

Launching Oracle Grid Infrastructure Setup Wizard...

[WARNING] [INS-30011] The SYS password entered does not conform to the Oracle recommended standards.
   CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
   ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-30011] The ASMSNMP password entered does not conform to the Oracle recommended standards.
   CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
   ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-41808] Possible invalid choice for OSASM Group.
   CAUSE: The name of the group you selected for the OSASM group is commonly used to grant other system privileges (For example: asmdba, asmoper, dba, oper).
   ACTION: Oracle recommends that you designate asmadmin as the OSASM group.
[WARNING] [INS-41809] Possible invalid choice for OSDBA Group.
   CAUSE: The group name you selected as the OSDBA for ASM group is commonly used for Oracle Database administrator privileges.
   ACTION: Oracle recommends that you designate asmdba as the OSDBA for ASM group, and that the group should not be the same group as an Oracle Database OSDBA group.
[WARNING] [INS-41810] Possible invalid choice for OSOPER Group.
   CAUSE: The group name you selected as the OSOPER for ASM group is commonly used for Oracle Database administrator privileges.
   ACTION: Oracle recommends that you designate asmoper as the OSOPER for ASM group, and that the group should not be the same group as an Oracle Database OSOPER group.
[WARNING] [INS-41813] OSDBA for ASM, OSOPER for ASM, and OSASM are the same OS group.
   CAUSE: The group you selected for granting the OSDBA for ASM group for database access, and the OSOPER for ASM group for startup and shutdown of Oracle ASM, is the same group as the OSASM group, whose members have SYSASM privileges on Oracle ASM.
   ACTION: Choose different groups as the OSASM, OSDBA for ASM, and OSOPER for ASM groups.
[WARNING] [INS-13014] Target environment does not meet some optional requirements.
   CAUSE: Some of the optional prerequisites are not met. See logs for details. /u01/orainv/logs/GridSetupActions2018-07-28_05-28-26PM/gridSetupActions2018-07-28_05-28-26PM.log
   ACTION: Identify the list of failed prerequisite checks from the log: /u01/orainv/logs/GridSetupActions2018-07-28_05-28-26PM/gridSetupActions2018-07-28_05-28-26PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
 /u01/gi18c/install/response/grid_2018-07-28_05-28-26PM.rsp

You can find the log of this install session at:
 /u01/orainv/logs/GridSetupActions2018-07-28_05-28-26PM/gridSetupActions2018-07-28_05-28-26PM.log
OUI-10053:Unable to generate temporary script: /u01/oraInventory/orainstRoot.sh. Unable to continue install.

As a root user, execute the following script(s):
	1. /u01/orainv/orainstRoot.sh
	2. /u01/gi18c/root.sh

Execute /u01/orainv/orainstRoot.sh on the following nodes: 
[ol7decn2]
Execute /u01/gi18c/root.sh on the following nodes: 
[ol7decn1, ol7decn2]

Run the script on the local node first. After successful completion, you can start the script in parallel on all other nodes.

Successfully Setup Software with warning(s).
As install user, execute the following command to complete the configuration.

I did not find any root cause for following error message which looks like a bug:

OUI-10053:Unable to generate temporary script: /u01/oraInventory/orainstRoot.sh. Unable to continue install.

I have ignored following failed prerequisites:

INFO:  [Jul 28, 2018 5:00:37 PM] ------------------List of failed Tasks------------------
INFO:  [Jul 28, 2018 5:00:37 PM] *********************************************
INFO:  [Jul 28, 2018 5:00:37 PM] Physical Memory: This is a prerequisite condition to test whether the system has at least 8GB (8388608.0KB) of total physical memory.
INFO:  [Jul 28, 2018 5:00:37 PM] Severity:IGNORABLE
INFO:  [Jul 28, 2018 5:00:37 PM] OverallStatus:VERIFICATION_FAILED
INFO:  [Jul 28, 2018 5:00:37 PM] -----------------End of failed Tasks List----------------

On second cluster node I have run orainstRoot.sh:

# /u01/orainv/orainstRoot.sh
Changing permissions of /u01/orainv.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/orainv to oinstall.
The execution of the script is complete.

On first cluster node I have run root.sh:

# /u01/gi18c/root.sh 
Check /u01/gi18c/install/root_ol7decn1.localdomain_2018-07-28_17-46-43-041313489.log for the output of root script

Corresponding log is:

cat /u01/gi18c/install/root_ol7decn1.localdomain_2018-07-28_17-46-43-041313489.log
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/gi18c
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Relinking oracle with rac_on option
Using configuration parameter file: /u01/gi18c/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/base/crsdata/ol7decn1/crsconfig/rootcrs_ol7decn1_2018-07-28_05-46-55PM.log
2018/07/28 17:47:16 CLSRSC-594: Executing installation step 1 of 20: 'SetupTFA'.
2018/07/28 17:47:16 CLSRSC-4001: Installing Oracle Trace File Analyzer (TFA) Collector.
2018/07/28 17:47:49 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
2018/07/28 17:47:49 CLSRSC-594: Executing installation step 2 of 20: 'ValidateEnv'.
2018/07/28 17:47:49 CLSRSC-363: User ignored prerequisites during installation
2018/07/28 17:47:49 CLSRSC-594: Executing installation step 3 of 20: 'CheckFirstNode'.
2018/07/28 17:47:51 CLSRSC-594: Executing installation step 4 of 20: 'GenSiteGUIDs'.
2018/07/28 17:47:56 CLSRSC-594: Executing installation step 5 of 20: 'SaveParamFile'.
2018/07/28 17:48:14 CLSRSC-594: Executing installation step 6 of 20: 'SetupOSD'.
2018/07/28 17:48:14 CLSRSC-594: Executing installation step 7 of 20: 'CheckCRSConfig'.
2018/07/28 17:48:14 CLSRSC-594: Executing installation step 8 of 20: 'SetupLocalGPNP'.
2018/07/28 17:48:54 CLSRSC-594: Executing installation step 9 of 20: 'CreateRootCert'.
2018/07/28 17:49:04 CLSRSC-594: Executing installation step 10 of 20: 'ConfigOLR'.
2018/07/28 17:49:22 CLSRSC-594: Executing installation step 11 of 20: 'ConfigCHMOS'.
2018/07/28 17:49:22 CLSRSC-594: Executing installation step 12 of 20: 'CreateOHASD'.
2018/07/28 17:49:34 CLSRSC-594: Executing installation step 13 of 20: 'ConfigOHASD'.
2018/07/28 17:49:34 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2018/07/28 17:50:59 CLSRSC-594: Executing installation step 14 of 20: 'InstallAFD'.
2018/07/28 17:51:52 CLSRSC-594: Executing installation step 15 of 20: 'InstallACFS'.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'ol7decn1'
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'ol7decn1' has completed
CRS-4133: Oracle High Availability Services has been stopped.
CRS-4123: Oracle High Availability Services has been started.
2018/07/28 17:52:52 CLSRSC-594: Executing installation step 16 of 20: 'InstallKA'.
2018/07/28 17:53:01 CLSRSC-594: Executing installation step 17 of 20: 'InitConfig'.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'ol7decn1'
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'ol7decn1' has completed
CRS-4133: Oracle High Availability Services has been stopped.
CRS-4123: Oracle High Availability Services has been started.
CRS-2672: Attempting to start 'ora.driver.afd' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.evmd' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.mdnsd' on 'ol7decn1'
CRS-2676: Start of 'ora.driver.afd' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'ol7decn1'
CRS-2676: Start of 'ora.cssdmonitor' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.mdnsd' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.evmd' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'ol7decn1'
CRS-2676: Start of 'ora.gpnpd' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.gipcd' on 'ol7decn1'
CRS-2676: Start of 'ora.gipcd' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.diskmon' on 'ol7decn1'
CRS-2676: Start of 'ora.diskmon' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.cssd' on 'ol7decn1' succeeded

[INFO] [DBT-30161] Disk label(s) created successfully. Check /u01/base/cfgtoollogs/asmca/asmca-180728PM055408.log for details.
[INFO] [DBT-30001] Disk groups created successfully. Check /u01/base/cfgtoollogs/asmca/asmca-180728PM055408.log for details.


2018/07/28 17:55:25 CLSRSC-482: Running command: '/u01/gi18c/bin/ocrconfig -upgrade oracle oinstall'
CRS-2672: Attempting to start 'ora.crf' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.storage' on 'ol7decn1'
CRS-2676: Start of 'ora.storage' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.crf' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'ol7decn1'
CRS-2676: Start of 'ora.crsd' on 'ol7decn1' succeeded
CRS-4256: Updating the profile
Successful addition of voting disk 79df663311604f1ebfe81344216c1d46.
Successfully replaced voting disk group with +OCRVD.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   79df663311604f1ebfe81344216c1d46 (AFD:OCRVD) [OCRVD]
Located 1 voting disk(s).
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'ol7decn1'
CRS-2673: Attempting to stop 'ora.crsd' on 'ol7decn1'
CRS-2677: Stop of 'ora.crsd' on 'ol7decn1' succeeded
CRS-2673: Attempting to stop 'ora.storage' on 'ol7decn1'
CRS-2673: Attempting to stop 'ora.crf' on 'ol7decn1'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'ol7decn1'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'ol7decn1'
CRS-2677: Stop of 'ora.crf' on 'ol7decn1' succeeded
CRS-2677: Stop of 'ora.storage' on 'ol7decn1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'ol7decn1'
CRS-2677: Stop of 'ora.drivers.acfs' on 'ol7decn1' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'ol7decn1' succeeded
CRS-2677: Stop of 'ora.asm' on 'ol7decn1' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'ol7decn1'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'ol7decn1' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'ol7decn1'
CRS-2673: Attempting to stop 'ora.evmd' on 'ol7decn1'
CRS-2677: Stop of 'ora.evmd' on 'ol7decn1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'ol7decn1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'ol7decn1'
CRS-2677: Stop of 'ora.cssd' on 'ol7decn1' succeeded
CRS-2673: Attempting to stop 'ora.driver.afd' on 'ol7decn1'
CRS-2673: Attempting to stop 'ora.gipcd' on 'ol7decn1'
CRS-2673: Attempting to stop 'ora.gpnpd' on 'ol7decn1'
CRS-2677: Stop of 'ora.driver.afd' on 'ol7decn1' succeeded
CRS-2677: Stop of 'ora.gpnpd' on 'ol7decn1' succeeded
CRS-2677: Stop of 'ora.gipcd' on 'ol7decn1' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'ol7decn1' has completed
CRS-4133: Oracle High Availability Services has been stopped.
2018/07/28 17:59:38 CLSRSC-594: Executing installation step 18 of 20: 'StartCluster'.
CRS-4123: Starting Oracle High Availability Services-managed resources
CRS-2672: Attempting to start 'ora.evmd' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.mdnsd' on 'ol7decn1'
CRS-2676: Start of 'ora.evmd' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.mdnsd' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'ol7decn1'
CRS-2676: Start of 'ora.gpnpd' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.gipcd' on 'ol7decn1'
CRS-2676: Start of 'ora.gipcd' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'ol7decn1'
CRS-2676: Start of 'ora.cssdmonitor' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.crf' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.cssd' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.diskmon' on 'ol7decn1'
CRS-2676: Start of 'ora.diskmon' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.crf' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.cssd' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.ctssd' on 'ol7decn1'
CRS-2676: Start of 'ora.ctssd' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'ol7decn1'
CRS-2676: Start of 'ora.asm' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'ol7decn1'
CRS-2676: Start of 'ora.storage' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'ol7decn1'
CRS-2676: Start of 'ora.crsd' on 'ol7decn1' succeeded
CRS-6023: Starting Oracle Cluster Ready Services-managed resources
CRS-6017: Processing resource auto-start for servers: ol7decn1
CRS-6016: Resource auto-start has completed for server ol7decn1
CRS-6024: Completed start of Oracle Cluster Ready Services-managed resources
CRS-4123: Oracle High Availability Services has been started.
2018/07/28 18:02:51 CLSRSC-343: Successfully started Oracle Clusterware stack
2018/07/28 18:02:51 CLSRSC-594: Executing installation step 19 of 20: 'ConfigNode'.
CRS-2672: Attempting to start 'ora.ASMNET1LSNR_ASM.lsnr' on 'ol7decn1'
CRS-2676: Start of 'ora.ASMNET1LSNR_ASM.lsnr' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'ol7decn1'
CRS-2676: Start of 'ora.asm' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.OCRVD.dg' on 'ol7decn1'
CRS-2676: Start of 'ora.OCRVD.dg' on 'ol7decn1' succeeded
2018/07/28 18:05:23 CLSRSC-594: Executing installation step 20 of 20: 'PostConfig'.

[INFO] [DBT-30161] Disk label(s) created successfully. Check /u01/base/cfgtoollogs/asmca/asmca-180728PM060527.log for details.
[INFO] [DBT-30001] Disk groups created successfully. Check /u01/base/cfgtoollogs/asmca/asmca-180728PM060527.log for details.


2018/07/28 18:08:45 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

I have checked cluster resources with:

$ export ORACLE_SID=+ASM1
$ PATH=/u01/gi18c/bin:$PATH
$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
ora.GIMR.GHCHKPT.advm
               OFFLINE OFFLINE      ol7decn1                 STABLE
ora.GIMR.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
ora.OCRVD.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
ora.gimr.ghchkpt.acfs
               OFFLINE OFFLINE      ol7decn1                 volume /opt/oracle/r
                                                             hp_images/chkbase is
                                                             unmounted,STABLE
ora.helper
               OFFLINE OFFLINE      ol7decn1                 STABLE
ora.net1.network
               ONLINE  ONLINE       ol7decn1                 STABLE
ora.ons
               ONLINE  ONLINE       ol7decn1                 STABLE
ora.proxy_advm
               OFFLINE OFFLINE      ol7decn1                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.MGMTLSNR
      1        OFFLINE OFFLINE                               STABLE
ora.asm
      1        ONLINE  ONLINE       ol7decn1                 Started,STABLE
      2        OFFLINE OFFLINE                               STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.ol7decn1.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.qosmserver
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
--------------------------------------------------------------------------------

I have run root.sh on second cluster node:

# /u01/gi18c/root.sh 
Check /u01/gi18c/install/root_ol7decn2.localdomain_2018-07-28_18-27-02-937964448.log for the output of root script

Corresponding log is:

Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/gi18c
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Relinking oracle with rac_on option
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_PAPER = "fr_FR.UTF-8",
	LC_MONETARY = "fr_FR.UTF-8",
	LC_NUMERIC = "fr_FR.UTF-8",
	LC_MEASUREMENT = "fr_FR.UTF-8",
	LC_TIME = "fr_FR.UTF-8",
	LANG = "en_EN"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Using configuration parameter file: /u01/gi18c/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/base/crsdata/ol7decn2/crsconfig/rootcrs_ol7decn2_2018-07-28_06-27-39PM.log
2018/07/28 18:27:46 CLSRSC-594: Executing installation step 1 of 20: 'SetupTFA'.
2018/07/28 18:27:46 CLSRSC-4001: Installing Oracle Trace File Analyzer (TFA) Collector.
2018/07/28 18:28:28 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
2018/07/28 18:28:28 CLSRSC-594: Executing installation step 2 of 20: 'ValidateEnv'.
2018/07/28 18:28:28 CLSRSC-363: User ignored prerequisites during installation
2018/07/28 18:28:28 CLSRSC-594: Executing installation step 3 of 20: 'CheckFirstNode'.
2018/07/28 18:28:30 CLSRSC-594: Executing installation step 4 of 20: 'GenSiteGUIDs'.
2018/07/28 18:28:30 CLSRSC-594: Executing installation step 5 of 20: 'SaveParamFile'.
2018/07/28 18:28:33 CLSRSC-594: Executing installation step 6 of 20: 'SetupOSD'.
2018/07/28 18:28:33 CLSRSC-594: Executing installation step 7 of 20: 'CheckCRSConfig'.
2018/07/28 18:28:34 CLSRSC-594: Executing installation step 8 of 20: 'SetupLocalGPNP'.
2018/07/28 18:28:35 CLSRSC-594: Executing installation step 9 of 20: 'CreateRootCert'.
2018/07/28 18:28:35 CLSRSC-594: Executing installation step 10 of 20: 'ConfigOLR'.
2018/07/28 18:28:38 CLSRSC-594: Executing installation step 11 of 20: 'ConfigCHMOS'.
2018/07/28 18:28:38 CLSRSC-594: Executing installation step 12 of 20: 'CreateOHASD'.
2018/07/28 18:28:39 CLSRSC-594: Executing installation step 13 of 20: 'ConfigOHASD'.
2018/07/28 18:28:40 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2018/07/28 18:29:52 CLSRSC-594: Executing installation step 14 of 20: 'InstallAFD'.
2018/07/28 18:30:33 CLSRSC-594: Executing installation step 15 of 20: 'InstallACFS'.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'ol7decn2'
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'ol7decn2' has completed
CRS-4133: Oracle High Availability Services has been stopped.
CRS-4123: Oracle High Availability Services has been started.
2018/07/28 18:31:28 CLSRSC-594: Executing installation step 16 of 20: 'InstallKA'.
2018/07/28 18:31:30 CLSRSC-594: Executing installation step 17 of 20: 'InitConfig'.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'ol7decn2'
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'ol7decn2' has completed
CRS-4133: Oracle High Availability Services has been stopped.
CRS-4123: Oracle High Availability Services has been started.
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'ol7decn2'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'ol7decn2'
CRS-2677: Stop of 'ora.drivers.acfs' on 'ol7decn2' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'ol7decn2' has completed
CRS-4133: Oracle High Availability Services has been stopped.
2018/07/28 18:31:43 CLSRSC-594: Executing installation step 18 of 20: 'StartCluster'.
CRS-4123: Starting Oracle High Availability Services-managed resources
CRS-2672: Attempting to start 'ora.evmd' on 'ol7decn2'
CRS-2672: Attempting to start 'ora.mdnsd' on 'ol7decn2'
CRS-2676: Start of 'ora.evmd' on 'ol7decn2' succeeded
CRS-2676: Start of 'ora.mdnsd' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'ol7decn2'
CRS-2676: Start of 'ora.gpnpd' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.gipcd' on 'ol7decn2'
CRS-2676: Start of 'ora.gipcd' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'ol7decn2'
CRS-2676: Start of 'ora.cssdmonitor' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.crf' on 'ol7decn2'
CRS-2672: Attempting to start 'ora.cssd' on 'ol7decn2'
CRS-2672: Attempting to start 'ora.diskmon' on 'ol7decn2'
CRS-2676: Start of 'ora.diskmon' on 'ol7decn2' succeeded
CRS-2676: Start of 'ora.crf' on 'ol7decn2' succeeded
CRS-2676: Start of 'ora.cssd' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'ol7decn2'
CRS-2672: Attempting to start 'ora.ctssd' on 'ol7decn2'
CRS-2676: Start of 'ora.ctssd' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'ol7decn2'
CRS-2676: Start of 'ora.crsd' on 'ol7decn2' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'ol7decn2'
CRS-2676: Start of 'ora.asm' on 'ol7decn2' succeeded
CRS-6017: Processing resource auto-start for servers: ol7decn2
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.ons' on 'ol7decn2'
CRS-2672: Attempting to start 'ora.ASMNET1LSNR_ASM.lsnr' on 'ol7decn2'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'ol7decn1' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'ol7decn1'
CRS-2677: Stop of 'ora.scan1.vip' on 'ol7decn1' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'ol7decn2'
CRS-2676: Start of 'ora.ASMNET1LSNR_ASM.lsnr' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'ol7decn2'
CRS-2676: Start of 'ora.scan1.vip' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'ol7decn2'
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'ol7decn2' succeeded
CRS-2676: Start of 'ora.ons' on 'ol7decn2' succeeded
CRS-2676: Start of 'ora.asm' on 'ol7decn2' succeeded
CRS-2672: Attempting to start 'ora.proxy_advm' on 'ol7decn1'
CRS-2672: Attempting to start 'ora.proxy_advm' on 'ol7decn2'
CRS-2676: Start of 'ora.proxy_advm' on 'ol7decn1' succeeded
CRS-2676: Start of 'ora.proxy_advm' on 'ol7decn2' succeeded
CRS-6016: Resource auto-start has completed for server ol7decn2
CRS-6024: Completed start of Oracle Cluster Ready Services-managed resources
CRS-4123: Oracle High Availability Services has been started.
2018/07/28 18:34:41 CLSRSC-343: Successfully started Oracle Clusterware stack
2018/07/28 18:34:41 CLSRSC-594: Executing installation step 19 of 20: 'ConfigNode'.
2018/07/28 18:35:02 CLSRSC-594: Executing installation step 20 of 20: 'PostConfig'.
2018/07/28 18:35:35 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

I have checked cluster resources:

$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.GIMR.GHCHKPT.advm
               OFFLINE OFFLINE      ol7decn1                 STABLE
               OFFLINE OFFLINE      ol7decn2                 STABLE
ora.GIMR.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.OCRVD.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.gimr.ghchkpt.acfs
               OFFLINE OFFLINE      ol7decn1                 volume /opt/oracle/r
                                                             hp_images/chkbase is
                                                             unmounted,STABLE
               OFFLINE OFFLINE      ol7decn2                 STABLE
ora.helper
               OFFLINE OFFLINE      ol7decn1                 STABLE
               OFFLINE OFFLINE      ol7decn2                 IDLE,STABLE
ora.net1.network
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.ons
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.proxy_advm
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.MGMTLSNR
      1        OFFLINE OFFLINE                               STABLE
ora.asm
      1        ONLINE  ONLINE       ol7decn1                 Started,STABLE
      2        ONLINE  ONLINE       ol7decn2                 Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.ol7decn1.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.ol7decn2.vip
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.qosmserver
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
--------------------------------------------------------------------------------

I have checked ASMFD disks:

$ export ORACLE_BASE=/u01/base
$ asmcmd afd_lsdsk
--------------------------------------------------------------------------------
Label                     Filtering   Path
================================================================================
GIMR                        ENABLED   /dev/sdc1
OCRVD                       ENABLED   /dev/sdb1

I have run the last GI configuration script with oracle user account:

set -x
cd /u01/gi18c
DISTRIB=$(pwd)
/u01/gi18c/gridSetup.sh -silent -executeConfigTools            \
       -responseFile $DISTRIB/install/response/gridsetup.rsp   \
       inventory_location=/u01/orainv                          \
       selected_languages=en                                   \
       oracle.install.option=CRS_CONFIG                        \
       oracle_base=/u01/base/                                  \
       oracle.install.asm.OSDBA=dba                            \
       oracle.install.asm.OSOPER=dba                           \
       oracle.install.asm.OSASM=dba                            \
       oracle.install.crs.config.gpnp.scanName=ol7dec-scan.localdomain \
       oracle.install.crs.config.gpnp.scanPort=1521            \
       oracle.install.crs.config.clusterName=ol7decn           \
       oracle.install.crs.config.gpnp.configureGNS=false       \
       oracle.install.crs.config.clusterNodes=ol7decn1:ol7decn1-vip:HUB,ol7decn2:ol7decn2-vip:HUB \
       oracle.install.crs.config.networkInterfaceList=enp0s8:192.168.56.0:1,enp0s9:192.168.43.0:5 \
       oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE \
       oracle.install.asm.configureGIMRDataDG=true             \
       oracle.install.crs.config.useIPMI=false                 \
       oracle.install.asm.SYSASMPassword=oracle                \
       oracle.install.asm.configureAFD=true                    \
       oracle.install.asm.storageOption=ASM                    \
       oracle.install.asm.diskGroup.diskDiscoveryString=/dev/sdb1,/dev/sdc1 \
       oracle.install.asm.diskGroup.name=OCRVD                 \
       oracle.install.asm.diskGroup.disks=/dev/sdb1            \
       oracle.install.asm.diskGroup.redundancy=EXTERNAL        \
       oracle.install.asm.monitorPassword=oracle               \
       oracle.install.asm.gimrDG.name=GIMR                     \
       oracle.install.asm.gimrDG.disks=/dev/sdc1               \
       oracle.install.asm.gimrDG.redundancy=EXTERNAL           

Running this script has generated following output:

Launching Oracle Grid Infrastructure Setup Wizard...

You can find the logs of this session at:
/u01/orainv/logs/GridSetupActions2018-07-28_06-48-32PM

Successfully Configured Software.

I have checked cluster resources with:

$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.GIMR.GHCHKPT.advm
               OFFLINE OFFLINE      ol7decn1                 STABLE
               OFFLINE OFFLINE      ol7decn2                 STABLE
ora.GIMR.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.OCRVD.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.chad
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.gimr.ghchkpt.acfs
               OFFLINE OFFLINE      ol7decn1                 volume /opt/oracle/r
                                                             hp_images/chkbase is
                                                             unmounted,STABLE
               OFFLINE OFFLINE      ol7decn2                 STABLE
ora.helper
               OFFLINE OFFLINE      ol7decn1                 STABLE
               OFFLINE OFFLINE      ol7decn2                 IDLE,STABLE
ora.net1.network
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.ons
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.proxy_advm
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       ol7decn1                 169.254.26.6 192.168
                                                             .43.138,STABLE
ora.asm
      1        ONLINE  ONLINE       ol7decn1                 Started,STABLE
      2        ONLINE  ONLINE       ol7decn2                 Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       ol7decn1                 Open,STABLE
ora.ol7decn1.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.ol7decn2.vip
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.qosmserver
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
--------------------------------------------------------------------------------

Note that GIMR database (ora.mgmtdb resource) is now created and started.

I have checked OCR:

$ ocrcheck
Status of Oracle Cluster Registry is as follows :
	 Version                  :          4
	 Total space (kbytes)     :     491684
	 Used space (kbytes)      :      84888
	 Available space (kbytes) :     406796
	 ID                       : 1283070023
	 Device/File Name         :     +OCRVD
                                    Device/File integrity check succeeded

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

	 Cluster registry integrity check succeeded

	 Logical corruption check bypassed due to non-privileged user

I have checked voting disk:

$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   79df663311604f1ebfe81344216c1d46 (AFD:OCRVD) [OCRVD]
Located 1 voting disk(s).

I have checked ASM disk groups:

 asmcmd lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512             512   4096  1048576     40959    15761                0           15761              0             N  GIMR/
MOUNTED  EXTERN  N         512             512   4096  1048576      2047     1748                0            1748              0             Y  OCRVD/

I have checked GIMR resource:

$ srvctl config mgmtdb
Database unique name: _mgmtdb
Database name: 
Oracle home: 
Oracle user: oracle
Spfile: +GIMR/_MGMTDB/PARAMETERFILE/spfile.270.982696243
Password file: 
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Type: Management
PDB name: GIMR_DSCREP_10
PDB service: GIMR_DSCREP_10
Cluster name: ol7decn
Database instance: -MGMTDB

I have checked GI patch level with:

$ crsctl query crs softwareversion
Oracle Clusterware version on node [ol7decn1] is [18.0.0.0.0]
$ $ORACLE_HOME/OPatch/opatch lspatches
27908644;UPDATE 18.3 DATABASE CLIENT JDK IN ORACLE HOME TO JDK8U171
27923415;OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)
28256701;TOMCAT RELEASE UPDATE 18.3.0.0.0 (28256701)
28090564;DBWLM RELEASE UPDATE 18.3.0.0.0 (28090564)
28090557;ACFS RELEASE UPDATE 18.3.0.0.0 (28090557)
28090553;OCW RELEASE UPDATE 18.3.0.0.0 (28090553)
28090523;Database Release Update : 18.3.0.0.180717 (28090523)

OPatch succeeded.
$ 

I have added ASM instance names in /etc/oratab because GI installation has not done it on both nodes.
On ol7decn1:

+ASM1:/u01/gi18c:N

On ol7decn2:

+ASM2:/u01/gi18c:N
Oracle Database silent installation

I have created Oracle Home directory on both nodes:

# mkdir /u01/db18c
# chown oracle:dba /u01/db18c

I have unzipped media file:

$ cd /u01/db18c
$ unzip -q /stage/LINUX.X64_180000_db_home.zip 

On first node I have run following script:

$ cd /u01/db18c 
export DISTRIB=`pwd`
./runInstaller -silent \
-responseFile $DISTRIB/install/response/db_install.rsp \
oracle.install.option=INSTALL_DB_SWONLY             \
oracle.install.db.CLUSTER_NODES=ol7decn1,ol7decn2   \
UNIX_GROUP_NAME=oinstall                            \
SELECTED_LANGUAGES=en                               \
ORACLE_HOME=/u01/db18c                              \
ORACLE_BASE=/u01/base                               \
oracle.install.db.InstallEdition=EE                 \
oracle.install.db.isCustomInstall=false             \
oracle.install.db.OSDBA_GROUP=dba                   \
oracle.install.db.OSBACKUPDBA_GROUP=dba             \
oracle.install.db.OSDGDBA_GROUP=dba                 \
oracle.install.db.OSKMDBA_GROUP=dba                 \
oracle.install.db.OSRACDBA_GROUP=dba                \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false          \
DECLINE_SECURITY_UPDATES=true                       \
-waitForCompletion

I have ignored following warnings:

INFO:  [Jul 30, 2018 6:37:48 AM] ------------------List of failed Tasks------------------
INFO:  [Jul 30, 2018 6:37:48 AM] *********************************************
INFO:  [Jul 30, 2018 6:37:48 AM] Physical Memory: This is a prerequisite condition to test whether the system has at least 8GB (8388608.0KB) of total physical memory.
INFO:  [Jul 30, 2018 6:37:48 AM] Severity:IGNORABLE
INFO:  [Jul 30, 2018 6:37:48 AM] OverallStatus:VERIFICATION_FAILED
INFO:  [Jul 30, 2018 6:37:48 AM] *********************************************
INFO:  [Jul 30, 2018 6:37:48 AM] Oracle base: /u01/base: This task verifies the writability of the Oracle base /u01/base
INFO:  [Jul 30, 2018 6:37:48 AM] Severity:CRITICAL
INFO:  [Jul 30, 2018 6:37:48 AM] OverallStatus:WARNING
INFO:  [Jul 30, 2018 6:37:48 AM] *********************************************
INFO:  [Jul 30, 2018 6:37:48 AM] '/u01/base':
INFO:  [Jul 30, 2018 6:37:48 AM] Severity:CRITICAL
INFO:  [Jul 30, 2018 6:37:48 AM] OverallStatus:WARNING
INFO:  [Jul 30, 2018 6:37:48 AM] -----------------End of failed Tasks List----------------

Running this script has produced following output:

Launching Oracle Database Setup Wizard...

[WARNING] [INS-13014] Target environment does not meet some optional requirements.
   CAUSE: Some of the optional prerequisites are not met. See logs for details. /u01/orainv/logs/InstallActions2018-07-30_06-33-01AM/installActions2018-07-30_06-33-01AM.log
   ACTION: Identify the list of failed prerequisite checks from the log: /u01/orainv/logs/InstallActions2018-07-30_06-33-01AM/installActions2018-07-30_06-33-01AM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
 /u01/db18c/install/response/db_2018-07-30_06-33-01AM.rsp

You can find the log of this install session at:
 /u01/orainv/logs/InstallActions2018-07-30_06-33-01AM/installActions2018-07-30_06-33-01AM.log

As a root user, execute the following script(s):
	1. /u01/db18c/root.sh

Execute /u01/db18c/root.sh on the following nodes: 
[ol7decn1, ol7decn2]


Successfully Setup Software with warning(s).

I have run root.sh on first node …:

# /u01/db18c/root.sh
Check /u01/db18c/install/root_ol7decn1.localdomain_2018-07-30_07-04-22-677276940.log for the output of root script
# cat /u01/db18c/install/root_ol7decn1.localdomain_2018-07-30_07-04-22-677276940.log
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/db18c
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
# 

… and on second node:

# /u01/db18c/root.sh
Check /u01/db18c/install/root_ol7decn2.localdomain_2018-07-30_07-04-47-261594066.log for the output of root script
# cat /u01/db18c/install/root_ol7decn2.localdomain_2018-07-30_07-04-47-261594066.log
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/db18c
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
# 

I have checked patch level on first node:

$ export ORACLE_HOME=/u01/db18c
$ export PATH=$ORACLE_HOME/bin:$PATH
$ sqlplus -v

SQL*Plus: Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

$ $ORACLE_HOME/OPatch/opatch lspatches
27908644;UPDATE 18.3 DATABASE CLIENT JDK IN ORACLE HOME TO JDK8U171
27923415;OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)
28090553;OCW RELEASE UPDATE 18.3.0.0.0 (28090553)
28090523;Database Release Update : 18.3.0.0.180717 (28090523)

OPatch succeeded.
Fast Recovery Area (FRA) and database group disk creation

I have first modified ASMFD to discover the 2 additional disks:

$ asmcmd afd_dsget
AFD discovery string: /dev/sdb1,/dev/sdc1
$ asmcmd afd_dsset '/dev/sd*'
$ asmcmd afd_dsget
AFD discovery string: /dev/sd*

I have checked that ASMFD is now able to see all ASM disks:

$ asmcmd afd_lsdsk               
--------------------------------------------------------------------------------
Label                     Filtering   Path
================================================================================
DATA                        ENABLED   /dev/sdd1
GIMR                        ENABLED   /dev/sdc1
OCRVD                       ENABLED   /dev/sdb1
RECO                        ENABLED   /dev/sde1
$ 

I have also modified ASMFD configuration on second node to make sure ASM disks are usable on both cluster nodes:

$ asmcmd afd_scan  
$ asmcmd afd_lsdsk
--------------------------------------------------------------------------------
Label                     Filtering   Path
================================================================================
DATA                        ENABLED   /dev/sdd1
GIMR                        ENABLED   /dev/sdc1
OCRVD                       ENABLED   /dev/sdb1
RECO                        ENABLED   /dev/sde1
$ 

I have created new ASM disk groups with:

$ . oraenv
ORACLE_SID = [+ASM1] ? +ASM1
The Oracle base remains unchanged with value /u01/base
$ sqlplus / as sysasm

SQL*Plus: Release 18.0.0.0.0 - Production on Mon Jul 30 22:06:41 2018
Version 18.3.0.0.0

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


Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SYS@+ASM1>select name, label, path, header_status from v$asm_disk;

NAME	   LABEL      PATH		   HEADER_STATU
---------- ---------- -------------------- ------------
	   DATA       AFD:DATA		   PROVISIONED
	   RECO       AFD:RECO		   PROVISIONED
OCRVD	   OCRVD      AFD:OCRVD 	   MEMBER
GIMR	   GIMR       AFD:GIMR		   MEMBER

SYS@+ASM1>create diskgroup DATA external redundancy disk 'AFD:DATA';

Diskgroup created.

SYS@+ASM1>create diskgroup RECO external redundancy disk 'AFD:RECO';

Diskgroup created.

I have started disk groups on second cluster node:

$ srvctl start diskgroup -diskgroup DATA -n ol7decn2
$ srvctl start diskgroup -diskgroup RECO -n ol7decn2

I have checked that both disk group resources have been added to OCR:

$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.DATA.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.GIMR.GHCHKPT.advm
               OFFLINE OFFLINE      ol7decn1                 STABLE
               OFFLINE OFFLINE      ol7decn2                 STABLE
ora.GIMR.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.OCRVD.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.RECO.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.chad
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.gimr.ghchkpt.acfs
               OFFLINE OFFLINE      ol7decn1                 STABLE
               OFFLINE OFFLINE      ol7decn2                 STABLE
ora.helper
               OFFLINE OFFLINE      ol7decn1                 IDLE,STABLE
               OFFLINE OFFLINE      ol7decn2                 IDLE,STABLE
ora.net1.network
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.ons
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.proxy_advm
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       ol7decn1                 169.254.26.6 192.168
                                                             .43.138,STABLE
ora.asm
      1        ONLINE  ONLINE       ol7decn1                 Started,STABLE
      2        ONLINE  ONLINE       ol7decn2                 Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       ol7decn1                 Open,STABLE
ora.ol7decn1.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.ol7decn2.vip
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.qosmserver
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
--------------------------------------------------------------------------------

I have changed DATA disk group compatibility to make sure that I can create a 18c database and avoid following error:

[FATAL] [DBT-05802] Creating password file on diskgroup (DATA) would fail since it requires compatible.asm of version (12.1.0.0.0) or higher. Current compatible.asm version is '11.2.0.2.0'.
ACTION: Choose a diskgroup with correct value for compatible.asm attribute.

I have run:

$ sqlplus / as sysasm

SQL*Plus: Release 18.0.0.0.0 - Production on Mon Jul 30 20:27:18 2018
Version 18.3.0.0.0

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


Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SYS@+ASM1>alter diskgroup DATA set attribute 'compatible.asm'='12.1.0.0';

Diskgroup altered.

RAC database creation

I have created a RAC database with following script:

/u01/db18c/bin/dbca \
 -silent \
 -nodelist ol7decn1,ol7decn2 \
 -createDatabase \
 -templateName General_Purpose.dbc   \
 -gdbName CDBRAC \
 -createAsContainerDatabase true \
 -numberOfPdbs 1 \
 -pdbName pdb \
 -pdbadminUsername pdba \
 -pdbadminPassword oracle \
 -SysPassword oracle \
 -SystemPassword oracle \
 -emConfiguration NONE \
 -storageType ASM \
 -asmSysPassword oracle \
 -diskGroupName DATA \
 -characterSet AL32UTF8 \
 -totalMemory 1024 \
 -recoveryGroupName RECO 

This script has printed following output:

WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
7% complete
Copying database files
27% complete
Creating and starting Oracle instance
28% complete
31% complete
35% complete
37% complete
40% complete
Creating cluster database views
41% complete
53% complete
Completing Database Creation
57% complete
59% complete
60% complete
Creating Pluggable Databases
64% complete
80% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /u01/base/cfgtoollogs/dbca/CDBRAC.
Database Information:
Global Database Name:CDBRAC
System Identifier(SID) Prefix:CDBRAC
Look at the log file "/u01/base/cfgtoollogs/dbca/CDBRAC/CDBRAC.log" for further details.

I have fixed /etc/oratab on both nodes to add missing instance names.
On first node:

$ tail -n 1 /etc/oratab
CDBRAC1:/u01/db18c:N
$ 

On second node:

$ tail -n 1 /etc/oratab
CDBRAC2:/u01/db18c:N
$ 

I have connected to database instance and run some checks:

SYS@CDBRAC2>select name, cdb from v$database;

NAME	  CDB
--------- ---
CDBRAC	  YES

SYS@CDBRAC2>show pdbs

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 PDB				  READ WRITE NO
SYS@CDBRAC2>select comp_name, version, status from dba_registry;

COMP_NAME				 VERSION	      STATUS
---------------------------------------- -------------------- ----------
Oracle Database Catalog Views		 18.0.0.0.0	      VALID
Oracle Database Packages and Types	 18.0.0.0.0	      VALID
Oracle Real Application Clusters	 18.0.0.0.0	      VALID
JServer JAVA Virtual Machine		 18.0.0.0.0	      VALID
Oracle XDK				 18.0.0.0.0	      VALID
Oracle Database Java Packages		 18.0.0.0.0	      VALID
OLAP Analytic Workspace 		 18.0.0.0.0	      VALID
Oracle XML Database			 18.0.0.0.0	      VALID
Oracle Workspace Manager		 18.0.0.0.0	      VALID
Oracle Text				 18.0.0.0.0	      VALID
Oracle Multimedia			 18.0.0.0.0	      VALID

COMP_NAME				 VERSION	      STATUS
---------------------------------------- -------------------- ----------
Spatial 				 18.0.0.0.0	      VALID
Oracle OLAP API 			 18.0.0.0.0	      VALID
Oracle Label Security			 18.0.0.0.0	      VALID
Oracle Database Vault			 18.0.0.0.0	      VALID

15 rows selected.

SYS@CDBRAC2>select patch_id, action, description, status, action_time from dba_registry_sqlpatch;

  PATCH_ID ACTION	   DESCRIPTION							STATUS	   ACTION_TIME
---------- --------------- ------------------------------------------------------------ ---------- ------------------------------
  28090523 APPLY	   Database Release Update : 18.3.0.0.180717 (28090523) 	SUCCESS    30-JUL-18 08.55.00.839070 PM
  27923415 APPLY	   OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)		SUCCESS    30-JUL-18 08.55.00.843547 PM

SYS@CDBRAC2>

I have checked database configuration in OCR:

$ srvctl config database -d CDBRAC
Database unique name: CDBRAC
Database name: CDBRAC
Oracle home: /u01/db18c
Oracle user: oracle
Spfile: +DATA/CDBRAC/PARAMETERFILE/spfile.272.982876093
Password file: +DATA/CDBRAC/PASSWORD/pwdcdbrac.256.982874473
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: 
Disk Groups: RECO,DATA
Mount point paths: 
Services: 
Type: RAC
Start concurrency: 
Stop concurrency: 
OSDBA group: dba
OSOPER group: oper
Database instances: CDBRAC1,CDBRAC2
Configured nodes: ol7decn1,ol7decn2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services: 
Database is administrator managed

I have also checked that crsctl displays now all resources including the new database:

$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.DATA.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.GIMR.GHCHKPT.advm
               OFFLINE OFFLINE      ol7decn1                 STABLE
               OFFLINE OFFLINE      ol7decn2                 STABLE
ora.GIMR.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.OCRVD.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.RECO.dg
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.chad
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.gimr.ghchkpt.acfs
               OFFLINE OFFLINE      ol7decn1                 STABLE
               OFFLINE OFFLINE      ol7decn2                 STABLE
ora.helper
               OFFLINE OFFLINE      ol7decn1                 IDLE,STABLE
               OFFLINE OFFLINE      ol7decn2                 IDLE,STABLE
ora.net1.network
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.ons
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
ora.proxy_advm
               ONLINE  ONLINE       ol7decn1                 STABLE
               ONLINE  ONLINE       ol7decn2                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       ol7decn1                 169.254.26.6 192.168
                                                             .43.138,STABLE
ora.asm
      1        ONLINE  ONLINE       ol7decn1                 Started,STABLE
      2        ONLINE  ONLINE       ol7decn2                 Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cdbrac.db
      1        ONLINE  ONLINE       ol7decn1                 Open,HOME=/u01/db18c
                                                             ,STABLE
      2        ONLINE  ONLINE       ol7decn2                 Open,HOME=/u01/db18c
                                                             ,STABLE
ora.cvu
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       ol7decn1                 Open,STABLE
ora.ol7decn1.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.ol7decn2.vip
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.qosmserver
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       ol7decn2                 STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       ol7decn1                 STABLE
--------------------------------------------------------------------------------
$ 

The 2-node RAC 18c cluster is now ready.

Conclusion

Comparing with a 12.2.0.1 installation, it is now possible to create directly GIMR database in a dedicated disk group.

I note new default local cluster resources and currently not really documented:

– ora.GIMR.GHCHKPT.advm

– ora.gimr.ghchkpt.acfs

– ora.proxy_advm

– ora.helper

I note also one new cluster resource: ora.rhpserver.

In general I find installations elapsted time quite slow, possibly due to many unexpected short lived depmod processes using a lot of CPU …

Categories: DBA Blogs

Where to find the oracle-database-ee-18c-1.0-1.x86_64.rpm package?

Dietrich Schroff - Mon, 2018-07-30 14:02
After writing about the release of Oracle database 18c i wanted to download
oracle-database-ee-18c-1.0-1.x86_64.rpmto try the rpm-based installation.
But this rpm is not included in
LINUX.X64_180000_db_home.zipThe oracle documentation shows:
 But on OTN and Delivery Cloud only the zipfile without the rpm can be downloaded...

So let's see, when the download pages are updated...

Text Classification with Deep Neural Network in TensorFlow - Simple Explanation

Andrejus Baranovski - Mon, 2018-07-30 13:05
Text classification implementation with TensorFlow can be simple. One of the areas where text classification can be applied - chatbot text processing and intent resolution. I will describe step by step in this post, how to build TensorFlow model for text classification and how classification is done. Please refer to my previous post related to similar topic - Contextual Chatbot with TensorFlow, Node.js and Oracle JET - Steps How to Install and Get It Working. I would recommend to go through this great post about chatbot implementation - Contextual Chatbots with Tensorflow.

Complete source code is available in GitHub repo (refer to the steps described in the blog referenced above).

Text classification implementation:

Step 1: Preparing Data
  • Tokenise patterns into array of words
  • Lower case and stem all words. Example: Pharmacy = pharm. Attempt to represent related words 
  • Create list of classes - intents
  • Create list of documents - combination between list of patterns and list of intents
Python implementation:


Step 2: Preparing TensorFlow Input
  • [X: [0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, ...N], Y: [0, 0, 1, 0, 0, 0, ...M]]
  • [X: [0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, ...N], Y: [0, 0, 0, 1, 0, 0, ...M]]
  • Array representing pattern with 0/1. N = vocabulary size. 1 when word position in vocabulary is matching word from pattern
  • Array representing intent with 0/1. M = number of intents. 1 when intent position in list of intents/classes is matching current intent
Python implementation:


Step 3: Training Neural Network
  • Use tflearn - deep learning library featuring a higher-level API for TensorFlow
  • Define X input shape - equal to word vocabulary size
  • Define two layers with 8 hidden neurones - optimal for text classification task (based on experiments)
  • Define Y input shape - equal to number of intents
  • Apply regression to find the best equation parameters
  • Define Deep Neural Network model (DNN)
  • Run model.fit to construct classification model. Provide X/Y inputs, number of epochs and batch size
  • Per each epoch, multiple operations are executed to find optimal model parameters to classify future input converted to array of 0/1
  • Batch size
    • Smaller batch size requires less memory. Especially important for datasets with large vocabulary
    • Typically networks train faster with smaller batches. Weights and network parameters are updated after each propagation
    • The smaller the batch the less accurate estimate of the gradient (function which describes the data) could be
Python implementation:


Step 4: Initial Model Testing
  • Tokenise input sentence - split it into array of words
  • Create bag of words (array with 0/1) for the input sentence - array equal to the size of vocabulary, with 1 for each word found in input sentence
  • Run model.predict with given bag of words array, this will return probability for each intent
Python implementation:


Step 5: Reuse Trained Model
  • For better reusability, it is recommended to create separate TensorFlow notebook, to handle classification requests
  • We can reuse previously created DNN model, by loading it with TensorFlow pickle
Python implementation:


Step 6: Text Classification
  • Define REST interface, so that function will be accessible outside TensorFlow
  • Convert incoming sentence into bag of words array and run model.predict
  • Consider results with probability higher than 0.25 to filter noise
  • Return multiple identified intents (if any), together with assigned probability
Python implementation:

Performance Tuning: Tracing Over a DB Link

Tom Kyte - Mon, 2018-07-30 12:06
hi Team, currenlty in our environment i see many query execute on dblink . we face performacne problem over their , can you let us know how we can trace sqlid of those sql's which are running remotely and how to figure out their bind variables...
Categories: DBA Blogs

CLOB and BLOB datatypes !

Tom Kyte - Mon, 2018-07-30 12:06
Hi Tom, How are you ? My Question to you is as follows :- If you have a column of type CLOB or BLOB in a table Is it possible to view the contents of this column in the select statement ? Is it possible to insert data into these col...
Categories: DBA Blogs

Iterating Logic

Tom Kyte - Mon, 2018-07-30 12:06
Hi I am trying to write a SQL query that computes the values of a column(mmwl) as follows. For the DDL and DML scripts please check the livesql link <code> create table t (y date, value_pvt int, mmwl int); --sample data to generate a rec...
Categories: DBA Blogs

Hierarchical Design Patterns

Tom Kyte - Mon, 2018-07-30 12:06
There are several Database design patterns floating around for various application usages. Tree and Hierarchy Patterns are one of those. I see most of the hierarchy patterns implemented as a self referencing table. There are also other implementa...
Categories: DBA Blogs

Pages

Subscribe to Oracle FAQ aggregator