diff --git a/timesten/cache-introduction/00-novnc/images/novnc-clipboard-1.png b/timesten/cache-introduction/00-novnc/images/novnc-clipboard-1.png
new file mode 100644
index 000000000..01ac53842
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-clipboard-1.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-clipboard-2.png b/timesten/cache-introduction/00-novnc/images/novnc-clipboard-2.png
new file mode 100644
index 000000000..efaac1ca1
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-clipboard-2.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-1.png b/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-1.png
new file mode 100644
index 000000000..3f39e3221
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-1.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-2.png b/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-2.png
new file mode 100644
index 000000000..2cb5935b1
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-2.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-3.png b/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-3.png
new file mode 100644
index 000000000..f3a3901e3
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-3.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-4.png b/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-4.png
new file mode 100644
index 000000000..681ee4700
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-copy-pub-key-4.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-desktop.png b/timesten/cache-introduction/00-novnc/images/novnc-desktop.png
new file mode 100644
index 000000000..b952201ae
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-desktop.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-1.png b/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-1.png
new file mode 100644
index 000000000..3af5ca61e
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-1.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-2.png b/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-2.png
new file mode 100644
index 000000000..2194d9afe
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-2.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-3.png b/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-3.png
new file mode 100644
index 000000000..f585eb1da
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-fullscreen-3.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-launch-get-started-1.png b/timesten/cache-introduction/00-novnc/images/novnc-launch-get-started-1.png
new file mode 100644
index 000000000..bcb06ebaf
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-launch-get-started-1.png differ
diff --git a/timesten/cache-introduction/00-novnc/images/novnc-launch-get-started-2.png b/timesten/cache-introduction/00-novnc/images/novnc-launch-get-started-2.png
new file mode 100644
index 000000000..16e3a6d7f
Binary files /dev/null and b/timesten/cache-introduction/00-novnc/images/novnc-launch-get-started-2.png differ
diff --git a/timesten/cache-introduction/00-novnc/novnc-livelabs.md b/timesten/cache-introduction/00-novnc/novnc-livelabs.md
new file mode 100644
index 000000000..3acf1fb5d
--- /dev/null
+++ b/timesten/cache-introduction/00-novnc/novnc-livelabs.md
@@ -0,0 +1,125 @@
+# Using noVNC Remote Desktop and enabling SSH access
+
+## Introduction
+
+This workshop can be accessed using a browser based graphical remote desktop (noVNC). It can also be accessed using SSH. You are free to use either method but we recommend SSH as for this workshop it provides a superior experience.
+
+This lab will show you how to get started with your workshop with a remote desktop session and how to enable SSH access.
+
+**Estimated Lab Time**: 10 minutes
+
+### Objectives
+
+In this lab, you will:
+
+- Enable fullscreen display of remote desktop session
+- Enable remote clipboard integration
+- Open the workshop guide from the remote desktop
+- Enable SSH access (optional but recommended)
+
+### Prerequisites
+
+This lab assumes you have:
+
+- Launched the workshop in the LiveLabs environment
+- An RSA format SSH private/public key pair to use to access the OCI instance (optional)
+
+If you need help in generating a suitable SSH key pair, please consult [this tutorial](https://docs.oracle.com/en/learn/generate_ssh_keys/index.html).
+
+## Task 1: Enable Full-screen Display
+For seamless desktop integration and to make the best use of your display, perform the following tasks to render your remote desktop session in fullscreen mode.
+
+1. Click on the small gray tab on the middle-left side of your screen to open the control bar.
+
+ 
+
+2. Select *Fullscreen* to render the session on your entire screen.
+
+ 
+ 
+
+## Task 2: Enable Copy/Paste from Local to Remote Desktop
+During the execution of your labs you may need to copy text from your local PC/Mac to the remote desktop, such as commands from the lab guide. While such direct copy/paste isn't supported as you will realize, you may proceed as indicated below to enable an alternative local-to-remote clipboard with Input Text Field.
+
+1. Continuing from the last task above, Select the *clipboard* icon
+
+ 
+
+2. Copy some text from your local computer as illustrated below and paste into the clipboard widget, then finally open up the desired application (e.g. Terminal) and paste accordingly using *mouse controls*
+
+ 
+
+ *Note:* Please make sure you initialize your clipboard with step [1] shown in the screenshot above before opening the target application in which you intend to paste the text. Otherwise will find the *paste* function in the context menu grayed out when attempting to paste for the first time.
+
+## Task 3: Open Your Workshop Guide
+
+1. If the *Web* browser window(s) is(are) not already open side-by-side, double-click on the *Get Started with your Workshop* icon from the remote desktop. This will launch one or two windows depending on the workshop.
+
+ 
+
+2. On the left windows is your workshop guide and depending on your workshop, you may also one or two browser tabs loaded with webapps. e.g. Weblogic console, Enterprise Manager Cloud Console, or a relevant application to your workshop such as SQL Developer, JDeveloper, etc.
+
+ 
+ 
+
+You may now proceed to the next lab.
+
+## Task 4: Configure SSH access (optional).
+
+While your workshop can be executed end-to-end from the remote desktop, follow the steps provided below if you need to access the instance remotely using an SSH client such as Putty, Unix/Linux/MacOS Terminal, OCI cloudshell, and other terminal emulators available on Windows.
+
+*Notes:* In this section you are enabling SSH access to the OS user running the remote desktop, wich for this workshop is the **oracle** user.
+
+This assumes that you already have an RSA type SSH key-pair available on the local system where you will be connecting from. If you don't and for more info on creating and using SSH keys for your specific platform and client, please refer to the guide [Generate SSH Keys](https://docs.oracle.com/en/learn/generate_ssh_keys/index.html)
+
+1. Open the remote clipboard on the remote desktop as shown in *Task 2* and launch a terminal session
+
+2. Paste the block below onto the remote clipboard first, then onto the terminal to create or update the file *$HOME/.ssh/authorized_keys* with the *Vi* editor
+
+ ```
+
+ cd $HOME/.ssh
+ vi authorized_keys
+
+ ```
+
+ 
+
+3. From the local system (e.g. your laptop) and with the exception of *Putty* users, locate the SSH public key from the key-pair, open it, and copy the entire content to the clipboard.
+
+ 
+
+ If using Putty you must load the private key (*.ppk*) into *Puttygen* utility to see the relevant public key block to copy. Do not copy the content of the public key file directly as it will not work.
+
+ 
+
+4. Paste the copied public key onto the remote clipboard first, then onto the terminal where you opened *authorized_keys* for edit
+
+ 
+
+5. Save and exit *vi* editor
+
+6. Set required permissions on *authorized_keys*
+
+ ```
+
+ chmod 0600 authorized_keys
+
+ ```
+
+7. Test/Validate connectivity using the private key (for Unix/Linux/MacOS Terminal, OCI cloudshell, and Terminal emulators on Windows such as Cygwin and MobaXterm).
+
+ ```
+ ssh -i [path to private key] remote-user@[instance-public-ip-address]
+ e.g.
+
+ ssh -i /home/youruser/.ssh/livelabs_rsa oracle@150.136.123.105
+
+ ```
+
+ For Putty, please refer to the guide [Generate SSH Keys](https://oracle-livelabs.github.io/common/labs/generate-ssh-key) on how to establish the connection using the *.ppk* private key.
+
+## Acknowledgements
+* **Author** - Rene Fontcha, LiveLabs Platform Lead, NA Technology
+* **Contributors** - Arabella Yao, Database Product Management
+* **Last Updated By/Date** - Chris Jenkins, July 2022
\ No newline at end of file
diff --git a/timesten/cache-introduction/00-novnc/novnc-owntenancy.md b/timesten/cache-introduction/00-novnc/novnc-owntenancy.md
new file mode 100644
index 000000000..396207b7f
--- /dev/null
+++ b/timesten/cache-introduction/00-novnc/novnc-owntenancy.md
@@ -0,0 +1,68 @@
+# Using noVNC Remote Desktop
+
+## Introduction
+
+This workshop can be accessed using a browser based graphical remote desktop (noVNC) or via SSH. You are free to use either method, but we recommend SSH as for this workshop it provides a superior experience.
+
+This lab will show you how to get started with your workshop with a remote desktop session. SSH access was (optionally) provisioned when you created the OCI instance using the provided ORM stack file.
+
+If you prefer to use SSH access (recommended), and do not plan to use the graphical desktop, then you can skip the rest of this lab and *proceed to the next lab.*
+
+**Estimated Lab Time**: 5 minutes
+
+### Objectives
+
+In this lab, you will:
+
+- Enable fullscreen display of remote desktop session
+- Enable remote clipboard integration
+- Open the workshop guide from the remote desktop
+
+### Prerequisites
+
+This lab assumes you have:
+
+- Launched the workshop in your own tenancy (paid or free trial)
+
+## Task 1: Enable Full-screen Display
+For seamless desktop integration and to make the best use of your display, perform the following tasks to render your remote desktop session in fullscreen mode.
+
+1. Click on the small gray tab on the middle-left side of your screen to open the control bar.
+
+ 
+
+2. Select *Fullscreen* to render the session on your entire screen.
+
+ 
+ 
+
+## Task 2: Enable Copy/Paste from Local to Remote Desktop
+During the execution of your labs you may need to copy text from your local PC/Mac to the remote desktop, such as commands from the lab guide. While such direct copy/paste isn't supported as you will realize, you may proceed as indicated below to enable an alternative local-to-remote clipboard with Input Text Field.
+
+1. Continuing from the last task above, Select the *clipboard* icon
+
+ 
+
+2. Copy some text from your local computer as illustrated below and paste into the clipboard widget, then finally open up the desired application (e.g. Terminal) and paste accordingly using *mouse controls*
+
+ 
+
+ *Note:* Please make sure you initialize your clipboard with step [1] shown in the screenshot above before opening the target application in which you intend to paste the text. Otherwise will find the *paste* function in the context menu grayed out when attempting to paste for the first time.
+
+## Task 3: Open Your Workshop Guide
+
+1. If the *Web* browser window(s) is(are) not already open side-by-side, double-click on the *Get Started with your Workshop* icon from the remote desktop. This will launch one or two windows depending on the workshop.
+
+ 
+
+2. On the left windows is your workshop guide and depending on your workshop, you may also one or two browser tabs loaded with webapps. e.g. Weblogic console, Enterprise Manager Cloud Console, or a relevant application to your workshop such as SQL Developer, JDeveloper, etc.
+
+ 
+ 
+
+You may now *proceed to the next lab*.
+
+## Acknowledgements
+* **Author** - Rene Fontcha, LiveLabs Platform Lead, NA Technology
+* **Contributors** - Arabella Yao, Database Product Management
+* **Last Updated By/Date** - Chris Jenkins, July 2022
\ No newline at end of file
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-1.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-1.png
new file mode 100644
index 000000000..8f6dadded
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-1.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-10.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-10.png
new file mode 100644
index 000000000..433aa609b
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-10.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-2.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-2.png
new file mode 100644
index 000000000..c67d00a07
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-2.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-3.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-3.png
new file mode 100644
index 000000000..08c8d8783
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-3.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-4.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-4.png
new file mode 100644
index 000000000..12c04891d
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-4.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-5.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-5.png
new file mode 100644
index 000000000..b4b4d186c
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-5.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-6.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-6.png
new file mode 100644
index 000000000..60187b8a8
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-6.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-8.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-8.png
new file mode 100644
index 000000000..5bd0e3120
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-8.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-9.png b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-9.png
new file mode 100644
index 000000000..17934ec28
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack-novnc-9.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/create-stack.png b/timesten/cache-introduction/00-setup-compute/images/create-stack.png
new file mode 100644
index 000000000..8c717668e
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/create-stack.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/developer-resmgr-stacks.png b/timesten/cache-introduction/00-setup-compute/images/developer-resmgr-stacks.png
new file mode 100644
index 000000000..ca572f448
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/developer-resmgr-stacks.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/error-ad-mismatch.png b/timesten/cache-introduction/00-setup-compute/images/error-ad-mismatch.png
new file mode 100644
index 000000000..35f8e474a
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/error-ad-mismatch.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/flex-shape-error.png b/timesten/cache-introduction/00-setup-compute/images/flex-shape-error.png
new file mode 100644
index 000000000..a5d72e1b8
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/flex-shape-error.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/no-e3flex-in-tenant.png b/timesten/cache-introduction/00-setup-compute/images/no-e3flex-in-tenant.png
new file mode 100644
index 000000000..35e7f726f
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/no-e3flex-in-tenant.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/no-quota.png b/timesten/cache-introduction/00-setup-compute/images/no-quota.png
new file mode 100644
index 000000000..fa32509c4
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/no-quota.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/novnc-deceptive-site-error.png b/timesten/cache-introduction/00-setup-compute/images/novnc-deceptive-site-error.png
new file mode 100644
index 000000000..41f31f3f4
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/novnc-deceptive-site-error.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/novnc-launch-get-started-2.png b/timesten/cache-introduction/00-setup-compute/images/novnc-launch-get-started-2.png
new file mode 100644
index 000000000..0b6716c49
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/novnc-launch-get-started-2.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/novnc-login-1.png b/timesten/cache-introduction/00-setup-compute/images/novnc-login-1.png
new file mode 100644
index 000000000..4f2923f6a
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/novnc-login-1.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/images/standardshape.png b/timesten/cache-introduction/00-setup-compute/images/standardshape.png
new file mode 100644
index 000000000..a6096e4b5
Binary files /dev/null and b/timesten/cache-introduction/00-setup-compute/images/standardshape.png differ
diff --git a/timesten/cache-introduction/00-setup-compute/setup-compute.md b/timesten/cache-introduction/00-setup-compute/setup-compute.md
new file mode 100644
index 000000000..f18150314
--- /dev/null
+++ b/timesten/cache-introduction/00-setup-compute/setup-compute.md
@@ -0,0 +1,257 @@
+# Setup Compute Instance
+
+## Introduction
+
+This lab will show you how to setup a Resource Manager stack that will generate the Oracle Cloud objects needed to run your workshop.
+
+*Estimated Lab Time:* 15 minutes
+
+### About Terraform and Oracle Cloud Resource Manager
+
+For more information about Terraform and Resource Manager, please see the appendix below.
+
+### Objectives
+
+- Create Resource Manager Stack
+- Use the stack to create the required OCI resources
+- Connect to the created compute instance
+
+### Prerequisites
+
+This lab assumes you have:
+
+- An Oracle Cloud account (paid or free trial)
+- You have completed *Lab: Prepare Setup*
+
+## Task 1: Create Stack: Choose a Path
+
+When using the downloaded ORM stack file to deploy the required OCI resources you have two options:
+
+- Allow the stack to create and configure a private, dedicated network (VNC and subnet) for you
+- Specify an existing, suitably configured, network (VCN and subnet) to be used
+
+The rest of thi lab assumes that you will allow the stack to create the network for you. If you wish to use an existing network (see *Lab: Prepare Setup *for details of required Ingress rules) then consult the Appendix below for instructions.
+
+## Task 2: Create Stack: Compute + Networking
+
+1. Identify the ORM stack zip file downloaded in *Lab: Prepare Setup*
+2. Login to Oracle Cloud
+3. Open up the hamburger menu in the left hand corner. Click **Developer Services**, choose **Resource Manager > Stacks**. Choose the compartment in which you would like to install. Click **Create Stack**.
+
+ 
+
+ 
+
+4. Select **My Configuration**, choose the **.ZIP FILE** button, click the **Browse** link and select the zip file that you downloaded or drag-n-drop for the file explorer.
+
+ 
+
+5. Click **Next**.
+
+6. Enter or select the following:
+
+ 
+
+ - **Instance Count:** Accept the default, **1**, unless you intend to create more than one. e.g. for a team
+ - **Select Availability Domain:** Select an availability domain from the dropdown list.
+
+7. Depending on the quota you have in your tenancy you can choose from standard Compute shapes or Flex shapes. Please visit the Appendix: Troubleshooting Tips for instructions on checking your quota
+ - **Use Flexible Instance Shape with Adjustable OCPU Count?:** Keep the default as checked (unless you plan on using a fixed shape)
+ - **Instance Shape:** Keep the default or select from the list of Flex shapes in the dropdown menu (e.g *VM.Standard.E4.Flex*).
+ - **Instance OCPUS:** Accept the default shown. e.g. (**4**) will provision 4 OCPUs and 64GB of memory. You may also elect to reduce or increase the count by selecting from the dropdown. e.g. `[2-24]`. Please ensure you have the capacity available before increasing.
+8. If don't have quota for Flex Shapes or you prefer to use fixed shapes, follow the instructions below. Otherwise skip to the next step.
+ - **Use Flexible Instance Shape with Adjustable OCPU Count?:** Unchecked
+ - **Instance Shape:** Accept the default shown or select from the dropdown. e.g. VM.Standard2.2
+
+ 
+
+10. For this section we will provision a new VCN with all the appropriate ingress and egress rules needed to run this workshop. If you already have a VCN, make sure it has all of the correct ingress and egress rules and skip to the next section.
+ - **Use Existing VCN?:** Accept the default by leaving this unchecked. This will create a **new VCN**.
+
+11. Click **Next**.
+12. Select **Run Apply** and click **Create**.
+
+ 
+
+13. Your stack has is now created and the *Apply* action triggered is running to deploy your environment!
+
+ 
+
+You may now proceed to Task 2 (skip Task 1B).
+
+## Task 1B: Create Stack: Compute only
+If you just completed Task 1A, please proceed to Task 2. If you have an existing VCN and are comfortable updating VCN configurations, please ensure your VCN meets the minimum requirements. Refer to *Lab: Prepare Setup*
+
+ *Note:* We recommend letting our stack create the VCN to reduce the potential for error.
+
+1. Identify the ORM stack zip file downloaded in *Lab: Prepare Setup*
+2. Login to Oracle Cloud
+3. Open up the hamburger menu in the left hand corner. Choose the compartment in which you would like to install. Choose **Resource Manager > Stacks**.
+
+ 
+
+ 
+
+4. Select **My Configuration**, click the **Browse** link and select the zip file (dbsec-lab-mkplc-freetier.zip) that you downloaded. Click **Select**.
+
+ 
+
+ Enter the following information:
+ - **Name**: Enter a name or keep the prefilled default (*DO NOT ENTER ANY SPECIAL CHARACTERS HERE*, including periods, underscores, exclamation etc, it will mess up the configuration and you will get an error during the apply process)
+ - **Description**: Same as above
+ - **Create in compartment**: Select the correct compartment if not already selected
+
+ *Note:* If this is a newly provisioned tenant such as freetier with no user created compartment, stop here and first create it before proceeding.
+
+5. Click **Next**.
+
+ 
+
+ Enter or select the following:
+ - **Instance Count:** Keep the default to **1** to create only one instance. You may also choose to a higher number if you need more than one instance created.
+ - **Select Availability Domain:** Select an availability domain from the dropdown list.
+ - **Use Flexible Instance Shape with Adjustable OCPU Count?:** Keep the default as checked (unless you plan on using a fixed shape)
+ - **Instance Shape:** Keep the default or select from the list of Flex shapes in the dropdown menu (e.g *VM.Standard.E4.Flex*).
+ - **Instance OCPUS:** Accept the default shown. e.g. (**4**) will provision 4 OCPUs and 64GB of memory. You may also elect to reduce or increase the count by selecting from the dropdown. e.g. `[2-24]`. Please ensure you have the capacity available before increasing.
+ - **Use Existing VCN?:** Check to select.
+ - **Select Existing VCN?:** Select existing VCN with regional public subnet and required security list.
+
+ *Note:* For an existing VCN Option to be used successful, review the details at the bottom of this section
+
+6. If you prefer to use fixed shapes, follow the instructions below. Otherwise skip to the next step.
+ - **Use Flexible Instance Shape with Adjustable OCPU Count?:** Unchecked
+ - **Instance Shape:** Accept the default shown or select from the dropdown. e.g. VM.Standard.E2.2
+
+ 
+
+7. Review and click **Create**.
+
+ 
+
+8. Your stack has is now created and the *Apply* action triggered is running to deploy your environment!
+
+ 
+
+## Task 2: Terraform Apply
+In the prior steps we elected to trigger the *terraform apply action* on stack creation.
+
+1. Review the job output.
+
+ 
+
+2. Congratulations, your environment has been created! Click on the *Application Information* tab to get additional information about what you have just done.
+3. Your public IP address(es), instance name(s), and remote desktop URL are displayed.
+
+
+## Task 3: Access the Graphical Remote Desktop
+For ease of execution of this workshop, your VM instance has been pre-configured with a remote graphical desktop accessible using any modern browser on your laptop or workstation. Proceed as detailed below to login.
+
+1. Navigate to **Stack Details**, **Application Information** tab, and click on the remote desktop URL
+
+ 
+
+ 
+
+ This should take you directly to your remote desktop in a single click.
+
+ 
+
+ *Note:* While rare, you may see an error on the browser - “*Deceptive Site Ahead*†or similar depending on your browser type as shown below.
+
+ Public IP addresses used for LiveLabs provisioning comes from a pool of reusable addresses and this error is due to the fact that the address was previously used by a compute instance long terminated, but that wasn't properly secured, got bridged and was flagged. You can safely ignore and proceed by clicking on *Details*, and finally on *Visit this unsafe site*.
+
+ 
+
+## Appendix 1: Terraform and Resource Manager
+Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Configuration files describe to Terraform the components needed to run a single application or your entire datacenter. In this lab a configuration file has been created for you to build network and compute components. The compute component you will build creates an image out of Oracle's Cloud Marketplace. This image is running Oracle Linux 7.
+
+Resource Manager is an Oracle Cloud Infrastructure service that allows you to automate the process of provisioning your Oracle Cloud Infrastructure resources. Using Terraform, Resource Manager helps you install, configure, and manage resources through the "infrastructure-as-code" model. To learn more about OCI Resource Manager, take a watch the video below.
+
+[](youtube:udJdVCz5HYs)
+
+## Appendix 2: Troubleshooting Tips
+If you encountered any issues during the lab, follow the steps below to resolve them. If you are unable to resolve, please skip to the **Need Help** section to submit your issue via our support forum.
+- Availability Domain Mismatch
+- Limits Exceeded
+- Flex Shape Not Found
+- Instance shape selection grayed out
+
+### **Issue #1:** Availability Domain Mismatch
+
+
+#### Issue #1 Description
+When creating a stack and using an existing VCN, the availability domain and the subnet must match otherwise the stack errors.
+
+#### Fix for Issue #1
+1. Click on **Stack**-> **Edit Stack** -> **Configure Variables**.
+2. Scroll down to the network definition.
+3. Make sure the Availability Domain number matches the subnet number. E.g. If you choose AD-1, you must also choose subnet #1.
+4. Click **Next**
+5. Click **Save Changes**
+6. Click **Terraform Actions** -> **Apply**
+
+### **Issue #2:** Flex Shape Not Found
+
+
+#### Issue #2 Description
+When creating a stack your ability to create an instance is based on the capacity you have available for your tenancy.
+
+#### Fix for Issue #3
+If you have other compute instances you are not using, you can go to those instances and delete them. If you are using them, follow the instructions to check your available usage and adjust your variables.
+1. Click on the Hamburger menu, go to **Governance** -> **Limits, Quotas and Usage**
+2. Select **Compute**
+3. These labs use the following compute types. Check your limit, your usage and the amount you have available in each availability domain (click Scope to change Availability Domain)
+4. Look for *Cores for Standard.E2 based VM and BM instances*, *Cores for Standard.xx.Flex based VM and BM instances*, and *Cores for Optimized3 based VM and BM instances*
+4. Click on the hamburger menu -> **Resource Manager** -> **Stacks**
+5. Click on the stack you created previously
+6. Click **Edit Stack** -> **Configure Variables**.
+7. Scroll down to Options
+8. Change the shape based on the availability you have in your system
+9. Click **Next**
+10. Click **Save Changes**
+11. Click **Terraform Actions** -> **Apply**
+
+### **Issue #3:** Limits Exceeded
+
+
+
+#### Issue #3 Description
+When creating a stack your ability to create an instance is based on the capacity you have available for your tenancy.
+
+*Please ensure that you are NOT running this in the **Always Free** Tier. This workshop does not run on the Always Free tier, you must have available cloud credits. Go to **Governance** -> **Limits, Quotas and Usage,** select **compute**, ensure that you have **more than** the micro tier available. If you have only 2 micro computes, your account has transitioned to an Always Free. This means that the promotional period of 30 days has expired or you have run out of credits, this workshop will NOT run.*
+
+#### Fix for Issue #3
+If you have other compute instances you are not using, you can go to those instances and delete them. If you are using them, follow the instructions to check your available usage and adjust your variables.
+
+1. Click on the Hamburger menu, go to **Governance** -> **Limits, Quotas and Usage**
+2. Select **Compute**
+3. These labs use the following compute types. Check your limit, your usage and the amount you have available in each availability domain (click Scope to change Availability Domain)
+4. Look for *Cores for Standard.E2 based VM and BM instances*, *Cores for Standard.xx.Flex based VM and BM instances*, and *Cores for Optimized3 based VM and BM instances*
+5. Click on the Hamburger menu -> **Resource Manager** -> **Stacks**
+6. Click on the stack you created previously
+7. Click **Edit Stack** -> **Configure Variables**.
+8. Scroll down to Options
+9. Change the shape based on the availability you have in your system
+10. Click **Next**
+11. Click **Save Changes**
+12. Click **Terraform Actions** -> **Apply**
+
+### **Issue #4:** Instance Shape LOV Selection Grayed Out
+
+
+
+#### Issue #4 Description
+When creating a stack selected the option *"Use Flexible Instance Shape with Adjustable OCPU Count"* but the *"Instance Shape"* LOV selection is grayed out and the following error message displayed:***"Specify a value that satisfies the following regular expression: ^VM\.(Standard\.E3\.Flex)$"***
+
+This issue is an indication that your tenant is not currently configure to use flexible shapes (e3flex)
+
+#### Fix for Issue #4
+Modify your stack to use fixed shapes instead.
+
+1. Uncheck the option *"Use Flexible Instance Shape with Adjustable OCPU Count"* to use fixed shape instead
+
+
+
+## Acknowledgements
+* **Author** - Rene Fontcha, LiveLabs Platform Lead, NA Technology
+* **Last Updated By/Date** - Rene Fontcha, LiveLabs Platform Lead, NA Technology, August 2021
\ No newline at end of file
diff --git a/timesten/cache-introduction/01-introduction/introduction.md b/timesten/cache-introduction/01-introduction/introduction.md
index daba7e5e4..fb03b4f72 100644
--- a/timesten/cache-introduction/01-introduction/introduction.md
+++ b/timesten/cache-introduction/01-introduction/introduction.md
@@ -6,7 +6,7 @@ In this workshop you will discover how deploying Oracle TimesTen In-Memory Datab
Setting up a TimesTen cache is quick and easy. This workshop leads you through the process step by step and uses a simple OLTP application and some example queries to demonstrate the incredibly low query latencies provided by TimesTen.
-Estimated Workshop Time: **60 minutes**
+**Estimated Workshop Time:** 90 minutes
### About Oracle TimesTen In-Memory Database
@@ -48,12 +48,11 @@ In order to run this workshop you need:
You can run this workshop:
* In the LiveLabs sandbox
-* In your own tenancy using a paid Oracle Cloud account
-* Using a free-trial Oracle Cloud account
+* In your own tenancy using a paid Oracle Cloud account or a free-trial Oracle Cloud account
This workshop does _not_ support the Oracle Cloud 'Always Free' tier due to that tier's resource restrictions.
-**IMPORTANT:** If you choose to run this workshop in your own tenancy, or using a free-trial Cloud account, please be sure to provision at least **4 CPUs** and **32 GB RAM** for the cloud instance used for the workshop.
+**IMPORTANT:** This workshop requires an OCI comoute instance with at least **4 CPUs** and **32 GB RAM.** If you choose to run this workshop in your own tenancy, please ensure that you have sufficient resources available.
You may now ***proceed to the next lab***.
diff --git a/timesten/cache-introduction/02-prepare-setup/prepare-setup.md b/timesten/cache-introduction/02-prepare-setup/prepare-setup.md
index 6e682b536..34a93a47f 100644
--- a/timesten/cache-introduction/02-prepare-setup/prepare-setup.md
+++ b/timesten/cache-introduction/02-prepare-setup/prepare-setup.md
@@ -4,7 +4,7 @@
In this lab, you will download the Oracle Resource Manager (ORM) stack zip file needed to set up the resources needed to run this workshop. This workshop requires a compute instance and a Virtual Cloud Network (VCN) and subnet.
-Estimated Time: **15 minutes**
+**Estimated Lab Time:** 15 minutes
### Objectives
@@ -25,35 +25,9 @@ This lab assumes you have:
2. Save in your downloads folder.
-We strongly recommend using this stack to create a self-contained/dedicated VCN with your instance(s). Skip to *Task 3* to follow our recommendations. If you would rather use an exiting VCN then proceed to the next task to update your existing VCN with the required Ingress rules.
+We strongly recommend using this stack to create a self-contained/dedicated VCN for your instance. If you would rather use an existing VCN, consult the appendix below to learn how to update an existing VCN with the required Ingress rules.
-## Task 2: Adding security rules to an existing VCN
-
-This workshop requires a certain number of ports to be available, a requirement that can be met by using the default ORM stack execution that creates a dedicated VCN. In order to use an existing VCN/subnet, the following ports should be added to the Ingress rules.
-
-| Source Port | Source CIDR | Destination Port | Protocol | Description |
-| :--------: | :--------: | :----------: | :----: | :------------------------------------ |
-| All | 0.0.0.0/0 | 22 | TCP | SSH |
-| All | 0.0.0.0/0 | 80 | TCP | Remote Desktop using noVNC |
-{: title="List of Ports Required Opened (Ingress Rules)"}
-
-
-1. Go to *Networking >> Virtual Cloud Networks*
-2. Choose your network
-3. Under Resources, select Security Lists
-4. Click on Default Security Lists under the Create Security List button
-5. Click Add Ingress Rule button
-6. Enter the following:
- - Source Type: CIDR
- - Source CIDR: 0.0.0.0/0
- - IP Protocol: TCP
- - Source Port Range: All (Keep Default)
- - Destination Port Range: *Select from above table*
- - Description: *Select corresponding description from above table*
-7. Click the Add Ingress Rules button
-8. Repeat steps [5-7] until a rule is created for each port listed in the table
-
-## Task 3: Setup your OCI compute instance
+## Task 2: Setup your OCI compute instance
Using the details from the two steps above, proceed to the lab *Environment Setup* to set up your workshop environment using Oracle Resource Manager (ORM) using one of the following options:
@@ -64,16 +38,45 @@ Using the details from the two steps above, proceed to the lab *Environment Setu
When deploying the workshop compute instance via the ORM stack, as described in the next lab:
-1. By default SSH access using a system generated SSH private key is enabled. SSH access is recommended for this workshop as it offers a better user experience, especially for copy/paste, than noVNC connectivity.
+1. By default SSH access using a system generated SSH private key is enabled. SSH access is recommended for this workshop as it offers a better user experience, especially for copy/paste, than Remote Desktop access.
2. If you wish to provide your own SSH public key, uncheck the option *Auto Generate SSH Key Pair* and follow the on-screen instructions to either upload or copy/paste your SSH public key.
3. Unless you wish to customize SSH connectivity as described in (2), you can accept all the defaults provided by the ORM stack.
-You may now *proceed to the next lab (Environment setup)*.
+You may now *proceed to the next lab*.
+
+## Appendix: Adding security rules to an existing VCN
+
+This workshop requires a certain number of ports to be available, a requirement that can be met by using the default ORM stack execution that creates a dedicated VCN. In order to use an existing VCN/subnet, the following ports should be added to the Ingress rules.
+
+| Port |Description |
+| :------------- | :------------------------------------ |
+| 22 | SSH |
+| 80 | Remote Desktop using noVNC |
+
+**Note:** If you plan to only use SSH connectivity, or only Remote Desktop connectivity, then you only need to open the appropriate port.
+
+
+1. Go to *Networking >> Virtual Cloud Networks*
+
+2. Choose your network
+
+3. Under Resources, select *Security Lists*
+
+4. Click on *Default Security Lists* under the Create Security List button
+
+5. Click the *Add Ingress Rule* button
+
+6. Enter the following:
+ - Source CIDR: 0.0.0.0/0
+ - Destination Port Range: *Refer to the above table*
+
+7. Click the **Add Ingress Rules** button
+
## Acknowledgements
* **Author** - Chris Jenkins, Senior Director, TimesTen Product Management
-* **Contributors** - Doug Hood, Jenny Bloom, Rene Fontcha
-* **Last Updated By/Date** - Rene Fontcha, July 2022
+* **Contributors** - Doug Hood & Jenny Bloom, TimesTen Product Management
+* **Last Updated By/Date** - Chris Jenkins, July 2022
diff --git a/timesten/cache-introduction/03-connect-to-instance/connect-to-instance.md b/timesten/cache-introduction/03-connect-to-instance/connect-to-instance-freetier.md
similarity index 99%
rename from timesten/cache-introduction/03-connect-to-instance/connect-to-instance.md
rename to timesten/cache-introduction/03-connect-to-instance/connect-to-instance-freetier.md
index 668cd39d1..864627345 100644
--- a/timesten/cache-introduction/03-connect-to-instance/connect-to-instance.md
+++ b/timesten/cache-introduction/03-connect-to-instance/connect-to-instance-freetier.md
@@ -10,7 +10,7 @@ If you chose to run the workshop in the LiveLabs sandbox then the only connectio
If you chose to run the workshop in your own tenancy, or in a free-trial Cloud account, then you can use the same browser-based GUI connection method. Also, if you selected the option during deployment via the ORM stack, you also have the option to use SSH connectivity (**strongly recommended)**.
-Estimated Time: **5 minutes**
+**Estimated Lab Time:** 5 minutes
### Objectives
diff --git a/timesten/cache-introduction/03-connect-to-instance/connect-to-instance-livelabs.md b/timesten/cache-introduction/03-connect-to-instance/connect-to-instance-livelabs.md
new file mode 100644
index 000000000..d8faf6269
--- /dev/null
+++ b/timesten/cache-introduction/03-connect-to-instance/connect-to-instance-livelabs.md
@@ -0,0 +1,89 @@
+# Connect to the workshop compute instance
+
+## Introduction
+
+In this lab, you will learn the different ways to connect to the OCI compute instance that hosts the workshop.
+
+The workshop requires you to use a terminal session to run various commands and observe their output. Often you may need to copy and paste commands or text from the workshop instructions into the terminal session.
+
+In the LiveLabs sandbox, the only connection method available to you by default is a GUI session using the browser-based noVNC remote desktop mechanism. It is possible to set up SSH connectivity by adding your own SSH key into the instance. Connecting via SSH will proviee a superiodu experience due to the amount of copy/paste needed between the lab instructions and the terminal session.
+
+**Estimated Lab Time:** 5 minutes
+
+### Objectives
+
+- Connect to the compute instance using noVNC remote desktop
+- Connect to the compute instance using SSH (optional but recommended)
+
+### Prerequisites
+
+This lab assumes that you have:
+
+- Completed all the previous labs in this workshop, in sequence.
+
+## Task 1: Connect using noVNC remote desktop
+
+When you launch the workshop by clicking the *Launch Workshop* link in the LiveLabs reservation page entry, these instructions open in your browser. Click on ***View Login Info*** at the tope left of the browser window and then click the Launch Remote Desktop button. You should then see the workshop desktop.
+
+
+
+You can use the **Terminal** option under the *Activities* menu, or double-click the *Terminal* icon on the desktop, to open a terminal session.
+
+## Task 2: Connect using SSH (optional but recommended)
+
+You can connect to the instance as the oracle user using an SSH private key.
+
+_LiveLabs sandbox_
+
+Follow the instructions in the lab *Using noVNC Remote Desktop* to add your SSH public key to the **oracle** user's SSH **authorized_keys** file. You can then connect to the workshop compute instance using the corresponding SSH private key.
+
+_Own tenancy or free-trial Cloud account - user-provided public key_
+
+If you enabled SSH connectivity by providing your own SSH public key as part of the ORM stack deployment process then you can connect using the corresponding SSH private key.
+
+_Own tenancy or free-trial Cloud account - system-generated key pair_
+
+If you enabled SSH connectivity using a system generated key as part of the ORM stack deployment process, the SSH private key needed to connect is displayed at the end of the ORM stack 'apply' job execution log.
+
+```
+generated_instance_ssh_private_key = -----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAu8ta42Xs+O/JvkDfpjWo4c2uqb9xkR2IncidGFE1FO4GlMm6
+...
+2o0ssyrFUAo93fbkfdNfqojnnVJaMjGrpwaTS80Y7tbIrreex2R+9g==
+-----END RSA PRIVATE KEY-----
+```
+
+The generated SSH private key can also be viewed and copied on the Stack's Application Information tab:
+
+
+
+Copy/paste the key into a file on your client computer, or import into your SSH client, and use it to connect via SSH.
+
+**NOTE:** On Linux and macOS systems, SSH private keys should be stored in your user's .ssh directory (**~/.ssh**) and must have permissions of **600 (rw-------)**.
+
+Assuming that the SSH private key is **~/.ssh/id_livelabs** and the public IP address of the workshop compute instance is **123.123.123.123** then you can connect using:
+
+```
+
+ssh -i ~/.ssh/id_livelabs oracle@123.123.123.123
+
+```
+
+```
+The authenticity of host '123.123.123.123 (123.123.123.123)' can't be established.
+ED25519 key fingerprint is SHA256:bm2wv3HgyBIhIRov6+EtId10rQHyq1LXpXglQMpqhqA.
+This key is not known by any other names
+Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
+Warning: Permanently added '140.238.69.118' (ED25519) to the list of known hosts.
+Last login: Mon Jun 27 09:12:52 2022 from aa.bb.cc.dd
+[oracle@ttlivelabvm ~]$
+```
+
+You can now *proceed to the next lab*. You can keep your terminal session open for use in the next lab.
+
+## Acknowledgements
+
+* **Author** - Chris Jenkins, Senior Director, TimesTen Product Management
+* **Contributors** - Doug Hood & Jenny Bloom, TimesTen Product Management
+* **Last Updated By/Date** - Chris Jenkins, July 2022
+
diff --git a/timesten/cache-introduction/04-initialize-environment/initialize-environment.md b/timesten/cache-introduction/04-initialize-environment/initialize-environment.md
index 32fa52c0a..fc9961d87 100644
--- a/timesten/cache-introduction/04-initialize-environment/initialize-environment.md
+++ b/timesten/cache-introduction/04-initialize-environment/initialize-environment.md
@@ -6,7 +6,7 @@ In this lab, you will start up all the components required to run the labs makin
The workshop uses an Oracle database which runs in its own container (**dbhost**). A second container (**tthost1**) provides the TimesTen environment. These containers, and the host system (**ttlivelabvm**), are all connected using a custom Docker network. This setup provides a realistic multi-host environment with the convenience of just a single compute instance.
-Estimated Time: 10 minutes.
+**Estimated Lab Time:** 10 minutes.
### Objectives
diff --git a/timesten/cache-introduction/05-create-instance/create-instance.md b/timesten/cache-introduction/05-create-instance/create-instance.md
index afc94abba..c53162900 100644
--- a/timesten/cache-introduction/05-create-instance/create-instance.md
+++ b/timesten/cache-introduction/05-create-instance/create-instance.md
@@ -4,7 +4,7 @@
In this lab, you will create a TimesTen instance to host our TimesTen cache database, start the instance and execute a few simple TimesTen commands.
-Estimated Time: 5 minutes.
+**Estimated Lab Time:** 5 minutes.
### Objectives
@@ -203,13 +203,13 @@ TTC_SERVER=tthost1-ext/6625
ConnectionCharacterSet=AL32UTF8
```
-The file defines two ODBC Data Source Names (DSNs), **sampledb** and **sampledbcs**. ODBC is TimesTen’s native API, though TimesTen also provides, or supports, many other commonly used database APIs such as JDBC, Oracle Call Interface, ODP.NET, cx_Oracle (for Python) and node-oracledb (for Node.js).
+- The file defines two ODBC Data Source Names (DSNs), **sampledb** and **sampledbcs**. ODBC is TimesTen’s native API, though TimesTen also provides, or supports, many other commonly used database APIs such as JDBC, Oracle Call Interface, ODP.NET, cx_Oracle (for Python) and node-oracledb (for Node.js).
-The **sampledb** DSN is a _direct mode_, or _server_, _DSN_. It defines the parameters and connectivity for a database hosted by this TimesTen instance. Tools, utilities, and applications running on this host (tthost1) can connect via this DSN using TimesTen’s low latency ‘direct mode’ connectivity mechanism. This database is also accessible remotely using TimesTen’s client-server connectivity.
+- The **sampledb** DSN is a _direct mode_, or _server_, _DSN_. It defines the parameters and connectivity for a database hosted by this TimesTen instance. Tools, utilities, and applications running on this host (tthost1) can connect via this DSN using TimesTen’s low latency ‘direct mode’ connectivity mechanism. This database is also accessible remotely using TimesTen’s client-server connectivity.
-The **sampledbcs** DSN is a _client DSN_. It defines connectivity parameters for a server DSN that tools, utilities and applications can connect to using TimesTen’s client-server connectivity mechanism. In this example, the DSN defines client-server access for the local **sampledb** server DSN.
+- The **sampledbcs** DSN is a _client DSN_. It defines connectivity parameters for a server DSN that tools, utilities and applications can connect to using TimesTen’s client-server connectivity mechanism. In this example, the DSN defines client-server access for the local **sampledb** server DSN.
-All TimesTen APIs support both direct mode and client-server and, with some minor exceptions, the functionality is identical regardless of the type of connectivity that you are using.
+- All TimesTen APIs support both direct mode and client-server and, with some minor exceptions, the functionality is identical regardless of the type of connectivity that you are using.
## Task 6: Run some simple TimesTen commands
diff --git a/timesten/cache-introduction/06-prepare-oracle/prepare-oracle.md b/timesten/cache-introduction/06-prepare-oracle/prepare-oracle.md
index 7a4673336..0076ef62f 100644
--- a/timesten/cache-introduction/06-prepare-oracle/prepare-oracle.md
+++ b/timesten/cache-introduction/06-prepare-oracle/prepare-oracle.md
@@ -4,7 +4,7 @@
In this lab, we will prepare the Oracle database to support TimesTen caching.
-Estimated Time: 5 minutes.
+**Estimated Lab Time:** 10 minutes.
### Objectives
@@ -240,101 +240,60 @@ GRANT SELECT ON oe.promotions TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
```
GRANT SELECT ON oe.product_information TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
```
GRANT SELECT ON oe.customers TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
```
GRANT SELECT ON oe.orders TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
```
GRANT SELECT ON oe.order_items TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
```
GRANT SELECT ON oe.inventories TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
```
GRANT SELECT ON oe.product_descriptions TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
```
GRANT SELECT ON appuser.vpn_users TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
```
GRANT SELECT ON appuser.parent TO ttcacheadm;
```
-```
-Grant succeeded.
-
-```
-
```
GRANT SELECT ON appuser.child TO ttcacheadm;
```
-```
-Grant succeeded.
-```
-
Exit from SQL\*Plus:
```
diff --git a/timesten/cache-introduction/07-prepare-cache/prepare-cache.md b/timesten/cache-introduction/07-prepare-cache/prepare-cache.md
index 759462b88..41a31aa82 100644
--- a/timesten/cache-introduction/07-prepare-cache/prepare-cache.md
+++ b/timesten/cache-introduction/07-prepare-cache/prepare-cache.md
@@ -4,7 +4,7 @@
In this lab, you will create a TimesTen database and set it up to cache the required tables from the Oracle database.
-Estimated Time: **10 minutes**
+**Estimated Lab Time:** 10 minutes
### Objectives
@@ -116,13 +116,15 @@ Done.
## Task 3: Create the cache groups
-A **cache group** is a SQL object that encapsulates a set of one or more tables that are related through primary key -> foreign key relationships. The (single) top-level table is called the root table and the other tables sit below it in a hierarchical parent/child arrangement.
+Some useful definitions and concepts:
-A cache instance consists of a single row from the root table and all the related rows from the subordinate tables down through the hierarchy within the cache group.
+- A **cache group** is a SQL object that encapsulates a set of one or more tables that are related through primary key -> foreign key relationships. The (single) top-level table is called the root table and the other tables sit below it in a hierarchical parent/child arrangement.
-Cache operations act on cache groups not on individual tables, or on cache instances as opposed to individual rows.
+- A **cache instance** consists of a single row from the root table and all the related rows from the subordinate tables down through the hierarchy within the cache group.
-Normal SQL operations, such as SELECT, INSERT, UPDATE and DELETE, operate directly on the cache tables and the rows therein.
+- Cache operations act on cache groups not on individual tables, or on cache instances as opposed to individual rows.
+
+- Normal SQL operations, such as SELECT, INSERT, UPDATE and DELETE, operate directly on the cache tables and the rows therein.
Create the (multiple) cache groups for the **OE** schema tables. You will use a pre-prepared script to reduce the amount of typing or copying & pasting.
@@ -330,26 +332,6 @@ Connection successful: DSN=sampledb;UID=appuser;DataStore=/tt/db/sampledb;Databa
Command>
```
-```
-
-cachegroups appuser.%;
-
-```
-
-```
-0 cache groups found.
-```
-
-```
-
-tables;
-
-```
-
-```
-0 tables found.
-```
-
```
CREATE READONLY CACHE GROUP appuser.cg_vpn_users
diff --git a/timesten/cache-introduction/08-load-cache/load-cache.md b/timesten/cache-introduction/08-load-cache/load-cache.md
index 5b120c1a7..a7af259bd 100644
--- a/timesten/cache-introduction/08-load-cache/load-cache.md
+++ b/timesten/cache-introduction/08-load-cache/load-cache.md
@@ -4,7 +4,7 @@
In this lab, you will load data from the Oracle tables into the TimesTen cache tables. This action will also activate the AUTOREFRESH mechanism which will periodically refresh the cache with any changes that have occurred in the Oracle database.
-Estimated Time: **5 minutes**
+**Estimated Lab Time:** 5 minutes
### Objectives
diff --git a/timesten/cache-introduction/09-cache-refresh/cache-refresh.md b/timesten/cache-introduction/09-cache-refresh/cache-refresh.md
index 30c74ba4d..59c1fcb4a 100644
--- a/timesten/cache-introduction/09-cache-refresh/cache-refresh.md
+++ b/timesten/cache-introduction/09-cache-refresh/cache-refresh.md
@@ -4,9 +4,9 @@
With READONLY cache groups, the Oracle database is the master of the data. The data cached in TimesTen is a read-only copy. Any changes (insert/update/delete) made to the data in Oracle are automatically captured and refreshed to the cached tables in TimesTen based on the defined refresh interval (2 seconds in these examples).
-In this lab you will execute some DML statements on the tables in Oracle and observe those changes being automatically propagated to the cache tables in TimesTen.
+In this lab you will execute some DML statements on the tables in Oracle and observe those changes being automatically propagated to the corresponding tables cached in TimesTen.
-Estimated Time: **5 minutes**
+**Estimated Lab Time:** 5 minutes
### Objectives
@@ -29,7 +29,7 @@ Connect to the OCI compute instance again (if required) and open a second termin
## Task 2: Verify the refresh of INSERT operations
-In your _primary_ SSH session, which is currently logged into the TimesTen host, connect to the TimesTen cache as the OE schema user"
+In your _primary_ SSH session, which is currently logged into the TimesTen host, connect to the TimesTen cache as the OE schema user:
```
diff --git a/timesten/cache-introduction/10-oltp-performance/oltp-performance.md b/timesten/cache-introduction/10-oltp-performance/oltp-performance.md
index aca288b3e..7fec4b2f6 100644
--- a/timesten/cache-introduction/10-oltp-performance/oltp-performance.md
+++ b/timesten/cache-introduction/10-oltp-performance/oltp-performance.md
@@ -4,9 +4,9 @@
In this lab, you will use a simple benchmark program to run a (read-only) OLTP workload against the TimesTen cache and against the Oracle database to illustrate the performance benefit of TimesTen.
-You will use a standard TimesTen benchmark program, TptBm, in this case a version that connects to the target database using the Oracle Call Interface (OCI) API. The program can run against either TimesTen or Oracle and performs the same operations in both cases. The source code for the tptbmOCI program is available in the _host VM _in the directory **~/lab/src**.
+You will use a standard TimesTen benchmark program, TptBm, in this case a version that connects to the target database using the Oracle Call Interface (OCI) API. The program can run against either TimesTen or Oracle and performs the same operations in both cases. The source code for the tptbmOCI program is available in the _host VM_ in the directory **~/lab/src**.
-Estimated Time: **5 minutes**
+**Estimated Lab Time:** 5 minutes
There is a single table used for this benchmark, APPUSER.VPN_USERS:
diff --git a/timesten/cache-introduction/11-query-performance/query-performance.md b/timesten/cache-introduction/11-query-performance/query-performance.md
index 8dcc4f449..a8ab67c01 100644
--- a/timesten/cache-introduction/11-query-performance/query-performance.md
+++ b/timesten/cache-introduction/11-query-performance/query-performance.md
@@ -4,7 +4,7 @@
In this lab, you will run some typical queries against the TimesTen cache and against the Oracle database to illustrate the performance benefit of TimesTen.
-Estimated Time: **5 minutes**
+**Estimated Lab Time:** 5 minutes
**IMPORTANT:** As noted in the previous lab there are many factors that can affect performance. As a result, the performance numbers shown in this lab are indicative only. The numbers that _you_ measure will differ and may be slightly better or slightly worse.
@@ -340,7 +340,7 @@ info: disconnected from 'sampledb'
## Task 4: Compare the results
-Here is a comparison of the results that I obtained when I ran these queries (your results _will_ differ):
+Here is a comparison of the results that were obtained from a previous run (your results _will_ differ):
| Query | Average Oracle Query Time (us) | Average TimesTen Query Time (us) | TimesTen Speedup |
diff --git a/timesten/cache-introduction/12-dynamic-caching/dynamic-caching.md b/timesten/cache-introduction/12-dynamic-caching/dynamic-caching.md
index 09d2d49db..f6422cce6 100644
--- a/timesten/cache-introduction/12-dynamic-caching/dynamic-caching.md
+++ b/timesten/cache-introduction/12-dynamic-caching/dynamic-caching.md
@@ -4,7 +4,7 @@
In this lab, you will learn the difference between static and dynamic cache groups.
-Estimated Time: **5 minutes**
+**Estimated Lab Time:** 5 minutes
So far, the cache groups that you have been working with are what are known as static cache groups. With static cache groups, you pre-load the cache group with the data that you wish to cache and then the TimesTen autorefresh mechanism ensures that any inserts, updates or deletes that occur on Oracle are captured and propagated to the cache to refresh the cached tables.
diff --git a/timesten/cache-introduction/13-shutdown/shutdown.md b/timesten/cache-introduction/13-shutdown/shutdown.md
index 0f7c0be57..793710ebc 100644
--- a/timesten/cache-introduction/13-shutdown/shutdown.md
+++ b/timesten/cache-introduction/13-shutdown/shutdown.md
@@ -4,7 +4,7 @@
In this final lab, you will cleanly shut down the TimesTen cache and the TimesTen instance that manages it.
-Estimated Time: **2 minutes**
+**Estimated Lab Time:** 2 minutes
### Objectives
diff --git a/timesten/cache-introduction/workshops/livelabs/manifest.json b/timesten/cache-introduction/workshops/livelabs/manifest.json
index 6bc2df6d7..6fd3b4536 100644
--- a/timesten/cache-introduction/workshops/livelabs/manifest.json
+++ b/timesten/cache-introduction/workshops/livelabs/manifest.json
@@ -8,11 +8,6 @@
"description": "Introduction to the TimesTen Cache Introduction Workshop.",
"filename": "../../01-introduction/introduction.md"
},
- {
- "title": "Get Started",
- "description": "Get started with LiveLabs",
- "filename": "https://oracle-livelabs.github.io/common/labs/cloud-login/cloud-login-livelabs2.md"
- },
{
"title": "Lab 1: Environment Setup",
"description": "Verify Setup of compute instance",