Updated 14 October 2026: This guide separates Oracle Cloud Free Tier from the free hosted APEX workspace, explains the limits that matter, and includes a complete task-manager example. Console labels and sign-in screens can vary by database creation date and the APEX version available in your region.
Scope: This is a documentation-reviewed walkthrough. This revision’s complete OCI provisioning and APEX runtime flow has not been independently executed. The expected results below are checks for you to run in your own learning environment.
I work with Oracle APEX daily. Getting started becomes much easier once you separate four things: the cloud account, the database, the workspace and the application.
Here we will connect those pieces and build a small task manager with a searchable report and a form for creating and editing tasks. You will also have checks to confirm that the data was actually saved. Use sample data in a learning environment throughout.
What you are setting up
- OCI account: where you manage cloud resources and billing.
- Autonomous Database: where your application tables and data live. Oracle’s current documentation calls the service Autonomous AI Database.
- APEX workspace: the development area associated with a database schema.
- APEX application: the report, form and other pages your users run.
APEX is included with Autonomous Database. You can build this example in the browser using SQL Workshop and App Builder, without installing a database or ORDS on your laptop. Oracle maintains the service’s APEX software, but you still need to check your applications when releases change. See Oracle’s APEX on Autonomous Database documentation.
Choose the right free starting point
If you only want to learn APEX: Oracle’s free hosted APEX workspace needs no credit card. It is for evaluation and learning, with no production or sensitive data. Inactive workspaces may be purged after 60 days, and the service has no backup or recovery. You can use a workspace there for the task-manager steps below and skip the OCI provisioning steps.
If you want to learn OCI as well: use an Always Free Autonomous Database in your own Oracle Cloud account. OCI signup requires a supported credit or debit card for verification and may create a temporary authorization hold. This is different from requesting a hosted APEX workspace. Start with Oracle’s Cloud Free Tier page and read the Free Tier FAQ.
The Free Trial provides US$300 in credits for up to 30 days. Always Free is a separate resource designation. A trial-funded paid database does not become an Always Free database just because the trial ends; paid trial resources can be reclaimed. If you upgrade to a paid account or convert resources to paid services, charges can apply. Check the resource’s actual designation before creating it.
Step 1: Create your Oracle Cloud account
- Open the official Cloud Free Tier page and complete signup with your own accurate details.
- Choose a home region that supports the service you want and is suitable for your users. Always Free Autonomous Databases must be provisioned in the tenancy’s home region, so check availability before committing to your choice.
- Complete the verification steps and sign in to the OCI Console.
- Store credentials in a password manager. Keep the OCI account password, database ADMIN password and application credentials distinct.
Already have a cloud account? Use it instead of creating another free account. Oracle permits one Free Trial or Always Free account per person. Its FAQ also warns that accounts idle for 30 days or more may be treated as abandoned.
Step 2: Provision an Always Free Autonomous Database
This walkthrough uses the Transaction Processing workload with APEX included. Oracle also offers an APEX workload; you do not need to switch between both options to follow this example.
- In the OCI Console, select your home region and the compartment where you are allowed to create the database.
- Open Oracle AI Database → Autonomous AI Database and choose Create Autonomous AI Database. Some console versions use the shorter Autonomous Database label.
- Use a recognizable display name, such as
MyAPEXDB, and an available database name containing letters and numbers. - Choose Transaction Processing and the Always Free configuration. The separate Developer option is a paid offering, despite its development-oriented name.
- Choose a database version offered for Always Free in your region. This small example uses ordinary relational features available in Oracle Database 19c and later; it does not require the newest database release.
- Keep the resources supplied by the Always Free option. Typing a particular CPU count or storage size into a paid configuration does not make that resource free.
- Set a strong ADMIN password. Review the network-access choices and all pricing information presented by the console.
- Only proceed when the summary identifies the resource as Always Free. Wait until its lifecycle state is Available.
If the free option is unavailable, stop and check your home region, existing free resources and the current service limits. Do not substitute a paid configuration to make the tutorial screens match. Follow Oracle’s current provisioning instructions if your console differs.
Step 3: Create the APEX workspace
From the database details, open the APEX instance and select Launch APEX. Another supported route is Database actions → View all database actions → Development → APEX.
For new databases, Oracle’s default is Autonomous Database Single Sign-On using database credentials. Sign in with the database ADMIN credentials, then select Administration Services. Databases created before 15 February 2026 can show the older APEX administration sign-in screen. Follow the flow on your actual instance rather than changing its authentication settings to match a screenshot. Oracle documents both sign-in flows.
- In Administration Services, select Create Workspace.
- Create a new database user for this exercise, for example
OWH_TASKS_DEMO, with its own strong password. - Use a recognizable workspace name, such as
OWH_TASKS_DEMO. A workspace name and a database username can match, but they serve different purposes. - Create the workspace, then sign out of the administration session.
Keep application tables in the workspace schema. The ADMIN database user cannot be assigned as the workspace schema. See Create Oracle APEX Workspaces.
Step 4: Sign in to your own workspace
Launch APEX again from your database. With the newer default sign-in, enter the credentials created with your workspace and choose the workspace from the list. On the older workspace login screen, provide the workspace name, username and password. Oracle’s App Builder access guide explains the difference.
Bookmark the URL opened by your own database. The free hosted evaluation service has its own domain, oracleapex.com; it is not the login location for your OCI database. Oracle explains that distinction in its evaluation-service domain announcement.
Before continuing, check that the workspace home page gives you access to both SQL Workshop and App Builder. Record the APEX version shown in your environment when you make your own testing notes.
Step 5: Create the TASKS table and sample data
Use a fresh learning schema. In SQL Workshop → SQL Scripts, create a script, paste the following SQL, and run it once. If the schema already has a table named TASKS, use a different disposable schema instead of overwriting or dropping existing work.
create table tasks (
task_id number generated by default on null as identity,
task_name varchar2(200 char) not null,
status varchar2(20 char) default on null 'TODO',
due_date date,
created_on date default on null sysdate,
constraint tasks_pk primary key (task_id),
constraint tasks_status_ck
check (status in ('TODO', 'IN_PROGRESS', 'DONE'))
);
insert into tasks (task_name, due_date)
values ('Open the task report', trunc(sysdate) + 1);
insert into tasks (task_name, status, due_date)
values ('Create a task through the form', 'IN_PROGRESS',
trunc(sysdate) + 2);
insert into tasks (task_name, status)
values ('Bookmark the workspace login', 'DONE');
commit;
The identity column supplies a task ID when an insert omits the ID or supplies NULL. The database supplies the initial status and creation date; the check constraint limits the allowed statuses. DEFAULT ON NULL applies on insert and implicitly makes these defaulted columns non-null. On Oracle Database 19c it does not replace NULL values on update; a NULL update fails the non-null constraint. CREATED_ON is the creation date and time supplied by SYSDATE, stored as an Oracle DATE without a time zone. It is not the browser’s local time or a complete audit trail. Oracle’s CREATE TABLE reference covers identity columns and DEFAULT ON NULL.
Now run this query in SQL Workshop → SQL Commands:
select task_id,
task_name,
status,
to_char(due_date, 'YYYY-MM-DD') as due_date,
to_char(created_on, 'YYYY-MM-DD HH24:MI:SS') as created_on
from tasks
order by task_id;
Expected result: three rows with generated IDs, one row for each status, and non-null creation dates. The third task has no due date. Identity values can have gaps; do not build logic that depends on consecutive task numbers.
The COMMIT belongs to this standalone sample-data script. You do not need to add a separate commit process to the generated APEX form.
Step 6: Create a report and its form explicitly
- Go to App Builder → Create and select Use Create App Wizard if prompted.
- Name the application My Task Manager.
- Select Add Page → Interactive Report. Name the page Tasks.
- Choose Table or View as the source and select the
TASKStable from your workspace schema. - Enable Include Form. This is the step that adds the companion form used to create and edit rows.
- Add the page. Under Settings → Authentication, explicitly select Oracle APEX Accounts for this learning app, then create the application. Keep authentication enabled; do not select a public, unauthenticated application.
The initial developer account, with workspace-administrator privileges, is created when you create the workspace. Use an APEX account from that workspace to sign in to the sample application. Its Oracle APEX Accounts password is managed through Manage Developers and Users (or Edit Profile); changing it there does not change the database password used by the newer App Builder single sign-on. Manage a database SSO password through the database tools instead. This distinction matters if you can open App Builder but cannot sign in to the app. See Oracle’s developer-account and password guidance.
Before running, inspect the generated pages: you should have a Tasks report and a separate form page. The wizard can allocate different page numbers in different applications. In the next step, use the item names from your generated form rather than copying an assumed page number.
Oracle’s Create Application Wizard guide documents the Include Form option. If you already created an application, use Create Page → Interactive Report → Include Form Page instead, as described in the Create Page Wizard guide.
Step 7: Make the form behave like a task manager
Open the generated form page in Page Designer. Its items will be named something like P3_TASK_NAME; your page prefix may be different.
- TASK_ID: keep the generated primary-key item and its source mapping. Do not turn it into a user-editable task-number field.
- TASK_NAME: use a Text Field, label it Task name, and enable Value Required. The database also rejects missing names.
- STATUS: set Identification → Type to Select List and List of Values → Type to Static Values. In the static values dialog, enter three rows: Display Value
To do, Return ValueTODO; Display ValueIn progress, Return ValueIN_PROGRESS; and Display ValueDone, Return ValueDONE. Set Display Null Value to No, Default → Type to Static, and Default → Static Value toTODO. Enable Value Required. - DUE_DATE: use a Date Picker and leave it optional. Choose the date from the picker during the first test to avoid typing a date in the wrong format.
- CREATED_ON: make the item read-only, with Read Only → Always, and set Source → Query Only → Yes. The form reads this value but does not submit it as an insert or update value. The database default supplies it on creation; it becomes visible when you reopen the saved task.
Keep the generated form initialization and automatic row-processing processes. Save your changes. The select-list return values must exactly match the database constraint, including underscores. Oracle explains static display and return values and the form item’s Query Only setting.
Step 8: Verify the result before calling it finished
These are checks to run in your environment, with expected outcomes. Keep a note of the APEX/database versions and any actual errors you see.
- Read: run the application and open Tasks. Expect the three sample rows. Search for
Bookmarkand confirm that the relevant row appears; clear the filter afterward. - Create: use the report’s Create button. Enter
Verify the saved task, choose To do and a due date, then submit. Expect the new row in the report. - Update: open that row through its edit link, change the status to Done and save. Reopen it. Expect Done and the same task ID.
- Validate: try to save a new task with no task name. Expect a required-field message rather than a new empty-name row.
- Cancel: begin a new task, enter a name and cancel. Expect no extra row.
- Confirm storage: run the query from Step 5 again in SQL Commands. Check that the created task and its edited status exist in the database.
If the third sample row disappears, first check report filters. If a Create button or edit link is missing, check that you generated the companion form. If you get ORA-00955 during setup, an object already uses that name; inspect the schema instead of deleting it blindly. If you get ORA-02290 when saving a task status, compare the select-list return values with TASKS_STATUS_CK.
This demo has no task-owner column or row-level authorization. It is a shared learning task list: do not assume each signed-in user gets private tasks. Keep real customer, employee and other sensitive data out of it.
The Always Free limits that matter after your first login
An OCI tenancy can have at most two Always Free Autonomous Databases. For the Autonomous Database route used here, Oracle currently documents 20 GB of storage per database, 30 simultaneous database sessions, and HTTP limits corresponding to roughly 3–6 simultaneous users across APEX, ORDS and Database Actions. Those are service limits, not a guarantee that a particular app will serve that many users reliably.
After seven inactive days, the database can stop automatically. An automatically or manually stopped database that remains inactive for 90 cumulative days may be reclaimed and permanently deleted. After restarting, allow about five minutes for APEX and ORDS to become available.
Always Free does not offer database restore to an earlier backup or timestamp. Keep separate copies of your application export, table-creation SQL and data you cannot afford to lose. These details come from Oracle’s Always Free Autonomous Database restrictions.
Free Tier also has no SLA, and Always Free-only customers do not receive standard Oracle Support. Treat this as a learning and prototype environment. Before choosing hosting for business users, assess recovery, capacity, support, security and the consequences of downtime against the actual service you will buy.
What to build next
You now have a concrete path from a cloud resource to a table, a report and an editable form, plus checks that connect the browser result back to the stored data.
A useful next exercise is to add a task priority with a database constraint and matching select list. After that, learn authentication and row-level authorization before turning the shared task list into a multi-user application. Keep the first version small enough that you can explain what each column, page item and process does.
9 Comments
Comments are closed.