This covers the top 20 questions most DBA’s , Developers will have on the Autonomous Database from provisioning to backups , troubleshooting , tips and tricks , security and HA . This is a good introduction for on-prem DBA’s who want to learn how this works quickly without spending too much time on it . Questions like what does the free tier cover , how do I do backup or if its automated how do I manage it , how to scale up and down , how to use tools like SQLDeveloper and SQLModeler , endpoints , terraform all in a quick 45 minute session which might take weeks to pickup reading documentation or spanning several presentations
1. VP AIOps for the Autonomous Database
Sandesh Rao
LAOUC - Aug 2020
Top 20 FAQs on the Autonomous Database
@sandeshr
https://www.linkedin.com/in/raosandesh/
https://www.slideshare.net/SandeshRao4
2. 1. Get started with Free Tier
2. Get started with OML
3. Using OCI Resource Mgr
4. Modify endpoints for ADB
5. Wallet rotation
6. Partitions with external tables
7. Track instance creation -
workflow
8. Performance monitoring
9. Alarms on resource metrics
10. Upgrade to 19c
11. Performance hub
12. SQL monitor report
13. ASH analytics in Performance
hub
14. APEX in Autonomous Database
15. OML Notebooks
16. Auto scaling
17. Download AWR reports
18. Load data using DBMS_CLOUD
19. Access Tenancy Information
20. Autonomous Dataguard
Agenda
3. 1: How to get started with the
Autonomous Database Free Tier
4. Always Free services enable developers and students to learn, build and get
hands-on experience with Oracle Cloud for unlimited time
Anyone can try for an unlimited time the full functionality of:
• Oracle Autonomous Database
• Oracle Cloud Infrastructure including:
- Compute VMs
- Block and Object Storage
- Load Balancer
Free tier
5. Free tier – Tech spec
2 Autonomous Databases (Autonomous Data Warehouse or Autonomous
Transaction Processing), each with 1 OCPU and 20 GB storage
2 Compute VMs, each with 1/8 OCPU and 1 GB memory
2 Block Volumes, 100 GB total, with up to 5 free backups
10 GB Object Storage, 10 GB Archive Storage, and 50,000/month API requests
1 Load Balancer, 10 Mbps bandwidth
10 TB/month Outbound Data Transfer
500 million ingestion Datapoints and 1 billion Datapoints for Monitoring
Service
1 million Notification delivery options per month and 1000 emails per month
7. Creating a new Always Free ADB
Simple toggle to
enable “Always
Free”
8. • As of December 5, 2019, the Machine Learning (formerly known as Advanced Analytics), Spatial and
Graph features of Oracle Database may be used for development and deployment purposes with all
on-prem editions and Oracle Cloud Database Services.
• See the Oracle Database Licensing Information Manual (pdf) for more details.
• Oracle’s multi-model converged architecture by supporting multiple data types, data models (e.g.
spatial, graph, JSON, XML) and algorithms (e.g. machine learning, graph and statistical functions)
and workload types (e.g. operational and analytical) within a single database.
• Processing and analyzing all types of spatial data in business applications, GIS and operational
systems
• Using graph analysis to discover relationships in social networks, detect fraud, and make
informed recommendations
• Building and deploying machine learning models for predictive analytics
OML , Spatial and Graph is free with the Oracle Database
9. How to get started with
Oracle Machine Learning
12. STEP 1: Creating OML Users
•Go back to the Cloud Console
and open the Instances
screen. Find your database,
click the action menu and
select Service Console.
Creating OML Users
13. Log in to the service with your admin password.
Creating OML Users
14. Go to the Administration tab and click Manage Oracle ML Users to go to the OML user management page - this
page will allow you to manage OML users.
Creating OML Users
15. Click Create button to create a new OML user. Note that this will also create a new database user with
the same name.
This newly created user will be able to use the OML notebook application.
Note that you can also enter an email address to send an email confirmation to your user (for this lab
you can use your own personal email address) when creating the user.
Creating OML Users
16. Enter the required information for this user, name the user as omluser1. If you supplied a
valid email address, a welcome email should arrive within a few minutes to your Inbox.
Click the Create button, in the top-right corner of the page, to create the user.
Creating OML Users
17. Here is the email which each user receives
welcoming them to the OML application.
It includes a direct link to the OML application
for that user which they can bookmark.
Creating OML Users
18. After you click Create you will see that user listed in the Users section.
Creating OML Users
19. Use your new user account omluser1:
Exploring the OML Home Page
20. Once you have successfully signed in to OML the application home page will be displayed.
Overview of OML Home Page
The grey menu bar at the top of the screen provides links to the main OML menus for the application (left corner)
and the workspace/project and user maintenance on the right-hand side.
Exploring the OML Home Page
21. Simple SQL Syntax—Statistical Comparisons (t-tests)
Compare AVE Purchase Amounts Men vs. Women Grouped_By INCOME_LEVEL
Statistical Functions
SELECT SUBSTR(cust_income_level, 1, 22) income_level,
AVG(DECODE(cust_gender, 'M', amount_sold, null)) sold_to_men,
AVG(DECODE(cust_gender, 'F', amount_sold, null)) sold_to_women,
STATS_T_TEST_INDEPU(cust_gender, amount_sold, 'STATISTIC', 'F') t_observed,
STATS_T_TEST_INDEPU(cust_gender, amount_sold) two_sided_p_value
FROM customers c, sales s
WHERE c.cust_id = s.cust_id
GROUP BY ROLLUP(cust_income_level)
ORDER BY income_level, sold_to_men, sold_to_women, t_observed;
STATS_T_TEST_INDEPU (SQL) Example;
P_Values < 05 show statistically
significantly differences in the amounts
purchased by men vs. women
22. Simple SQL Syntax—Attribute Importance - ML Model Build (PL/SQL)
OAA Model Build and Real-time SQL Apply Prediction
BEGIN
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'BUY_INSURANCE_AI',
mining_function => DBMS_DATA_MINING.ATTRIBUTE_IMPORTANCE,
data_table_name => 'CUST_INSUR_LTV',
case_id_column_name => 'cust_id',
target_column_name => 'BUY_INSURANCE',
settings_table_name => 'Att_Import_Mode_Settings');
END;
/
SELECT attribute_name, rank , attribute_value
FROM BUY_INSURANCE_AI
ORDER BY rank, attribute_name;
Model Results (SQL query)
ATTRIBUTE_NAME RANK ATTRIBUTE_VALUE
BANK_FUNDS 1 0.2161
MONEY_MONTLY_OVERDRAWN 2 0.1489
N_TRANS_ATM 3 0.1463
N_TRANS_TELLER 4 0.1156
T_AMOUNT_AUTOM_PAYMENTS 5 0.1095
A1A2A3A4 A5A6 A7
41. Per-database with Instance Wallet selected:
• All existing database specific instance wallets will be void.
• Post rotation need to download new wallet to connect to database.
• NOTE - Regional wallets with all database certification keys continue to work
Regional level with Regional Wallet selected:
• Both regional and database specific instance wallets are voided.
• Post rotation need to download new regional or instance wallets to connect to
any database in region
• All user sessions are terminated for databases whose wallet is rotated.
• User session termination begins after wallet rotation completes, however this
process does not happen immediately.
New Option To Rotate Wallets For ADB
1
2
48. All data outside the database
• Files in Object Store buckets
Exposes the power of Oracle partitioning to
external data
• Partition pruning
• Partition maintenance
Enables order-of-magnitudes faster query
performance and enhanced data maintenance
Partitioned External Tables
…2016,04,01 2016,04,02
2016,04,0
3
File-02 in
Object Store
Bucket
File-03 in
Object Store
Bucket
File-01 in
Object Store
Bucket
49. Note only use of DBMS_CLOUD syntax is supported
Partitioned External Tables
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
table_name =>'PET1’,
credential_name =>'DEF_CRED_NAME’,
format => json_object('delimiter' value ‘,’,
'recorddelimiter' value 'newline’,
'characterset' value 'us7ascii’),
column_list => 'col1 number, col2 number, col3 number’
partitioning_clause => 'partition by range (col1) (
partition p1 values less than (1000) location (
‘https://swiftobjectstorage.us-ashburn-1 ... /file_01.txt') ,
partition p2 values less than (2000) location (
'https://swiftobjectstorage.us-ashburn-1 ... /file_02.txt'') ,
partition p3 values less than (3000) location (
'https://swiftobjectstorage.us-ashburn-1 ... /file_03.txt'') )
)
END;
/
50. Single table contains both internal (RDBMS) and
external partitions
• Full functional support, such as partial indexing,
partial read only, constraints, etc.
Partition maintenance for information lifecycle
management
• Currently limited support
• Enhancements in progress
Hybrid Partitioned Tables
…2016,04,01 2016,04,02
2016,04,
03
File-02 in
Object Store
Bucket
File-01 in
Object Store
Bucket
DB Partition
51. Data in any object store can be accessed
• Oracle Object Store, AWS S3 or Azure
Explicit authentication or pre-authenticated URIs
(Admittedly not a specific Partitioning feature,
but cool nevertheless)
Access data in Object Stores
Any Object
Storage
52. Note only use of DBMS_CLOUD syntax is supported
Hybrid Partitioned Tables
BEGIN DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
table_name =>'HPT1’,
credential_name =>'OBJ_STORE_CRED’,
format => json_object('delimiter' value ',', ‘
recorddelimiter' value 'newline', ‘
characterset' value 'us7ascii’),
column_list => 'col1 number, col2 number, col3 number’
partitioning_clause => 'partition by range (col1)
(partition p1 values less than (1000) external location (
'https://swiftobjectstorage.us-ashburn-1 .../file_01.txt') ,
partition p2 values less than (2000) external location (
‘https://swiftobjectstorage.us-ashburn-1 .../file_02.txt') ,
partition p3 values less than (3000) ) )
END;
61. • Monitor health, capacity, performance of ADB instances
• Uses metrics, alarms, and notifications
• Metrics accessible via OCI console or using APIs
Monitor Performance with ADB Metrics
62. 1. CPU Utilization
2. Memory Utilization
3. Sessions
4. Failed Connections
5. Execute Count
6. Queued Statements
7. Running Statements
8. Failed Logons
9. Current Logons
10. Transaction Count
11. User Calls
12. Parse Count (Total)
Available Service Metrics
63. Autonomous Database Details page
provides top 6 view of library of
service metrics.
Viewing Top 6 Metrics on
ADB Console
64. Complete library of
only metrics
available via
the OCI Console
Service Metrics
page or by using
the Monitoring API
Viewing Full Library Database Metrics
65. Step 1 – Select the required compartment
Setting Up Monitoring Page
66. Step 2 – Select the metric namespace for autonomous database
Setting Up Monitoring Page
100. 101 Confidential – Oracle Internal
Time Range selector is displayed on the top of the Performance Hub page
Use the Select Duration field to set the time duration
Default, Last 60 mins is selected
• Specify to view Last 8 hours, Last 24 hours, Last week
• Specify a custom time range
Time Range field shows active sessions in chart form.
• Active sessions chart displays avg number of active sessions broken down by CPU, User
I/O, and Wait.
Time Range field and time slider
104. 105 Confidential – Oracle Internal
SQL only monitored if running for at least five seconds or run in parallel
Displays monitored SQL statement executions by dimensions including Last Active Time, CPU Time,
and Database Time
Displays currently running SQL statements and SQL statements that completed, failed, or were
terminated.
Information includes Status, Duration, and SQL ID
• Status column has the following icons:
- A spinning icon indicates that the SQL statement is executing.
- A green check indicates SQL statement completed
- A red cross icon indicates that the SQL statement did not complete
- A clock icon indicates that the SQL statement is queued
SQL Monitoring
124. 125 Confidential – Oracle Internal
Shows Active Session History (ASH) analytics charts to explore ASH data
Drill down into database performance across multiple dimensions such as Consumer
Group, Wait Class, SQL ID, and User Name
Select an Average Active Sessions dimension and view the top activity for that dimension for
the selected time period.
For information on ASH, see Active Session History (ASH) in Oracle Database Concepts.
Active Session History (ASH) Analytics
142. Free tier – Includes free developer tools
APEX SQL Developer
Web
ML Notebooks REST Interfaces
Cloud Developer Images
Including OCI Software
Development Kits (SDKs),
and database connectors
Terraform
for automation
143. 144
Database-centric web application development framework
Oracle APEX
Develop desktop and
mobile web apps
Visualize and
maintain
database data
Leverage SQL Skills
and database
capabilities
147. 148
SQL Workshop
Browser based maintenance of database objects and data
Designed to meet application developers’ needs, especially in hosted environments
148. 149
SQL Workshop – Quick SQL
Rapidly design and prototype data models using a markdown-like shorthand syntax
that expands to standards-based Oracle SQL.
151. The white panel below the main title (SQL Query Scratchpad – this name is automatically generated) is an area
known as “paragraph”. Within a scratchpad you can have multiple paragraphs.
Each paragraph can contain one SQL statement or a SQL script.
Running an SQL Statement
152. In the SQL paragraph area copy and paste this code snippet. Your screen should now look like this:
Running an SQL Statement
153. Press the icon shown in the red box to execute the SQL statement….
Running an SQL Statement
155. Using the report menu bar you can change the table to a graph and/or export the result set to a CSV or TSV file.
When you change the report type to one of the graphs, then a Settings link will appear to the right of
the menu which allows you to control the layout of columns within the graph.
Click on the bar graph icon to change the output to a bar graph (see below)
Running an SQL Statement
157. Running an SQL Statement
Click on the Settings link to unfold the
settings panel for the graph.
To add a column to one of
the Keys, Groups of Values panel
s just drag and drop the column
name into the required panel.
To remove a column from the
Keys, Groups of Values panel just
click on the x next to the column
name displayed in the relevant
panel.
158. Running an SQL Statement
Changing the layout of the graph
With the graph settings panel
visible:
• Remove all columns from the
both
the Keys and Values panels.
• Drag and drop MONTH into
the Keys panel
• Drag and drop REVENUE into
the Values panel
• Drag and
drop AVG_12M_REVENUE int
o the Values panel
159. Tidying up the report
•Click on the Settings link to hide the layout controls.
•Click on the Hide editor button which is to the right of the "Run this
paragraph" button.
Running an SQL Statement
160. Now only the output is visible.
Running an SQL Statement
161. Saving the Scratchpad as a New Notebook
The SQL Scratchpad in the previous section is simply a default type notebook with a system
generated name. But we can change the name of the scratchpad we have just created SQL
Query Scratchpad.
•Click on the Back link in the top left corner of the Scratchpad window to return to the OML
home page.
Saving the Scratchpad as a New Notebook
162. Notice that in the Recent Activities panel there is a potted history of what has happened to
your SQL scratchpad “notebook”.
Saving the Scratchpad as a New Notebook
163. Click on Go to Notebooks in the Quick Actions panel
Saving the Scratchpad as a New Notebook
165. Confidential
ADB autonomously and continuously monitors overall system performance
ADB scales CPU-IO resources based on overall workload requirements
• Scaling up autonomously expands CPU-IO resources by up to 3x
Enabled when provisioning new ADB instance or using Scale Up/Down on the Oracle Cloud
Infrastructure Console.
What is “Auto Scaling”
166. Confidential
ADB is completely responsive to actual usage patterns
Reduces cost of having too many OCPUs just to manage peak traffic load
Auto scaling manages unexpected spikes in workload and ensures consistent performance
BUT…Enabling auto scaling does not change the concurrency and parallelism settings for the
predefined services
Key Benefits of Auto Scaling
167. 1 2 3 4 5 6 7
Auto scaling up as workload increases – ETL, adhoc analytics, data mining
As Workload Increases More OCPUs Automatically Added…
168. 1 2 3 4 5 6 7
Auto scaling downwards as workload decreases
As Workload Decreases Number of OCPUs Reduces ...
169. Confidential
Ensure sufficient resources for query
workloads
• Month-end reporting can leverage
additional resources
• Run more sophisticated processing
(machine learning models) without
impacting other users
• Support increase in concurrent usage:
Monday morning sales reports for
weekend trading
• Support more dynamic range of users
(more adhoc queries, more machine
learning models, more data discovery…)
Ensure sufficient resources for ETL
workloads
• Time-dependent data loads can
automatically get access to more
resources
• Unexpected data load operations can
run without impacting other users
• Integrates nicely with CPU-I/O Shares
feature
Uses Cases for Data Warehousing
170. Confidential
Ensure sufficient resources for mixed
workloads
• Month-end transaction reporting can
leverage additional resources as required
• Run more sophisticated app processing
(using machine learning models) without
impacting application users
Better manage peak application workloads
• Time-dependent application loads can
automatically get access to more
resources
• Unexpected peak in operations can run
without impacting users
Integrates nicely with CPU-I/O Shares
feature
Uses Cases for Transaction Processing
171. Creating a new Autonomous Instance
Enabling Auto Scaling – One-Click!
177. • For data loading from files in the Cloud
• Store your object storage credentials
• Use the procedure DBMS_CLOUD.COPY_DATA to
load data
• The source file in this example is channels.txt
Load data using DBMS_CLOUD
File-02 in
Object Store
Bucket
File-03 in
Object Store
Bucket
File-01 in
Object Store
Bucket
SET DEFINE OFF BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'DEF_CRED_NAME',
username => 'adwc_user@example.com',
password => 'password' ); END; /
178. Load data using DBMS_CLOUD
CREATE TABLE CHANNELS (channel_id CHAR(1), channel_desc VARCHAR2(20),
channel_class VARCHAR2(20) );
BEGIN DBMS_CLOUD.COPY_DATA( table_name =>'CHANNELS', credential_name =>'DEF_CRED_NAME’,
file_uri_list =>
'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/
bucketname/o/channels.txt', format => json_object('delimiter' value ',') );
END;
BEGIN DBMS_CLOUD.COPY_DATA( table_name =>'CHANNELS', credential_name =>'DEF_CRED_NAME’,
file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/
bucketname/o/exp01.dmp,
https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/
bucketname/o/exp02.dmp', format => json_object('type' value 'datapump') );
END;
179. Load data using DBMS_CLOUD
BEGIN DBMS_CLOUD.COPY_COLLECTION( collection_name => 'fruit', credential_name =>
'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/
namespace-string/b/fruit_bucket/o/myCollection.json’,
format => JSON_OBJECT('recorddelimiter' value '''n''') );
END;
BEGIN DBMS_CLOUD.COPY_COLLECTION( collection_name => 'fruit2', credential_name =>
'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/
namespace-string/b/json/o/fruit_array.json’,
format => '{"recorddelimiter" : "0x''01''", "unpackarrays" : TRUE}' );
END;
180. Load data using DBMS_CLOUD
SELECT table_name, owner_name, type, status, start_time, update_time,
logfile_table, badfile_table FROM user_load_operations WHERE
type = 'COPY’;
TABLE_NAME OWNER_NAME TYPE STATUS START_TIME UPDATE_TIME LOGFILE_TABLE BADFILE_TABLE
------------------------------------------------------------------------------------
FRUIT ADMIN COPY COMPLETED 2020-04-23 22:27:37 2020-04-23 22:27:38 "" ""
FRUIT ADMIN COPY FAILED 2020-04-23 22:28:36 2020-04-23 22:28:37 COPY$2_LOG COPY$2_BAD
SELECT credential_name, username, comments FROM all_credentials;
CREDENTIAL_NAME USERNAME COMMENTS
---------------------------–----------------------------- --------------------
ADB_TOKEN user_name@example.com {"comments":"Created via
DBMS_CLOUD.create_credential"}
DEF_CRED_NAME user_name@example.com {"comments":"Created via
DBMS_CLOUD.create_credential"}
181. 19 - ADB now supports SQL
access to tenancy details
182. 183
When you file a service request for Autonomous Database, you need to provide the tenancy details for
your instance. Tenancy details for the instance are available on the Oracle Cloud Infrastructure console.
However, if you are connected to the database, you can now obtain these details by querying
the CLOUD_IDENTITY column of the V$PDBS view. For example:
...will generate something similar to the following:
How to get the tenancy details for your instance
SELECT cloud_identity FROM v$pdbs;
{"DATABASE_NAME" : "DBxxxxxxxxxxxx",
"REGION" : "us-phoenix-1",
"TENANT_OCID" :
"OCID1.TENANCY.REGION1..ID1",
"DATABASE_OCID" :
"OCID1.AUTONOMOUSDATABASE.OC1.SEA.ID2
",
"COMPARTMENT_OCID" :
"ocid1.tenancy.region1..ID3"}
189. Thank You
Any Questions ?
Sandesh Rao
VP AIOps for the Autonomous Database
@sandeshr
https://www.linkedin.com/in/raosandesh/
https://www.slideshare.net/SandeshRao4