Storage server 12.1.1

I saw on comments some problem with this release. I’m curious. And I must test something for an evolution on a project. The decision is take. Simulator 12c is starting.

I used my previous post as guide and it was quite simple. I only had one big issue, but it is not related with release or the guide itself. I used “-” and “_” in cell name !!

I spent a lot of time with strange errors because firstly I choose cell12-1 as machine name and cell name. When I created the cell with cellcli command I immediately had an error and it was clear that cellname was the problem.

So I changed cellname in cell12_1 (and hostname, …), the command worked with errors on flash’s configuration. From that point on only errors restarting services.

I stopped all, removed cell*rpm, changed all network configuration with cell12, restarted all, reinstalled cell*rpm and finally I get the cell up and running.

Here the steps (without the fight!)

All starts with a fresh install of a VirtualBox VM with Oracle Linux 5.9. The steps are the same as previous post, except for the ISO (from http://edelivery.oracle.com) and my new false InfiniBand network 192.168.50.xx (vboxnet3 host only adapter): cell12 take 192.168.50.10.

From eDelivery I need also cell software (V42777-01.zip). Into this huge zip, there is a tar file (cellImageMaker_12.1.1.1.0_LINUX.X64_131219-1.x86_64.tar).
Into the tar file I need to extract just 2 files:
- dl180/boot/cellbits/cell.bin
- dl180/boot/cellbits/cellrpms.tbz
cell.bin contains the cell software rpm and it needs to be extracted from a shell with unzip due a custom file header.
From cellrpms.tbz I need only jdk-1.7.0_25-fcs.x86_64.rpm

As usual I put all I need at install time outside my VM, on a shared folder through VirtualBox feature. In cell12 the shared folder is mounted on /media/sf_OS. From the host system I extracted only the 2 files I need to handle into cell12 (cell.bin and jdk-1.7.0_25-fcs.x86_64.rpm). Then

[root@cell12 ~]# cd /media/sf_OS/
[root@cell12 sf_OS]# ls
cell.bin  jdk-1.7.0_25-fcs.x86_64.rpm
[root@cell12 sf_OS]# unzip cell.bin
Archive:  cell.bin
warning [cell.bin]:  20118 extra bytes at beginning or within zipfile
(attempting to process anyway)
inflating: cell-12.1.1.1.0_LINUX.X64_131219-1.x86_64.rpm

Note: differently from 11.2 sw, here it isn’t jdk1.5, but we still need that and I already take from cellrpms.tbz.

This is /etc/host

[root@cell12 sf_OS]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       cell12        localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6

Now, following my guide, I create /var/log/oracle (I’m not sure it’s still needed, but I didn’t test)

[root@cell12 sf_OS]# mkdir /var/log/oracle
[root@cell12 sf_OS]# chmod 775 /var/log/oracle

[root@cell12 sf_OS]# rpm -ivh jdk-1.7.0_25-fcs.x86_64.rpm
warning: jdk-1.7.0_25-fcs.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
1:jdk                    ########################################### [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
[root@cell12 sf_OS]# rpm -ivh cell-12.1.1.1.0_LINUX.X64_131219-1.x86_64.rpm
Preparing...                ########################################### [100%]
Pre Installation steps in progress ...
1:cell                   ########################################### [100%]
Post Installation steps in progress ...
Set cellusers group for /opt/oracle/cell12.1.1.1.0_LINUX.X64_131219/cellsrv/deploy/log directory
Set 775 permissions for /opt/oracle/cell12.1.1.1.0_LINUX.X64_131219/cellsrv/deploy/log directory
/opt/oracle/cell12.1.1.1.0_LINUX.X64_131219/cellsrv/deploy
/opt/oracle/cell12.1.1.1.0_LINUX.X64_131219/cellsrv/deploy
/opt/oracle/cell12.1.1.1.0_LINUX.X64_131219
Installation SUCCESSFUL.
Starting RS and MS... as user celladmin
Done. Please Login as user celladmin and create cell to startup CELLSRV to complete cell configuration.
If this is a manual installation, please stop and restart ExaWatcher to pick up newly installed binaries.
You can run "/opt/oracle.ExaWatcher/ExaWatcher.sh --stop" and then "/opt/oracle.ExaWatcher/ExaWatcher.sh --fromconf" to stop and restart ExaWatcher.
Logout and then re-login to use the new cell environment.

Now reboot and fix DISPLAY problem (login in a safe session, edit /etc/bashrc adding export DISPLAY=:0, exit and login again).

I already created 12 (524MB) + 6 (413MB) disks to emulate standard and flash disks. Those are visible from cell12 as (last 2 are system disks)

[root@cell12 sf_OS]# fdisk -l 2>/dev/null | grep "B,"
Disk /dev/sda: 26.8 GB, 26843545600 bytes
Disk /dev/sdb: 524 MB, 524288000 bytes
Disk /dev/sdc: 524 MB, 524288000 bytes
Disk /dev/sdd: 524 MB, 524288000 bytes
Disk /dev/sde: 524 MB, 524288000 bytes
Disk /dev/sdf: 524 MB, 524288000 bytes
Disk /dev/sdg: 524 MB, 524288000 bytes
Disk /dev/sdh: 524 MB, 524288000 bytes
Disk /dev/sdi: 524 MB, 524288000 bytes
Disk /dev/sdj: 524 MB, 524288000 bytes
Disk /dev/sdk: 524 MB, 524288000 bytes
Disk /dev/sdl: 524 MB, 524288000 bytes
Disk /dev/sdm: 524 MB, 524288000 bytes
Disk /dev/sdn: 419 MB, 419430400 bytes
Disk /dev/sdo: 419 MB, 419430400 bytes
Disk /dev/sdp: 419 MB, 419430400 bytes
Disk /dev/sdq: 419 MB, 419430400 bytes
Disk /dev/sdr: 419 MB, 419430400 bytes
Disk /dev/sds: 419 MB, 419430400 bytes
Disk /dev/dm-0: 22.5 GB, 22515023872 bytes
Disk /dev/dm-1: 4194 MB, 4194304000 bytes

Storage cell software search disk under $T_WORK

[root@cell12 ~]# env | grep disk
T_WORK=/opt/oracle/cell12.1.1.1.0_LINUX.X64_131219/disks

So, I make them visible as

[root@cell12 ~]# cd /opt/oracle/cell12.1.1.1.0_LINUX.X64_131219
[root@cell12 cell12.1.1.1.0_LINUX.X64_131219]# mkdir disks
[root@cell12 cell12.1.1.1.0_LINUX.X64_131219]# mkdir disks/raw
[root@cell12 cell12.1.1.1.0_LINUX.X64_131219]# cd disks/raw/

Create and run symbolic link commands for standard disks

[root@cell12 raw]# fdisk -l 2>/dev/null | grep "524 MB" | awk '{ printf "%s%02d\n", "ln -s "$2" cell12_DISK", NR }'|sed "s/://"
ln -s /dev/sdb cell12_DISK01
ln -s /dev/sdc cell12_DISK02
ln -s /dev/sdd cell12_DISK03
ln -s /dev/sde cell12_DISK04
ln -s /dev/sdf cell12_DISK05
ln -s /dev/sdg cell12_DISK06
ln -s /dev/sdh cell12_DISK07
ln -s /dev/sdi cell12_DISK08
ln -s /dev/sdj cell12_DISK09
ln -s /dev/sdk cell12_DISK10
ln -s /dev/sdl cell12_DISK11
ln -s /dev/sdm cell12_DISK12

and for flash disks

[root@cell12 raw]# fdisk -l 2>/dev/null | grep "419 MB" | awk '{ printf "%s%02d\n", "ln -s "$2" cell12_FLASH", NR }'|sed "s/://"
ln -s /dev/sdn cell12_FLASH01
ln -s /dev/sdo cell12_FLASH02
ln -s /dev/sdp cell12_FLASH03
ln -s /dev/sdq cell12_FLASH04
ln -s /dev/sdr cell12_FLASH05
ln -s /dev/sds cell12_FLASH06

Before creating cell with cellcli, I need some more settings in sysctl.conf

[root@cell12 raw]# more /etc/sysctl.conf
.....
fs.file-max = 65536
fs.aio-max-nr=50000000

net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=2097152

[root@cell12 raw]# sysctl -p

and edit the /etc/security/limits.conf files and add/set

* soft nofile 65536
* hard nofile 65536

Also I need to enable data transport RDS over InfiniBand (RDS_TCP over false InfiniBand)

[root@cell12 raw]# lsmod | grep rds
[root@cell12 raw]# modprobe rds
[root@cell12 raw]# modprobe rds_tcp
[root@cell12 raw]# modprobe rds_rdma
[root@cell12 raw]# lsmod | grep rds
rds_rdma               82580  0
rds_tcp                10455  0
rds                    96059  2 rds_rdma,rds_tcp
rdma_cm                36793  2 rds_rdma,ib_iser
ib_core                66577  7 rds_rdma,ib_iser,rdma_cm,ib_cm,iw_cm,ib_sa,ib_mad

and make that permanent editing/creating rds.conf

[root@cell12 ~]# more /etc/modprobe.d/rds.conf
install rds /sbin/modprobe –ignore-install rds && /sbin/modprobe rds_tcp && /sbin/modprobe rds_rdma

[EDIT: pay attention to double "--" that sometimes became a single char "–"]

Now, with celladmin user I’ll restart services, create cell and disks

[celladmin@cell12 ~]$ cellcli -e alter cell restart services all
Stopping the RS, CELLSRV, and MS services...
The SHUTDOWN of services was successful.
Starting the RS, CELLSRV, and MS services...
Getting the state of RS services...  running
Starting CELLSRV services...
The STARTUP of CELLSRV services was not successful.
CELL-01553: Incorrect IP in cellinit.ora. IP is invalid or has incorrect/missing netmask. Please refer to RS incident log.
Starting MS services...
The STARTUP of MS services was successful.

(error is quite normal: the cell isn’t initialized as IP and name)

[celladmin@cell12 ~]$ cellcli -e create cell cell12 interconnect1=eth1
Cell cell12 successfully created
Starting CELLSRV services…
The STARTUP of CELLSRV services was successful.
Flash cell disks, FlashCache, and FlashLog will be created…
CellDisk FD_00_cell12 successfully created
CellDisk FD_01_cell12 successfully created
CellDisk FD_02_cell12 successfully created
CellDisk FD_03_cell12 successfully created
CellDisk FD_04_cell12 successfully created
CellDisk FD_05_cell12 successfully created
Flash log cell12_FLASHLOG successfully created
Flash cache cell12_FLASHCACHE successfully created

(I’m not sure why Flash components are auto configured, but it can be modified later if needed)
Configure cell disks

[celladmin@cell12 ~]$ cellcli -e create celldisk all
CellDisk CD_DISK01_cell12 successfully created
CellDisk CD_DISK02_cell12 successfully created
CellDisk CD_DISK03_cell12 successfully created
CellDisk CD_DISK04_cell12 successfully created
CellDisk CD_DISK05_cell12 successfully created
CellDisk CD_DISK06_cell12 successfully created
CellDisk CD_DISK07_cell12 successfully created
CellDisk CD_DISK08_cell12 successfully created
CellDisk CD_DISK09_cell12 successfully created
CellDisk CD_DISK10_cell12 successfully created
CellDisk CD_DISK11_cell12 successfully created
CellDisk CD_DISK12_cell12 successfully created

and grid disks

[celladmin@cell12 ~]$ cellcli -e create griddisk all harddisk prefix=DATA
GridDisk DATA_CD_DISK01_cell12 successfully created
GridDisk DATA_CD_DISK02_cell12 successfully created
GridDisk DATA_CD_DISK03_cell12 successfully created
GridDisk DATA_CD_DISK04_cell12 successfully created
GridDisk DATA_CD_DISK05_cell12 successfully created
GridDisk DATA_CD_DISK06_cell12 successfully created
GridDisk DATA_CD_DISK07_cell12 successfully created
GridDisk DATA_CD_DISK08_cell12 successfully created
GridDisk DATA_CD_DISK09_cell12 successfully created
GridDisk DATA_CD_DISK10_cell12 successfully created
GridDisk DATA_CD_DISK11_cell12 successfully created
GridDisk DATA_CD_DISK12_cell12 successfully created

Done.

I also suggest to set default level to 3 into /etc/inittab to avoid GUI overhead on storage cell.

/*+ esp */

Let me add this …

So, after some study … I got it !!

Image

I can say that creating the simulator helped a lot on all topics related to disk an cluster in Exadata context. What I couldn’t well test (and answers reflected that) is all stuff related to real hardware, ports, EM configurations (docs are quite confused about OMS, Agent, Agent Plugin).

 

But, by the way, I hit the target!

 

/*+ esp */

Install OGG on DBFS

In this post I created some DBFS file systems to share sw and data between nodes of an Exadata. Such file systems enable the possibility of a HA configuration of the application in that environment.

I know it is quite impossible to guess the application from file systems names (ogg_home1, ogg_trail1, ogg_home2, ogg_trail2 !! :-) ), so I’m here to unravel the mystery.

I’m going to install Oracle Golden Gate (OGG) on both ogg_home1 and ogg_home2 that will use respectively ogg_trail1 and ogg_trail2 for trail files (i.e. data to load into my RAC db through repcat process).

I played with OGG during an Oracle Developer Day in Rome. I used a virtual appliance built by Oracle Experts. I didn’t realize how is simple to install OGG. It is like a portable application on a pendrive !!

Into my usual path based on VirtualBox Shared Folder I downloaded from this page, after accepting Oracle Software Policies, “Oracle GoldenGate V11.2.1.0.1 for Oracle 11g on Linux x86-64″ (86 MB).

[oracle@exadb1 ~]$ cd /media/sf_OS/
[oracle@exadb1 sf_OS]$ ll
total 87112
-rwxrwx--- 1 root vboxsf 89186858 Feb  3 16:51 ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip

Unzipping

[oracle@exadb1 sf_OS]$ unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
Archive:  ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
inflating: fbo_ggs_Linux_x64_ora11g_64bit.tar
inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.1.pdf
inflating: Oracle GoldenGate 11.2.1.0.1 README.txt
inflating: Oracle GoldenGate 11.2.1.0.1 README.doc

Untaring

[oracle@exadb1 sf_OS]$ mkdir ogginst; cd ogginst
[oracle@exadb1 ogginst]$ tar xvf ../fbo_ggs_Linux_x64_ora11g_64bit.tar
...

Now the install process has three steps: copy sw files, set environment, configure directories.
Obviously to use OGG I’ll need more configurations on source and target systems, but this is out of scope actually.

First home on first node (ogg_home1 on exadb1)
Copy SW files:

[oracle@exadb1 ~]$ cd /exa/app
[oracle@exadb1 app]$ dbfs_client -o allow_root dbfs_usr_ogg1@exadb /exa/app/fs_ogg1 < pwd_ogg1 &
[oracle@exadb1 app]$ cp -pR /media/sf_OS/ogginst/* /exa/app/fs_ogg1/ogg_home1/

Set Environment:

[oracle@exadb1 app]$ cd /exa/app/fs_ogg1/ogg_home1
[oracle@exadb1 ogg_home1]$ vi ogg_env1
...
[oracle@exadb1 ogg_home1]$ more ogg_env1
OGG_HOME=/exa/app/fs_ogg1/ogg_home1
export OGG_HOME

[oracle@exadb1 ogg_home1]$ . ogg_env1
[oracle@exadb1 ogg_home1]$ ln -s /exa/app/fs_ogg1/ogg_trail1 dirda

Configure Directories:

[oracle@exadb1 ogg_home1]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (exadb1) 1> create subdirs
Creating subdirectories under current directory /exa/app/fs_ogg1/ogg_home1
Parameter files                /exa/app/fs_ogg1/ogg_home1/dirprm: already exists
Report files                   /exa/app/fs_ogg1/ogg_home1/dirrpt: created
Checkpoint files               /exa/app/fs_ogg1/ogg_home1/dirchk: created
Process status files           /exa/app/fs_ogg1/ogg_home1/dirpcs: created
SQL script files               /exa/app/fs_ogg1/ogg_home1/dirsql: created
Database definitions files     /exa/app/fs_ogg1/ogg_home1/dirdef: created
Extract data files             /exa/app/fs_ogg1/ogg_home1/dirdat: already exists
Temporary files                /exa/app/fs_ogg1/ogg_home1/dirtmp: created
Stdout files                   /exa/app/fs_ogg1/ogg_home1/dirout: created
GGSCI (exadb1) 2> exit

All the same for second home on second node (ogg_home2 on exadb2)

[oracle@exadb2 ~]$ cd /exa/app
[oracle@exadb2 app]$ dbfs_client -o allow_root dbfs_usr_ogg2@exadb /exa/app/fs_ogg2 < pwd_ogg2 &
[oracle@exadb2 app]$ cp -pR /media/sf_OS/ogginst/* /exa/app/fs_ogg2/ogg_home2/

[oracle@exadb2 app]$ cd /exa/app/fs_ogg2/ogg_home2
[oracle@exadb2 ogg_home2]$ vi ogg_env2
...
[oracle@exadb2 ogg_home2]$ more ogg_env2
OGG_HOME=/exa/app/fs_ogg2/ogg_home2
export OGG_HOME

[oracle@exadb2 ogg_home2]$ . ogg_env2
[oracle@exadb2 ogg_home2]$ ln -s /exa/app/fs_ogg2/ogg_trail2 dirdat

[oracle@exadb2 ogg_home2]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (exadb2) 1> create subdirs
Creating subdirectories under current directory /exa/app/fs_ogg2/ogg_home2
Parameter files                /exa/app/fs_ogg2/ogg_home2/dirprm: already exists
Report files                   /exa/app/fs_ogg2/ogg_home2/dirrpt: created
Checkpoint files               /exa/app/fs_ogg2/ogg_home2/dirchk: created
Process status files           /exa/app/fs_ogg2/ogg_home2/dirpcs: created
SQL script files               /exa/app/fs_ogg2/ogg_home2/dirsql: created
Database definitions files     /exa/app/fs_ogg2/ogg_home2/dirdef: created
Extract data files             /exa/app/fs_ogg2/ogg_home2/dirdat: already exists
Temporary files                /exa/app/fs_ogg2/ogg_home2/dirtmp: created
Stdout files                   /exa/app/fs_ogg2/ogg_home2/dirout: created
GGSCI (exadb2) 2> exit

Mission Complete. Next step will be create 2 custom cluster apps to manage OGG independently from the active node/nodes.

/*+ esp */

Exadata Simulators

I haven’t so much RAM and power to run a quarter Exadata Simulator, but I need something to practice with Exadata concepts and commands.

So I tried 2 different configurations of Exadata Simulator to find the one that will satisfy my needs.

Here I add some schemas about those configurations.

First confguration: 1 database node with 2 storage cells. Here the post and down the schema.

ExaSim

Second confguration: 2 database nodes with 1 storage cell. Here the post and down the schema.

ExaSimRAC

For who needs a brief introduction to Exadata I suggest this and related and obviously Oracle docs, especially Oracle Learning Library (account needed).

/*+ esp */

Move from unsupported version

Let me know your ideas about that.
I have mine and I’m starting to test it, but I’m curious.

DBFS on Exadata (but also not !)

For a project in which I’m involved I need to share files between 2 db nodes of an Exadata machine.

But on Exadata there are 2 kind of storage:
- local to db node, tipically OS, DBMS SW and similar
- exadata storage cell, usable only through iDB protocol (yes, I know those are linux machines then technically I could force those machines to share space in some way, but it doesn’t seem correct)
Both cannot be used as is because files should be accessible from db nodes even in case of single machine fault.

DBFS seems to be the right solution for my problem:
- created into the RAC database, then accessible from both machines
- based on ASM (in this case, Exadata), then I can add data protection at diskgroup level
- mountable as a starndard file system (through fuse) on Linux

Let try on the simulator to test how the solution is hard to implement.

Mount points/file systems … Let me detail the request:
On each machine I need 1 file system for SW and 1 file system for data:
- node 1 (exadb1): ogg_home1, ogg_trail1
- node 2 (exadb2): ogg_home2, ogg_trail2
SW and data of each node must be visible from the other one.

DBFS … Let me overview how it works:
The description from Oracle docs is quite clear
“In DBFS, the server is the Oracle Database. Files are stored as SecureFiles LOBs in a database table. A set of PL/SQL procedures implement the file system access primitives such as create, open, read, write, and list directory. The implementation of the file system in the database is called the DBFS Content Store. The DBFS Content Store allows each database user to create one or more file systems that can be mounted by clients. Each file system has its own dedicated tables that hold the file system content”

What isn’t immediately clear here is that some commands handle simultaneously all DBFS file systems belonging to a db user, for example the client side program for Linux (something similar to a mount command).

Then I need:
- 2 database users (dbfs_usr_ogg1 and dbfs_usr_ogg2)
- 2 dbfs (ogg_home1, ogg_trail1) under dbfs_usr_ogg1′s schema
- 2 dbfs (ogg_home2, ogg_trail2) under dbfs_usr_ogg2′s schema
- 2 mount points (/exa/app/fs_ogg1, /exa/app/fs_ogg2) on both machines (exadb1, exadb2)

When mounted, I’ll have access to
- /exa/app/fs_ogg1/ogg_home1 and /exa/app/fs_ogg1/ogg_trail1 usually on exadb1
- /exa/app/fs_ogg2/ogg_home2 and /exa/app/fs_ogg2/ogg_trail2 usually on exadb2
First of all I need to update my db nodes with the latest release of fuse. I’ll show on exadb1, but I must execute on both (exadb1 exadb2)

[root@exadb1 ~]# yum install fuse fuse-libs
...
Setting up Install Process
Resolving Dependencies
...
Total download size: 228 k
Is this ok [y/N]: Y
...
Installed:
fuse.x86_64 0:2.7.4-8.0.5.el5                       fuse-libs.i386 0:2.7.4-8.0.5.el5                       fuse-libs.x86_64 0:2.7.4-8.0.5.el5
Complete!

In order to use fuse with dbfs_client command and mount file systems on regular path, some dynamic libraries must be linked

[root@exadb1 app]# echo "/usr/local/lib" >> /etc/ld.so.conf.d/usr_local_lib.conf
[root@exadb1 app]# cd /usr/local/lib
[root@exadb1 lib]# export ORACLE_HOME=/exa/app/oracle/product/11.2.0/dbhome_1
[root@exadb1 lib]# ln -s $ORACLE_HOME/lib/libclntsh.so.11.1 libclntsh.so.11.1
[root@exadb1 lib]# ln -s $ORACLE_HOME/lib/libnnz11.so libnnz11.so
[root@exadb1 lib]# ln -s /lib64/libfuse.so.2.7.4 libfuse.so
[root@exadb1 lib]# ldconfig
[root@exadb1 lib]# ln -s $ORACLE_HOME/bin/dbfs_client /sbin/mount.dbfs

Then prepare user oracle and mount points.
Oracle user must be in the fuse group (created by fuse pkg install)

usermod -a -G fuse oracle

Mount points

[root@exadb1 ~]# cd /exa/app
[root@exadb1 app]# mkdir fs_ogg1 fs_ogg2
[root@exadb1 app]# chown oracle:oinstall fs_ogg1 fs_ogg2

End of work on machines. Now into the RAC database (EXADB) create users, DBFS content stores and file systems.

[oracle@exadb1 ~]$ sqlplus / as sysdba
...
SQL> CREATE TABLESPACE dbfs_ts_ogg1;SQL> col tablespace_name for a20
SQL> col file_name for a50
SQL> set lines 200
SQL> select TABLESPACE_NAME, FILE_NAME, BYTES from dba_data_files where tablespace_name like 'DBFS_TS%';

TABLESPACE_NAME      FILE_NAME                                               BYTES
-------------------- -------------------------------------------------- ----------
DBFS_TS_OGG1         +DATA/exadb/datafile/dbfs_ts_ogg1.269.838565847     104857600

SQL> CREATE USER dbfs_usr_ogg1 IDENTIFIED BY dbfs_usr_ogg1
DEFAULT TABLESPACE dbfs_ts_ogg1 QUOTA UNLIMITED ON dbfs_ts_ogg1;
User created.

SQL> GRANT CREATE SESSION, RESOURCE, CREATE VIEW, DBFS_ROLE TO dbfs_usr_ogg1;
Grant succeeded.

SQL> connect dbfs_usr_ogg1/dbfs_usr_ogg1
Connected.

SQL> @?/rdbms/admin/dbfs_create_filesystem.sql dbfs_ts_ogg1 ogg_home1
No errors.
--------
CREATE STORE:
begin dbms_dbfs_sfs.createFilesystem(store_name => 'FS_OGG_HOME1', tbl_name =>
'T_OGG_HOME1', tbl_tbs => 'dbfs_ts_ogg1', lob_tbs => 'dbfs_ts_ogg1',
do_partition => false, partition_key => 1, do_compress => false, compression =>
'', do_dedup => false, do_encrypt => false); end;
--------
REGISTER STORE:
begin dbms_dbfs_content.registerStore(store_name=> 'FS_OGG_HOME1', provider_name
=> 'sample1', provider_package => 'dbms_dbfs_sfs'); end;
--------
MOUNT STORE:
begin dbms_dbfs_content.mountStore(store_name=>'FS_OGG_HOME1',
store_mount=>'ogg_home1'); end;
--------
CHMOD STORE:
declare m integer; begin m := dbms_fuse.fs_chmod('/ogg_home1', 16895); end;
No errors.

SQL> @?/rdbms/admin/dbfs_create_filesystem.sql dbfs_ts_ogg1 ogg_trail1
No errors.
--------
CREATE STORE:
begin dbms_dbfs_sfs.createFilesystem(store_name => 'FS_OGG_TRAIL1', tbl_name =>
'T_OGG_TRAIL1', tbl_tbs => 'dbfs_ts_ogg1', lob_tbs => 'dbfs_ts_ogg1',
do_partition => false, partition_key => 1, do_compress => false, compression =>
'', do_dedup => false, do_encrypt => false); end;
--------
REGISTER STORE:
begin dbms_dbfs_content.registerStore(store_name=> 'FS_OGG_TRAIL1',
provider_name => 'sample1', provider_package => 'dbms_dbfs_sfs'); end;
--------
MOUNT STORE:
begin dbms_dbfs_content.mountStore(store_name=>'FS_OGG_TRAIL1',
store_mount=>'ogg_trail1'); end;
--------
CHMOD STORE:
declare m integer; begin m := dbms_fuse.fs_chmod('/ogg_trail1', 16895); end;
No errors.

Same steps for second user and related file systems (I’ll omit some messages)

SQL> connect / as sysdba
SQL> CREATE TABLESPACE dbfs_ts_ogg2;SQL> col tablespace_name for a20
SQL> col file_name for a50
SQL> set lines 200
SQL> select TABLESPACE_NAME, FILE_NAME, BYTES from dba_data_files where tablespace_name like 'DBFS_TS%';

TABLESPACE_NAME      FILE_NAME                                               BYTES
-------------------- -------------------------------------------------- ----------
DBFS_TS_OGG1         +DATA/exadb/datafile/dbfs_ts_ogg1.269.838565847     104857600
DBFS_TS_OGG2         +DATA/exadb/datafile/dbfs_ts_ogg2.270.838566105     104857600

SQL> CREATE USER dbfs_usr_ogg2 IDENTIFIED BY dbfs_usr_ogg2
DEFAULT TABLESPACE dbfs_ts_ogg2 QUOTA UNLIMITED ON dbfs_ts_ogg2;

SQL> GRANT CREATE SESSION, RESOURCE, CREATE VIEW, DBFS_ROLE TO dbfs_usr_ogg2;

SQL> connect dbfs_usr_ogg2/dbfs_usr_ogg2

SQL> @?/rdbms/admin/dbfs_create_filesystem.sql dbfs_ts_ogg2 ogg_home2
...
SQL> @?/rdbms/admin/dbfs_create_filesystem.sql dbfs_ts_ogg2 ogg_trail2
...

In order to use these file systems I must mount them using dbfs_client command from oracle users.
For my first try I’m satisfied with a simple password authentication, but for the real system I’ll must use a wallet.

echo "dbfs_usr_ogg1" > pwd_fs_ogg1
echo "dbfs_usr_ogg2" > pwd_fs_ogg2nohup dbfs_client dbfs_usr_ogg1@exadb /exa/app/fs_ogg1 < pwd_fs_ogg1 &
nohup dbfs_client dbfs_usr_ogg2@exadb /exa/app/fs_ogg2 < pwd_fs_ogg2 &

ls -la /exa/app/fs_ogg1/ogg_home1/
ls -la /exa/app/fs_ogg1/ogg_trail1/
ls -la /exa/app/fs_ogg2/ogg_home2/
ls -la /exa/app/fs_ogg2/ogg_trail2/

Just to try use these file systems I downloaded OGG 11.2 from here (into my usual path and use it through VirtualBox Shared Folder) and put the SW into the 2 SW homes

[oracle@exadb1 ~]$ cd /media/sf_OS/ogg
[oracle@exadb1 ogg]$ ll
total 87112
-rwxrwx--- 1 root vboxsf 89186858 Feb  3 16:51 ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[oracle@exadb1 ogg]$ unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
Archive:  ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
inflating: fbo_ggs_Linux_x64_ora11g_64bit.tar
inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.1.pdf
inflating: Oracle GoldenGate 11.2.1.0.1 README.txt
inflating: Oracle GoldenGate 11.2.1.0.1 README.doc[oracle@exadb1 ogg]$ cd /exa/app/fs_ogg1/ogg_home1
[oracle@exadb1 ogg_home1]$ tar -xvf /media/sf_OS/ogg/fbo_ggs_Linux_x64_ora11g_64bit.tar

[oracle@exadb1 ogg_home1]$ cd /exa/app/fs_ogg2/ogg_home2
[oracle@exadb1 ogg_home2]$ tar -xvf /media/sf_OS/ogg/fbo_ggs_Linux_x64_ora11g_64bit.tar

[oracle@exadb1 ogg_home2]$ ls -la /exa/app/fs_ogg1/ogg_home1/
[oracle@exadb1 ogg_home2]$ ls -la /exa/app/fs_ogg2/ogg_home2/

For a complete test create password files and run dbfs_client commands on the second machine.
I’m now able to work on the same file system from both machines (that is more than I needed !)

I didn’t find any typical exadata topic here. So this is applicable in every similar conditions (rdbms 11.2 RAC or not, linux client machine).

Next step will be add 2 custom OGG applications to the cluster !!

/*+ esp */

Oracle rdbms 12c – first look (for me)

I was curious about 12c, but I spent a lot of time on Exadata and I had no time for that.
At least I must prepare an environment (very simple) to be able to test something !!

Let me try.
I already have a VM with Oracle 6 because I installed for that months ago.

I’m surprised: the whole process now is really trivial. Actually is more difficult to install Flash player than Oracle 12c!

I’ll add a few comments and let screenshots show the sequence.

First of all, as root I bring the VM up to date

[root@oratest12 ~]# yum update

Than all that I need to modify on my VM to install 12c is completed with

[root@oratest12 ~]# yum install oracle-rdbms-server-12*

After that I have system parameters, users and groups configured.

My /etc/hosts looks like

[root@oratest12 ~]# more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 oratest12.oragroup.local
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

As usual I use VirtualBox Shared Folders as temporary storage for installation SW, that can be found on OTN.
After login and agreement on Oracle Policies, the 2 zip files for Oracle 12c 12.1.0.1.0 can be downloaded from here.

My shared folder path is mounted on /media/sf_STAGE and I put zip files under /media/sf_STAGE/Linux64
[Note: I mistyped "mounted" and I wrote "mojited" ... the Freud perspective could be interesting !!]

As root user I do

[root@oratest12 ~]# cd /media/sf_STAGE/Linux64/
[root@oratest12 Linux64]# unzip linuxamd64_12c_database_1of2.zip

[root@oratest12 Linux64]# unzip linuxamd64_12c_database_2of2.zip

Now I modify oracle users to make him able to use the shared folder

[root@oratest12 ~]# usermod -g oinstall -G dba,vboxsf oracle

and enable X-connection to display manager for oracle user

root@oratest12 ~]# xhost +
access control disabled, clients can connect from any host

Ready

[root@oratest12 ~]# su – oracle
[oracle@oratest12 ~]$ cd /media/sf_STAGE/Linux64/database/
[oracle@oratest12 database]$ ./runInstaller
Starting Oracle Universal Installer…Checking Temp space: must be greater than 500 MB.   Actual 10053 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4031 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-01-29_03-55-15PM. Please wait …

No updates from support
OraTest12 [Running] - Oracle VM VirtualBox_001

Skip SW updates
OraTest12 [Running] - Oracle VM VirtualBox_002

OraTest12 [Running] - Oracle VM VirtualBox_003

Server Class
OraTest12 [Running] - Oracle VM VirtualBox_004

OraTest12 [Running] - Oracle VM VirtualBox_005

Advanced install … I’m not sure, but I could configure better
OraTest12 [Running] - Oracle VM VirtualBox_006

OraTest12 [Running] - Oracle VM VirtualBox_007

Enterprise laptop …
OraTest12 [Running] - Oracle VM VirtualBox_008

Defaults
OraTest12 [Running] - Oracle VM VirtualBox_009

OraTest12 [Running] - Oracle VM VirtualBox_010

OraTest12 [Running] - Oracle VM VirtualBox_011

With sample pluggable database (I need extra storage space)
OraTest12 [Running] - Oracle VM VirtualBox_012

OraTest12 [Running] - Oracle VM VirtualBox_014

OraTest12 [Running] - Oracle VM VirtualBox_015

With sample schemas
OraTest12 [Running] - Oracle VM VirtualBox_013

Default
OraTest12 [Running] - Oracle VM VirtualBox_016

No cloud EM
OraTest12 [Running] - Oracle VM VirtualBox_017

Some more space, but I could test more
OraTest12 [Running] - Oracle VM VirtualBox_018

oracle  :-)
OraTest12 [Running] - Oracle VM VirtualBox_019

Defaults
OraTest12 [Running] - Oracle VM VirtualBox_020

OraTest12 [Running] - Oracle VM VirtualBox_021

And go!
OraTest12 [Running] - Oracle VM VirtualBox_023

Usual steps as root
OraTest12 [Running] - Oracle VM VirtualBox_024

[root@oratest12 ~]# /home/oracle/app/oraInventory/orainstRoot.sh
Changing permissions of /home/oracle/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.Changing groupname of /home/oracle/app/oraInventory to oinstall.
The execution of the script is complete.

and

[root@oratest12 ~]# /home/oracle/app/oracle/product/12.1.0/dbhome_1/root.sh
Performing root user operation for Oracle 12cThe following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME=  /home/oracle/app/oracle/product/12.1.0/dbhome_1Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin …
Copying oraenv to /usr/local/bin …
Copying coraenv to /usr/local/bin …Creating /etc/oratab file…
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

Configuration Assistants at work
OraTest12 [Running] - Oracle VM VirtualBox_025

OraTest12 [Running] - Oracle VM VirtualBox_026

OraTest12 [Running] - Oracle VM VirtualBox_027

OraTest12 [Running] - Oracle VM VirtualBox_028

OraTest12 [Running] - Oracle VM VirtualBox_029

OraTest12 [Running] - Oracle VM VirtualBox_030

DONE!!
OraTest12 [Running] - Oracle VM VirtualBox_031

Unlock all users for future test … (Passwords Management button)

OraTest12 [Running] - Oracle VM VirtualBox_032

End of installation
OraTest12 [Running] - Oracle VM VirtualBox_034

First look to Oracle 12c up and ready with its EM console.
OraTest12 [Running] - Oracle VM VirtualBox_035

/*+ esp */