1 all powder board and ski oracle 9i workbook chapter 10: distributed databases jerry post copyright...
TRANSCRIPT
1
All Powder Board and Ski
Oracle 9i WorkbookChapter 10: Distributed DatabasesJerry PostCopyright © 2003
2
All Powder LAN
Offices/Managers
Checkout
Rental Desk
Network Switch
Server
3
Create Target Database and Table
Create a new database if necessary:Start/All Programs/Oracle-OraHome92/Configuration and Migration Tools/ Database Configuration AssistantUse Net Manager to add a hostname entryLog in and create a new user/schema or use the system schemaCreate a small table
CREATE TABLE Customer( CustomerID INTEGER, LastName VARCHAR2(15), FirstName VARCHAR2(15), Constraint pk_Customer Primary Key (CustomerID));INSERT INTO Customer (CustomerID, LastName, FirstName) Values (1,'Smith', 'Adam');INSERT INTO Customer (CustomerID, LastName, FirstName) Values (2,'Keynes', 'John');INSERT INTO Customer (CustomerID, LastName, FirstName) Values (3,'Samuelson', 'Paul');INSERT INTO Customer (CustomerID, LastName, FirstName) Values (4,'Robinson', 'Joan');Commit;
4
Link to Target Database
CREATE DATABASE LINK NewYork CONNECT TO RemoteUser IDENTIFIED BY t1 USING 'dbhostname';
SELECT * FROM Customer@NewYork;
Create a descriptive name for the link
User account and password on the target databaseDatabase hostname
in the network file
Table name@link name
5
Database Replicas
Master Site
Materialized View (Replica)
Materialized View (Replica)
Materialized View (Replica)
Replication Group
Deployment Template
Link Schedule
Synchronize
6
Create a Materialized View Replica
1. Start the Deployment Template1. Set up Master Sites2. Disconnect and log in as RepAdmin3. Create a Master Group4. Create the Template5. Generate the script
2. Create Materialized View logs on the master site for each table3. On the client, or build as PL/SQL to add to the script
1. Manually create a Materialized View Group creating a new Refresh Group matching name from template: CustomerTemplate
2. Select the Customer materialized view (or all)3. Add the materialized view to the refresh group
7
Creating Replicas: Deployment Template-Master Site
Add the main database
Log in as SYSDBA
Open Advanced Replication and follow menu options
8
Replica: Deployment: Master Group
Objects tab
Select Customer table
9
Template: Create Views
Create template
Select tables
10
Generate Template: Schema
11
Create Materialized View
CREATE MATERIALIZED VIEW Powder.Customer FOR UPDATE ASSELECT * FROM Powder.Customer@host_database_link;
12
Client Side MV and Refresh Group
Create refresh group
Add materialized views
Refresh
13
PL/SQL on Web Pages
(0) Configure the Data Access Descriptor (DAD)
(1) Create the basic html form to get the SaleID GetSale.psp
(2) Create the page to display the results ListSales.psp
(3) loadpsp -replace -user powder/ski1@PostDB GetSale.psp
(4) loadpsp -replace -user powder/ski1@PostDB ListSales.psp
(5) http://PostDB/pls/simpledad/Powder.GetSale
Pages without Java Pages are stored as procedures within the database and use embedded PL/SQL to connect to the database
Two page example to enter a SaleID and lookup the matching data
14
Configure DAD
http://server
Pick: Mod plsql Configuration Menu
Modify the SimpleDAD, or create a new one
Schema Name: Powder
UserName: Powder
Password:
Connect String: PostDB
Authentication Mode: Basic
Leave the other defaults
15
GetSale.psp Form Page
<html><head><title>Get SaleID</title></head><body><p align=center>All Powder Board and Ski Shop Sales</p><form name='Form1' method='post' action='Powder.ListSales'><p>Enter a Sale ID value: <input type='text' name='SaleID' maxlength='20' /></p><input type='submit' name='submit' value='Submit' /></form></body></html>
16
ListSales.psp Display Page
<%@ page language="PL/SQL" %><%@ plsql procedure="ListSales" %><%@ plsql parameter="SaleID" type="NUMBER" %><%! l_SaleID NUMBER := SaleID;%><HTML><HEAD><TITLE>List Sales Data</TITLE></HEAD><BODY><p>Sales data for SaleID: <%=SaleID%></p><table border=0><tr><th>Sale ID</th><th>Sale Date</th><th>CustomerID</th></tr><%
for item in (select * from sale where SaleID=l_SaleID order by SaleDate) loop%>
<tr> <td><%=item.SaleID%></td><td><%=item.SaleDate%></td>
<td><%=item.CustomerID%></td></tr>
<% end loop; %></table></BODY></HTML>
17
Load Pages Into Oracle
(3) loadpsp -replace -user powder/ski1@PostDB GetSale.psp
(4) loadpsp -replace -user powder/ski1@PostDB ListSales.psp
Go to the command line (DOS)
You must include the database name
18
Open the First Page in a Browser
http://PostDB/pls/simpledad/powder.getsale
The URL is very picky and must be complete (regardless of what the documentation says). And watch the dot!
http://WebServer/pls/DADName/Schema.Procedure
19
Results
The example is simple to highlight the steps.You can retrieve more rows.You can use a better format.
20
Create XML File with SQL
SET long 20000SET pages 100SPOOL D:\Students\AllPowder\Employee10.xmlSELECT XMLElement("Employee", XMLElement("LastName", LastName),
XMLElement("FirstName", FirstName))FROM EmployeeWHERE rownum<10;
SPOOL OFF
Eliminate line and page breaks
Send output to a file
Limit data to 9 rows to keep the file smaller for now
21
XML File: Cleaned Up
<?xml version='1.0'?><Employees><Employee>
<LastName>Staff</LastName><FirstName></FirstName>
</Employee><Employee>
<LastName>Killy</LastName><FirstName>Jean-Claude</FirstName>
</Employee>…</Employees>
22
XML File in Internet Explorer