Feed aggregator

Getting in touch with shareplex

Yann Neuhaus - Thu, 2018-10-25 02:39

Tuesday this week I had the opportunity to get in touch with shareplex, Quest’s replication solution. This product does not rely on Oracle licenses, so can also be used with Standard Edition. It is competitor of Oracle’s GoldenGate an used for asynchronous replication, too.
An interesting feature is that not only committed transactions can be replicated, which is an advantage with big transactions. With this feature replication latencies within seconds can be realized. Also migrations of big databases over operating system, character set and database release boundaries are possible with this solution. Quest mentions that costs are lower than that of comparable Oracle products.

It can be also used for reporting, high availability, distributed processing and load sharing.

Cet article Getting in touch with shareplex est apparu en premier sur Blog dbi services.

[BLOG] Oracle GoldenGate: Replicat running but not applying transactions

Online Apps DBA - Thu, 2018-10-25 02:19

Are you facing the issue during replication that replicat is running but not applying transactions? Visit: https://k21academy.com/goldengate29 to learn: ✔The Reasons for this issue ✔How the issue can be resolved & much more… Are you facing the issue during replication that replicat is running but not applying transactions? Visit: https://k21academy.com/goldengate29 to learn: ✔The Reasons for […]

The post [BLOG] Oracle GoldenGate: Replicat running but not applying transactions appeared first on Oracle Trainings for Apps & Fusion DBA.

Categories: APPS Blogs

Oracle OpenWorld 2018: Day 3

Yann Neuhaus - Wed, 2018-10-24 23:42

Today my first session was about GDPR Data Security in the GDPR Era. It was presented by
Joao Nunes, IT Senior Manager, NOS
Tiago Rocha, Database Administrator, “Nos Comunicaões, Sa.”
Eric Lybeck, Director, PwC
The speakers started by presenting what is GDPR which is a new law protecting data for European citizens. After they explain the changes for companies about this new law.
They talk about the GDPR articles related to Oracle Database Security.
openday3_0
And they conclude by underlining that the technical to be compliant with GDPR is not the most important part and then companies must have well documented processes.
openday3_11
My second session was Oracle Database Security Assessment Tool: Know Your Security Posture Before Hackers Do presented by
Pedro Lopes, DBSAT and EMEA Field Product Manager, Oracle
Marella Folgori, Oracle
Riccardo D’Agostini, Responsabile Progettazione Data Security, Intesa Sanpaolo
This session was about the new Oracle Database Security Assessment Tool (DBSAT) which can help to discover sensitive personal data, identify database users and their entitlements, and understand the configuration and operational security risks. This tool is free for Oracle customers.
I think this picture will help to better understand DBSAT
openday3_1
They also presented new features in the upcoming vesion. Note that actually only CIS rules are included
openday3_2
My last session was Multitenant Security Features Clarify DBA Role in DevOps Cloud presented
SPEAKERS
Franck Pachot, Database Engineer, CERN
Pieter Van Puymbroeck, Database Administrator, Exitas NV
We will not present Franck Pachot and as usual the session was exciting. It was about security in a multitenant environment.
The speakers explain how privileges can be restricted using lockdown profiles in a multitenant environment.
And to finish this beautiful picture
openday3_3

Cet article Oracle OpenWorld 2018: Day 3 est apparu en premier sur Blog dbi services.

“Hidden” Efficiencies of Non-Partitioned Indexes on Partitioned Tables Part III” (Ricochet)

Richard Foote - Wed, 2018-10-24 20:15
In Part I and Part II of this series, we looked at how Global Indexes can effectively perform “Partition Pruning” when the partition keys are specified in SQL predicates, by only using those index entries that have a Data Object of interest stored within the index Rowids. In this piece, I’ll cover the key performance […]
Categories: DBA Blogs

Oracle Open World 2018 D3: Replication what’s new in MySQL 8

Yann Neuhaus - Wed, 2018-10-24 20:08

For this last day (25.10.2018) at Oracle Open World my first technical session was “Replication what’s new in MySQL 8“. This session was given by Nuno Carvalho – Oracle MySQL Principal Software Engineer, Vitor Oliveira – Oracle MySQL Performance Architect, Louis Soares – Oracle MySQL Software Development Director. You can find the list of new features linked with MySQL InnoDB Cluster here.

MySQL - high availabiltiy

They introduced the session with the challenges a database has to face today:

  • We share lots of data
  • All things distributed
  • We are not sharing anymore few Ko but Mo
  • Go green requires dynamic and adaptative behavior
  • Moving, transforming and processing data quicker than anyone else means having an edge over competitors
  • We expect service always available even in case of migration/upgrade
  • etc…

Some years ago we solved availability concerns with replication but replication is not anymore able to solve the today’s challenges. Replication was perfect to generate and reproducing multiple copies of data at one or more sites. The MySQL replication technology evolved since version 3.23 where replication was asynchronous. Since version 5.5 thanks to a the semi-synchronous replication plugin, we have semi-synchronous replication and now since version 5.7.17 and 8.01 we have group replication.

MySQL Replication evolution

In order to answer to the today’s challenges, the solution must fit with these requirements:

  • Replicate: The number of servers should grow or shrink dynamically with as little pain as possible
  • Automate: The primary/secondary role assignment has to be automatic. A new primary has to be elected automatically on primary failures. The read/write modes on primary and secondaries have to be setup automatically. A consistent wview of which server is the primary has to be provided.
  • Integrate: MySQL has to fit with other technologies such as Hadoop, Kafka, Solr, Lucene, aso…
  • Scale: Repliacte between clusters for disaster recovery. For read scale out, asynchronous read replicas can be connected to the cluster
  • Enhance: Group replication for higher availability. Asynchronous Replication for Read Scale-out. One-stop shell to deploy and manage the cluster. Seamlessly and automatically route the workload to the proper database server in the cluster (in case of failure). Hide failures from the application.

MySQL role change

Enhancements in MySQL 8 (and 5.7)

The following has been enhanced in version 8 and 5.7:

  • Binary log Enhancements. Thanks to new metadata: Easy to decode what is in the binary log. Further facilitates connecting MySQL to other systems using the binary log stream. Cpaturing data changes through the binary log is simplified. Also more stats showing where the data is/was at a certain point in time.
  • Operations: Preventing Updates On replicas that leave the cluster- Automatic protection against involuntarily tainting of offline replicas. Primary Election Weights – Choose next primary by assigning election weights to the candidates. Trigger primary Election Online – User tells current primary to give up its role and assign it to another server(new in 8.0.13). Relaxed Member Eviction – User controls the amount of time to wait until others decide to evict a member from the group.
  • Performance: Highly efficient Replication Applier – write set parallelization. Fast Group Replication Recovery – Replica quickly online by using WRITESET. High Cluster Througput – More transactions per second while sustaining zero lag on any replica. Efficient Replication of JSON Documents – Replicate only changed fields of documents (Partial JSON Updates).
  • Monitoring: Monitor Lag with microsecond precision – From the immediate master and for each stage of the replication applier process. Global Group Stats Available on Every Server – Version, Role and more

MySQL 8 Group Replication

I finally recommend to have a look on the blogs from the Engineers  where you will find news, technical information and much more: http://mysqlhighavailability.com

 

Cet article Oracle Open World 2018 D3: Replication what’s new in MySQL 8 est apparu en premier sur Blog dbi services.

Using the Mindbreeze client.js File to Create Custom Search Interfaces

This post describes how to create custom Mindbreeze search interfaces using the built-in Mindbreeze client.js file. This post is a follow up to our post on Four Options for Creating Mindbreeze Search Interfaces where we mention Option 3 is creating custom Mindbreeze web applications.

For this example, I will be using my local web server with XAMPP for Windows which uses Apache in the background. Setting up XAMPP is beyond the scope of this blog post, but this approach can be taken with any web server or architecture.

The widgets and html snippet references in the post are based on the following documentation from the Mindbreeze website: Development of Search Apps.

Creating a Basic Search Page

To begin, I created a blog.html file referencing Mindbreeze’s client.js file and using RequireJS to load the Mindbreeze search application. To do this, I created a new application object and told the page where the starting <div> block is using the rootEl property of the application. Since I did not want the page to run a blank search right away, I also added the startSearch property and set it to false.

There are a few mustache templates that I injected onto the page by copying and pasting from the default Mindbreeze search application (index.html). I then removed some of the optional elements to create a no-frills search page as shown in the snippet below. I’ve included the templates for result count and spelling suggestions, which are contained in the searchinfo and results templates respectively.

<html>
  <head>
    <title>Mindbreeze Search</title>
  </head>
  <body>
    <script src="https://mindbreeze.fishbowlsolutions.com:23352/apps/scripts/client.js" data-global-export="false"></script>
    <script>
      Mindbreeze.require(["client/application"], function (Application) {
        var application = new Application({
          rootEl: document.getElementById("searchresults"),
          startSearch: false,
        });
      });
  </script>
    <div id="searchresults">
      <div data-template="view" data-count="10" data-constraint="ALL">
        <script type="text/x-mustache-template" data-attr-role="status" data-attr-class="{{^estimated_count?}}hide{{/estimated_count?}}"
          data-attr-tabindex="-1">
          {{^status_messages.no_results?}}
          <h3>
            {{#estimated_count?}}
              {{estimated_count}} {{i18n.editor_result_title}}
            {{/estimated_count?}}
          </h3>
          {{/status_messages.no_results?}}
        </script>
        <div data-template="searchinfo"></div>
        <div data-template="results" class="media-list list-group">
        </div>
      </div>
    </div>
  </body>
</html>

Navigating to this page with a query parameter (e.g. ?query=ALL) returns a simple search results list without any styling.

We can now add our own custom styling to the page. I added the Bootstrap CDN, along with jQuery to style my page.

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
    <script defer src="https://use.fontawesome.com/releases/v5.0.13/js/all.js" integrity="sha384-xymdQtn1n3lH2wcu0qhcdaOpQwyoarkgLVxC/wZ5q7h9gHtxICrpcaSUfygqZGOe" crossorigin="anonymous"></script>

Adding some bootstrap class information like container and col-md-9 for the results helps me quickly style the page for adding on facets.

There are two different types of facets that Mindbreeze offers: FilteredFacets and FilteredFacet.  FilteredFacets allow for the configuration page in the Management Center to control what facets are displayed on the page.  FilteredFacet allows developers to manually add the desired facets individually.  For this demonstration, I will be manually adding a facet using FilteredFacet. This is shown below with the addition of the facet for author.

<html>
<head>
  <title>Mindbreeze Search</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
    crossorigin="anonymous">
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
    crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
    crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
    crossorigin="anonymous"></script>
  <script defer src="https://use.fontawesome.com/releases/v5.0.13/js/all.js" integrity="sha384-xymdQtn1n3lH2wcu0qhcdaOpQwyoarkgLVxC/wZ5q7h9gHtxICrpcaSUfygqZGOe"
    crossorigin="anonymous"></script>
</head>
<body>
  <script src="https://mindbreeze.fishbowlsolutions.com:23352/apps/scripts/client.js" data-global-export="false"></script>
  <script>
    Mindbreeze.require(["client/application"], function (Application) {
        var application = new Application({
          rootEl: document.getElementById("searchresults"),
          startSearch: false,
        });
      });
  </script>
  <div id="searchresults" class="container">
    <div data-template="view" data-count="10" data-constraint="ALL">
      <!--Constraing is optional the same as in redirect of original page-->
      <script type="text/x-mustache-template" data-attr-role="status" data-attr-class="{{^estimated_count?}}hide{{/estimated_count?}}"
        data-attr-tabindex="-1">
        {{^status_messages.no_results?}}
          <h3>
            {{#estimated_count?}}
              {{estimated_count}} {{i18n.editor_result_title}}
            {{/estimated_count?}}
          </h3>
          {{/status_messages.no_results?}}
        </script>
      <div data-template="searchinfo"></div>
      <div class="row">
        <div class="col-md-9">
          <div data-template="results">
          </div>
        </div>
        <div class="col-md-3">
          <div data-template="filteredfacet" data-name="Author" data-container-tag-name="div" data-container-class-name="filter"
            data-entry-tag-name="div" data-entry-class-name="entry">
          </div>
        </div>
      </div>
    </div>
  </div>
</body>
</html>

We can see that I now have the author field as a configured value.  There are more configurations offered like changing the template of the results in the filter or HTML tags, allowing user input, and modifying the title label. Information on these options can be found here: Mindbreeze Filtered Facet Widget.

Now we will add the search form onto the page. This will allow suggestions to show up when a user is typing a query.  You can add additional parameters to the input tag to tell Mindbreeze which data sources to run suggestions against like popular searches, recent searches, and document properties.  This documentation is available here: Mindbreeze Suggestions.

We’ll style the suggestions in the next section.

<form class="center search-field mb-print-left" data-template="searchform" data-requires-user-input="true">
      <input data-template="suggest" data-disabled="false" data-placeholder="search" data-shortcut="alt+1" id="query" data-source-id-pattern="document_property|popularsearches" data-initial-source-id-pattern="document_property|popularsearches" data-grouped="true" class="" name="query" type="search" autofocus="" autocomplete="off" placeholder="Search">
      <button class="btn btn-link mb-no-print" type="submit" tabindex="-1"><i class="icon-search"></i></button>
    </form>

Now we want to add pagination or infinite scrolling to allow the loading of more results.  For this example, I will use paging via the Mindbreeze pages tempalte. This will allow page numbers to display in list format and Mindbreeze will be able to handle the paging actions for us.

<div class="col-md-9">
          <div data-template="results">
          </div>
          <div data-template="pages">
            <script type="text/x-mustache-template" data-class-name="mypaging" data-tag-name="ul">
              {{#pages?}}
                 {{#pages}}
                    <li class="{{#current_page?}}active{{/current_page?}}"><a href="#" data-action-name="setPage" data-page="{{page}}">{{page}}</a></li>
                  {{/pages}}
              {{/pages?}}
            </script>
          </div>
        </div>
Modifying Mustache Templates to Alter Result Data

Now we want to structure our result data. This is an easy way to adjust the information displayed for each result item. We can do this by overriding our results <div> and adding our own mustache.  Here is where you can make changes such as adding specific metadata for each result to display contextually relevant information.

<div data-template="results">
              <script type="text/x-mustache-template" data-class-name="media mb-clickable-phone" data-attr-role="group"
                data-attr-data-action-object='{ "toggleOpen": { "enabledSelector": ".visible-phone" }}'
                data-attr-aria-labelledby="result_{{id}}">
                <span class="pull-left media-object" aria-hidden="true">
                    {{#actions.data[0].value.href?}}
                    <a href="{{actions.data[0].value.href}}" data-disabled-selector=".visible-phone"
                        tabindex="-1" target="_self">{{/actions.data[0].value.href?}} {{{icon}}} {{#actions.data[0].value.href?}}
                    </a>{{/actions.data[0].value.href?}}
                </span>
                <div class="media-body">
                    <h3 class="media-heading" id="result_{{id}}">
                        {{#actions.data[0].value.href?}}
                        <a href="{{actions.data[0].value.href}}"
                            data-enabled-selector=".visible-phone" target="_self">{{/actions.data[0].value.href?}} {{{title}}} {{#actions.data[0].value.href?}}
                        </a>{{/actions.data[0].value.href?}}
                    </h3>
                    <ul class="mb-actions mb-separated hidden-phone mb-visible-open mb-no-print">
                        {{#actions.data}}
                        <li class="nowrap">{{{html}}}</li>{{/actions.data}}

                    </ul>
                    {{#content}}
                    <p class="mb-content">{{{.}}}</p>
                    {{/content}}
                    {{#mes:nested.data?}}
                    <ul class="mb-nested">
                        {{#mes:nested}}
                        <div class="media mb-nested" data-action-object="{ &quot;toggleOpen&quot;: { &quot;enabledSelector&quot;: &quot;.visible-phone&quot; }}">
                            {{#actions.data[0].value.href?}}
                            <a href="{{actions.data[0].value.href}}" data-disabled-selector=".visible-phone" target="_self">
                                {{/actions.data[0].value.href?}}
                                <b>{{{title}}}</b>
                                {{#actions.data[0].value.href?}}
                            </a>
                            {{/actions.data[0].value.href?}}
                            <ul class="mb-actions mb-separated hidden-phone mb-visible-submenu-open mb-no-print">
                                {{#actions.data}}
                                <li class="nowrap">
                                    <small>{{{html}}}</small>
                                </li>{{/actions.data}}
                            </ul>
                            <dl class="mb-comma-separated-values mb-separated mb-summarized-description-list mb-small">
                                <dd>{{{mes:date}}}</dd>
                            </dl>
                        </div>
                        {{/mes:nested}}
                    </ul>
                    {{/mes:nested.data?}}
                    <span class="clearfix"></span>
                </div>
            </script>

            </div>
Adding Custom Styling

After the appropriate data is returned, we can perform some styling.  For this, I am going to reference a custom CSS file on my Apache server.

We recommend that your CSS handle displaying search results on both mobile and desktop displays.

You can see the styling of the Suggestions (using jQuery UI autocomplete) below.

I’ve included the final code for this example below. You can see how this could be modified and extended to suit a wide variety of needs and use cases. If you have any questions about our experience with Mindbreeze or would like to know more, please contact us.

#searchresults {
    display: flex;
    flex-direction: column;
}

.header{
    background: #ffffff;
}

.header .container {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    max-width: 100vw;
    height: 7rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.2);
    padding: 0;
}

.header .brand-logo {
    width: 72px;
    height: 72px;
    padding: 0 1em;
    margin: 0 0.5em;
    box-sizing: content-box;
}

form{
    position: relative;
    margin: 0;
    flex: 0 1 300px;
    max-width: 300px;
    padding: 0 1em;
    display: flex;
    flex-direction: column;
    align-items: center;
    height: 32px;
    box-shadow: inset 0 0 0 2px #adadad;
    border-radius: 1em;
    transition: box-shadow 0.25s;
}

form,
form:active,
form:focus,
form:focus-within,
form input,
form input:active,
form input:focus,
form input:focus-within {
    outline: none;
}

form .search-box {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    align-items: center;
    width: 100%;
    height: 100%;
}

form input{
    flex: 0 0 calc(100% - 44px);
    padding: 0;
    border: none;
}

form:focus-within {
    box-shadow: inset 0 0 0 2px #868686;
}

form .search-box button{
    border: none;
    padding-right: 0;
    flex: 0 0 44px;
}

form .search-box .ui-autocomplete {
    max-width: 300px;
    width: 100% !important;
    flex: 0 0 100%;
}

form span[role='status']{
    display: none;
}

form ul.ui-autocomplete{
    background: white;
    z-index: 10;
    list-style: none;
    border: 1px solid black;
    padding: 0;
    top: 0 !important;
    left: 0 !important;
}

form .ui-autocomplete-category {
    background: #bdbdbd;
    font-weight: 700;
}

form .ui-autocomplete li{
    padding-left: 0.5em;
}

ul.ui-autocomplete span.matched{
    font-weight: 700;
}

form ul a:hover{
    text-decoration: none;
}

.ui-autocomplete li:hover:not(.ui-autocomplete-category) {
    background: rgba(0, 0, 0, 0.1);
    cursor: pointer;
}

.ui-autocomplete a{
    display: block;
}

.ui-autocomplete a{
    color: black;
}

.resultHeader{
    font-size: 14pt;

}

.resultHeader a, .resultHeader a:hover{
    text-decoration: none;
    color: black;
}

div[role='status']{
    padding: 10px 0px;
}

.results-wrapper {
    margin: 0;
    padding: 0 1.5em;
    box-sizing: border-box;
    flex: 0 0 100%;
    max-width: 100%;
}

.results-wrapper .container {
    width: 100%;
    max-width: 100%;
    display: flex;
    flex-direction: column;
    padding: 0;
}

.results-wrapper .row {
    margin: 0;
    display: flex;
}

.results-wrapper .results-container {
    flex-direction: row;
    flex-wrap: nowrap;
}

.results-wrapper .results-container .results {
    padding: 0;
    flex: 1 0 75%;
    box-sizing: border-box;
}

.results-wrapper .row .results .results-list {
    display: flex;
    flex-direction: column;
}

.results-wrapper .row .results .results-list .row {
    display: flex;
    border-radius: 4px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.16), 0 2px 6px rgba(0,0,0,0.23);
    transition: box-shadow 0.25s;
    flex-wrap: nowrap;
}

.results-wrapper .row .results .results-list .row:hover {
    box-shadow: 0 5px 20px rgba(0,0,0,0.19), 0 2px 6px rgba(0,0,0,0.23);
}

.results-wrapper .row .results .results-list .row .thumbnail {
    flex: 1 0 80px;
    box-sizing: border-box;
    padding: 14px;
    max-width: 125px;
}

.results-wrapper .results-container .filters {
    flex: 0 1 25%;
    box-sizing: border-box;
    margin: 0 10px 0 30px;
}

.row .thumbnail a {
    max-width: 100%;
}

.row .thumbnail a .mb-thumbnail {
    max-width: 100%;
    height: auto;
}

.results-wrapper .results-container .results .results-list .row .content {
    flex: 1 0 75%;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    padding: 0.5rem 0.5rem 0.5rem 0;
}

.row .content .resultHeader {
    box-sizing: border-box;
    margin-bottom: 0.5rem;
}

.row .content .resultHeader a {
    font-weight: bold;
    font-size: 1rem;
}

.row .content .resultHeader a:hover {
    text-decoration: underline;
}

.row .content .mb-content {
    font-size: 0.9rem;
}

em{
    font-style: normal;
    background: rgba(0, 0, 0, 0.1);
}

div[data-template='results'] .row{
    margin-bottom: 1.5rem;
}

.paging {
    padding: 0;
}

.paging li{
    display: inline-block;
    /* You can also add some margins here to make it look prettier */
    zoom:1;
    *display:inline;
}

.filter input[type="checkbox"] {
    width: 0;
    height: 0;
    position: relative;
    top: -6px;
    margin-right: 0.8rem;
}

.filter input[type="checkbox"]:before {
    position: relative;
    display: block;
    width: 8px;
    height: 8px;
    left: 2px;
    top: 2px;
    box-sizing: border-box;
    content: "";
    border: 1px solid rgba(0, 0, 0, 0.4);
    background: transparent;
    transition: all 0.1s linear;
    cursor: pointer;
}

.filter input[type="checkbox"]:hover:before,
.filter input[type="checkbox"]:checked:before {
    width: 12px;
    height: 12px;
    left: 0;
    top: 0;
    border: 0;
}

.filter input[type="checkbox"]:hover:before {
    background: rgba(0, 123, 255, 0.6);
}

.filter input[type="checkbox"]:checked:before {
    background: rgba(0, 123, 255, 1);
}

.paging a{
    float: left;
    padding: 4px 12px;
    line-height: 20px;
    text-decoration: none;
    background-color: #fff;
    border: 1px solid #b5b5b5;
    border-radius: 4px;
}

.paging .disabled>span{
    color: #777;
    cursor: default;
    background-color: transparent;
    float: left;
    padding: 4px 12px;
    line-height: 20px;
    text-decoration: none;
    border: 1px solid #b5b5b5;
    border-radius: 4px;
    margin-right: 5px;
}

a[data-action-name='previousPage']{
    margin-right: 5px;
}

.facet >div > input{
    display: none;
}

.checkbox {
    display: flex;
    align-items: center;
    margin-bottom: 1rem;
}

.checkbox > span {
    font-size: 14px;
    line-height: 13px;
    padding-left: 8px;
}

@media screen and (max-width: 768px) {
    .results-wrapper .row .results .results-list .row .thumbnail {
        display: none;
    }

    .results-wrapper .row .results .results-list .row .content {
        padding: 14px;
    }

    .filters {
        display: none;
    }
}


Index.html
<html>

<head>
  <title>Mindbreeze Search</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
    crossorigin="anonymous">
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
    crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
    crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
    crossorigin="anonymous"></script>
  <script defer src="https://use.fontawesome.com/releases/v5.0.13/js/all.js" integrity="sha384-xymdQtn1n3lH2wcu0qhcdaOpQwyoarkgLVxC/wZ5q7h9gHtxICrpcaSUfygqZGOe"
    crossorigin="anonymous"></script>
  <link rel="stylesheet" href="/blog.css">
</head>

<body>
  <script src="https://mindbreeze.fishbowlsolutions.com:23382/apps/scripts/client.js" data-global-export="false"></script>
  <script>
    Mindbreeze.require(["client/application"], function (Application) {
        var application = new Application({
          rootEl: document.getElementById("searchresults"),
          startSearch: false,
        });
      });
  </script>
  <div id="searchresults" class="">
    <div class="header">
      <div class="container">
        <img class="brand-logo" src="/fb.svg" alt="Fishbowl Solutions">
        <form class="center search-field mb-print-left" data-template="searchform" data-requires-user-input="true">
          <div class="search-box">
            <input data-template="suggest" data-source-id-popularsearches-title="Popular Searches" data-disabled="false"
              data-placeholder="search" data-shortcut="alt+1" id="query" data-source-id-pattern="document_property|popularsearches|recent_query"
              data-initial-source-id-pattern="recent_query|popularsearches" data-grouped="true" class="" name="query"
              type="search" autofocus="" autocomplete="off" placeholder="Search">
            <button class="btn btn-link mb-no-print" type="submit" data-i18n="[title]action_search">
              <i class="fas fa-search"></i>
            </button>
          </div>
        </form>
      </div>
    </div>
    <div class="container results-wrapper">
      <div data-template="view" data-count="5" data-constraint="ALL" class="container">
        <script type="text/x-mustache-template" data-attr-role="status" data-attr-class="{{^estimated_count?}}hide{{/estimated_count?}}"
          data-attr-tabindex="-1">
          {{^status_messages.no_results?}}
          <h4>
            {{#estimated_count?}}
              {{estimated_count}} {{i18n.editor_result_title}}
            {{/estimated_count?}}
          </h4>
          {{/status_messages.no_results?}}
        </script>
        <div data-template="searchinfo"></div>
        <div class="row results-container">
          <div class="results">
            <div data-template="results" class="results-list">
              <script type="text/x-mustache-template" data-class-name="row" data-attr-role="group"
                data-attr-data-action-object='{ "toggleOpen": { "enabledSelector": ".visible-phone" }}'
                data-attr-aria-labelledby="result_{{id}}">
                <span class="thumbnail" aria-hidden="true">
                    {{#actions.data[0].value.href?}}
                    <a href="{{actions.data[0].value.href}}" data-disabled-selector=".visible-phone"
                        tabindex="-1" target="_self">{{/actions.data[0].value.href?}}{{#icon?}} {{{icon}}}{{/icon?}}{{^icon?}} <img src="/no-thumbnail.jpg" class="mb-thumbnail"/>{{/icon?}} {{#actions.data[0].value.href?}}
                    </a>{{/actions.data[0].value.href?}}
                </span>
                <div class="content">
                    <div class="resultHeader" id="result_{{id}}">
                        {{#actions.data[0].value.href?}}
                        <a href="{{actions.data[0].value.href}}"
                            data-enabled-selector=".visible-phone" target="_self">{{/actions.data[0].value.href?}} {{{title}}} {{#actions.data[0].value.href?}}
                        </a>{{/actions.data[0].value.href?}}
                      </div>

                    {{#content}}
                    <p class="mb-content">{{{.}}}</p>
                    {{/content}}
                    {{#mes:nested.data?}}
                    <ul class="mb-nested">
                        {{#mes:nested}}
                        <div class="media mb-nested" data-action-object="{ &quot;toggleOpen&quot;: { &quot;enabledSelector&quot;: &quot;.visible-phone&quot; }}">
                            {{#actions.data[0].value.href?}}
                            <a href="{{actions.data[0].value.href}}" data-disabled-selector=".visible-phone" target="_self">
                                {{/actions.data[0].value.href?}}
                                <b>{{{title}}}</b>
                                {{#actions.data[0].value.href?}}
                            </a>
                            {{/actions.data[0].value.href?}}
                            <ul class="mb-actions mb-separated hidden-phone mb-visible-submenu-open mb-no-print">
                                {{#actions.data}}
                                <li class="nowrap">
                                    <small>{{{html}}}</small>
                                </li>{{/actions.data}}
                            </ul>
                            <dl class="mb-comma-separated-values mb-separated mb-summarized-description-list mb-small">
                                <dd>{{{mes:date}}}</dd>
                            </dl>
                        </div>
                        {{/mes:nested}}
                    </ul>
                    {{/mes:nested.data?}}
                </div>
            </script>

            </div>

          </div>
          <div class="filters">
            <div data-template="filteredfacet" data-title-tag-name="h4" data-name="Author" data-container-tag-name="div"
              data-container-class-name="filter"  data-entry-tag-name="div"
              data-entry-class-name="entry" class="facet">
            </div>
          </div>

        </div>
        <div class="row">
            <div data-template="pages">
              <div class="pagination">
                <script type="text/x-mustache-template" data-class-name="paging" data-tag-name="ul">

                  {{#pages?}}

                      {{#onFirstPage?}}
                        <li class="disabled"><span>&laquo;</span><li>
                      {{/onFirstPage?}}
                      {{^onFirstPage?}}
                        <li><a href="#" data-action-name="previousPage">&laquo;</a><li>
                      {{/onFirstPage?}}

                      {{#pages}}
                        <li class="{{#current_page?}}active{{/current_page?}}"><a href="#" data-action-name="setPage" data-page="{{page_number}}">{{page}}</a></li>
                      {{/pages}}

                      {{#more_avail?}}
                        <li class="disabled"><span>&hellip;</span></li>
                      {{/more_avail?}}

                      {{#onLastPage?}}
                        <li class="disabled"><span>&raquo;</span><li>
                      {{/onLastPage?}}
                      {{^onLastPage?}}
                        <li><a href="#" data-action-name="nextPage">&raquo;</a><li>
                      {{/onLastPage?}}

                  {{/pages?}}
              </script>
              </div>
            </div>
            </div>
      </div>
    </div>
  </div>
</body>

</html>




<!--

var application = new Application({
  rootEl: document.getElementById("searchresults"),
  startSearch: false,
   queryURLParameter: "searchQuery",
});
//constraint wenn nötig
//application.setConstraint({unparsed: "extension:pdf"}); //constraint is optional
window.search = function () {
  var searchQuery = document.getElementById("searchQuery").value;
  //you need this only if you add the searchbox on the searchpage as well
  //Now the redirect will be on the current website (window.location.href) ==> If you search on the search website the redirect should be to the searchwebsite as well.
  window.location.href = "?searchQuery=" + encodeURIComponent(searchQuery);
}
function getUrlParameter(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(location.search);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};
document.getElementById("searchQuery").value = getUrlParameter("searchQuery");

-->

The post Using the Mindbreeze client.js File to Create Custom Search Interfaces appeared first on Fishbowl Solutions.

Categories: Fusion Middleware, Other

My first day at the #pgconfeu 2018 in Lisbon

Yann Neuhaus - Wed, 2018-10-24 16:32

After the first Swiss PostgreSQL community dinner yesterday evening, the conference started this morning. dbi services as Gold partner of the 10th European conference in Lisbon, get the opportunity to have a booth to present all our Open Infrastructures Services.

IMG_6085

For the occasion we decided to announce this morning our brand new video of our OpenDB Appliance, which is a real success, because we have more than one hundred views and many attended of the conference was coming to our booth to get more information about it.

We are in Lisbon! Come and meet us on our booth at PG Conference Europe and ask @Herveschweitzer, @westermanndanie, @Pybrehier about the OpenDB Appliance – our product that makes your life easier by providing functional virtual DB environments in seconds.#pgconfeu #postgres pic.twitter.com/XzH0kl4Xh7

— dbi services (@dbiservices) October 24, 2018

Today I followed many sessions, but one of them was especially interesting for me “zheap: An answer to PostgreSQL bloat woes” from Amit Kapila
This presentation presented the new Postgres storage engine “ZHEAP” which is currently under development, currently no availability plan of this storage engine exist, I think not before 2020. But I’m exiting to test this new feature of PostgreSQL.

First what it is this new ZHEAP storage engine? ZHEAP allow the usage of a separate UNDO tablespace to guarantee rollbacks, which currently at Postgres is done with keeping the old and new rows into the table itself. The problem of keeping both values into the table, is that the table will bloat.

The presentation is available here on slideshare : link to the presentation

As an experimented Oracle DBA I want to test it. Therefore I asked my colleague Daniel Westermann: how can I test it ? he say “it’s easy”. I always hear that from Postgres that it’s easy, so I say we will do it now.

At 17h20 I started to clone the git repository of the project https://github.com/EnterpriseDB/zheap
30 minutes later after installing and creating my own build, I’m ready for the testing.

See below some output of the new running development ZHEAP database.

02:42:34 postgres@dbi-pg-tun:/u02/pgdata/zheap/pg_log/ [ZHEAP] grep -i undo postgresql-Wed.log 

2018-10-17 02:41:49.498 CEST - 10 - 6544 -  - @ LOG:  background worker "undo worker launcher" (PID 6553) exited with exit code 1

02:42:42 postgres@dbi-pg-tun:/u02/pgdata/zheap/pg_log/ [ZHEAP] grep -i "discard worker" postgresql-Wed.log 

2018-10-17 02:41:52.594 CEST - 1 - 6597 -  - @ LOG:  discard worker started

At startup we see the new “undo worker” and “discard worker” process into the logfile, where Amit Kapila just talked about.
So now I will test to create a new table with the storage_engine “ZHEAP”

02:50:39 postgres@dbi-pg-tun:/u02/pgdata/zheap/pg_log/ [ZHEAP] sqh
psql (12devel dbi services zheap build)
Type "help" for help.

PSQL>  create table t_zheap(c1 int, c2 varchar) with (storage_engine='zheap');
CREATE TABLE
Time: 12.433 ms
PSQL> 

That’s it :-) my first table using the zheap storage is created, and I can start testing.

Trust me I was coming back from the session at 17:20 and at less than 30 minutes later, I have a running test system using the ZHEAP storage engine, it is very impressive how fast it is to get access to a Postgres development platform.

Tomorrow I will write a blog where I will make some tests using ZHEAP, because now it’s time for the PGconf.eu Party :-)

IMG_6109

Cet article My first day at the #pgconfeu 2018 in Lisbon est apparu en premier sur Blog dbi services.

Oracle Puts Machine Learning at Heart of Cloud Applications Strategy

Oracle Press Releases - Wed, 2018-10-24 16:00
Press Release
Oracle Puts Machine Learning at Heart of Cloud Applications Strategy Next-generation voice user interface and powerful analytics extending industry’s broadest, deepest and fastest growing suite of cloud applications

Oracle OpenWorld, San Francisco, Calif.—Oct 24, 2018

Oracle puts machine learning at heart of cloud applications strategy.

Oracle Executive Chairman and CTO Larry Ellison today demonstrated next-generation voice user interface and powerful analytics capabilities within Oracle Fusion Cloud Applications. The only cloud applications built on machine learning, Oracle Fusion Cloud Applications provide a complete and fully integrated suite of applications that empower business users across the organization including customer experience, finance, HR and supply chain professionals.

Built on a secure, self-driving cloud platform and cloud infrastructure, Oracle Fusion Cloud Applications take advantage of the Oracle Autonomous Database and separate applications and security processors to help customers increase business agility and reduce costs. Customers can easily develop application extensions to meet unique business needs, enhance the user experience through a modern conversational UI, automate hundreds of manual business functions and automate cloud migration to reduce upgrade costs, accelerate time to value and improve delivery predictability.   

Extending the industry’s broadest, deepest and fastest growing suite of cloud applications, Ellison launched Oracle Fusion Analytics Warehouse. A complete analytics platform for business users, developers and IT professionals that is built on Oracle Analytics and Autonomous Data Warehouse, Oracle Fusion Analytics Warehouse is optimized for all Oracle Fusion Cloud Applications to enable rapid deployment and business value. Customers can use the fully extensible and customizable solution to also bring in data from other SaaS and on-premises solutions.  

Quotes from Larry Ellison’s keynote presentation:

"We have more SaaS applications than any other cloud provider.”

“We provide you with a set of tools where people can collaborate together and ask questions, work together as teams, and solve problems. It is a whole new generation of applications.”

"We automate those tedious processes, we automate those complex processes, giving you huge productivity gains, by adopting our next generation cloud applications.”

“It is now so much easier to capture expenses, so much more accurate, people aren't wasting time. If I want to find out when I'm going to get paid, when I'm going to be reimbursed for a trip that I'm on or for a trip that I've completed or a business dinner I had, I can just ask Alexa.”

“We've actually had customers already using our mobile capabilities, our chatbot capabilities and our new voice interface to build new features and functions into their applications. Again, if we can build voice interfaces on top of our applications, so can you.”

“If you don't know the right question to ask, the machine learning part of our analytic tools will help you find the correlations and help you ask the questions, and then give you English language explanations as to what they find.” 

“We automate the creation of the data model in the warehouse. We automate the migration of the data in the data warehouse. It's the Autonomous Data Warehouse. It automatically tunes itself. It adds indexes. It adds whatever it needs to run efficiently. It does all that automatically. You just press a button.”

“By working together, your good ideas, our good ideas, we can deliver the next generation of SaaS applications in the cloud.”

Contact Info
Simon Jones
Oracle
+1.415.202.4574
s.jones@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 OpenWorld

Oracle OpenWorld, the industry’s most important business and technology conference for the past 20 years, hosts tens of thousands of in-person attendees as well as millions online. Dedicated to helping businesses leverage Cloud for their innovation and growth, the conference delivers deep insight into industry trends and breakthroughs driven by technology. With hundreds of demos and hands-on labs, plus exhibitions from more than 250 partners and customers from around the world, Oracle OpenWorld has become a showcase for leading cloud technologies, from Cloud Applications to Cloud Platform and Infrastructure. For more information; to register; or to watch Oracle OpenWorld keynotes, sessions, and more, visit www.oracle.com/openworld. Join the Oracle OpenWorld discussion on Twitter.

Future Product Disclaimer

The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation.

Forward-Looking Statements Disclaimer

Statements in this article relating to Oracle’s future plans, expectations, beliefs, intentions, and prospects are “forward-looking statements” and are subject to material risks and uncertainties. Many factors could affect Oracle’s current expectations and actual results, and could cause actual results to differ materially. A discussion of such factors and other risks that affect Oracle’s business is contained in Oracle’s Securities and Exchange Commission (SEC) filings, including Oracle’s most recent reports on Form 10-K and Form 10-Q under the heading “Risk Factors.” These filings are available on the SEC’s website or on Oracle’s website at http://www.oracle.com/investor. All information in this article is current as of October 24, 2018, and Oracle undertakes no duty to update any statement in light of new information or future events.

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

Simon Jones

  • +1.415.202.4574

pgconf.eu finally kicked off

Yann Neuhaus - Wed, 2018-10-24 06:30

So, finally it started: Magnus kicked off the 10th annual PostgreSQL Conference Europe this morning in Lisbon. With 450 attendees the conference is even bigger this year than it was last year in Warsaw and it will probably be even bigger next year. One can really feel the increasing interest in PostgreSQL in Europe (and probably around the world as well). Even Tom Lane is attending this year.

Conferences are not only about technical content, social events are important as well. You can meet people, have great discussion, enjoy local food and drinks. And that is exactly what we did yesterday evening when the Swiss PostgreSQL community came together for lunch:
sdr

Conferences are not only about fun, sometimes you have to work on your queue. Working at conferences on the other side gives you the possibility to chose nice working places:
sdr

… and of course you have to work hard on preparing the booth:
sdr

But once you’ve done all that you are ready for the conference:
cof
sdr

… and then the mess starts: There is such an impressive line up of speakers, where do you go? Not an easy choice and you will obviously miss one or the other session. But hey, that’s the PostgreSQL community: Everybody is open for questions and discussions, just jump in.

One of the benefits of sponsoring is that you get a big thank you when the conference starts and that you can have your logo on the official t-shirt:
oznor
cof

And that brings us to the final thoughts of this post: Why are we doing that? The answer is quite simple: Without sponsoring, organizing such a big community event is impossible. As you know PostgreSQL is a pure community project so it depends on the community not only on the technical but also on the financial level. When you make money with community projects you should give something back and sponsoring is one way of doing that.

Finally, we are committed to open source technologies. You can see that e.g. in the events we are organizing, on our blog and events such as this one. Three days of great content, great discussion and fun ahead.

Cet article pgconf.eu finally kicked off est apparu en premier sur Blog dbi services.

All Things Developer at Oracle Code One - Day 2

OTN TechBlog - Wed, 2018-10-24 02:27
Live from Oracle Code One - Day Two

There was tons of action today at Oracle Code One. From Zip labs and challenges to an all-women developer community breakfast,  and the Duke Choice awards, to the Oracle Code keynotes and the debut Groundbreaker awards, it was all happening at Code One. Pepper was quite busy, and so was the blockchain beer bar!

Zip Labs, Zip Lab Challenges and Hands-on Labs

Zip labs are running all four days. So, if you want to dabble with the Oracle Cloud, or learn how you can provision the various services, go up to the second floor on Moscone West and sign-up for our cloud.

You can sign-in for a 15-minute lab challenge on Oracle Cloud content and see your name on the leaderboard as the person to beat. Choose from labs including Oracle Autonomous Data Warehouse, Oracle Autonomous Transaction Processing, and Virtual Machines.

Lots of ongoing hands-on labs everyday but the Container Native labs today were quite a hit.

Oracle Women's Leadership Developer Community Breakfast

A breakfast this morning with several women developers from across the globe. It was quite insightful to learn about their life and experiences in code.

The Duke Choice Awards and Groundbreaker Live Interviews

Georges Saab announced the Duke Choice Award winners at Code One today. 

Some exciting Groundbreaker live interviews:

Jim Grisanzio and Gerald Venzl talk about Oracle Autonomous Database

Bob Rubhart, Ashley Sullivan and the Design Tech Students discuss the Vida Cam Project

The Oracle Code One Keynotes and Groundbreaker Awards in Pictures

Building Next-Gen Cloud Native Apps with Embedded Intelligence, Chatbots, and Containers: Amit Zavery, Executive Vice President, PaaS Development, Oracle talks about how developers can leverage the power of the Oracle cloud.

Making Cloud Native Computing Universal and Sustainably Harnessing the Power of Open Source: Dee Kumar, Vice President, Cloud Native Computing Foundation congratulates Oracle on successfully becoming a Platinum member of CNCF.

 

 

Building for the Cloud: Matt Thompson, Developer Engagement and Evangelism, Oracle Cloud Platform talks about how a cloud works best - when it is open, secure, and all things productive for the developer. 

 

 

 

Demos: Serverless, Chatbots, Blockchain...

 

Manish Kapur, Director of Product Management for Cloud Platform showed a cool demo of a new serverless/microservices based cloud architecture for selling and buying a car.

 

 

Matt Baldwin talked about the DNA of Blockchain and how it is used in the context of selling and buying a car.

 

 

And the Oracle Code One Groundbreaker Awards go to:

 

Stephen Chin, Director of Developer Community, announces the debut Groundbreaker awards and moderates a star panel with the winners.

 

 

We had more than 200K viewers of this panel on the Oracle Code One Twitter live stream today! There were lots of interesting and diverse questions for the panel from the Oracle Groundbreaker Twitter channel. For more information on Oracle Groundbreakers, click here. And now, moving on to  Day 3 of Code One!

 

Oracle OpenWorld 2018: Day 2

Yann Neuhaus - Wed, 2018-10-24 00:04

Today is my second day of Oracle OpenWorld 2018. I can now go to the Moscone Center without GPS (cool) and then I decided to follow a MySQL session (my boss will be happy). Yes my first session was Using the MySQL Binary Log as a Change Stream by Luis Soares, Software Development Director, Oracle
The speaker explains what are the binary logs.
openday3_1
How to initialize the binary logs and how to manage them
openday3_2
How to inspect them
openday3_3
What Changed on MySQL 8
openday3_4
He also explained how these binary logs can be combined with other tools in a case of replication.

With ProxySQL
openday3_5

With Gh-ost
openday3_6

Using the binary logs we can also undo some transactions (feature not developped by Oracle) but by the community
openday3_7

And the conclusion
openday3_8
My second session was DBAs Versus Autonomous Databases. It was a very funny session but a very interesting topic. The Speaker started by doing a remind of the different version of Oracle since the beginning.
openday3_9
Another funny picture
openday3_10
And the famous topic
openday3_11
And still the famous question
openday3_12
So everybody will understand that the session was very exciting with many questions.

After this session I decided to follow a session about Oracle Sharding. The session was animated by
Mark Dilman, Senior Director, Software Development, Oracle
Srinagesh Battula, Sr. Principal Product Manager, Oracle
Gairik Chakraborty, Senior Director,Database Administration, Epsilon

They start by defining what is Sharding, how to setup, how to manage queries and so on. You can see this blog to understand what is Sharding. And Then after they talk about the New Features on Oracle 19c.

openday3_13

As you can see the quality of pictures may be better, but there are lot people and it’s not easy to take pictures.
After I visit some stands and this was the end of my day.
See you tomorrow for my Day 3.

Cet article Oracle OpenWorld 2018: Day 2 est apparu en premier sur Blog dbi services.

Oracle Open World 2018 D2: Peter Zaitsev – MySQL 8 Field Report

Yann Neuhaus - Tue, 2018-10-23 21:45

As a former MySQL Consultant during this second day (24.10.2018) I couldn’t miss a session given by Peter Zaitsev founder of Percona and assuming the role of CEO. This session named MySQL 8 Field Report is a kind of summary of all new features encapsulated in MySQL 8.

Peter Zaitsev

During the first slides, Peter presented performance related to utf8mb4 since it’s the default characterset in version 8. These slides had an Oracle logo on the botom that why I prefer make some tests before speaking about these results. However according to these slides there is a strong performance increase on OTLP database in RO as well as in RW compared to MySQL 5.7.

Security

In terms of security Peter spoke about:

  • Roles
  • Breakdown of Super Privileges
  • Password history
  • Faster cached-SHA2 Authentication
  • skip-grants blocks remote connections
  • Multiple Addresses for bind address (8.0.13)
  • Require Password for Password Change (8.0.13)
  • Redo and Undo Logs are now encrypted if Table Encryption is enabled

In the trend of autonomous database MySQL 8 is able to tune automatically the following parameters:

  • innodb_buffer_pool_size
  • innodb_log_file_size
  • innodb_flush_method

if you set innodb_dedicated_server to auto-tune. However as explained in the documentation: “Only consider enabling this option if your MySQL instance runs on a dedicated server where the MySQL server is able to consume all available system resources. Enabling this option is not recommended if your MySQL instance shares system resources with other applications.”

Partial In-Place Update for JSON and invisible Index

It’s not anymore required to do a full rewrite of a field in MySQL 8 you can now update field in JSON object. However only update and removal of element is supported. Full support has been added in maintenance releases.

Thanks to invisible indexes you can test impact of dropping indexes before actually dropping them. You can use use_invisible_indexes to use invisible indexes in a session.

Improved Optimizer Cost Model

Peter gave us an interesting link regarding MySQL 8.0 Optimizer, the unofficial MySQL 8.0 Optimizer Guide. I really advice you to have a look on this very interesting website.

Performance Schema

About performance schema MySQL 8.0 provides the following:

Resource Groups

“MySQL supports creation and management of resource groups, and permits assigning threads running within the server to particular groups so that threads execute according to the resources available to the group.” – MySQL Documentation

According to Peter’s slides MYSQL 8.0 is about 100% faster (select and update) with resource groups.

Developer features
  • Instant Add Column (add column without rebuilding table)
Alter table t1 add column d int default 1000, algorithm=instant;
  • Better Handlinf of Hot Row Contention
  • Descending flag in index definition is no more ignored
    • Allows efficient handling of ORDER BY A ASC, B DESC queries
  • JSON to Table Conversion (Labs)
  • Much Better GIS
  • Functions in DEFAULT (8.0.13)
Create table t2 (a binary(16) default uuid_to_bin(uuid()));
Create index idx1 ON t1 ((col1+col2));
  • MySQL Document Store
    • Full Text Indexing
    • GeoJSON Support

As a summary Peter concludes by telling that MySQL 8 looks like release to be excited about and has a lot of new features both for Devs and Ops.

 

 

Cet article Oracle Open World 2018 D2: Peter Zaitsev – MySQL 8 Field Report est apparu en premier sur Blog dbi services.

Oracle Open World 2018 D2: Mark Hurd’s keynote – Accelerating Growth in the Cloud

Yann Neuhaus - Tue, 2018-10-23 18:39

During this second day at Oracle Open World 2018 (24.10.2018) I attended to Mark Hurd’s keynote name “Accelerating Growth in the Cloud. Several famous people participated to this keynote such as:

Ian Bremmer who is the president and founder of Eurasia Group and according to Oracle “the leading global political risk research and consulting firm. Mr Bremmer is also the president and founder of GZERO Media.

Sherry Aaholm who is the Vice President and Chief Information Officer of Cummins Inc. “Cummins Inc. is an American Fortune 500 corporation that designs, manufactures, and distributes engines, filtration, and power generation products” – wikipedia.

Sherry Aaholm with Mark Hurd

Navindra Yadav, Founder of Tetration Analytics. “Cisco Tetration offers holistic workload protection for multicloud data centers by enabling a zero-trust model using segmentation” – Cisco

Navindra Yadav and Mike Hurd

Thaddeus Arroyo, Chief Executive Officer of AT&T Business. Mr Arroyo is responsible for the company’s integrated global business solutions organization, which servces more than 3 million business customers in nearly. “AT&T is the world’s largest telecommunications company, the second largest provider of mobile telephone services, and the largest provider of fixed telephone services in the United States through AT&T Communications.” – wikipedia

Thaddeus Arroyo with Mike Hurd

Geopolitical analysis with Ian Bremmer

The session started with a videoconference between Mark Hurd and Ian Bremmer regarding geopolitical topics. China has been mentioned as the biggest economy in the world and technology superpower. It has also been underlined the alignment between Chinese company and Chinese Government. Regading U.S they spoke about investment in physical defense vs investment in virtual defense where there is still lot to do compared to some other countries.

Disruption as a constant

Mark Hurd then presented few slides starting with a short summary named “With disruption as a constant – technology becomes the differentiator”

  • Data is key asset for business to own, analyze, use and secure
  • Virtual assets will win over physical resources
  • Cyber teams are the new future
  • Cloud and integrated technologies, like AI, help organizations lower costs while driving innovation & improving productivity
Past predictions

He then recapped the predictions he did in 2015/2016 for 2025

  • 80% of production apps will be in the cloud
  • Two SaaS Suite providers will have 80% market share
  • The number of corporate-owned data centers will have decreased by 80%
  • 80% of IT budgets will be spent on cloud services
  • 80% of IT budgets will be spent on business innovation, and only 20% on system maintenance
  • All enterprise data will be stored in the cloud
  • 100% of application development and testing will be conducted in the cloud
  • Enterprise clouds will be the most secure place for IT processing

and the ones he did in 2017 for 2020

  • More than 50% of all enterprise data will be managed autonomously and also be more secure
  • Even highly regulated industries will shift 50% of their production workloads to cloud
  • 90% of all enterprise applications will feature integrated AI capabilities
  • The top ERP vendor in the cloud will own more than half of the total ERP market

Then he presented few predictions that have been afterwards by Forbes and Gartner Reseach to prove that the analysts and press had followed the same predictions…

  • In 15 months, 80% of all IT budgets will be committed to cloud apps and solutions – Forbes, Louis Columbus, “State of Cloud Adoption and Security”, 2017
  • 80% of enterprises will have shut down their traditional data centers by 2025 – Gartner Reserach, Dave Cappuccio, “The Data Center is Dead” 2018
  • The Cloud Could Be Your Most Secure Place for Data, Niall Browne CISO, Domo, 2017
  • Oracle, Salesforce, and MSFT together have a 70% share of all SaaS revenue – Forrester Research, 10 Cloud Computing predictions for 2018
  • AI Technologies Will Be in Almost Every New Software Product by 2020 – Gartner Research, Jim Hare, AI development strategies, 2017

Mark Hurd then spoke about AI in a slide named “Business Applications with AI” where he presented few statistics in order to better understand in what AI(chatbot, blockchain, aso) can help businesses. Not to mention that all these technologies will be encapsulated in Cloud Services.

  • ERP Cloud – 30% of Financial Analyst’s time “roughly 1 full day a week) is spent doing manual reports in excel. using AI, reports become error free and more insightful.
  • HCM Cloud – 35% of job recruiter’s day spent in sourcing and screening candidates. This could be cut in half, and result in improved employee talent.
  • SCM Cloud – 65% of Managers time spent manually tracking the shipment of goods. With Blockchain, this could be automated for improved visibility and trust.
  • CX Cloud – 60% of phone-support time on customer issues could be avoided altogether. With Integrated CX and AI could be addressed in a single call or via a chatbot.
Mark Hurd’s predictions by 2025

Finally he spoke about his own predictions for 2025: By 2025, all cloud apps will include AI

  • These Cloud apps will further distance themselves from legacy applications.
  • AI will be pervasive and woven into all business apps and platform services.
  • The same will be true for technologies like blokchain.

According to him by 2025, 85% of interactions with customers will be automated: Customer experience is fundamentally changing (and will dramatically improve) with these emerging technologies:

  • AI-based Digital Assistanst increases productivity and humanizes experiences
  • AI-driven Analytics helps businesses understand complexity of all customer needs
  • Internet of Things brings customers closer to companies that serve them
New I.T jobs by 2025

Regarding I.T jobs the following has been predicted by Mark Hurd:

  • 60% of the I.T Jobs have not been invented yet (But will be by 2025)

and the new jobs in 2025 will be:

  • Data professional (Analyst Scientist, Engineers)
  • Robot Supervisor
  • Human to Machine UX specialists
  • Smart Cyty Technology Designers
  • AI-Assisted Healtcare Technician

As a summary he concludes with a slide named “Better Business, Better I.T”

  • Cloud is irrefutable and foundational
  • Next in cloud is accelerated productivity and innovation
  • AI and other technologies will be integrated features
  • Autonomous database software will reduce cost and reduce risk

Mike Hurd during OOW2018

Cet article Oracle Open World 2018 D2: Mark Hurd’s keynote – Accelerating Growth in the Cloud est apparu en premier sur Blog dbi services.

Oracle Open World 2018 D1: Top Five MySQL Query Tuning Tips

Yann Neuhaus - Tue, 2018-10-23 16:52

Yesterday (22.10.2018) I participated to the Janis Griffin’s session about “Top Five Query Tuning Tips” at #OOW2018. Janis is Senior DBA /Performance Evangelist for SolarWinds and Ace Director. She is specialized in Performance Tuning.

Janis Griffin - MySQL Tuning Tips

She introduces her session by speaking about Challenges of Tuning. “Tuning takes time.”, “You cannot give enough power if SQL is ineficient”, “You therefore have to monitor wait time”. It sounds basic telling that it doesn’t worth adding CPU or memory when your SQL Statements have bad execution plan or are simply ineficient but that a common reflex that I already observed by customers.

But Tuning is hard, you do not always know where to start with (which statement you have to tune at first). It requires expertise in many areas, technical but also business. Of course tuning takes time and it’s not always the priority of the editor companies. Finally where to stop when you start tuning a statement ?

Janis Griffin - Total Wait Time

Let’s start with the tips…

1. Monitor Wait Time and understand the total time a Query spends in Database. MysQL helps by providing Wait Events and Thread States. Of course starting with MySQL 5.6 the Performance_Schema has been greatly improved and has 32 new tables in version 5.7. You can also access to the SYS Schema which is now provided by default with about 100 views.

2. Review the execution plan by using “explain”, “explain extended“, “explain FORMAT=JSON“, “Optimizer Trace” or “MySQL Workbench“. She also gave us some tips such as “Avoiding using table aliases since they don’t translate in plan”. “Optimizer trace” available since version 5.6.3+ can be used with:

set optimizer trace ="enabled=on"

Janis Griffin - Statement

3. Gather object information. Have a look on table definition and find if it’s really a table or if it’s a view. Get size of the table by using

mysqlshow --status database {table} {column}

Then Examine Columns in Where Clause and review selected Column and especially the usage of ‘*’ and scalar column. Have also a look on existing indexes (if multi-column, know the left leading column). Make sure the Optimizer can use the index, indeed functions on indexed columns can turn off index and look for implicit conversions. Her tip is to check keys and constraints, because they help creating better execution plan.

4. Find the driving table. You need to know the size of the actual data sets of each step:

  • In Joins (Right, Left, Outer)
  • What are the filtering predicates
  • When is each filtering predicate applied

But also compare size of the final result set with data examined. The goal is to reduce rows examined.

You also have to check if you are using the best indexes. Keep in mind that adding indexes is not always the right thing to do since you have to consider insert, update and delete operations. Consider also usage of Covering and Partial indexes.

5. Engineer Out the Stupid. Look for performance inhibitors such as:

  • Cursor or row by row processing
  • Parallel query processing. Not always bad but have a look on this blog from Alex Rubin named “increasing slow query performance with parallel query execution
  • Hard-coded hints
  • Nested views
  • Abuse of Wild Cards(*) or No Where Clause
  • Code-based SQL Generation (e.g. PHP generator, LINQ; nHibernate)
  • implicit data conversions
  • Non-sargable /scalar functions (eg. Select… where upper(first_name) = ‘JANIS’

Finally you can have a look on Janis Best practices with MySQL Tuning here.

Cet article Oracle Open World 2018 D1: Top Five MySQL Query Tuning Tips est apparu en premier sur Blog dbi services.

Oracle and Top-Flight Customers Lead the Charge in Cloud Applications

Oracle Press Releases - Tue, 2018-10-23 16:00
Press Release
Oracle and Top-Flight Customers Lead the Charge in Cloud Applications CEO Mark Hurd gets even more bullish on cloud adoption

Oracle OpenWorld, San Francisco, Calif.—Oct 23, 2018

Mark Hurd Keynote

Cloud and integrated technologies such as AI lower cost, drive more innovation, and improve productivity.

Oracle CEO Mark Hurd, who last year predicted that 85 percent of production applications will run in the cloud by 2025, got more aggressive in updated guidance shared today. Migration to cloud is happening far faster than anticipated, he said.

“Cloud is irrefutable; it's foundational,” Hurd added during his Oracle OpenWorld keynote. “This is no longer a debate. The only thing we’re debating is the speed of getting this done.”

Hurd shared the stage with customers and offered new cloud prognostications. By 2025, Hurd predicts:

  • 100 percent of cloud applications will include artificial intelligence (AI)
  • 85 percent of all customer interactions will be automated
  • 60 percent of all IT jobs have not been invented yet, but will be in that timeframe
 

On that last point, Hurd said automation will not replace jobs but create them. New careers fueled by the use of AI and other emerging technologies will include supervisors for robots, smart city technology designers, AI-assisted healthcare technicians, and data professionals.

Customer, Navindra Yadav, founder of Tetration Analytics (now a Cisco company), told Hurd his company realized big performance and cost advantages running on Oracle Cloud as compared to two other public cloud providers.

More from Mark Hurd:

  • Cloud and integrated technologies such as AI lower cost, drive more innovation, and improve productivity
  • Blockchain will be a feature of virtually all applications where it can be part of enabling the exchange of secure information
  • As evidence of cloud acceleration, Hurd said “last year alone, 15 percent of the U.S. corporate-owned datacenters shut down”
 

This week Oracle OpenWorld 2018 has hosted more than 60,000 customers and partners from 175 countries and 19 million virtual attendees. Oracle OpenWorld is the world’s most innovative cloud technology conference and is slated to contribute $195 million in positive economic impact to the City of San Francisco in 2018.

Contact Info
Deborah Hellinger
Oracle Corporate Communications
+1.212.508.7935
deborah.hellinger@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 OpenWorld

Oracle OpenWorld, the industry’s most important business and technology conference for the past 20 years, hosts tens of thousands of in-person attendees as well as millions online. Dedicated to helping businesses leverage Cloud for their innovation and growth, the conference delivers deep insight into industry trends and breakthroughs driven by technology. With hundreds of demos and hands-on labs, plus exhibitions from more than 250 partners and customers from around the world, Oracle OpenWorld has become a showcase for leading cloud technologies, from Cloud Applications to Cloud Platform and Infrastructure. For more information; to register; or to watch Oracle OpenWorld keynotes, sessions, and more, visit www.oracle.com/openworld. Join the Oracle OpenWorld discussion on Twitter.

Forward-Looking Statements Disclaimer

Statements in this article relating to Oracle’s future plans, expectations, beliefs, intentions, and prospects are “forward-looking statements” and are subject to material risks and uncertainties. Many factors could affect Oracle’s current expectations and actual results, and could cause actual results to differ materially. A discussion of such factors and other risks that affect Oracle’s business is contained in Oracle’s Securities and Exchange Commission (SEC) filings, including Oracle’s most recent reports on Form 10-K and Form 10-Q under the heading “Risk Factors.” These filings are available on the SEC’s website or on Oracle’s website at http://www.oracle.com/investor. All information in this article is current as of October 23, 2018, and Oracle undertakes no duty to update any statement in light of new information or future events.

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

Deborah Hellinger

  • +1.212.508.7935

Oracle Database 18c XE on Oracle Cloud Infrastructure: A Mere Yum Install Away

OTN TechBlog - Tue, 2018-10-23 14:38

It's a busy week at OpenWorld 2018. So busy, that we didn't get around to mentioning that Oracle Database 18c Express Edition now available on Oracle Cloud Infrastructure (OCI) yum servers! This means it's easy to install this full-features Oracle Database for developers on an OCI compute shape without incurring any extra networking charges. In this blog post I demonstrate how to install, configure and connect to Oracle Database 18c XE OCI.

Installing Oracle Database 18c XE on Oracle Cloud Infrastructure

From a compute shape in OCI, grab the latest version of the repo definition from the yum server local to your region as follows:

cd /etc/yum.repos.d sudo mv public-yum-ol7.repo public-yum-ol7.repo.bak export REGION=`curl http://169.254.169.254/opc/v1/instance/ -s | jq -r '.region'| cut -d '-' -f 2` sudo -E wget http://yum-$REGION.oracle.com/yum-$REGION-ol7.repo

Enable the ol7_oci_included repo:

sudo yum-config-manager --enable ol7_oci_included

Here you see the Oracle Database 18c XE RPM is available in the yum repositories:

$ yum info oracle-database-xe-18c Loaded plugins: langpacks, ulninfo Available Packages Name : oracle-database-xe-18c Arch : x86_64 Version : 1.0 Release : 1 Size : 2.4 G Repo : ol7_oci_included/x86_64 Summary : Oracle 18c Express Edition Database URL : http://www.oracle.com License : Oracle Corporation Description : Oracle 18c Express Edition Database

Let's install it.

$ sudo yum install $ yum info oracle-database-xe-18c Loaded plugins: langpacks, ulninfo No package $ available. Package yum-3.4.3-158.0.2.el7.noarch already installed and latest version Package info-5.1-5.el7.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package oracle-database-xe-18c.x86_64 0:1.0-1 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================= Package Arch Version Repository Size ========================================================================================================= Installing: oracle-database-xe-18c x86_64 1.0-1 ol7_oci_included 2.4 G Transaction Summary ========================================================================================================= Install 1 Package Total download size: 2.4 G Installed size: 5.2 G Is this ok [y/d/N]: y Downloading packages: oracle-database-xe-18c-1.0-1.x86_64.rpm | 2.4 GB 00:01:13 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : oracle-database-xe-18c-1.0-1.x86_64 1/1 [INFO] Executing post installation scripts... [INFO] Oracle home installed successfully and ready to be configured. To configure Oracle Database XE, optionally modify the parameters in '/etc/sysconfig/oracle-xe-18c.conf' and then execute '/etc/init.d/oracle-xe-18c configure' as root. Verifying : oracle-database-xe-18c-1.0-1.x86_64 1/1 Installed: oracle-database-xe-18c.x86_64 0:1.0-1 Complete! $ Configuring Oracle Database 18c XE

With the software now installed, the next step is to configure it:

$ sudo /etc/init.d/oracle-xe-18c configure Specify a password to be used for database accounts. 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]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts: Confirm the password: Configuring Oracle Listener. Listener configuration succeeded. Configuring Oracle Database XE. Enter SYS user password: ************** Enter SYSTEM user password: ************ Enter PDBADMIN User Password: ************** Prepare for db operation 7% complete Copying database files 29% complete Creating and starting Oracle instance 30% complete 31% complete 34% complete 38% complete 41% complete 43% complete Completing Database Creation 47% complete 50% complete Creating Pluggable Databases 54% complete 71% complete Executing Post Configuration Actions 93% complete Running Custom Scripts 100% complete Database creation complete. For details check the logfiles at: /opt/oracle/cfgtoollogs/dbca/XE. Database Information: Global Database Name:XE System Identifier(SID):XE Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details. Connect to Oracle Database using one of the connect strings: Pluggable database: instance-20181023-1035/XEPDB1 Multitenant container database: instance-20181023-1035 Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE Connecting to Oracle Database 18c XE

To connect to the database, use the oraenv script to set the necessary environment variables, entering the XE as the ORACLE_SID.

$ . oraenv ORACLE_SID = [opc] ? XE ORACLE_BASE environment variable is not being set since this information is not available for the current user ID opc. You can set ORACLE_BASE manually if it is required. Resetting ORACLE_BASE to its previous value or ORACLE_HOME The Oracle base has been set to /opt/oracle/product/18c/dbhomeXE $

Then, connect as usual using sqlplus: $ sqlplus sys/OpenWorld2018 as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Tue Oct 23 19:13:23 2018 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0 SQL> select 1 from dual; 1 ---------- 1 SQL> Conclusion

Whether you are a developer looking to get started quickly with building applications on your own full-featured Oracle Database, or an ISV prototyping solutions that require an embedded database, installing Oracle Database XE on OCI is an excellent way to get started. With Oracle Datbase 18c XE available as an RPM inside OCI via yum, it doesn't get any easier.

Upgrade threat

Jonathan Lewis - Tue, 2018-10-23 13:50

Here’s one I’ve just discovered while trying to build a reproducible test case – that didn’t reproduce because an internal algorithm has changed.

If you upgrade from 12c to 18c and have a number of hybrid histograms in place you may find that some execution plans change because of a change in the algorithm for producing hybrid histograms (and that’s not just if you happen to get the patch that fixes the top-frequency/hybrid bug relating to high values).

Here’s a little test to demonstrate how I wasted a couple of hours trying to solve the wrong problem – first a simple data set:


rem
rem     Script:         18c_histogram_upgrade.sql
rem     Author:         Jonathan Lewis
rem     Dated:          Oct 2018
rem 

drop table t2 purge;

execute dbms_random.seed(0)

create table t2(
        id              number(8,0),
        n20             number(6,0),
        n30             number(6,0),
        n50             number(6,0),
        j2              number(6,0)
)
;

insert into t2
with generator as (
        select
                rownum id
        from dual
        connect by
                level <= 1e4 -- > comment to avoid WordPress format issue
)
select
        rownum                                  id,
        mod(rownum,   20) + 1                   n20,
        mod(rownum,   30) + 1                   n30,
        mod(rownum,   50) + 1                   n50,
        28 - round(abs(7*dbms_random.normal))        j2
from
        generator       v1
where
        rownum <= 800 -- > comment to avoid WordPress format issue
;

commit;

begin
        dbms_stats.gather_table_stats(
                ownname          => null,
                tabname          => 'T2',
                method_opt       => 'for all columns size 1 for columns j2 size 13'
        );
end;
/

I’ve created a skewed data set which (we will see) has 22 distinct values and created a histogram of 13 buckets on it. This will be a hybrid histogram – but different versions of Oracle will produce different histograms (even though the data set is the same for both versions):


select
        j2, count(*)
from
        t2
group by
        j2
order by
        j2
;

select
        endpoint_value                                                            value,
        endpoint_number,
        endpoint_number - lag(endpoint_number,1,0) over(order by endpoint_number) bucket_size,
        endpoint_repeat_count
from
        user_tab_histograms
where
        table_name  = 'T2'
and     column_name = 'J2'
order by
        endpoint_value
;

Here’s the dataset from 12.2.0.1 and 18.3.0.0


        J2   COUNT(*)
---------- ----------
         1          1
         8          3
         9          1
        10          5
        11          4
        12          8
        13         14
        14          9
        15         11
        16         22
        17         34
        18         31
        19         36
        20         57
        21         44
        22         45
        23         72
        24         70
        25         87
        26        109
        27         96
        28         41

22 rows selected.



And here are the histograms - 12.2.0.1 then 18.3.0.0:



     VALUE ENDPOINT_NUMBER BUCKET_SIZE ENDPOINT_REPEAT_COUNT
---------- --------------- ----------- ---------------------
         1               1           1                     1
        15              56          55                    11
        17             112          56                    34
        18             143          31                    31
        19             179          36                    36
        20             236          57                    57
        21             280          44                    44
        22             325          45                    45
        23             397          72                    72
        24             467          70                    70
        25             554          87                    87
        26             663         109                   109
        28             800         137                    41

13 rows selected.

     VALUE ENDPOINT_NUMBER BUCKET_SIZE ENDPOINT_REPEAT_COUNT
---------- --------------- ----------- ---------------------
         1               1           1                     1
        15              56          55                    11
        17             112          56                    34
        19             179          67                    36
        20             236          57                    57
        21             280          44                    44
        22             325          45                    45
        23             397          72                    72
        24             467          70                    70
        25             554          87                    87
        26             663         109                   109
        27             759          96                    96
        28             800          41                    41

13 rows selected.

Both histograms have 13 buckets as requested; both are hybrid histograms as expected.

But why does 12c have the value 18 when 18c doesn’t, and why does 18c have the value 27 when 12c doesn’t ?

That’s the second time in two weeks I’ve had reproducible test cases not reproducing – thanks to an 18c upgrade.

SQL Server availability groups, SQL Browser and Shared Memory considerations

Yann Neuhaus - Tue, 2018-10-23 13:06

Few weeks ago, my colleagues and me discussed availability groups and network considerations for one of our customers including disabling SQL Browser service and shared memory protocol. The point was disabling both features may lead to unexpected behaviors when creating availability groups.

blog 145 - 0 - AG network banner

Let’s start with the SQL Browser service. It is not uncommon to disable this service at customer shops and to use directly SQL Server listen ports instead. But if you go trough the availability group wizard you will find there a plenty of blockers when actions than require connecting to the secondary replica as adding a database, performing a failover and so on.

Disabling the SQL Browser service doesn’t mean you can not reach out your SQL Server instance by using the named instance format SERVER\INSTANCE. There are some scenarios that’s work perfectly including either connecting from the local server through the shared memory or by using SQL Server aliases. Let’s say my infrastructure includes 2 AG replicas vmtest2012r04\SQL2014 and vmtest2012r05\SQL2014. SQL browser is disabled and shared memory is enabled on each. There are no aliases as well. If you try to connect from the vmtest2012r04\SQL2014 by using named instance format it will work on the local replica (through shared memory) but it won’t work if you try to connect to the remote replica vmtest2012r05\SQL2014. In the latest case, you have will to use SERVER,PORT format as shown below:

C:\Users\dab>sqlcmd -S vmtest2012r204\SQL2014 -Q"SELECT 'OK' AS connection"
connection
---------
OK

(1 rows affected)

C:\Users\dab>sqlcmd -S vmtest2012r205\SQL2014 -Q"SELECT 'OK' AS connection"
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : SQL Server Network Inte
rfaces: Error Locating Server/Instance Specified [xFFFFFFFF]. .
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : A network-related or in
stance-specific error has occurred while establishing a connection to SQL Server
. Server is not found or not accessible. Check if instance name is correct and i
f SQL Server is configured to allow remote connections. For more information see
 SQL Server Books Online..

C:\Users\dab>sqlcmd -S vmtest2012r205,1453 -Q"SELECT 'OK' AS connection"
connection
---------
OK

 

But I guess this is not a big surprise for you. This kind of configuration works well with availability group but at the cost of some compromises. Indeed, creating an availability group remains pretty easy and you just have to keep using SERVER,PORT format when the wizard asks for connection information.

blog 145 - 1 - AG wizard - replica

But the game is different for adding a database to the AG or at least any operation that requires to connect to the replicas. In this case the Wizard forces to connect to the second replica by using SERVER\INSTANCE format leading to get stuck at this step.

blog 145 - 2 - AG wizard - add DB

The only way is to go through T-SQL script (or PowerShell command) to change the format to SERVER,PORT. Probably something that may be fixed by Microsoft in the future.

Let’s add now to the equation disabling the shared memory protocol on each replica. I met some customers who disable it to meet their internal best practices because their applications are not intended to connect locally on the same server than their database engine. At the first glance, this is not a bad idea but we may get in trouble with operations performed on availability group architectures. This is a least what we experienced every time we were in this specific context. For instance, if I try to create an availability group, I will face the following timeout error message:

blog 145 - 3 - AG wizard - shared memory disabled

This is a pretty weird issue and to get more details, we have to take a look at the cluster log. Here the interesting sample of messages we may find out:

...2018/10/22-20:42:51.436 ERR   [RES] SQL Server Availability Group <AG2014>: [hadrag] ODBC Error: [08001] [Microsoft][SQL Server Native Client 11.0]SQL Server Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].  (268435455)
...2018/10/22-20:42:51.436 ERR   [RES] SQL Server Availability Group <AG2014>: [hadrag] ODBC Error: [HYT00] [Microsoft][SQL Server Native Client 11.0]Login timeout expired (0)
...2018/10/22-20:42:51.436 ERR   [RES] SQL Server Availability Group <AG2014>: [hadrag] ODBC Error: [08001] [Microsoft][SQL Server Native Client 11.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (268435455)
...2018/10/22-20:42:51.436 INFO  [RES] SQL Server Availability Group <AG2014>: [hadrag] Could not connect to SQL Server (rc -1)
...2018/10/22-20:42:51.436 INFO  [RES] SQL Server Availability Group <AG2014>: [hadrag] SQLDisconnect returns following information
...2018/10/22-20:42:51.451 ERR   [RES] SQL Server Availability Group <AG2014>: [hadrag] ODBC Error: [08003] [Microsoft][ODBC Driver Manager] Connection not open (0)
...2018/10/22-20:42:51.451 ERR   [RES] SQL Server Availability Group <AG2014>: [hadrag] Failed to connect to SQL Server
...2018/10/22-20:42:51.451 ERR   [RHS] Online for resource AG2014 failed.

 

It seems that the RHS.exe, through the resource associated to my AG, is not able to connect to the SQL Server replica during the initialization phase. According to the above cluster log, the ODBC connection seems to be limited to connect by using INSTANCE\NAME format and as I far as I know there is no interface to change it with the AG cluster resource DLL (thanks Microsoft guys for confirming this point). Therefore, disabling both SQL Browser and shared memory leads to the AG cannot be brought online because a communication channel cannot be established between the primary and the cluster service. My friend MVP Christophe Laporte tried also some funny tests by trying to create custom DSN connections without luck.   So, the simplest way to fix it if you want to keep disable the SQL Browser service is to enable the shared memory on each replica. Another workaround may consist in using SQL aliases but it leads to a static configuration that requires to document well your architecture.

In a nutshell, disabling SQL Browser limits the AG operations that can be done through the GUI. Adding the shared memory to the equation may have a bigger impact to the underlying WSFC infrastructure that you have to be aware of. According to my tests, this behavior seems to be same with versions from SQL2012 to SQL2017 (on Windows) regardless the WSFC version.

Hope this helps!

 

 

 

 

 

Cet article SQL Server availability groups, SQL Browser and Shared Memory considerations est apparu en premier sur Blog dbi services.

Oracle Cloud Delivers End-to-End Security for Customers

Oracle Press Releases - Tue, 2018-10-23 10:05
Press Release
Oracle Cloud Delivers End-to-End Security for Customers New core-to-edge cloud services help secure customer data and combat sophisticated cyber threats with layers of defense

Oracle OpenWorld, San Francisco, Calif.—Oct 23, 2018

Oracle Cloud Delivers end-to-end security for customers.

To help ensure customers’ data is secure from the core of infrastructure to the edge of the cloud, Oracle today announced new cloud security technologies. In addition to the self-securing and self-patching capabilities of Oracle Autonomous Database and with the integration of machine learning and intelligent automation to remediate threats, these new cloud services allow customers to improve the security of applications deployed on the next generation of Oracle Cloud Infrastructure. The new cloud services include a Web Application Firewall (WAF) to protect against attacks on web traffic, Distributed Denial-of-Service (DDoS) protection to stop outside parties from disrupting running applications, an integrated Cloud Access Security Broker (CASB) which monitors and enforces secure configurations, and a Key Management Service (KMS) that allows customers to control the encryption of their data.

Emerging technologies like cloud, artificial intelligence and IoT, enable organizations to drive new innovations and reduce costs. However, with opportunities come increased risk including expanded attack surfaces. Security teams rely on manual processes and disparate tools that introduce human error and take an excessive amount of time to accurately detect and respond to threats and outages. Oracle has built integrated layers of defense that are designed to secure users, apps, data and infrastructure.

“Organizations are facing constant security threats from sophisticated actors who want to attack their applications and access their sensitive data,” said Don Johnson, senior vice president, product development, Oracle Cloud Infrastructure. “The new solutions build on Oracle’s existing, strong security heritage and give customers always-on capabilities that make it easier than ever to achieve end-to-end security. These new security layers include highly automated detective, preventive, responsive, and predictive security controls that help mitigate data breaches, address regulatory compliance, and reduce overall risk.”

To help customers combat today’s sophisticated threats and protect their data, Oracle has introduced the following automated security solutions:

  • Web Application Firewall (WAF). The native WAF is designed to protect next generation Oracle Cloud Infrastructure applications against botnets, application attacks and DDoS attacks. The platform can then automatically respond to threats by blocking them and alerting security operations teams for further investigation.

  • Distributed Denial of Service (DDoS) Protection. As part of the next generation of Oracle Cloud Infrastructure, all Oracle data centers get automated DDoS attack detection and mitigation of high volume, Layer 3/4 DDoS attacks. This helps ensure the availability of Oracle network resources even when under sustained attack.

  • Cloud Access Security Broker (CASB). Keeping a cloud environment secure requires constant monitoring and enforcement to ensure that no one has set up an insecure network or left data unprotected. Oracle Cloud Access Security Broker (CASB) constantly checks OCI environments to help make sure that corporate security practices are being followed. It comes with preconfigured policies and controls so that customers can deploy applications faster while reducing security and operational risk. CASB also leverages machine learning-based behavioral analytics to predict threats.

  • Key Management Service. Oracle Key Management enables enterprises to encrypt data using keys that they control and offers centralized key management and key lifecycle monitoring capabilities. The solution delivers partitions in highly available and certified Hardware Security Modules that are isolated per customer. It is ideal for organizations that need to verify for regulatory compliance and security governance purposes that their data is encrypted where it is stored.

Contact Info
Danielle Tarp
Oracle Corporation
+1.650.506.2905
danielle.tarp@oracle.com
Quentin Nolibois
Burson-Marsteller
+1.415.591.4097
quentin.nolibois@bm.com
About Oracle Cloud Infrastructure

Oracle Cloud Infrastructure is the enterprise Infrastructure as a Service (IaaS) platform. Companies of all sizes rely on Oracle Cloud to run enterprise and cloud native applications with mission-critical performance and core-to-edge security. By running both traditional and new workloads on a comprehensive cloud that includes compute, storage, networking, database, and containers, Oracle Cloud Infrastructure dramatically increases operational efficiency and lowers total cost of ownership. For more information, visit https://cloud.oracle.com/iaas.

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 OpenWorld

Oracle OpenWorld, the industry’s most important business and technology conference for the past 20 years, hosts tens of thousands of in-person attendees as well as millions online. Dedicated to helping businesses leverage Cloud for their innovation and growth, the conference delivers deep insight into industry trends and breakthroughs driven by technology. With hundreds of demos and hands-on labs, plus exhibitions from more than 250 partners and customers from around the world, Oracle OpenWorld has become a showcase for leading cloud technologies, from Cloud Applications to Cloud Platform and Infrastructure. For more information; to register; or to watch Oracle OpenWorld keynotes, sessions, and more, visit www.oracle.com/openworld. Join the Oracle OpenWorld discussion on Twitter

Future Product Disclaimer

The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation.

Forward-Looking Statements Disclaimer

Statements in this article relating to Oracle’s future plans, expectations, beliefs, intentions, and prospects are “forward-looking statements” and are subject to material risks and uncertainties. Many factors could affect Oracle’s current expectations and actual results, and could cause actual results to differ materially. A discussion of such factors and other risks that affect Oracle’s business is contained in Oracle’s Securities and Exchange Commission (SEC) filings, including Oracle’s most recent reports on Form 10-K and Form 10-Q under the heading “Risk Factors.” These filings are available on the SEC’s website or on Oracle’s website at http://www.oracle.com/investor. All information in this article is current as of October 23, 2018, and Oracle undertakes no duty to update any statement in light of new information or future events.

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

Danielle Tarp

  • +1.650.506.2905

Quentin Nolibois

  • +1.415.591.4097

Pages

Subscribe to Oracle FAQ aggregator