segunda-feira, 10 de julho de 2023

[Oracle Autonomous JSON] How to configure and using the Oracle API for MongoDB on Oracle Autonomous JSON Database - Part 2

 Hello everyone

In my last post, I presented how you can configure the Oracle Autonomous JSON Database to use the API for MongoDB.

And today, we're going to use the API to connect into MongoDB shell, create a simple collection and use those documents in the ADJ console.

If you want to see the first post, feel free to click here

But always remember:

  1. This step-by-step worked for me, but it may not work for you.
  2. It's a basic and limited environment. The real life will be different, for sure.
  3. This post is for study and testing as well, and has no concern for performance and security best practices.

I have a MongoDB Intance in OCI Compute and I'm going to connect MongoSH in my ADJ using the connection string that I created in the first post. My user is named ADMIN:

mongosh -u admin -p XXXZZZ 'mongodb://XXZZZ-IRONMAN.adb.sa-saopaulo-1.oraclecloudapps.com:27017/admin?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'

I'll create a new collection and a new document using MongoSH. After that I'll create a new document using ADJ console and at the end I'll select this data in the console and MongoSH as well.

This example was adapted from the post "SQL NESTED Clause Instead of JSON_TABLE in Oracle Database 19c" from amazing ORACLE-BASE

So, let's get started!!!

1) I'll connect in MongoSH using my connection string:


2) Now, I'll access the ADJ console. Click on the "Database Actions" button and select the option "JSON".

  


3) First, I'll create a new decument in the MongoSH shell.



4) The second document will be created in the ADJ console. For this, click in "New" button in the ADJ console.


Click on the "Create" button and he massage bellow should appear.


And now, I have 2 documents in my collection.


And for read operations, I have two options:

1)  Click on the "Database Actions" button and select the option "SQL".


2) I'll create my SQL queries with the same SQL statements used in relational databases.


Using NESTED and WHERE, for example.


3) Finally, I may read my documents usinf MongoDB statements, for shure!!!


It's really cool, right!!!

In the next post, I'll show you how enabling REST is easy in ADJ.

I hope this post will help you!!!

Regards
Mario

quarta-feira, 28 de junho de 2023

[Oracle Autonomous JSON] How to configure and using the Oracle API for MongoDB on Oracle Autonomous JSON Database - Part 1

Hello all!!!

How are you doing?

Today I'll show how you can create an Autonomous Database JSON instance on OCI Free Tier and how you can connect your MongoDB with this instance using Oracle Database API for MongoDB. 

In Part 2, I'll create new collections in the MongoDB shell and demonstrate how we can use these in the ADJ console using JSON and traditional SQL syntax.

The MongoDB is running on OCI Compute Instance :) 

But always remember:
1) This step-by-step worked for me, but it may not work for you.
2) It's a basic and limited environment. The real life will be different, for sure.
3) This post is for study and testing as well, and has no concern for performance and security best practices.

So, let's get started!!!

1) Create a VCN. I'm not show the step by step for this, but it's really easy. Google helps you!!!



2) Now, I'll create the ADJ for testing. Click on Create Autonomous Database.



















This is the most important setup that you need. For access the Oracle Database Actions Launchpad, you must have set "Secure access from allowed IPs and VCNs only" and put our VCN and our IP here. It's mandatory!!!



I'll insert my IP address and click "Add access control rule" to add my VCN, as well!

To finish, click "Create Autonomous Database" and wait!

















3) ADJ created, it's time to check access to MongoDB.

For this verification, we need the link for mongosh. Click on "Database actions". 



In the end of the page, click on "Oracle Database API for MongoDB".


Copy the MongoDB connection string URL.



Finally, access the MongoDB server and test the connection.




Oh my god! Error!!!! Why????

The error "Client network socket disconnected before secure TLS connection was established" is easy to solve.

We also need to put the Compute Instance Public and Private IP where we run the MongoDB on "Access control list".








And now, I have succeeded!!!



In the next post, I going to create some collections and load documents into MongoDB console, and I'll work with those tables in the ADJ console using the "Traditional Select Syntax".

It's going to be cool! :) 

I hope this post helps you!

Regards
Mario

sexta-feira, 19 de maio de 2023

[Oracle Autonomous JSON] Create new Instance on OCI Free Tier

Hello all!!!

How are you doing?

Today I'll show how you can create an Autonomous Database JSON instance on OCI Free Tier.

I'll use the instance in future posts about JSON and Oracle.

But always remember:
1) This step-by-step worked for me, but it may not work for you.
2) It's a basic and limited environment. The real life will be different, for sure.
3) This post is for study and testing as well, and has no concern for performance and security best practices.

So, let's get started!!!

1) Select "Oracle Database" in menu



2) Click on "Autonomous JSON Database"


3) Click on "Create Autonomous Database"


4) Select the Compartment - Never use the Root compartment, put other information (Display name, Database name) and password as well.






And now, I'm waiting for the conclusion of the process.



A few minutes later, the Instance is ready for use.





That's it my friend!! Easy!!!
I hope it helps you!

Regards
Mario

quinta-feira, 18 de maio de 2023

[Oracle 23c] How to install an Oracle 23c test environment on Linux 8 running on VirtualBox in five commands.

Hello all!!!

How are you doing?

Today I'll show how you can install Oracle 23c in a Linux 8 using VirtualBox.

If you need help to install Linux on VirtualBox, you can use this link: 

But always remember:
1) This step-by-step worked for me, but it may not work for you.
2) It's a basic and limited environment. The real life will be different, for sure.
3) This post is for study and testing as well, and has no concern for performance and security best practices.

So, let's get started!!!

1) We are run the dnf to install and configure pre-requirements using ROOT user.
dnf install -y oraclelinux-developer-release-el8
dnf install -y oracle-database-preinstall-23c

If you don't know what DNF is, it's a software package manager, the successor to famous YUM. The DNF check and install dependencies and determine some actions required to install this. Feel free to view this link and learn more about it: Using the DNF software package manager




2) I'll download the Oracle 23c software using WGET (or CURL).

wget https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23c-1.0-1.el8.x86_64.rpm

or

curl -L -o oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/developer/x86_64/getPackage/oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm


3) Now, I'll install the Oracle 23c Software

dnf -y localinstall /root/oracle-database-free-23c-1.0-1.el8.x86_64.rpm


If I try to install using the Oracle user, I'll get this error:


4) It's time to create database in silent mode - using Oracle user

export DB_PASSWORD=SysOracle1106

(echo "${DB_PASSWORD}"; echo "${DB_PASSWORD}";) | /etc/init.d/oracle-free-23c configure



5) And finally, I'll enable the Oracle 23c on SYSTEMCTL

systemctl enable oracle-free-23c


The Oracle Env values are:
export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree
export PATH=$ORACLE_HOME/bin:$PATH

The credencials to connect will be:
-- CDB
sqlplus sys/SysOracle1106@//localhost:1521/free as sysdba

-- PDB
sqlplus sys/SysOracle1106@//localhost:1521/freepdb1 as sysdba

And finally, to start and stop the service, we can use:
/etc/init.d/oracle-free-23c stop
/etc/init.d/oracle-free-23c start



For this blog post, I used these great blogs:

And as Woody Woodpecker says: "That's all folks!!!"

I hope this helps you!!

Regards
Mario

segunda-feira, 8 de maio de 2023

[Oracle 23c] How to create and run an Oracle 23c test environment faster using Docker in four commands.

Hello all

How are you doing?

Today, I'll show how you can create and run a basic test environment with Oracle 23c using Docker with four commands.

Yes my friend, four commands!!!

But always remember:
1) This step-by-step worked for me, but it may not work for you.
2) It is a basic environment. Real life will be different, for sure.
3) This post is for study and testing only and has no concern for performance and security best practices.

As the UFC guy says, it's showtime!!!

1) Create New Container
docker run -d -p 1521:1522 -e ORACLE_PASSWORD=SysPassword1 -v oracle-volume=/opt/oracle/data gvenzl/oracle-free:latest


Important: If you have run it for the first time, the image download has been executed.  

2) List and rename the new container
docker ps
docker rename c814e75ee041 Oracle23c


3) Access the container Oracle23c
docker exec -it Oracle23c /bin/bash


And thats it!!! As simple as that!!

For this test, I used these fonts:

I hope this tip helps you!

Regards
Mario







terça-feira, 11 de abril de 2023

[MongoDB] How the replication works in MongoDB? And how to create a Test Environment using Docker-Compose!!!

Hello all

How are you doing?

Today, I'm going to talk about replication in MongoDB and how I can create a Test Environment using Docker-Compose.

If you don't know how to install a docker-compose, click here and here.

And always remember:
1) This step-by-setp worked for me, but it might not work for you.
2) It's a basic install. As we go along, we'll get better and better.
3) This post is just for study and test, and it has no concern for Performance and Security Best Practices.

According to the manual, "The Replica Set in MongoDB is a group of mongod processes that maintain the same data set. Replica sets provide redundancy and high availability and are the basis for all production deployments. Replication provides redundancy and increases data availability. With multiple copies of data on different database servers, replication provides a level of fault tolerance against the loss of a single database server."

It's important understand that the secondaries replicas aren't open to write operation. But we can specify a read preference to send read operations to secondaries, if we want. 

If you want active nodes, you can use Sharding which are a method for distributing data across multiple machines, but this is a conversation to other article.

This is a basic schema about replication in MongoDB.



For learn more about replication, click on image above.

If you understood this, let's get started!!!

For my test, I'll create 3 containers running on AWS EC2 instance using Amazon Linux 2. The data will be persistent because I'll use the "Docker-Managed Volume" for this. 

These automation scripts were based on these original scripts here!!!

1) On compose directory, I'll create an archive call "docker-compose-replicaset.yml". 
Important: It's forbidden to use "TAB" for indentation.

version: '3.9'

services:
  mongodb01:
    container_name: mongodb01
    image: mongo:6
    volumes:
      - shared_database:/data/mongodb
      - /root/compose/scripts/rs-init.sh:/scripts/rs-init.sh
    networks:
      MongoCluster:
        ipv4_address: 172.15.0.11
    ports:
      - 27021:27017
    restart: always
    entrypoint: ["/usr/bin/mongod", "--bind_ip_all", "--replSet", "myRS"]
  mongodb02:
    container_name: mongodb02
    image: mongo:6
    volumes:
      - shared_database:/data/mongodb
    networks:
      MongoCluster:
        ipv4_address: 172.15.0.12
    ports:
      - 27022:27017
    restart: always
    entrypoint: ["/usr/bin/mongod", "--bind_ip_all", "--replSet", "myRS"]
  mongodb03:
    container_name: mongodb03
    image: mongo:6
    volumes:
      - shared_database:/data/mongodb
    networks:
      MongoCluster:
        ipv4_address: 172.15.0.13
    ports:
      - 27023:27017
    restart: always
    entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "myRS"]

volumes:
  shared_database:

networks:
  MongoCluster:
    driver: bridge
    ipam:
     config:
       - subnet: 172.15.0.0/16

The main information about this script are:
mongodb01 = Name of service
container_name = Container (machine) name
image = Docker image. I'll use the MongoDB official image 
volumes = Persistent volumes that will be shared in all nodes
networks = Network using to the cluster 
ports = Service ports and port range 
entrypoint = Override the default entrypoint. Setting entrypoint both overrides any default entrypoint set on the service’s image with the ENTRYPOINT Dockerfile instruction.

volumes:
  shared_database = Using a "Docker-Managed Volume" for share a Docker-managed volume between containers.

2) Create directory scripts in compose directory.
     mkdir -p /root/compose/scripts

3) Create script "rs-init.sh" in directory scripts

#!/bin/bash
DELAY=25
mongosh <<EOF
var config = {
    "_id": "myRS",
    "version": 1,
    "members": [
        {
            "_id": 1,
            "host": "mongodb01:27017",
            "priority": 2
        },
        {
            "_id": 2,
            "host": "mongodb02:27017",
            "priority": 1
        },
        {
            "_id": 3,
            "host": "mongodb03:27017",
            "priority": 1
        }
    ]
};
rs.initiate(config, { force: true });
EOF

echo "****** Waiting for ${DELAY} seconds for replicaset configuration to be applied ******"
sleep $DELAY
echo "****** Environment ready to use ******"

4) Create the script "startRS.sh" on compose directory.

#!/bin/bash
DELAY=10

## Cleanup older creations
docker-compose --file docker-compose-replicaset.yml down
docker rm -f $(docker ps -a -q)
docker volume rm $(docker volume ls -q)

## Start Docker-compose using my configs
docker-compose --file docker-compose-replicaset.yml up -d

echo "****** Waiting for ${DELAY} seconds for containers to go up ******"
sleep $DELAY

## Start Replica Set just on the first execution. After that, a warning will be displayed.
docker exec mongodb01 /scripts/rs-init.sh

## Check
docker ps
docker exec -it mongodb01 /bin/hostname -i
docker exec -it mongodb02 /bin/hostname -i
docker exec -it mongodb03 /bin/hostname -i
docker exec -it mongodb01 mongosh --eval "rs.status()"

4) Run chmod to to the scripts executable
chmod +x starRS.sh
chmod +x scripts/rs-init.sh

If you want to download these scripts, click here.

Finally, we just run the startRS.sh








And now, if you want test the replica set, you can use this:

On Primary (mongodb01):
docker exec -it mongo01 mongosh
rs.stepDown()

On Secondary (mongodb02):
docker exec -it mongo02 mongosh


That's all folks!!!

I hope that this blog helps you!!!

Regards
Mario

sexta-feira, 3 de março de 2023

[O-Tips] Creating a new Oracle DEV environment with Appsync.

Hello all

Today, I recorded a new video talking about Appsync and how we can provide a new Oracle database for Dev team. 

Yes, I know I need to improve my English, and I've been working very hard at it. So, if you understood me, my goal has been achieved. 🥶

Dell Appsync is a Copy Data Management Software. The tool helps customers create and manage snapshots.

Furthermore, the Appsync helps the DBA team to provide a new database environment faster and easier than RMAN restore - or duplicate, for example.

On this video, I'll show how I can create and mount a Snapshot using AppSync.

For more information about Appsync, click here.

And, for you watch the video, access the O-Tips Youtube Channel.


I hope this video helps you!!!

Regards
Mario

Postagem em destaque

[Oracle] GoldenGate for Distributed Applications and Analytics (GG for DAA) & Iceberg replication

Hello everyone.   How are you doing?   I was talking to Alex Lima, Oracle GoldenGate Product Manager, today and he suggested I take a look a...