Tag Archives: Oracle
The Types of Databases Powering the Cloud
We recently conducted a survey on cloud adoption, and one of the questions we touched upon was the type of databases powering the cloud. Our respondents leverage a wide range of database technologies for their cloud approaches. Here are the top selections, presented in order of popularity.
1. Microsoft SQL Server
Microsoft SQL Server was the overwhelmingly most popular database selection, with 140 respondents. It is a strong general-purpose relational database that is widely supported across many cloud platforms. You can deploy it on Windows and Linux servers, as well as containers. One of its biggest advantages is being able to query other databases’ data in-place. SQL Server 2019 also added Spark and HDFS support out of the box. You can work with both structured and unstructured data and use your programming language of choice.
2. Oracle
More than 80 respondents use Oracle to power their cloud adoption. This widely used database technology offers a multi-model database management system. It also supports MySQL, NoSQL, and in-memory databases. Oracle offers many types of implementation, as well as deep integration with their other solutions. It’s powerful with significant reliability and commercial support, making it popular among larger organizations and those with particularly demanding workloads.
3. MySQL
MySQL is a general purpose open-source database known for its low total cost of ownership, user-friendliness, and support for scaling OLTP applications. Over 40 respondents use this database for their cloud adoption strategy. Replication features offer high-performance and reliability, while InnoDB integration brings ACID compliance to the table.
4. PostgreSQL
PostgreSQL is another open-source relational database finding itself high on the list, with over 20 respondents. This database has been around for more than 30 years, is ACID compliant, and is known for being extremely reliable. A major advantage of this platform is that it offers a lot of flexibility. You can easily add custom data types, develop custom functionality, integrate add-ons from the active developer community, and it’s all available for free.
5. IBM Db2
IBM Db2 is the choice for 20 respondents. It’s a relational database that leverages artificial intelligence for modern applications. It supports multi-cloud and on-premise deployments, and offers both structured and unstructured data storage. This enterprise-grade database is commonly used in IBM host environments.
6. MongoDB
MongoDB is one of the most commonly used document stores, designed for general purpose use. Organizations of all sizes leverage this platform, and the features support many modern applications. Transactional, operational, and analytical applications are all supported in a single database, and it has significant support among third-party developers.
7. MariaDB
MariaDB is an open-source relational database that is compatible with MySQL and Oracle, offers a column-oriented storage engine, and has JSON support. You can put your transactional, analytical, and hybrid workloads on the same database technology, and use row and column storage as needed for each use case. Deployment options include using it as a relational database, setting it up as a distributed SQL database, or powering a data warehouse with it. You can plug-in different storage engines to optimize each workload.
8. Cassandra
Cassandra is a wide-column store, NoSQL database. It’s designed to support multi-cloud and hybrid cloud environments, with reliable performance, high scalability, and features that power modern applications. Operating this database is intentionally kept simple so the total cost of ownership stays low.
Moving to a Modern Database
At Datavail, we’ve guided hundreds of customers through database modernization and cloud migration and have extensive expertise with all mentioned databases. We’re partners and certified with many database platforms, including Oracle, MongoDB, AWS, and Microsoft.
We can help you bring your databases up to speed with end-to-end service. Learn more about cloud adoption trends by reading our white paper.
The post The Types of Databases Powering the Cloud appeared first on Datavail.
How to Solve the Oracle Error ORA-12154: TNS:could not resolve the connect identifier specified
The “ORA-12154: TNS:could not resolve the connect identifier specified” Oracle error is a commonly seen message for database administrators. When this occurs, there’s an issue with creating a connection with one of your Oracle services or database instances. In some Oracle database versions, this error may be called “ORA-12154: TNS:could not resolve service name.” The connect identifier is not able to resolve and may be caused by one or more of the following issues:
- Inability to connect to the repository due to unplanned server and network outages
- The entry is missing from tnsnames.ora
- The entry in tnsnames.ora is malformed
- The program is using tnsnames.ora from the wrong ORACLE_HOME
- The program is not using a fully qualified service name, but no default domain is enabled in sqlnet.ora
Because there is more than one cause of the ORA-12154 error, you need to troubleshoot precisely what’s going on with your database connections. You’ll typically see this error in the Oracle client application during the connection process, not the server itself. While it can be frustrating to see this error when you’re working on an application, the fix is relatively straightforward.
Resolving ORA-12154 Error Codes
The Oracle client code uses one of three ways to look up connect data:
- A flat file named tnsnames.ora
- Oracle Names service
- LDAP
When the complete ORA-12154 error appears with the text line, your program has found a working Oracle client install. However, the specified Oracle service is not listed in tnsnames.ora, Oracle Names or LDAP.
The first step in the troubleshooting process is to determine which name resolution method is deployed at your site. Most sites use tnsnames.ora, but enough use Oracle Names and LDAP, so it’s best to confirm this information.
If you are not the database administrator, get in touch with the people managing your Oracle systems and find out which method you should be using. They may be able to guide you in fixing the problem in accordance with your site’s standards.
The client code decides which mechanism to use based on the file sqlnet.ora. This file and tnsnames can usually both be found in the Oracle install directory (“ORACLE_HOME”), under network/admin/. This location may be overridden with the environment variable TNS_ADMIN.
If the sqlnet.ora file does not exist or does not specify a resolution method, then Oracle Net uses tnsnames.ora.
Example locations of Oracle networking files include:
Windows
- ORANTNET80ADMIN
- ORACLEORA81NETWORKADMIN
- ORAWIN95NETWORKADMIN
- ORAWINNETWORKADMIN
UNIX / Linux
- $ORACLE_HOME/network/admin/
- /etc/
- /var/opt/oracle/
If you fix the naming issues, but you still see the ORA-12154 error, check the Oracle service to confirm that it’s available for connections. A power outage, server failure, or network connectivity issue will make this resource inaccessible. It’s also possible that scheduled maintenance or repairs of an unrelated Oracle issue may take that resource temporarily offline.
Get Expert Help with Resolving Your ORA-12154 Errors
Datavail’s Oracle experts have an average of 15 years of experience and are well-versed in resolving common connection problems with this database technology. We offer Oracle services tailored to your needs, whether you need occasional assistance with troubleshooting or end-to-end solutions for your business.
Don’t let Oracle errors get in the way of creating high-availability, stable applications that your organization depends on. Get the most out of your technology investments by contacting us today.
Read This Next
The Path to DBA Heaven
Are You Working in DBA Heaven or Hell? Time and again, we hear our clients tell us they were living in DBA Hell before they chose to work with Datavail. Now, they feel like they’re living in DBA Heaven. Learn more.
The post How to Solve the Oracle Error ORA-12154: TNS:could not resolve the connect identifier specified appeared first on Datavail.
ODC Appreciation Day: Oracle Cloud PSM Cli
Oracle Developer Community (ODC) Appreciation Day (previously know as OTN Appreciation Day) is a day, started from an initiative of Tim Hall, where everyone can share their Thanks to the Oracle community by writing about a favourite product, an experience, a story related to Oracle technology.
Last year I wrote about OBIEE Time Hierarchies and how they are very useful to perform time comparison, shifts, and aggregations.
This year I want to write about Oracle Paas Service Manager (PSM) Client!
I've already written a blog post about it in detail, basically Oracle PSM allows Oracle cloud administrators to manage their instances via command line instead of forcing them to use the Web-UI.
PSM Cli allows you to create an Oracle Analytics Cloud instance by just calling
psm analytics create-service -c <CONFIG_FILE> -of <OUTPUT_FORMAT>
and passing a JSON <CONFIG_FILE>
which can easily be downloaded after following the creation process in the Web-UI, a bit like the response file in on-premises OBIEE can be saved and customised for future reuse after the first UI installation. Examples of the PSM JSON payloads can be found here.
OAC Instances can also easily be started/stopped/restarted with the command
psm analytics start/stop/restart -s <INSTANCE_NAME>
And the status of each command tracked with
psm analytics operation-status -j <JOB_ID>
As mentioned in my previous post, PSM Cli opens also the doors for instance management automation which is a requirement for providing cost-effective fully isolated feature-related OAC instances useful when thinking about DevOps practices. The fact that PSM Cli is command line, means that it can be integrated in any automation tool like Jenkins and thus integrated in any DevOps flow being designed in any company.
So Thank you, Oracle, for enabling such automation with PSM Cli!
Follow the #ThanksODC hashtag on Twitter to check which post have been published on the same theme!
DevOps in OAC: Scripting Oracle Cloud Instance Management with PSM Cli
This summer we unselfish Italians decided to not participate to the World Cup to give another country the opportunity to win (good luck with that England!). This decision, which I strongly support, gives me lot of time for blogging!
As already written, two weeks ago while in Orlando for Kscope18, I presented a session about DevOps and OBIEE focusing on how to properly source control, promote and test for regression any component of the infrastructure.
Development Isolation
One key aspect of DevOps is providing the Development Isolation: a way of allowing multiple development streams to work independently and merging the outcome of the process into the main environment only after this has been tested and validated. This is needed to avoid the standard situation where code promotions are blocked due to different working streams not being in sync: forcing a team to postpone a code release just because another team doesn't have the UAT OK is just an example of non-isolated development platforms.
We have been discussing development isolation topic in the past focusing mainly on concurrent repository development and how to integrate it with versioning tools like Git and SVN. The concurrent online editing option is not viable since multiple developers are modifying the same artifact (RPD) without a way of testing for regression the changes or to verifying that what has been done is correct before merging the changes in the RPD.
Alternative solutions of using MUDE (default multi-user development method provided by the Admintool) or pure offline RPD work encounter the same problems defined above: no feature or regression testing available before merging the RPD in the main development environment.
Different RPD development techniques solve only partially the problem: almost any OAC/OBIEE development consist at least in both RPD and catalog work (creation of analysis/dashboards/VA projects) we need an approach which provides Development Isolation at both levels. The solution, in order to properly build a DevOps framework around OAC/OBIEE, it's to provide isolated feature-related full OBIEE instances where the RPD can be edited in online mode, the catalog work can be done independently, and the overall result can be tested and validated before being merged into the common development environment.
Feature-Related Instances
The feature instances, as described above, need to be full OAC/OBIEE development instances where only a feature (or a small set) is worked at the time in order to give the agility to developers to release the code as soon as it's ready and tested. In the on-premises world this can "easily" be achieved by providing a number of dedicated Virtual Machines or, more in line with the recent trends, an automated instance provisioning with Docker using a template image like the one built by our previous colleague Gianni Ceresa.
However, when we think about Oracle Analytics Cloud (OAC), we seem to have two problems:
- There is a cost associated with every instance, thus minimizing the number of instances and the uptime is necessary
- The OAC provisioning interface is point and click, thus automating the instance management seems impossible
The overall OAC instance cost can be mitigated by the Bring Your Own License (BYOL) licensing method which allows customers to migrate on-premises licenses to the cloud and have discounted prices on the hourly/monthly instance cost (more details here). However, since the target is to minimize the cost thus the # of instances and the uptime, we need to find a way to do so that doesn't rely on a human and a point and click interface. Luckily the PaaS Service Manager Command Line Interface (PSM Cli) allows us to solve this problem by providing a scriptable way of creating, starting and stopping instances.
PaaS Service Manager Command Line Interface
PSMCLI is a command line interface acting as a wrapper over the PaaS REST APIs. Its usage is not limited to OAC, the same interface can be used to create and manage instances of the Oracle's Database Cloud Service or Java Cloud Services amongst the others.
When talking about OAC please keep in mind that, as of now, PSM Cli works only with the non-autonomous version but I believe the Autonomous support will be added soon.
Installing and Configuring PSM Cli
PSMCLI has two prerequisites before it can be installed:
- cURL - a command line utility to transfer data with URLs
- Python 3.3 or later
Once both prerequisites are installed PSM can easily be downloaded with the following cURL call
curl -X GET -u <USER>:<PWD> -H X-ID-TENANT-NAME:<IDENTITY_DOMAIN> https://<REST_SERVER>/paas/core/api/v1.1/cli/<IDENTITY_DOMAIN>/client -o psmcli.zip
Where
- <USER> and <PWD> are the credentials
- <IDENTITY_DOMAIN> is the Identity Domain ID specified during the account creation
- <REST_SERVER> is the REST API server name which is:
- psm.us.oraclecloud.com if you are using a US datacenter
- psm.aucom.oraclecloud.com if you are in the AuCom region
- psm.europe.oraclecloud.com otherwise
Next step is to install PSM as a Python package with
pip3 install -U psmcli.zip
After the installation is time for configuration
psm setup
The configuration command will request the following information:
- Oracle Cloud Username and Password
- Identity Domain
- Region, this need to be set to
- emea if the REST_SERVER mentioned above contains emea
- aucom if the REST_SERVER mentioned above contains aucom
- us otherwise
- Output format: the choice is between short, json and html
- OAuth: the communication between the CLI and the REST API can use basic authentication (flag n) or OAuth (flag y). If OAuth is chosen then ClientID, Secret and Access Token need to be specified
A JSON profile file can also be used to provide the same information mentioned above. The structure of the file is the following
{
"username":"<USER>",
"password":"<PASSWORD>",
"identityDomain":"<IDENTITY_DOMAIN>",
"region":"<REGION>",
"outputFormat":"<OUTPUT_FORMAT>",
"oAuth":{
"clientId":"",
"clientSecret":"",
"accessTokenServer":""
}
}
If the profile is stored in a file profile.json
the PSM configuration can be achieved by just executing
psm setup -c profile.json
One quick note: the identity domain Id, shown in the Oracle Cloud header, isn't working if it's not the original name (name at the time of the creation).
In order to get the correct identity domain Id to use, check in an Oracle Cloud instance already created (e.g. a database one) and check the Details, you'll see the original identity domain listed there (credits to Pieter Van Puymbroeck).
Working With PSM Cli
Once the PSM has been correctly configured it's time to start checking what options are available, for a detailed list of the options check PSM documentation.
The PSM commands are product related, so each command is in the form:
psm <product> <command> <parameters>
Where
- product is the Oracle cloud product e.g.
dbcs
,analytics
,BigDataAppliance
, for a complete list usepsm help
- command is the action to be executed against the product e.g.
services
,stop
,start
,create-service
- parameters is the list of parameters to pass depending on the command executed
The first step is to check what instances I already created, I can do so for the database by executing
psm dbcs services
which, as expected, will list all my active instances
I can then start and stop it using:
psm dbcs start/stop/restart -s <INSTANCE_NAME>
Which in my example provides the Id of the Job assigned to the stop
operation.
When I check the status via the service
command I get Maintenance
like in the web UI.
The same applies to the start
and restart
operation. Please keep in mind that all the calls are asynchronous -> the command will call the related REST API and then return the associated Job ID without waiting for the command to be finished. The status of a job can be checked with:
psm dbcs operation-status -j <JOB_ID>
The same operations described above are available on OAC with the same commands by simply changing the product from dbcs
to analytics
like:
psm analytics start/stop/restart -s <INSTANCE_NAME>
On top of the basic operation, PSM Cli allows also the following:
- Service Instance: start/stop/restart, instance creation-deletion
- Access Control: lists, creates, deletes, enables and disables access rules for a service.
- Scaling: changes the computer shape of an instance and allows scaling up/down.
- Storage: extends the storage associated to OAC
- Backup Configuration: updates/shows the backup configurations
- Backups: lists, creates, deletes backups of the instance
- Restore: restores a backup giving detailed information about it and the history of Restores
- Patches: allows patching, rollbacking, doing pre-checks, and retrieving patching history
Creating an OAC Instance
So far we discussed the maintenance on already created instances with start
/stop
/restart
commands, but PSM Cli allows also the creation of an instance via command line. The call is pretty simple:
psm analytics create-service -c <CONFIG_FILE> -of <OUTPUT_FORMAT>
Where
- CONFIG_FILE: is the file defining all OAC instance configurations
- OUTPUT_FORMAT: is the desired output format between short, json and html
The question now is:
How do I create a Config File for OAC?
The documentation doesn't provide any help on this, but we can use the same approach as for on-premises OBIEE and response file: create the first instance with the Web-UI, save the payload for future use and change parameters when necessary.
On the Confirm screen, there is the option to Download the REST payload in JSON format
With the resulting json Config File being
{
"edition": "<EDITION>",
"vmPublicKeyText": "<SSH_TOKEN>",
"enableNotification": "true",
"notificationEmail": "<EMAIL>",
"serviceVersion": "<VERSION>",
"isBYOL": "false",
"components": {
"BI": {
"adminUserPassword": "<ADMINPWD>",
"adminUserName": "<ADMINUSER>",
"analyticsStoragePassword": "<PWD>",
"shape": "oc3",
"createAnalyticsStorageContainer": "true",
"profile_essbase": "false",
"dbcsPassword": "<DBCSPWD>",
"totalAnalyticsStorage": "280.0",
"profile_bi": "true",
"profile_dv_forced": "true",
"analyticsStorageUser": "<EMAIL>",
"dbcsUserName": "<DBUSER>",
"dbcsPDBName": "<PDBNAME>",
"dbcsName": "<DBCSNAME>",
"idcs_enabled": "false",
"analyticsStorageContainerURL": "<STORAGEURL>",
"publicStorageEnabled": "false",
"usableAnalyticsStorage": "180"
}
},
"serviceLevel": "PAAS",
"meteringFrequency": "HOURLY",
"subscriptionId": "<SUBSCRIPTIONID>",
"serviceName": "<SERVICENAME>"
}
This file can be stored and the parameters changed as necessary to create new OAC instances with the command:
psm analytics create-service -c <JSON_PAYLOAD_FILE> -of short/json/html
As shown previously, the result of the call is a Job Id
that can be monitored with
psm analytics operation-status -j <JOB_ID>
Once the Job is finished successfully, the OAC instance is ready to be used. If at a certain point, the OAC instance is not needed anymore, it can be deleted via:
psm analytics delete-service -s <SERVICE_NAME> -n <DBA_NAME> -p <DBA_PWD>
Where
- SERVICE_NAME is the OAC instance name
- DBA_NAME and DBA_PWD are the DBA credentials where OAC schemas are residing
Summary
Worried about providing development isolation in OAC while keeping the costs down? Not anymore! With PSM Cli you now have a way of creating instances on demand, start/stop, up/down scaling with a command line tool easily integrable with automation tools like Jenkins.
Create an OAC instances automatically only when features need to be developed or tested, stop&start the instances based on your workforce timetables, take the benefit of the cloud minimizing the cost associated to it by using PSM Cli!
One last note; for a full DevOps OAC implementation, PSM Cli is not sufficient: tasks like automated regression testing, code versioning, and promotion can't be managed directly with PSM Cli but require usage of external toolsets like Rittman Mead BI Developer Toolkit. If you are interested in a full DevOps implementation on OAC and understanding the details on how PSM Cli can be used in conjunction with Rittman Mead BI Developer Toolkit don't hesitate to contact us!