Updated February 2021: I’ve updated this post to reflect the newest edition of this VirtualBox Appliance.

click here for SQLDev 4.2

If you’re looking for an already configured Oracle Database 19c environment with a database already setup and all the software you need to learn database programming, design, and administration concepts, then look no further!

No need to create anything, just download, import, and run a fully functional Oracle Database, complete with sample data and hands on labs.

 

Everything you need to get started with Oracle Database.

This Stuff is all FREE

The virtualization software is VirtualBox – that’s free. And it runs on any OS, including Windows, Macs, and *NIX. You’ll need to go download and install VirtualBox first. An aside, if you already have VMWare’s VM Player, that should also work, but that’s between you and VMWare.

Are you ready to get started? Awesome. Then start up VirtualBox. You’ll get the Oracle VM VirtualBox Manager on your screen, and then you’ll want to IMPORT an appliance.

The virtual machine has already been created, you just need to ‘suck it into’ VirtualBox via the Import feature.

Point to the .OVA file you’ve just downloaded –

You'll point to the .OVA file you've just downloaded...
Screenshot from 2014…it’s slightly larger now, but same process.

Next you’ll be prompted to approve of the VM settings. There are two that I want you to take a look at before just saying ‘Yes’ to everything:

Have lots of memory? It's OK to be greedy...
Have lots of memory? It’s OK to be greedy…

The image requires at least 1 GB of RAM to run. Remember, we’re running Oracle Database 19c, on a Linux image, plus you’ll be running a browser, and probably SQL Developer, or the Modeler, or APEX, or all of those. If you have it, bump the memory up to 4GB.

Also, the OS ‘disks’ are by default going to be sitting on your C: drive. Make sure that drive is ‘fast’, has contiguous blocks available (defrag first if necessary), and enough space. I’ve switched mine over to my D: partition.

Then click ‘Ok.’

Say ‘Yes’ to the License Agreement.

Read it!
Read it!

This will take a few minutes – or however fast you can write out those 2 huge files, ~= 12GB.

Windows lies, but it will take awhile.
Windows lies, but it will take awhile.

Start the VM!

Select the vm in the manager and hit the ‘Start’ button. You’ll know you’re good if you see this screen.

Oracle Enterprise Linux 6 is booting up!
Oracle Enterprise Linux 6 is booting up!

If you see this error…

“This kernel requires an x86-64 CPU, but only detected an i686 CPU.”

Your BIOS is going to need to be updated. You’ll want to enable the virtualization technology. There’s a good tutorial on how to do that here.

Now, back to the image…

Logon as oracle/oracle – this is the user that owns the install, the labs, and software.

Your desktop should come up, and will look a little something like this – without the annoying arrows and blocky words I added 🙂

You don’t HAVE to know Linux, but it will help.

Where to get started?

Well, you could click on the big Start button (yes, that is a picture/button/icon) and launch the Hands-on Labs, pick one and follow the instructions. Or, you could fire up SQL Developer and start mucking around.

In either case, you MIGHT want to create a snapshot for the VM first – this will give you a backup of your image you can go back to in case you ever screw it up beyond repair. This would be faster probably than re-downloading the OVA file, importing it, etc.

For SQL Developer, you can create a connection to the CDB or the PDB. Yes, this is a Multitenant installation.

The CDB instance is ‘orclcdb’ and the PDB instance is ‘orcl’. To connect to the database with all the sample data, you’ll want to go in as HR or SYS to the orcl ‘service.’ PDBs are accessible via the service, not the SID.

Remember all passwords are ‘oracle’

If you want to clone a PDB, then you’ll need to create a SYS-level connection to the CDB and access the DBA – Container Database node.

Using the DBA panel, open your CDB connection to see and manage your pluggable databases.

Connecting to the database from SQL Developer/SQLcl on your host machine

We’ve made it extremely easy. Unless you already have Oracle Database installed and listening to port 1521 on your computer, all of your database connections can simply talk to 127.0.0.1:1521 or localhost:1521. 

That’s because on the VirtualBox Linux appliance, we’ve setup a local port forwarding rule – anything you say to port 1521 on YOUR machine, will go to port 1521 on the Linux VM. And port 1521 is where the database is ‘listening’ for database connections. 

You can see these in your VBox appliance network settings –

If 1521 isn’t avail on your machine, try 1522, or something else you’ll remember.

Example: Connecting with SQLcl to the PDB from my Mac

I know all the passwords are ‘oracle,’ and I know there are 3 accounts I can play with:

  • SYS – runs with scissors
  • SYSTEM – plays with knives
  • HR – still learning to walk

HR is pretty safe, so let’s have a go with that.

No database on my machine is running, but I’m connecting to the VBox image’s database.

The magic connect string is using what we call the ‘EZConnect’ syntax. So

user/[email protected]_name_or_ip:port/service
hr/[email protected]:1521/orcl

If you leave out the @password bit, you’ll be prompted for the password. If you scroll back up and look at the connection properties in SQL Developer I’ve show, they’re almost exactly the same.

If you don’t have SQL Developer or SQLcl or any other Oracle tools installed on your machine, you can start using them in the Linux VM directly. You’ll just need to be more familiar with Linux.

I suggest also the following:

  • start learning Linux/using the command line
  • give your VBox image as much memory as you can spare
  • restart the appliance before you really start using it – it may run dog slow the first time you bring it up

Updates?

As new versions of the database are released, we’ll update this image. The next update will be 21c, as soon as a Linux distribution is available on Oracle.com.

I almost forgot about the Labs!

Remember how I said you could click on that Red start button? Do that, and you’ll open a browser with an index of all the topics you can learn about by running through some examples.

Lots of options here to choose from…

If you can read, click, copy, and paste – you can follow along with these labs.

Again the more comfortable you are with Linux, the better.

Most of these will take 30-60 minutes to complete.

Looking for more labs, without downloading anything? Then check out our online Workshops!

Click the image to go to the full site/labs.https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/home

thatjeffsmith
Author

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.

73 Comments

  1. Avatar
    Greg Grimes Reply

    It appears the versions of the tools are a little behind. What’s the best way to upgrade ORDS, APEX and SQLDeveloper to the newest versions?

    Thanks.

    • thatjeffsmith

      don’t bother running sqldev on the vbox, download that to your host machine

      For ords and apex, just download and run the installers

      Or run your own ords on your host machine, that’s what I do

    • thatjeffsmith

      You need to add a dish to your vbox vm… And if you find an easy way to do this, please let me know.

  2. Avatar

    Hi Jeff,

    I can’t use dbca after I installed this Virtualbox image. Would you please tell me how to fix this?

    Thanks,
    William

    • Avatar

      this is a lab and we are free to create another database but there is a weired error when want to use damn dbca , netca

    • thatjeffsmith

      we blow away the inventory stuff that dbca needs to make the VM smaller – sorry, you’re going to have to build one from scratch or pull down another image from OTN if you want to do that

    • Avatar

      http://totierne.blogspot.co.uk/2016/05/developer-day-vm-updated-4252016-errata.html

      includes: (for creating pdbs)
      To create PDB (THE_NAME if not entered defaults to pdb name “ORDS” – if there is an “ORDS” pdb already it errors out).

      createnewpdb THE_NAME
      [type y enter to confirm details]

      creates pdb (including users tablespace)
      creates HR schema, create tnsnames.ora entry,
      Ensures pdb is open by default
      Ensures passwords do not expire (change this to suit your security requirements)
      tests 32k varchar is on (set in seed).

      FYI ‘cost’ is about 1.5GB of disk per empty pdb – should fit about 6 before filling the virtual disk.

    • Avatar
      Gerrit Haase

      So basically spoken, you deliver a crippled installation of Oracle Database Software.

      In which way can this be helpful, beside saving some MB disk space?

    • thatjeffsmith

      Exactly, and that’s why – to save some space.

      This VM is delivered for educational purposes – directly targeting new folks who want to stand up a db as fast as possible. It’s not for learning how to do upgrades.

  3. Avatar

    Hi Jeff,

    I downloaded and imported to VirtualBox the last Developer day virtual machine.

    I’m not able to connect to the db via terminal or SQL developer
    I always get the same message, ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

    In the terminal I see [[email protected] ~]$ and I’m using
    Sqlplus and then sys with password oracle. I tried with system or HR.

    I’m not very experienced in Oracle and I thought this was working out of the box.

    Any help would be great,

    Art

    • thatjeffsmith

      you’re telling me it’s not working, but you’re not telling or showing me EXACTLY what you’re trying

    • Avatar

      Thanks Jeff,

      Basically I just run the virtual machine and opened SQL developer.
      There is a user created, system, and I tried to connect with that one with the password Oracle, so then I got the error message ORA-12514, that I put in my previous reply.

      I tried the same with the terminal and using sqlplus command and with different users, system, sys and hr, and I get the same message.

      I didn´t try more things really. I checked listener.ora and tsnames.ora files but I didn´t see anything wrong but I´m not an expert.
      So not sure what to try next.

      Maybe something to with virtual machine settings? I just imported the appliance and didnt change the default settings. I´m using the last version of VirtualBox

      Thanks,
      Art

    • Avatar

      Hi Jeff

      I’m having a similar problem to what Art was/is having.

      I have a brand new instance of the VM running – image file name is DeveloperDaysVM2016-06-02_13.ova

      I then try your suggestion in terminal:
      [[email protected] ~]$ sql hr/oracle

      SQLcl: Release 4.2.0.16.153.2014 RC on Wed Oct 26 09:37:33 2016

      Copyright (c) 1982, 2016, Oracle. All rights reserved.

      USER = hr
      URL = jdbc:oracle:oci8:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
      Error Message = ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
      USER = hr
      URL = jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
      Error Message = Listener refused the connection with the following error:
      ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
      Username? (RETRYING) (‘hr/*********’?)

      I’m not familiar with configuring Oracle. What should I do next please?

    • thatjeffsmith

      sounds like the database isn’t started yet, it might take a minute or two once you start the image for the database to be open and available

      if you go into the image itself and go to a command line, can you open sqlplus?

      cmd> sqlplus sys as sysdba

    • Avatar

      Thanks Jeff

      [[email protected] ~]$ sqlplus sys as sysdba

      SQL*Plus: Release 12.1.0.2.0 Production on Wed Oct 26 10:33:14 2016

      Copyright (c) 1982, 2014, Oracle. All rights reserved.

      Enter password:
      ERROR:
      ORA-12514: TNS:listener does not currently know of service requested in connect
      descriptor

      Enter user-name:

    • Avatar

      To be clear, this is all from the image.

      All I have done is fired up the VM, and updated Guest Additions. Nothing else has been run except these and the commands I mentioned.

    • Avatar

      That is the version I have. Sorry, it would have been clearer to have given the vm name rather than the filename.

    • Avatar

      I tried this last night on a Mac and it works fine.

      The problem I am having happens when running on Windows. I’m running latest Version 5.1.8 r111374 (Qt5.5.1).

      Is there any difference in the VM image between platforms, and could this account for the problem?

      thanks

      Sean

    • Avatar

      Ok. I think I’ve worked this out. I don’t have much available RAM on the Windows PC, which in turn means that the VM doesn’t have much RAM.
      The Oracle database wasn’t starting up by itself. When I tried to start it manually, I got an error saying ‘MEMORY_TARGET not supported on this system’. On investigation, it was limited to around 770Mb. I doubled this to 1.5G and the database would then start. However, the VM is so slow now that it is currently unusable.
      I’m running Windows 7 with 8Gb RAM and it leaves very little spare.
      I’m guessing that my best option is make more RAM available, or is there something else that I could configure so that I get the ability to start the database and still get reasonable performance?

      thanks

      Sean

    • Avatar

      http://totierne.blogspot.co.uk/2016/05/developer-day-vm-updated-4252016-errata.html

      If you are doing very little else on an 8GB i5 – use 3072MB Ram 2 CPU – the default is 2048MB RAM 1 CPU. You could reduce the SGA (Core ‘shared memory attach’ ram used by core server processes) so it could startup in less RAM (you might get total ram required down to 1500MB from the current 2048) SGA is set at around 800MB – you could try setting it to 500MB in the sp file before startup – though RAM is fairly cheap nowdays.

  4. Avatar

    Hi
    I have installed Virtualbox and Added appliance. But Unable to start the Oracle Apex Link.
    Please Guide.

  5. Avatar

    hi jeff, I was able to install the oracle 12c database developer day virtual image on my VMware player and it seemed to work. But somehow the armored penguin icon didn’t show up, and I only saw the text START in the red circle. And my host computer name is vbgeneric, not localhost. Do you have any suggestions on how to fix these issues? Thanks!

    • thatjeffsmith

      easiest fix, use VirtulBox instead of VMPlayer

      question – did the database come up? is the software working? if so, maybe not a big deal…

    • Avatar

      yes – the database came up and the software is working fine. But I have no clue how to fix it without using the VirtualBox.

    • thatjeffsmith

      sorry i don’t know either

      virtualbox is free, so why not grab and use it?

      unless you want to run the hands on labs, there’s no need to even use the image, i just use it to host my database, apex, and ORDS

    • Avatar

      Hi Jeff,

      I am having the same problem ([email protected] instead of [email protected]), however, I AM running it on VirtualBox, just like it says in the guide (?!)

      Another issue I have is that the ORACLE_SID and ORACLE_HOME are not ORACLE_HOME=/home/oracle/app/oracle/product/12.1.0/dbhome_1 and ORACLE_SID=cdb1
      but
      /u01/app/oracle/product/12.1.0.2/db_1 and orcl12c respectively.

      I hope you can help me and hundreds of other students struggling with these issues at a MOOC course.

      Thanks in advance!

    • thatjeffsmith

      The new VM indeed has a large red start icon. Double-click it to start your labs. Double-click SQLDev to open SQL Dev.

      Create a connection to service ‘orcl’ to connect to the pluggable database.

      You shouldn’t care what your $ORACLE_HOME is.

      Hundreds of students are struggling? Where/What is MOOC? Can you put me in touch with your professor? Thanks.

    • Avatar

      Jeff, thank you so much for your quick reply. I am connected now!

      A MOOC is a Massive Open Online Course, in this case, Coursera’s “Database Essentials” course by the University of Colorado System. Professor Michael Mannino is in charge, but i am afraid I don’t have a way to get in touch with him outside Coursera.

    • thatjeffsmith

      You know how to find me, not sure what the mix-up is between our VM and his course. If you see something ‘wrong’ with our VM setup/instructions, I can try to fix it at least.

    • Avatar

      Hi Jeff,

      I am also in that course and we have been given instructions to use Pentaho Data Integration to connect with an Oracle DB but many of us on Mac machines are really struggling to either run Pentaho DI and SQl developer simultaneously on this virtual box or connecting from our Mac machine to the Virtual Box so that we can use Pentaho DI outside of the Viertual Box. I keep getting errors when I try to modify the firewall too.

      Thanks for responding to these since the professors at Coursera are not!

      Thanks!

  6. Avatar

    Hi Jeff,
    I’ve download the latest Oracle DeveloperDay and install it on mac.
    I’m able to access the DB from host OS Sqldeveloper. But couldn’t able to access it via any application.
    Also, I’m not able to get the ‘System’ (‘Application’ & ‘Places’ are coming) menu inside the VM OS.

    Regards
    Vijay

    • thatjeffsmith

      I need more info to help you. Saying it doesn’t work doesn’t give me anything to work with.

  7. Avatar

    Hi Jeff,

    Quick question. I am trying to connect to the HR as shown above using the connection name:HR, user name : HR and the password as “oracle”. I am using the Service name as PDB1. However when I test the connection out, I get the error message, “The network adapter could not establish the connection”. What am I doing wrong?

    The second question I have is, is there a SQL Plus equivalent in the virtual box? If yes, how do I invoke it?

    I would really appreciate your help.

    Thanks
    Narayan

    • thatjeffsmith

      The SID will always refer to the Container database. IF you want to get to your data, you’ll ALWAYS have to use the SERVICE.

  8. Avatar

    I know this is an “as-is” download, but is there any way to get the sysdba password to make this a functional/usable download? sqlplus / as sysdba doesn’t work, and the connection from SQL Developer says it’s expired. At the linux level, it says that passwords are “oracle”, but apparently that doesn’t apply within the cdb1 instance, the sole instance auto-created with this appliance. Thanks for any feedback (especially with the sysdba password on this stand-alone appliance.)

    • thatjeffsmith

      sys password is ‘oracle’ – i’ve been using it since day 1

      cdb1 is the container, you probably want to connect to ‘orcl’ – that’s the pluggable database

    • Avatar

      I had to use:
      User: system
      Password: oracle
      Hostname: localhost
      Port:152
      Service: orcl

      And I can connect from my Mac direct to the DB hosted on the VirtualBox VM, using the port forwarding suggestions.

      Now to figure out creating a DB and tables (Im a front end developer, not a DBA, just need this for testing/dev purposes).

  9. Avatar

    Thanks Jeff! That was it. The connection was set with the SID orcl and no service name.
    I changed to service name PDB1, and was then able to create a user

  10. Avatar

    I’m new to SQL and am attempting to learn using SQL Developer using the VM instance. I’m unable to create a user.

    I use this..

    –Create User
    CREATE USER testuser IDENTIFIED BY dummypassword;

    –Grant privileges
    GRANT CONNECT, RESOURCE TO testuser;

    and get these errors…

    Error starting at line : 2 in command –

    CREATE USER testuser IDENTIFIED BY dummypassword

    Error at Command Line : 2 Column : 13

    Error report –

    SQL Error: ORA-65096: invalid common user or role name

    Error starting at line : 5 in command –

    GRANT CONNECT, RESOURCE TO testuser

    Error report –

    SQL Error: ORA-01917: user or role ‘TESTUSER’ does not exist

    01917. 00000 – “user or role ‘%s’ does not exist”

    *Cause: There is not a user or role by that name.

    *Action: Re-specify the name.

    • thatjeffsmith

      This is a bit complicated, but I think you’re connected to the Container database (CDB), not the Pluggable (PDB). For the connection that you are issuing those commands on, what is the SERVICE name – you’ll see that on the connection properties dialog.

  11. Avatar
    Sangil Jeon Reply

    SQL *Plus Release 12.1.0.2.0
    $ sqlplus

    Enter user-name : oracle
    Enter password : oracle

    invalid username / password; logon denied

    and

    Enter user-name : HR
    Enter password : oracle

    invalid username / password; logon denied

    How to know default id and pw?

  12. Avatar

    Hi Jeff,
    I am unable to connect to the container database. I tried “sqlplus / as sysdba” with no success. I am able to connect to the PDB1 though using “sqlplus sys/oracle as sysdba. Can you tell me how to go about this?
    Thanks

  13. Avatar

    Hi Jeff,

    Thanks. I’m a newbie in Oracle SQL and Linux system. This is very informative and after I followed your instructions, now I am good to go.

    Cheers,
    PuRoy

  14. Avatar

    Hi Jeff,
    Is it possible to create a new database with this VM bundle? I cloned and edited a init.ora file, from the provided init.ora file under $ORACLE_HOME/dbs. I also create a orclpw file with the sys and oracle users. Then I exported the ORACLE_SID as my new sid but trying to connect with sqlplus fails: “sqlplus / as sysdba”. I eventually connected with “sqlplus /nolog” and tried to “start nomount” to issue the create database command, however sqlplus says that the instance is already mounted and I think it is the default ‘[email protected]’. Is there a way to create my own database? Thanks.

    • thatjeffsmith

      Sure, but this is 12c Multitenant – just clone the existing pdb to your new database and you’re good to go.

      If you want to create your own db from scratch, then you’re on your own – but there’s no reason why you shouldn’t be able to. I’d probably also just use the dbca utility to create the new database for me.

    • Avatar

      Thanks. Sounds like I need to read up on this multitenant feature of 12c. I tried dbca also but it had a similar issue right at the end of database creation with a ORA-01034 Oracle not available error and dbca exited. I would really like to set up my own database from scratch the hard way, as I want to learn how to do it like all the DBAs do 🙂
      Out of interest is there a VM package for 11g? – I did not see one on the site. Thanks again.

  15. Avatar

    Hi Jeff,

    I have Win 7 64 bit.
    I have downloaded Windows (32-bit/64-bit) using your ‘image’ link.
    I can’t see any setting for 64 bit in the Virtual box, and keep getting the following error
    “This kernel requires an x86-64 CPU, but only detected an i686 CPU. Unable to boot – please use a kernel appropriate for your CPU”

    Any help would be greatly appreciated.
    Thanks,
    Tim.

    • Avatar

      Hi Jeff,

      Problem solved!
      – I had to go enable ‘Virtulization Technolgy’ in the BIOS, now i can see 64 bit in the VM.

      Could not have done it, with out your website pointing me in the right direction initially!

      Kind regards,
      Tim.

  16. Avatar
    Phil Winfield Reply

    I’m only using it for APEX! This is what I wanted with the VM in the first place so I assumed once an Oracle VM, with Oracle 12c and Application Express was configured I could continue to do Oracle type stuff on it, including APEX dev/demo work and a minor patch to take it to the terminal release.
    It does all work fine but the trigger won’t work and so I have to issue the grant restricted session to APEX_PUBLIC_USER. I’m aware it is unsupported and am v grateful someone has made it available. Maybe a 11g or 12c version with 4.2.5 will come along in the next few months…

  17. Avatar

    Yes, the DB is available but 4.2.5 seems to have had an effect leaving it in restricted mode whenever it starts up.
    I can:
    ALTER PLUGGABLE DATABASE OPEN read write force
    which will work but not in a trigger.
    grant restricted session to apex_public_user also works but ideally, I’d like to get to the bottom of the problem rather than use workaround.
    Thanks for the help!

    • thatjeffsmith

      Don’t touch the APEX install, that includes upgrades, as in, don’t do it. If you want to do it, then that’s fine. But then it’s your system to maintain.

  18. Avatar
    Phil Winfield Reply

    This is a real pain!
    There is a workaround

    The folllowing should work but following the creation, looking at the trigger it appears empty:

    CREATE OR REPLACE TRIGGER sys.open_pdbs
    AFTER STARTUP ON DATABASE
    BEGIN
    EXECUTE IMMEDIATE ‘ALTER PLUGGABLE DATABASE OPEN read write force’;
    END open_pdbs;

    So either do this *every time* the DB starts up:
    ALTER PLUGGABLE DATABASE OPEN read write force;

    Or issue this:
    grant restricted session to apex_public_user;

    I would like to know a more satisfactory approach if possible

    • thatjeffsmith

      What is a real pain? Your pluggables aren’t open after you start the container? Your trigger is the current recommended approach, but maybe AskTom has more ideas.

    • Avatar

      Well this is a case of not knowing much about 12c and pdb’s. My trigger was in the pluggable and not the ‘main’ DB. Moving it should have done the trick but that too, has not worked. It is an extra step after starting the VM but I’d love to be able to start the VM and have APEX without any fixing being applied!

    • thatjeffsmith

      the db is up and running after startup, and APEX is avail – or it is for me ‘out of the box’

  19. Avatar

    Hi,
    seems the latest Apex patch killed the 12c…

    after installation of the latest patch p17966818_425_Generic in OTN Developer Day VM.ova (12c) Apex no longer works.
    Somehow the PDB1 has been set into restricted session mode and when I try to change this I get:
    ORA-65144 alter system disable restricted session is not permitted

    An attempt to install DATABASE PATCH SET UPDATE 12.1.0.1.2 failt with various error messages. Not even my DBA were able to make it work…

    Any help would be fine.

    Andre

    • Avatar

      Well, I did – 3 times…

      I take this as: it is not possible…
      1. to patch OTN Developer Day Database 12c VirtualBox Image
      2. as a result from 1. it is not possible to update Apex 4.2.4 to 4.2.5 OTN Developer Day Database 12c VirtualBox Image
      Am I right when I’m assuming this is expected behavior?
      That’s a pitty.

  20. Avatar

    Hi Jeff,

    Does the new 12c Virtualbox image use Logical Volume Management? The 11g image did not – which made it just a tad trickier to add space to the image. It would be nice to have LVM to easily add space…

    Thanks!

    Phil

Reply To Philip Moore Cancel Reply

RSS
Follow by Email
LinkedIn
Share