{"id":3447,"date":"2018-06-20T10:07:30","date_gmt":"2018-06-20T13:07:30","guid":{"rendered":"https:\/\/dev.dbarj.com.br\/?p=3447"},"modified":"2018-06-20T15:26:06","modified_gmt":"2018-06-20T18:26:06","slug":"installing-oracle-database-on-arm-small-single-board-computer","status":"publish","type":"post","link":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/","title":{"rendered":"Installing Oracle Database on ARM small single-board computer"},"content":{"rendered":"<p>In this article I will describe how to install an Oracle Database in a\u00a0small single-board computer, making it the <strong>smallest Oracle DB server in the world<\/strong>! =]<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3449\" src=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180618_152644-e1529414431756-768x1024.jpg\" alt=\"\" width=\"384\" height=\"512\" srcset=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180618_152644-e1529414431756-768x1024.jpg 768w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180618_152644-e1529414431756-225x300.jpg 225w\" sizes=\"auto, (max-width: 384px) 100vw, 384px\" \/><\/p>\n<p>How is it possible? What hardware did I use? What is the performance of it?<\/p>\n<p>As there many questions and steps involved, I&#8217;ve split this article in the sections below:<\/p>\n<ol>\n<li><a href=\"#section1\"><strong>Why TinkerBoard and not RaspiberryPi3 ?<\/strong><\/a><\/li>\n<li><a href=\"#section2\"><strong>Preparing TinkerBoard<\/strong><\/a><\/li>\n<li><a href=\"#section3\"><strong>Setting up qemu.<\/strong><\/a><\/li>\n<li><a href=\"#section4\"><strong>Installing Oracle Linux i686 over Debian ARM<\/strong><\/a><\/li>\n<li><a href=\"#section5\"><strong>Installing Oracle Database 11.2 on Oracle Linux i686<\/strong><\/a><\/li>\n<li><a href=\"#section6\"><strong>Some performance testing<\/strong><\/a><\/li>\n<li><a href=\"#section7\"><strong>Conclusion<\/strong><\/a><\/li>\n<\/ol>\n<h4><span style=\"color: #800000;\">So let&#8217;s start!!<\/span><\/h4>\n<p><span id=\"section1\">\u00a0<\/span><\/p>\n<h3>\u00a01. Why TinkerBoard and not RaspiberryPi3 ?<\/h3>\n<p>First of all, for this appliance I didn&#8217;t use a RaspiberryPi, but a TinkerBoard made by ASUS. Why?<\/p>\n<p>Well, I have all current RaspiberryPi models (1,2,3) and recently Asus released <a href=\"https:\/\/www.asus.com\/Single-Board-Computer\/Tinker-Board\/\" target=\"_blank\" rel=\"noopener\">TinkerBoard<\/a>\u00a0which is a big RbPi competitor. It is little bit more expensive ( <a href=\"https:\/\/www.amazon.com\/Raspberry-Pi-RASPBERRYPI3-MODB-1GB-Model-Motherboard\/dp\/B01CD5VC92\" target=\"_blank\" rel=\"noopener\">US$ 35<\/a> vs <a href=\"https:\/\/www.amazon.com\/Tinker-board-RK3288-1-8GHz-Mali-T764\/dp\/B06VSBVQWS\" target=\"_blank\" rel=\"noopener\">US$ 58<\/a> in Amazon) but 30% faster accordingly some benchmarks. It is also a ARM based CPU and both have the exactly same shape, making it possible to use the same cases. I did some research in some other appliances (Banana Pi \/ Orange Pi \/ ODROID) and in my opinion TinkerBoard offers today (June-2018) the best benefit-cost ratio.<\/p>\n<table>\n<thead>\n<tr>\n<td><\/td>\n<td><strong>Raspberry Pi model 3 B+<\/strong><\/td>\n<td><strong>ASUS Tinker Board<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>CPU<\/strong><\/td>\n<td>Cortex-A53 Quad Core @ 1.4GHz<\/td>\n<td>Cortex A17 Quad Core @ 1.8GHz<\/td>\n<\/tr>\n<tr>\n<td><strong>RAM<\/strong><\/td>\n<td>1 GB LPDDR2 (900 MHz)<\/td>\n<td>2 GB LPDDR3 (dual channel)<\/td>\n<\/tr>\n<tr>\n<td><strong>GPU<\/strong><\/td>\n<td>Broadcom VideoCore IV @ 400 MHz<\/td>\n<td>Mali-T764 @ 600MHz<\/td>\n<\/tr>\n<tr>\n<td><strong>Network (LAN)<\/strong><\/td>\n<td>10\/100\/1000 Mbps (~230 Mbps real world)<\/td>\n<td>10\/100\/1000 Mbps<\/td>\n<\/tr>\n<tr>\n<td><strong>Network (WiFi)<\/strong><\/td>\n<td>2.4GHz or 5GHz 802.11n\/ac<\/td>\n<td>2.4GHz 802.11n<\/td>\n<\/tr>\n<tr>\n<td><strong>Audio interface<\/strong><\/td>\n<td>48kHz \/ 16 bit<\/td>\n<td>192kHz \/ 16 bit<\/td>\n<\/tr>\n<tr>\n<td><strong>GPIO<\/strong><\/td>\n<td>40 pin header (not color coded)<\/td>\n<td>40 pin header (color coded)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p id=\"BvQEyMs\" style=\"text-align: right;\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"577\" class=\"alignnone size-full wp-image-3452 \" src=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b290defd8fba.png\" alt=\"\" srcset=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b290defd8fba.png 900w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b290defd8fba-300x192.png 300w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b290defd8fba-768x492.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><span style=\"font-size: 8pt;\">(Source:\u00a0http:\/\/www.geeks3d.com\/)<\/span><\/p>\n<p>Some benchmarks:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.geeks3d.com\/20180112\/tested-asus-tinker-board-vs-raspberry-pi-3-cpu-and-gpu-benchmarks\/\" target=\"_blank\" rel=\"noopener\">http:\/\/www.geeks3d.com\/20180112\/tested-asus-tinker-board-vs-raspberry-pi-3-cpu-and-gpu-benchmarks\/<\/a><\/li>\n<li><a href=\"https:\/\/mybroadband.co.za\/news\/hardware\/195442-asus-tinker-board-vs-raspberry-pi-3-specifications-and-pricing.html\" target=\"_blank\" rel=\"noopener\">https:\/\/mybroadband.co.za\/news\/hardware\/195442-asus-tinker-board-vs-raspberry-pi-3-specifications-and-pricing.html<\/a><\/li>\n<li><a href=\"https:\/\/www.jeffgeerling.com\/blog\/2018\/asus-tinker-board-compelling-upgrade-raspberry-pi-3-b\" target=\"_blank\" rel=\"noopener\">https:\/\/www.jeffgeerling.com\/blog\/2018\/asus-tinker-board-compelling-upgrade-raspberry-pi-3-b<\/a><\/li>\n<\/ul>\n<p>The best advantages are the <strong>2GB RAM<\/strong> and faster CPU. With the 1GB of RaspiberryPi 3 would be hard to run an Oracle Database. The 2.0 USB ports limited a lot the I\/O throughput, but it&#8217;s still hard to find some board with 3.0.<\/p>\n<p>Most of those small-board computers use ARM due to costs. Oracle 11.2.0.4 binaries are provided only for the platforms below, and ARM is not one in the list:<\/p>\n<p id=\"labblmp\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3455 size-medium\" src=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b2912e76da84-205x300.png\" alt=\"\" width=\"205\" height=\"300\" srcset=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b2912e76da84-205x300.png 205w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b2912e76da84.png 396w\" sizes=\"auto, (max-width: 205px) 100vw, 205px\" \/><\/p>\n<p>You may be asking, how you are going to install a Oracle Database in an ARM based CPU if Oracle don&#8217;t provide binaries for it? My solution was to emulate x86 over ARM using qemu:<\/p>\n<p id=\"cGsDTcq\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3457 size-medium\" src=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b291952b399e-300x243.png\" alt=\"\" width=\"300\" height=\"243\" srcset=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b291952b399e-300x243.png 300w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b291952b399e.png 460w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Of course that adding all those layers between CPU and Oracle Database will impact performance, but that&#8217;s what we have for today.<\/p>\n<p><em>Note: there are some other small single-boards like\u00a0<strong>86Duino<\/strong> and\u00a0<strong>SolidPC Q4<\/strong> that have x86 based CPUs and would make life easier. However, I didn&#8217;t have one to try, they are expensive and have also low RAM memory to run an Oracle DB.<\/em><br \/>\n<span id=\"section2\">\u00a0<\/span><\/p>\n<h3>2.\u00a0Preparing TinkerBoard<\/h3>\n<p>First step is to put the peaces together. For this Database Appliance (I will call it miniODA), I used:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.amazon.com\/Tinker-board-RK3288-1-8GHz-Mali-T764\/dp\/B06VSBVQWS\" target=\"_blank\" rel=\"noopener\">TinkerBoard<\/a><\/li>\n<li><a href=\"https:\/\/www.amazon.com\/Zebra-Black-Tinker-Board-C4Labs\/dp\/B072PRJ7GC\/\" target=\"_blank\" rel=\"noopener\">Black Case<\/a><\/li>\n<li>16 GB Micro SD HC1<\/li>\n<li>External 500 GB SSD (But I&#8217;m using only 20GB of it)<\/li>\n<li>\n<p class=\"p1\">2.5A Power Supply<\/p>\n<\/li>\n<\/ul>\n<p>Technically I could make everything fit in a <strong>32GB Micro SD<\/strong>, however, to improve a bit the I\/O performance, I preferred to store my database in the SSD drive. Using an external HDD instead of a SSD will give you probably the same performance is the I\/O bottleneck is the 2.0 USB port. I will talk more about that in the performance section.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-3451\" src=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180612_080526-1024x768.jpg\" alt=\"\" width=\"870\" height=\"653\" srcset=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180612_080526-1024x768.jpg 1024w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180612_080526-300x225.jpg 300w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180612_080526-768x576.jpg 768w\" sizes=\"auto, (max-width: 870px) 100vw, 870px\" \/><\/p>\n<p>After putting everything together, I downloaded the official <a href=\"https:\/\/www.asus.com\/uk\/Single-Board-Computer\/Tinker-Board\/HelpDesk_Download\/\" target=\"_blank\" rel=\"noopener\">Debian OS image<\/a> for TinkerBoard provided by ASUS, and burned the image on the SD using dd:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ sudo dd if=~\/Desktop\/Tinker\\ Board\/20180222-tinker-board-linaro-stretch-alip-v2.0.5.img of=\/dev\/rdisk2 bs=1m<\/pre>\n<p>After plugin the SD and turning it on for the first time, I didn&#8217;t need a monitor or a keyboard. I just plugged the ethernet cable, retrieved the IP acquired in my router page and connected via ssh using default linaro\/linaro user and password.<\/p>\n<p>My further steps were:<\/p>\n<ul>\n<li>Configure wireless connection in\u00a0\/etc\/wpa_supplicant\/wpa_supplicant.conf and disconnect ethernet cable.<\/li>\n<li>Add ssh key and disable password authentication \/etc\/ssh\/sshd_config: &#8220;PasswordAuthentication no&#8221;.<\/li>\n<li>Update all the packages via apt-get update \/ upgrade \/ autoremove.<\/li>\n<li>Configure and start vncserver.<\/li>\n<\/ul>\n<p>And that&#8217;s it. In 5 minutes my miniODA was ready for Database installation!<br \/>\n<span id=\"section3\">\u00a0<\/span><\/p>\n<h3>3. Setting up qemu<\/h3>\n<p>As I said in section 1, as oracle does not provide yet a Oracle DB installation for ARM based CPU, my solution was to emulate a minimal Oracle Linux with qemu.<\/p>\n<p>To install qemu in my Debian OS, I needed some extra packages:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">linaro@tinkerboard:~$ sudo su -\r\nroot@tinkerboard:~# apt-get install -y qemu virt-manager virt-viewer \r\nroot@tinkerboard:~# apt-get install -y libvirt-daemon-system\r\nroot@tinkerboard:~# apt-get install -y ebtables<\/pre>\n<p>Basically I created a VM machine named <strong>linux-i686<\/strong> with:<\/p>\n<ul>\n<li>i686 architecture.<\/li>\n<li>1.5 GB RAM.<\/li>\n<li>1 socket with 4 CPUs.<\/li>\n<li>20 GB SDD created on my external SDD.<\/li>\n<li>NAT network connection.<\/li>\n<\/ul>\n<p>Why I&#8217;ve choosed x86 over x64? Basically because the arm processor of TinkerBoard is 32 bits and I also want to reduce complexity as my VM RAM will only be 1.5 GB.<\/p>\n<p id=\"DArunax\"><img loading=\"lazy\" decoding=\"async\" width=\"2216\" height=\"1748\" class=\"alignnone size-full wp-image-3459 \" src=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b29288ed288e.png\" alt=\"\" srcset=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b29288ed288e.png 2216w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b29288ed288e-300x237.png 300w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b29288ed288e-768x606.png 768w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b29288ed288e-1024x808.png 1024w\" sizes=\"auto, (max-width: 2216px) 100vw, 2216px\" \/><\/p>\n<p>Below is the dumpxml of the qemu VM:<\/p>\n<pre class=\"height-set:true height:100 lang:xhtml decode:true\">root@tinkerboard:~# virsh dumpxml linux-i686\r\n&lt;domain type='qemu' id='2'&gt;\r\n  &lt;name&gt;linux-i686&lt;\/name&gt;\r\n  &lt;uuid&gt;f645cd60-33ae-4eaa-839c-c0fc810668aa&lt;\/uuid&gt;\r\n  &lt;memory unit='KiB'&gt;1572864&lt;\/memory&gt;\r\n  &lt;currentMemory unit='KiB'&gt;1572864&lt;\/currentMemory&gt;\r\n  &lt;vcpu placement='static'&gt;4&lt;\/vcpu&gt;\r\n  &lt;resource&gt;\r\n    &lt;partition&gt;\/machine&lt;\/partition&gt;\r\n  &lt;\/resource&gt;\r\n  &lt;os&gt;\r\n    &lt;type arch='i686' machine='pc-i440fx-2.8'&gt;hvm&lt;\/type&gt;\r\n    &lt;boot dev='cdrom'\/&gt;\r\n    &lt;boot dev='hd'\/&gt;\r\n    &lt;bootmenu enable='yes'\/&gt;\r\n  &lt;\/os&gt;\r\n  &lt;features&gt;\r\n    &lt;acpi\/&gt;\r\n    &lt;apic\/&gt;\r\n    &lt;pae\/&gt;\r\n  &lt;\/features&gt;\r\n  &lt;clock offset='utc'&gt;\r\n    &lt;timer name='rtc' tickpolicy='catchup'\/&gt;\r\n    &lt;timer name='pit' tickpolicy='delay'\/&gt;\r\n    &lt;timer name='hpet' present='no'\/&gt;\r\n  &lt;\/clock&gt;\r\n  &lt;on_poweroff&gt;destroy&lt;\/on_poweroff&gt;\r\n  &lt;on_reboot&gt;restart&lt;\/on_reboot&gt;\r\n  &lt;on_crash&gt;restart&lt;\/on_crash&gt;\r\n  &lt;pm&gt;\r\n    &lt;suspend-to-mem enabled='no'\/&gt;\r\n    &lt;suspend-to-disk enabled='no'\/&gt;\r\n  &lt;\/pm&gt;\r\n  &lt;devices&gt;\r\n    &lt;emulator&gt;\/usr\/bin\/qemu-system-i386&lt;\/emulator&gt;\r\n    &lt;disk type='file' device='disk'&gt;\r\n      &lt;driver name='qemu' type='qcow2'\/&gt;\r\n      &lt;source file='\/media\/linaro\/Samsung_T3\/TinkerBoard\/images\/linux-i686.qcow2'\/&gt;\r\n      &lt;backingStore\/&gt;\r\n      &lt;target dev='vda' bus='virtio'\/&gt;\r\n      &lt;alias name='virtio-disk0'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'\/&gt;\r\n    &lt;\/disk&gt;\r\n    &lt;disk type='file' device='cdrom'&gt;\r\n      &lt;driver name='qemu' type='raw'\/&gt;\r\n      &lt;backingStore\/&gt;\r\n      &lt;target dev='hdb' bus='ide'\/&gt;\r\n      &lt;readonly\/&gt;\r\n      &lt;alias name='ide0-0-1'\/&gt;\r\n      &lt;address type='drive' controller='0' bus='0' target='0' unit='1'\/&gt;\r\n    &lt;\/disk&gt;\r\n    &lt;controller type='usb' index='0' model='ich9-ehci1'&gt;\r\n      &lt;alias name='usb'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'\/&gt;\r\n    &lt;\/controller&gt;\r\n    &lt;controller type='usb' index='0' model='ich9-uhci1'&gt;\r\n      &lt;alias name='usb'\/&gt;\r\n      &lt;master startport='0'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'\/&gt;\r\n    &lt;\/controller&gt;\r\n    &lt;controller type='usb' index='0' model='ich9-uhci2'&gt;\r\n      &lt;alias name='usb'\/&gt;\r\n      &lt;master startport='2'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'\/&gt;\r\n    &lt;\/controller&gt;\r\n    &lt;controller type='usb' index='0' model='ich9-uhci3'&gt;\r\n      &lt;alias name='usb'\/&gt;\r\n      &lt;master startport='4'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'\/&gt;\r\n    &lt;\/controller&gt;\r\n    &lt;controller type='virtio-serial' index='0'&gt;\r\n      &lt;alias name='virtio-serial0'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'\/&gt;\r\n    &lt;\/controller&gt;\r\n    &lt;controller type='ide' index='0'&gt;\r\n      &lt;alias name='ide'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'\/&gt;\r\n    &lt;\/controller&gt;\r\n    &lt;controller type='pci' index='0' model='pci-root'&gt;\r\n      &lt;alias name='pci.0'\/&gt;\r\n    &lt;\/controller&gt;\r\n    &lt;interface type='network'&gt;\r\n      &lt;mac address='52:54:00:13:4e:f1'\/&gt;\r\n      &lt;source network='default' bridge='virbr0'\/&gt;\r\n      &lt;target dev='vnet0'\/&gt;\r\n      &lt;model type='virtio'\/&gt;\r\n      &lt;alias name='net0'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'\/&gt;\r\n    &lt;\/interface&gt;\r\n    &lt;channel type='unix'&gt;\r\n      &lt;source mode='bind' path='\/var\/lib\/libvirt\/qemu\/channel\/target\/domain-2-linux-i686\/org.qemu.guest_agent.0'\/&gt;\r\n      &lt;target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'\/&gt;\r\n      &lt;alias name='channel0'\/&gt;\r\n      &lt;address type='virtio-serial' controller='0' bus='0' port='1'\/&gt;\r\n    &lt;\/channel&gt;\r\n    &lt;input type='tablet' bus='usb'&gt;\r\n      &lt;alias name='input0'\/&gt;\r\n      &lt;address type='usb' bus='0' port='1'\/&gt;\r\n    &lt;\/input&gt;\r\n    &lt;input type='mouse' bus='ps2'&gt;\r\n      &lt;alias name='input1'\/&gt;\r\n    &lt;\/input&gt;\r\n    &lt;input type='keyboard' bus='ps2'&gt;\r\n      &lt;alias name='input2'\/&gt;\r\n    &lt;\/input&gt;\r\n    &lt;graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'&gt;\r\n      &lt;listen type='address' address='127.0.0.1'\/&gt;\r\n    &lt;\/graphics&gt;\r\n    &lt;video&gt;\r\n      &lt;model type='vga' vram='16384' heads='1' primary='yes'\/&gt;\r\n      &lt;alias name='video0'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'\/&gt;\r\n    &lt;\/video&gt;\r\n    &lt;memballoon model='virtio'&gt;\r\n      &lt;stats period='5'\/&gt;\r\n      &lt;alias name='balloon0'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'\/&gt;\r\n    &lt;\/memballoon&gt;\r\n  &lt;\/devices&gt;\r\n  &lt;seclabel type='none' model='none'\/&gt;\r\n  &lt;seclabel type='dynamic' model='dac' relabel='yes'&gt;\r\n    &lt;label&gt;+64055:+64055&lt;\/label&gt;\r\n    &lt;imagelabel&gt;+64055:+64055&lt;\/imagelabel&gt;\r\n  &lt;\/seclabel&gt;\r\n&lt;\/domain&gt;<\/pre>\n<p>And the dumpxml for NAT network:<\/p>\n<pre class=\"lang:xhtml decode:true\">root@tinkerboard:~# virsh net-dumpxml default\r\n&lt;network connections='1'&gt;\r\n  &lt;name&gt;default&lt;\/name&gt;\r\n  &lt;uuid&gt;c14d97fd-208b-4c23-9d07-8d8ba970d56c&lt;\/uuid&gt;\r\n  &lt;forward mode='nat'&gt;\r\n    &lt;nat&gt;\r\n      &lt;port start='1024' end='65535'\/&gt;\r\n    &lt;\/nat&gt;\r\n  &lt;\/forward&gt;\r\n  &lt;bridge name='virbr0' stp='on' delay='0'\/&gt;\r\n  &lt;mac address='52:54:00:23:43:ab'\/&gt;\r\n  &lt;ip address='192.168.122.1' netmask='255.255.255.0'&gt;\r\n    &lt;dhcp&gt;\r\n      &lt;range start='192.168.122.2' end='192.168.122.254'\/&gt;\r\n      &lt;host mac='52:54:00:13:4e:f1' name='linux-i686' ip='192.168.122.10'\/&gt;\r\n    &lt;\/dhcp&gt;\r\n  &lt;\/ip&gt;\r\n&lt;\/network&gt;<\/pre>\n<p>After creating my VM named linux-i686, I&#8217;ve also followed <a href=\"https:\/\/aboullaite.me\/kvm-qemo-forward-ports-with-iptables\/\" target=\"_blank\" rel=\"noopener\">this article<\/a>\u00a0to redirect any connection on my Tinkerboard port 1521 to my VM nat ip.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ iptables -I FORWARD -o virbr0 -d  192.168.122.10 -j ACCEPT\r\n$ iptables -t nat -I PREROUTING -p tcp --dport 1521 -j DNAT --to 192.168.122.10:1521\r\n$ iptables -I FORWARD -o virbr0 -d  192.168.1.140 -j ACCEPT\r\n$ iptables -t nat -A POSTROUTING -s 192.168.122.0\/24 -j MASQUERADE\r\n$ iptables -A FORWARD -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT\r\n$ iptables -A FORWARD -i virbr0 -o eth0 -j ACCEPT\r\n$ iptables -A FORWARD -i virbr0 -o lo -j ACCEPT<\/pre>\n<p><span id=\"section4\">\u00a0<\/span><\/p>\n<h3>4.\u00a0Installing Oracle Linux i686 over Debian ARM<\/h3>\n<p>Now it&#8217;s time to install Linux x86 in the newly created qemu VM. The OS I&#8217;ve chosen was OracleLinux 6.9-i686. Oracle does not provide Oracle Linux 7.x in 32 bits version, so this is the option was the way to go. I tried also to use Debian on x86 for performance, but Oracle Database is not supported on Debian and I had to do so many workarounds that database become extremely unstable. So Oracle Linux was the best option.<\/p>\n<p id=\"UkMNvYf\"><img loading=\"lazy\" decoding=\"async\" width=\"2272\" height=\"1804\" class=\"alignnone size-full wp-image-3461 \" src=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b2a39fc12a2f.png\" alt=\"\" srcset=\"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b2a39fc12a2f.png 2272w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b2a39fc12a2f-300x238.png 300w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b2a39fc12a2f-768x610.png 768w, https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/img_5b2a39fc12a2f-1024x813.png 1024w\" sizes=\"auto, (max-width: 2272px) 100vw, 2272px\" \/><\/p>\n<p>During the installation process, I&#8217;ve disabled LVM and swap partition, splitting the 20 GB disk in:<\/p>\n<ul>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">\/dev\/vda1\u00a0 \/boot\u00a0 \u00a0 480 MBs<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">\/dev\/vda2\u00a0 \/\u00a0 \u00a0 \u00a0 19660 MBs<\/span><\/li>\n<\/ul>\n<p>The OS needed to be the lightest possible. So I did a minimal Oracle Linux installation (something around 300 rpms, no X Server) and added just the packages below after installation was completed:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@olinuxtb ~]# yum install -y yum-utils\r\n[root@olinuxtb ~]# yum update -y\r\n[root@olinuxtb ~]# yum install -y openssh-clients # For scp\r\n[root@olinuxtb ~]# yum install -y wget\r\n[root@olinuxtb ~]# yum install -y unzip\r\n[root@olinuxtb ~]# yum install -y man\r\n[root@olinuxtb ~]# yum install -y oracle-rdbms-server-11gR2-preinstall<\/pre>\n<p>After all RPMs installed, the OS was occupying around 2.5 GB of my 20 GB VM. I&#8217;ve also disabled some unnecessary services:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@olinuxtb ~]# chkconfig iptables off\r\n[root@olinuxtb ~]# chkconfig ip6tables off\r\n[root@olinuxtb ~]# chkconfig nfslock off\r\n[root@olinuxtb ~]# chkconfig rpcbind off\r\n[root@olinuxtb ~]# chkconfig rpcgssd off\r\n[root@olinuxtb ~]# chkconfig rpcidmapd off\r\n[root@olinuxtb ~]# chkconfig kdump off<\/pre>\n<p><span id=\"section5\">\u00a0<\/span><\/p>\n<h3>5. Installing Oracle Database 11.2 on Oracle Linux i686<\/h3>\n<p>Next and final step was to install and create a new Oracle Database. I&#8217;ve chosen 11g as Oracle does not provide 12c in 32 bits format. I used \/u01 for database installation files and \/u02 for oracle datafiles.<\/p>\n<p>After tranfering the <a href=\"https:\/\/support.oracle.com\/epmos\/faces\/DocumentDisplay?id=1454618.1\" target=\"_blank\" rel=\"noopener\">11.2.0.4 database installation zip files (1\/7 and 2\/7)<\/a> and unzipping them, I called runInstaller in cli mode.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[root@olinuxtb ~]# mkdir \/u01 \/u02\r\n[root@olinuxtb ~]# chown oracle: \/u01\/ \/u02\/\r\n[oracle@olinuxtb ~]$ .\/runInstaller -responseFile \/home\/oracle\/database\/response\/db_install.rsp -showProgress -silent -ignoreSysPreReqs<\/pre>\n<p>When installation was completed, I also applied both DB and OJVM latest PSUs (April-2018):<\/p>\n<ul>\n<li>p27338049_112040_LINUX.zip<\/li>\n<li>p27475598_112040_LINUX.zip<\/li>\n<\/ul>\n<p>Everything was ready for database creation. Now l had to create this database the smallest and lesser complex possible. So I did via &#8220;CREATE DATABASE&#8221; statement:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ orapwd file=$ORACLE_HOME\/dbs\/orapworcl\r\n\r\n$ cat &lt;&lt;EOF &gt;&gt; \/etc\/oratab\r\norcl:$ORACLE_HOME:Y\r\nEOF\r\n\r\n$ cat &lt;&lt;EOF &gt; $ORACLE_HOME\/dbs\/initorcl.ora\r\ndb_name='orcl'\r\nsga_target=500M\r\npga_aggregate_target=300M\r\nprocesses=150\r\naudit_file_dest='\/u02\/adump\/'\r\naudit_trail='none'\r\ndb_block_size=8192\r\ndb_domain=''\r\ndiagnostic_dest='\/u02\/'\r\ndispatchers='(PROTOCOL=TCP)(SERVICE=orclXDB)'\r\nopen_cursors=300\r\nremote_login_passwordfile='EXCLUSIVE'\r\nundo_tablespace='UNDOTBS1'\r\ncontrol_files = '\/u02\/oradata\/control1.ctl'\r\ncompatible ='11.2.0.4'\r\nEOF\r\n\r\n$ mkdir \/u02\/oradata\/\r\n$ mkdir \/u02\/adump\/\r\n\r\n$ sqlplus \/ as sysdba &lt;&lt;EOF\r\ncreate spfile from pfile;\r\nstartup nomount;\r\nEOF\r\n\r\n$ sqlplus \/ as sysdba &lt;&lt;EOF\r\nCREATE DATABASE orcl\r\nUSER SYS IDENTIFIED BY \"Oracle.123\"\r\nUSER SYSTEM IDENTIFIED BY \"Oracle.123\"\r\nLOGFILE GROUP 1 ('\/u02\/oradata\/redo01.log') SIZE 50M,\r\nGROUP 2 ('\/u02\/oradata\/redo02.log') SIZE 50M,\r\nGROUP 3 ('\/u02\/oradata\/redo03.log') SIZE 50M\r\nMAXLOGFILES 5\r\nMAXLOGMEMBERS 5\r\nMAXLOGHISTORY 1\r\nMAXDATAFILES 100\r\nCHARACTER SET US7ASCII\r\nNATIONAL CHARACTER SET AL16UTF16\r\nEXTENT MANAGEMENT LOCAL\r\nDATAFILE '\/u02\/oradata\/system01.dbf' SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 1G\r\nSYSAUX\r\nDATAFILE '\/u02\/oradata\/sysaux01.dbf' SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 1G\r\nDEFAULT TABLESPACE USERS\r\nDATAFILE '\/u02\/oradata\/users01.dbf' SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 1G SEGMENT SPACE MANAGEMENT AUTO\r\nDEFAULT TEMPORARY TABLESPACE TEMPTS1\r\nTEMPFILE '\/u02\/oradata\/temp01.dbf' SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 100M\r\nUNDO TABLESPACE UNDOTBS1\r\nDATAFILE '\/u02\/oradata\/undotbs01.dbf' SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 100M;\r\nEOF\r\n\r\n$ sqlplus \/ as sysdba &lt;&lt;EOF\r\n@?\/rdbms\/admin\/catalog.sql\r\n@?\/rdbms\/admin\/catproc.sql\r\nEOF\r\n\r\n$ sqlplus system\/Oracle.123 &lt;&lt;EOF\r\n@?\/sqlplus\/admin\/pupbld.sql\r\nEOF\r\n\r\n$ mkdir \/u02\/backup\r\n\r\n$ rman target \/ &lt;&lt;EOF\r\nshutdown immediate;\r\nstartup mount;\r\nCONFIGURE COMPRESSION ALGORITHM 'HIGH' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD FALSE;\r\nbackup as compressed backupset database format '\/u02\/backup\/%U';\r\nalter database open;\r\nEOF<\/pre>\n<p>After the database get created, all datafiles and redologs combined had less than 600 MBs in size while the backup had 40 MBs:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">[oracle@olinuxtb ~]$ du -sh \/u02\/*\r\n416K\t\/u02\/adump\r\n40M\t\/u02\/backup\r\n14M\t\/u02\/diag\r\n570M\t\/u02\/oradata<\/pre>\n<p>I&#8217;ve also created some DEMO schemas (HR,OE,PM,IX,SH,BI) to play later with performance:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ sqlplus \/ as sysdba &lt;&lt;EOF\r\nCREATE TABLESPACE \"EXAMPLE\" DATAFILE\r\n'\/u02\/oradata\/example01.dbf' SIZE 10M\r\nAUTOEXTEND ON NEXT 1M MAXSIZE 500M\r\nLOGGING ONLINE PERMANENT BLOCKSIZE 8K\r\nEXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT\r\nNOCOMPRESS SEGMENT SPACE MANAGEMENT MANUAL;\r\nEOF\r\n\r\n$ wget https:\/\/github.com\/oracle\/db-sample-schemas\/archive\/master.zip\r\n$ unzip master.zip\r\n$ rm -f master.zip\r\n$ cd db-sample-schemas-master\r\n$ perl -p -i.bak -e 's#__SUB__CWD__#'$(pwd)'#g' *.sql *\/*.sql *\/*.dat\r\n\r\n$ lsnrctl start\r\n\r\n$ sqlplus system\/Oracle.123 &lt;&lt;EOF\r\n@mksample Oracle.123 Oracle.123 HR OE PM IX SH BI example tempts1 \/home\/oracle\/db-sample-schemas-master localhost:1521\/orcl\r\nEOF<\/pre>\n<p><span id=\"section6\">\u00a0<\/span><\/p>\n<h3>6. Some performance testing<\/h3>\n<p>Finally it was time to test the performance of my US$ 60 <strong>miniODA.<\/strong> I had to believe and have faith<br \/>\nthat it could beat a US$ 1M Exadata appliance!<\/p>\n<p>My first problem was the I\/O of the USB 2.0 ports:<\/p>\n<p>In DebianOS layer:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">linaro@tinkerboard:~$ dd if=\/dev\/zero of=\/media\/linaro\/Samsung_T3\/testfile bs=1G count=1 oflag=direct\r\n1+0 records in\r\n1+0 records out\r\n1073741824 bytes (1.1 GB, 1.0 GiB) copied, 33.7197 s, 31.8 MB\/s<\/pre>\n<p>This ~ 30 MB\/s is the limit for USB 2.0. So this can&#8217;t be improved unless I change the storage model to emmc.<\/p>\n<p>In Oracle Linux layer:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">[oracle@olinuxtb ~]$ dd if=\/dev\/zero of=\/tmp\/testfile bs=100M count=1 oflag=direct\r\n1+0 records in\r\n1+0 records out\r\n104857600 bytes (105 MB) copied, 14.898 s, 7.0 MB\/s<\/pre>\n<p>So my I\/O speed limit for Database was around <strong>7 MB\/s<\/strong>!<\/p>\n<p>As I&#8217;m not a qemu expert, I tried to improve the disk performance by trial and error, playing with the cache and IO modes, but I couldn&#8217;t get better results.<\/p>\n<p>So let me give the timings I computed:<\/p>\n<ul>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">Start Tinkerboard until Debian get fully ready ~ 30 seconds<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">Start qemu Oracle Linux 6.9 ~ 10 minutes<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">Start Oracle DB 11gR2 ~ 40 minutes<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">Login on Database ~ 2 minutes<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">Select 1 from dual ~ 5 seconds<\/span><\/li>\n<\/ul>\n<p>Impressive&#8230;<\/p>\n<p>Just an example of Oracle Startup:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">linaro@tinkerboard:~$ ssh oracle@192.168.122.10\r\noracle@192.168.122.10's password: \r\nLast login: Mon Jun 18 12:12:04 2018\r\n[oracle@olinuxtb ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 11.2.0.4.0 Production on Mon Jun 18 14:13:13 2018\r\n\r\nCopyright (c) 1982, 2013, Oracle.  All rights reserved.\r\n\r\nConnected to an idle instance.\r\n\r\nSQL&gt; startup;\r\nORACLE instance started.\r\n\r\nTotal System Global Area  523108352 bytes\r\nFixed Size                  1365740 bytes\r\nVariable Size             213911828 bytes\r\nDatabase Buffers          301989888 bytes\r\nRedo Buffers                5840896 bytes\r\nDatabase mounted.\r\nDatabase opened.\r\nSQL&gt; select systimestamp from dual;\r\n\r\nSYSTIMESTAMP\r\n---------------------------------------------------------------------------\r\n18-JUN-18 02.53.47.320532 PM -04:00\r\n\r\nSQL&gt; exit\r\nDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production\r\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\r\n[oracle@olinuxtb ~]$<\/pre>\n<p>The database login time was so badly slow that I had to add a &#8220;sqlnet.inbound_connect_timout=600&#8221; in sqlnet.ora to avoid timeouts.<\/p>\n<p>Some queries, after first execution, got also better result times thanks to shared pool and buffer cache:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">$ sqlplus system\/Oracle.123@\\\"192.168.1.140\/orcl\\\"\r\n\r\nSQL*Plus: Release 12.1.0.2.0 Production on Mon Jun 18 17:01:08 2018\r\n\r\nCopyright (c) 1982, 2016, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production\r\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\r\n\r\nSQL&gt; set timing on\r\nSQL&gt; select 1 from dual;\r\n\r\n\t 1\r\n----------\r\n\t 1\r\n\r\nElapsed: 00:00:09.96\r\nSQL&gt; \/\r\n\r\n\t 1\r\n----------\r\n\t 1\r\n\r\nElapsed: 00:00:01.93\r\nSQL&gt; \/\r\n\r\n\t 1\r\n----------\r\n\t 1\r\n\r\nElapsed: 00:00:04.38\r\nSQL&gt; select count(*) from dba_objects;\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:06:21.90\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:01:01.99\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:02:15.16\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:00:35.57\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:00:20.05\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:00:03.73\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:00:03.54\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:00:01.84\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n     14023\r\n\r\nElapsed: 00:00:04.79\r\nSQL&gt; select count(*) from dba_objects where object_type='TABLE';\r\n\r\n  COUNT(*)\r\n----------\r\n      1219\r\n\r\nElapsed: 00:00:59.80\r\nSQL&gt; \/\r\n\r\n  COUNT(*)\r\n----------\r\n      1219\r\n\r\nElapsed: 00:00:05.31\r\nSQL&gt; exit<\/pre>\n<p>I&#8217;ve also downloaded swingbench but due to login timings I couldn&#8217;t make it even connect.<br \/>\n<span id=\"section7\">\u00a0<\/span><\/p>\n<h3>7. Conclusion<\/h3>\n<p>It was funny to play with my US$ 60 miniODA. However, this is unusable as an Oracle Database Server. Maybe if I had an\u00a0emmc storage + ARM database binaries (or a x86 small single-board), I could make it run with an acceptable performance, but not slow as hell.<\/p>\n<p>Now it&#8217;s time to take a backup and make a better use of this hardware. =]<\/p>\n<b>Have you enjoyed? Please leave a comment or give a ?!<\/b>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style2 like-3447 jlk' href='javascript:void(0)' data-task='like' data-post_id='3447' data-nonce='b7aaf4ff99' rel='nofollow'><img class='wti-pixel' src='https:\/\/dev.dbarj.com.br\/wp-content\/plugins\/wti-like-post\/images\/pixel.gif' title='Like' \/><span class='lc-3447 lc'>+14<\/span><\/a><\/div><\/div> <div class='status-3447 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>In this article I will describe how to install an Oracle Database in a\u00a0small single-board computer, making it the smallest Oracle DB server in the world! =] How is it possible? What hardware did I use? What is the performance of it? As there many questions and steps involved, I&#8217;ve split this article in the &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/\">Continue reading<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-3447","post","type-post","status-publish","format-standard","hentry","category-database-en","item-wrap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Installing Oracle Database on ARM small single-board computer - DBA - Rodrigo Jorge - Oracle Tips and Guides<\/title>\n<meta name=\"description\" content=\"In this article I will describe how to install an Oracle Database in a\u00a0small single-board computer, making it the smallest Oracle DB server in the world!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DBA RJ\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/\"},\"author\":{\"name\":\"DBA RJ\",\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"headline\":\"Installing Oracle Database on ARM small single-board computer\",\"datePublished\":\"2018-06-20T13:07:30+00:00\",\"dateModified\":\"2018-06-20T18:26:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/\"},\"wordCount\":1438,\"commentCount\":10,\"publisher\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"image\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/dev.dbarj.com.br\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/P_20180618_152644-e1529414431756-768x1024.jpg\",\"articleSection\":[\"Oracle Database General\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/\",\"url\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/\",\"name\":\"Installing Oracle Database on ARM small single-board computer - DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/dev.dbarj.com.br\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/P_20180618_152644-e1529414431756-768x1024.jpg\",\"datePublished\":\"2018-06-20T13:07:30+00:00\",\"dateModified\":\"2018-06-20T18:26:06+00:00\",\"description\":\"In this article I will describe how to install an Oracle Database in a\u00a0small single-board computer, making it the smallest Oracle DB server in the world!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/dev.dbarj.com.br\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/P_20180618_152644-e1529414431756-768x1024.jpg\",\"contentUrl\":\"https:\\\/\\\/dev.dbarj.com.br\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/P_20180618_152644-e1529414431756-768x1024.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/2018\\\/06\\\/installing-oracle-database-on-arm-small-single-board-computer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Installing Oracle Database on ARM small single-board computer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/\",\"name\":\"DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"description\":\"Blog about Databases, Security and High Availability\",\"publisher\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/en\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\",\"name\":\"DBA RJ\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"url\":\"https:\\\/\\\/dev.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"contentUrl\":\"https:\\\/\\\/dev.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"width\":712,\"height\":712,\"caption\":\"DBA RJ\"},\"logo\":{\"@id\":\"https:\\\/\\\/dev.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Installing Oracle Database on ARM small single-board computer - DBA - Rodrigo Jorge - Oracle Tips and Guides","description":"In this article I will describe how to install an Oracle Database in a\u00a0small single-board computer, making it the smallest Oracle DB server in the world!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/","twitter_misc":{"Written by":"DBA RJ","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/#article","isPartOf":{"@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/"},"author":{"name":"DBA RJ","@id":"https:\/\/dev.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"headline":"Installing Oracle Database on ARM small single-board computer","datePublished":"2018-06-20T13:07:30+00:00","dateModified":"2018-06-20T18:26:06+00:00","mainEntityOfPage":{"@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/"},"wordCount":1438,"commentCount":10,"publisher":{"@id":"https:\/\/dev.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"image":{"@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/#primaryimage"},"thumbnailUrl":"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180618_152644-e1529414431756-768x1024.jpg","articleSection":["Oracle Database General"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/","url":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/","name":"Installing Oracle Database on ARM small single-board computer - DBA - Rodrigo Jorge - Oracle Tips and Guides","isPartOf":{"@id":"https:\/\/dev.dbarj.com.br\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/#primaryimage"},"image":{"@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/#primaryimage"},"thumbnailUrl":"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180618_152644-e1529414431756-768x1024.jpg","datePublished":"2018-06-20T13:07:30+00:00","dateModified":"2018-06-20T18:26:06+00:00","description":"In this article I will describe how to install an Oracle Database in a\u00a0small single-board computer, making it the smallest Oracle DB server in the world!","breadcrumb":{"@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/#primaryimage","url":"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180618_152644-e1529414431756-768x1024.jpg","contentUrl":"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2018\/06\/P_20180618_152644-e1529414431756-768x1024.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/dev.dbarj.com.br\/en\/2018\/06\/installing-oracle-database-on-arm-small-single-board-computer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dev.dbarj.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Installing Oracle Database on ARM small single-board computer"}]},{"@type":"WebSite","@id":"https:\/\/dev.dbarj.com.br\/en\/#website","url":"https:\/\/dev.dbarj.com.br\/en\/","name":"DBA - Rodrigo Jorge - Oracle Tips and Guides","description":"Blog about Databases, Security and High Availability","publisher":{"@id":"https:\/\/dev.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev.dbarj.com.br\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/dev.dbarj.com.br\/en\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9","name":"DBA RJ","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","url":"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","contentUrl":"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","width":712,"height":712,"caption":"DBA RJ"},"logo":{"@id":"https:\/\/dev.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png"}}]}},"_links":{"self":[{"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts\/3447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/comments?post=3447"}],"version-history":[{"count":0,"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/posts\/3447\/revisions"}],"wp:attachment":[{"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/media?parent=3447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/categories?post=3447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev.dbarj.com.br\/en\/wp-json\/wp\/v2\/tags?post=3447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}