ebook img

Pro Oracle application express PDF

718 Pages·18.784 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Pro Oracle application express

Pro Oracle Application Express ■ ■ ■ John Edward Scott and Scott Spendolini Pro Oracle Application Express Copyright © 2008 by John Edward Scott and Scott Spendolini All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-10 (pbk): 1-59059-827-X ISBN-13 (pbk): 978-1-59059-827-6 ISBN-13 (electronic): 978-1-4302-0205-9 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Jonathan Gennick Technical Reviewer: Peter Linsley Editorial Board: Clay Andres, Steve Anglin, Ewan Buckingham, Tony Campbell, Gary Cornell, Jonathan Gennick, Matthew Moodie, Joseph Ottinger, Jeffrey Pepper, Frank Pohlmann, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh Project Manager: Sofia Marchant Copy Editor: Marilyn Smith Associate Production Director: Kari Brooks-Copony Production Editor: Jill Ellis Compositor: Pat Christenson Proofreaders: Linda Seifert and Liz Welch Indexers: Carol Burbo and Ron Strauss Artist: April Milne Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail orders ny@springer sbm.com, or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2855 Telegraph Avenue, Suite 600, Berkeley, CA 94705. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http:// www.apress.com. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at http://www.apress.com/info/bulksales. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. ■CHAPTER 1 Development Best Practices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 APEX Installation Decisions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Application Development Considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Users and Administrators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Workspaces and Schemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Application Deployment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Application Portability and Code Reuse. . . . . . . . . . . . . . . . . . . . . . . . 13 Performance Considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Bind Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Report Pagination Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Error and Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Packaged Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ■CHAPTER 2 Migrating to APEX from Desktop Systems. . . . . . . . . . . . . . . . 25 Excel Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Creating a New Application Based on a Spreadsheet. . . . . . . . . . . . 27 Running the New Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Customizing the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Exporting Data to a Spreadsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Access Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Using the Access Export Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Using the ODBC Database Export Method . . . . . . . . . . . . . . . . . . . . . 42 Using Oracle Migration Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Migrating the Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Migration from Other Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Migrating from a System Using an Oracle Database . . . . . . . . . . . . 57 Migrating from a System Using Another Database. . . . . . . . . . . . . . 57 Migration with SQL Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Connecting to a Migration Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Running the Migration Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Verifying the Migration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 ■CHAPTER 3 Authentication and User Management . . . . . . . . . . . . . . . . . . . . 65 Preconfigured Authentication Schemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Open Door Credentials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 No Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Application Express Account Credentials. . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Creating New Application Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Creating Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Controlling Authentication with Groups. . . . . . . . . . . . . . . . . . . . . . . . 71 Maintaining Cookie Users Within Your Application . . . . . . . . . . . . . . 76 Database Account Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Custom Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Creating the User Repository. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Creating a New Authentication Scheme . . . . . . . . . . . . . . . . . . . . . . . 83 Regarding Index Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Hash Rather Than Crypt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Implementing Locked User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . 97 Automating User Registration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Implementing Session Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 ■CHAPTER 4 Conditions and Authorization Schemes. . . . . . . . . . . . . . . . . . 119 Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Specifying Condition Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Using Conditions Appropriately. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Authorization Schemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Creating an Authorization Scheme. . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Protecting Your Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 To Cache or Not to Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Resetting the Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 ■CHAPTER 5 Data Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 URLs and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Understanding the URL Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Manipulating the URL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Session State Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Enabling Session State Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Configuring Session State Protection . . . . . . . . . . . . . . . . . . . . . . . . 165 Virtual Private Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Implementing VPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Using Contexts with VPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Using Advanced VPD Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 VPD Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Enabling Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Viewing Audit Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 ■CHAPTER 6 Navigation and Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Tabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Understanding Tab States: Current and Noncurrent. . . . . . . . . . . . 205 Using Standard Tabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Using Parent Tabs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Navigation Bars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Accessing Navigation Bar Entries. . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Creating Navigation Bar Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Performing an Action on the Current Page. . . . . . . . . . . . . . . . . . . . 216 Breadcrumbs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Accessing Breadcrumb Entries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Using Dynamic Breadcrumb Entries . . . . . . . . . . . . . . . . . . . . . . . . . 220 Displaying Breadcrumbs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Accessing List Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Creating a Menu Using a List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Tracking Clicks on List Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Using User-Defined Attributes for List Entries . . . . . . . . . . . . . . . . . 230 Trees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Creating a Table for the Tree Entries. . . . . . . . . . . . . . . . . . . . . . . . . 232 Creating the Tree Component. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Enabling and Disabling Tree Entries . . . . . . . . . . . . . . . . . . . . . . . . . 236 Page Zero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Creating Page Zero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Adding Regions to Page Zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Positioning Regions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Positioning Page Items. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Drag-and-Drop Positioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 ■CHAPTER 7 Reports and Charts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Reports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Report Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Named Columns vs. Generic Columns . . . . . . . . . . . . . . . . . . . . . . . 255 Report Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Break Formatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Column Formatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Columns As Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Charts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Chart Query Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 HTML Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 SVG Charts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Flash Charts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Generic Charting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 ■CHAPTER 8 Ajax and JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Implementing an Ajax Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Setting Up the New Search Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Adding JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Examining the Ajax Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Calling On Demand Processes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Showing and Hiding Page Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Showing and Hiding Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Showing and Hiding Report Columns . . . . . . . . . . . . . . . . . . . . . . . . 315 Disabling Page Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Setting the Value of Form Items. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 Implementing Third-Party Ajax Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Using the YUI Library AutoComplete Control . . . . . . . . . . . . . . . . . . 322 Using the YUI Library Tooltip Control. . . . . . . . . . . . . . . . . . . . . . . . . 328 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 ■CHAPTER 9 File Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Database or File System? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Using Standard Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Standard Upload Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Standard Download Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Issues with the Standard Procedures . . . . . . . . . . . . . . . . . . . . . . . . 344 Creating Custom Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Custom Upload Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Custom Download Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Security for Download Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Image Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 Checking for Caching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Adding Expiry Headers to the Custom Download Procedure. . . . . 360 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 ■CHAPTER 10 Reporting and Printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Choosing a Print Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Configuring APEX to Use a Print Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Printing Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Enabling Printing for a Report. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Troubleshooting Print Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 Configuring Some Simple Print Options . . . . . . . . . . . . . . . . . . . . . . 371 Creating Custom Report Layouts with BI Publisher. . . . . . . . . . . . . . . . . . . 374 Installing the Client-Side Layout Tool . . . . . . . . . . . . . . . . . . . . . . . . 375 Creating a New Report Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Adding Graphics and Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Generating Reports Through Apache FOP . . . . . . . . . . . . . . . . . . . . . . . . . 389 Installing Apache FOP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Creating a New Layout Using XSL-FO. . . . . . . . . . . . . . . . . . . . . . . . 390 Adding Graphics to a Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 ■CHAPTER 11 Themes and Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 Themes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 Associating a Theme with an Application. . . . . . . . . . . . . . . . . . . . . 403 Viewing Theme Details and Reports . . . . . . . . . . . . . . . . . . . . . . . . . 404 Performing Theme Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Defining Theme Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Switching Themes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Removing Unused Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Viewing Template Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Understanding Template Types and Classes . . . . . . . . . . . . . . . . . . 415 Managing Template Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Choosing a Template Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Template Subscriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Setting Up a Theme Subscription System. . . . . . . . . . . . . . . . . . . . . 438 Refreshing Subscriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Tools for Working with Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 ■CHAPTER 12 Localization Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Localizing Application Builder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Choosing a Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Installing a Language File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 Localizing Your Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 A Simple Currency Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 User-Dependent Localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 NLS Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 Fully Translating Your Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 Defining the Primary Application Language and Derived FromLanguage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 Creating Translated Versions of an Application. . . . . . . . . . . . . . . . 462 Translating On the Fly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 Translating the Standard Messages . . . . . . . . . . . . . . . . . . . . . . . . . 475 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 ■CHAPTER 13 LDAP and Single Sign-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 LDAP Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 Benefits of Using LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Centralized User Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Including Other Resources and Attributes. . . . . . . . . . . . . . . . . . . . . 480 Centralized Authentication and Authorization. . . . . . . . . . . . . . . . . . 481 Off-Loading Repository Maintenance and Administration . . . . . . . 482 Authentication with LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Authenticating with Oracle Internet Directory . . . . . . . . . . . . . . . . . 484 Authenticating with Microsoft Active Directory . . . . . . . . . . . . . . . . 488 Integrating with Legacy LDAP Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 Using the LDAP Username Edit Function . . . . . . . . . . . . . . . . . . . . . 492 Using a Custom LDAP Authentication Function . . . . . . . . . . . . . . . . 494 Working with Groups in OID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Checking Group Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Checking Nested Group Membership . . . . . . . . . . . . . . . . . . . . . . . . 501 Checking Groups with MEMBER_OF and MEMBER_OF2. . . . . . . . 508 Turning Groups into Table Rows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Gaining Efficiency and Resiliency Through Materialized Views . . 515 Working with Groups in Microsoft Active Directory . . . . . . . . . . . . . . . . . 516 Examining Active Directory’s Group Structure. . . . . . . . . . . . . . . . . 518 Checking Group Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Querying and Updating LDAP Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . 529 Querying LDAP Attributes in OID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 Querying LDAP Attributes in Active Directory . . . . . . . . . . . . . . . . . 533 Modifying LDAP Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 Using Single Sign-On. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 External Applications vs. Partner Applications. . . . . . . . . . . . . . . . . 543 External Application Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Partner Application Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 ■CHAPTER 14 Performance and Scalability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Diagnosing Performance Problems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Viewing Application Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 Using Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 Using SQL Tracing and TKProf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Giving Timing Information to the Users. . . . . . . . . . . . . . . . . . . . . . . 574 Making Your Applications More Scalable. . . . . . . . . . . . . . . . . . . . . . . . . . 575 Image Caching Revisited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 Page and Region Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 HTTP Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 ■CHAPTER 15 Production Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Managing URLs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Using a Location Redirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Using Frames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Using Apache mod_rewrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 Proxying Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Backing Up Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Manual Exports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Easy Backups the Database Way. . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Automated Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 As-Of Backups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 Migrating Between Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 Upgrading Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 Cloning an Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 ■CHAPTER 16 APEX Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 Accessing the APEX Dictionary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 Using the Application Builder Interface. . . . . . . . . . . . . . . . . . . . . . . 641 Using the apex_dictionary View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Uses for the APEX Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 Quality Assurance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 Self-Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 Automated Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.