1. Trang chủ
  2. » Công Nghệ Thông Tin

Oracle Built−in Packages- P134 pps

5 67 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Table of Contents

  • A. What's on the Companion Disk?

    • A.1 Installing the Guide

    • A.2 Using the Guide

  • 1. Introduction

    • 1.1 The Power of Built-in Packages

      • 1.1.1 A Kinder , More Sharing Oracle

    • 1.2 Built-in Packages Covered in This Book

      • 1.2.1 Application Development Packages

      • 1.2.2 Server Management Packages

      • 1.2.3 Distributed Database Packages

    • 1.3 Using Built-in Packages

      • 1.3.1 What Is a Package?

      • 1.3.2 Controlling Access with Packages

      • 1.3.3 Referencing Built-in Package Elements

      • 1.3.4 Exception Handling and Built-in Packages

      • 1.3.5 Encapsulating Access to the Built-in Packages

      • 1.3.6 Calling Built-in Packaged Code from Oracle Developer/2000 Release 1

      • 1.3.7 Accessing Built-in Packaged Technology from Within SQL

    • 1.4 Examining Built-in Package Source Code

      • 1.4.1 The STANDARD Package

      • 1.4.2 The DBMS_STANDARD Package

  • 2. Executing Dynamic SQL and PL/SQL

    • 2.1 Examples of Dynamic SQL

    • 2.2 Getting Started with DBMS_SQL

      • 2.2.1 Creating the DBMS_SQL Package

      • 2.2.2 Security and Privilege Issues

      • 2.2.3 DBMS_SQL Programs

      • 2.2.4 Types of Dynamic SQL

      • 2.2.5 DBMS_SQL Exceptions

      • 2.2.6 DBMS_SQL Nonprogram Elements

    • 2.3 The DBMS_SQL Interface

      • 2.3.1 Processing Flow of Dynamic SQL

      • 2.3.2 Opening the Cursor

      • 2.3.3 Parsing the SQL Statement

      • 2.3.4 Binding Values into Dynamic SQL

      • 2.3.5 Defining Cursor Columns

      • 2.3.6 Executing the Cursor

      • 2.3.7 Fetching Rows

      • 2.3.8 Retrieving Values

      • 2.3.9 Closing the Cursor

      • 2.3.10 Checking Cursor Status

      • 2.3.11 Describing Cursor Columns

    • 2.4 Tips on Using Dynamic SQL

      • 2.4.1 Some Restrictions

      • 2.4.2 Privileges and Execution Authority with DBMS_SQL

      • 2.4.3 Combining Operations

      • 2.4.4 Minimizing Memory for Cursors

      • 2.4.5 Improving the Performance of Dynamic SQL

      • 2.4.6 Problem-Solving Dynamic SQL Errors

      • 2.4.7 Executing DDL in PL/SQL

      • 2.4.8 Executing Dynamic PL/SQL

    • 2.5 DBMS_SQL Examples

      • 2.5.1 A Generic Drop_Object Procedure

      • 2.5.2 A Generic Foreign Key Lookup Function

      • 2.5.3 A Wrapper for DBMS_SQL .DESCRIBE_COLUMNS

      • 2.5.4 Displaying Table Contents with Method 4 Dynamic SQL

      • 2.5.5 Indirect Referencing in PL/SQL

      • 2.5.6 Array Processing with DBMS_SQL

      • 2.5.7 Using the RETURNING Clause in Dynamic SQL

  • 3. Intersession Communication

    • 3.1 DBMS_PIPE: Communicating Between Sessions

      • 3.1.1 Getting Started with DBMS_PIPE

      • 3.1.2 How Database Pipes Work

      • 3.1.3 Managing Pipes and the Message Buffer

      • 3.1.4 Packing and Unpacking Messages

      • 3.1.5 Sending and Receiving Messages

      • 3.1.6 Tips on Using DBMS_PIPE

      • 3.1.7 DBMS_PIPE Examples

    • 3.2 DBMS_ALERT: Broadcasting Alerts to Users

      • 3.2.1 Getting Started with DBMS_ALERT

      • 3.2.2 The DBMS_ALERT Interface

      • 3.2.3 DBMS_ALERT Examples

  • 4. User Lock and Transaction Management

    • 4.1 DBMS_LOCK: Creating and Managing Resource Locks

      • 4.1.1 Getting Started with DBMS_LOCK

      • 4.1.2 The DBMS_LOCK Interface

      • 4.1.3 Tips on Using DBMS_LOCK

      • 4.1.4 DBMS_LOCK Examples

    • 4.2 DBMS_TRANSACTION: Interfacing to SQL Transaction Statements

      • 4.2.1 Getting Started with DBMS_TRANSACTION

      • 4.2.2 Advising Oracle About In-Doubt Transactions

      • 4.2.3 Committing Data

      • 4.2.4 Rolling Back Changes

      • 4.2.5 Setting Transaction Characteristics

      • 4.2.6 Cleaning Up Transaction Details

      • 4.2.7 Returning Transaction Identifiers

  • 5. Oracle Advanced Queuing

    • 5.1 Oracle AQ Concepts

      • 5.1.1 General Features

      • 5.1.2 Enqueue Features

      • 5.1.3 Dequeue Features

      • 5.1.4 Propagation Features

      • 5.1.5 A Glossary of Terms

      • 5.1.6 Components of Oracle AQ

      • 5.1.7 Queue Monitor

      • 5.1.8 Data Dictionary Views

    • 5.2 Getting Started with Oracle AQ

      • 5.2.1 Installing the Oracle AQ Facility

      • 5.2.2 Database Initialization

      • 5.2.3 Authorizing Accounts to Use Oracle AQ

    • 5.3 Oracle AQ Nonprogram Elements

      • 5.3.1 Constants

      • 5.3.2 Object Names

      • 5.3.3 Queue Type Names

      • 5.3.4 Agents Object Type

      • 5.3.5 Recipient and Subscriber List Table Types

      • 5.3.6 Message Properties Record Type

      • 5.3.7 Enqueue Options Record Type

      • 5.3.8 Dequeue Options Record Type

      • 5.3.9 Oracle AQ Exceptions

    • 5.4 DBMS_AQ: Interfacing to Oracle AQ (Oracle8 only)

      • 5.4.1 Enqueuing Messages

      • 5.4.2 Dequeuing Messages

    • 5.5 DBMS_AQADM: Performing AQ Administrative Tasks (Oracle8 only)

      • 5.5.1 Creating Queue Tables

      • 5.5.2 Creating and Starting Queues

      • 5.5.3 Managing Queue Subscribers

      • 5.5.4 Stopping and Dropping Queues

      • 5.5.5 Managing Propagation of Messages

      • 5.5.6 Verifying Queue Types

      • 5.5.7 Starting and Stopping the Queue Monitor

    • 5.6 Oracle AQ Database Objects

      • 5.6.1 Objects Per Queue Table

      • 5.6.2 Data Dictionary Objects

    • 5.7 Oracle AQ Examples

      • 5.7.1 Improving AQ Ease of Use

      • 5.7.2 Working with Prioritized Queues

      • 5.7.3 Building a Stack with AQ Using Sequence Deviation

      • 5.7.4 Browsing a Queue's Contents

      • 5.7.5 Searching by Correlation Identifier

      • 5.7.6 Using Time Delay and Expiration

      • 5.7.7 Working with Message Groups

      • 5.7.8 Working with Multiple Consumers

  • 6. Generating Output from PL/SQL Programs

    • 6.1 DBMS_OUTPUT: Displaying Output

      • 6.1.1 Getting Started with DBMS_OUTPUT

      • 6.1.2 Enabling and Disabling Output

      • 6.1.3 Writing to the DBMS_OUTPUT Buffer

      • 6.1.4 Retrieving Data from the DBMS_OUTPUT Buffer

      • 6.1.5 Tips on Using DBMS_OUTPUT

      • 6.1.6 DBMS_OUTPUT Examples

    • 6.2 UTL_FILE: Reading and Writing Server-side Files

      • 6.2.1 Getting Started with UTL_FILE

      • 6.2.2 Opening Files

      • 6.2.3 Reading from Files

      • 6.2.4 Writing to Files

      • 6.2.5 Closing Files

      • 6.2.6 Tips on Using UTL_FILE

      • 6.2.7 UTL_FILE Examples

  • 7. Defining an Application Profile

    • 7.1 Getting Started with DBMS_APPLICATION_INFO

      • 7.1.1 DBMS_APPLICATION_INFO Programs

      • 7.1.2 The V$ Virtual Tables

      • 7.1.3 DBMS_APPLICATION_INFO Nonprogram Elements

    • 7.2 DBMS_APPLICATION_INFO Interface

      • 7.2.1 The DBMS_APPLICATION_INFO.READ_CLIENT_INFO procedure

      • 7.2.2 The DBMS_APPLICATION_INFO.READ_MODULE procedure

      • 7.2.3 The DBMS_APPLICATION_INFO.SET_ACTION procedure

      • 7.2.4 The DBMS_APPLICATION_INFO.SET_CLIENT_INFO procedure

      • 7.2.5 The DBMS_APPLICATION_INFO.SET_MODULE procedure

      • 7.2.6 The DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS procedure

    • 7.3 DBMS_APPLICATION_INFO Examples

      • 7.3.1 About the register_app Package

      • 7.3.2 The action Procedure

      • 7.3.3 The set_stats Procedure

      • 7.3.4 The Information Procedures

      • 7.3.5 Using the register_app Package

      • 7.3.6 Covering DBMS_APPLICATION_INFO

      • 7.3.7 Monitoring Application SQL Resource Consumption

      • 7.3.8 Session Monitoring and Three-Tier Architectures

      • 7.3.9 Tracking Long-Running Processes

  • 8. Managing Large Objects

    • 8.1 Getting Started with DBMS_LOB

      • 8.1.1 DBMS_LOB Programs

      • 8.1.2 DBMS_LOB Exceptions

      • 8.1.3 DBMS_LOB Nonprogram Elements

      • 8.1.4 About the Examples

    • 8.2 LOB Concepts

      • 8.2.1 LOB Datatypes

      • 8.2.2 BFILE Considerations

      • 8.2.3 Internal LOB Considerations

    • 8.3 DBMS_LOB Interface

      • 8.3.1 Working with BFILEs

      • 8.3.2 Reading and Examining LOBs

      • 8.3.3 Updating BLOBs, CLOBs, and NCLOBs

  • 9. Datatype Packages

    • 9.1 DBMS_ROWID: Working with the ROWID Pseudo-Column (Oracle8 only)

      • 9.1.1 Getting Started with DBMS_ROWID

      • 9.1.2 ROWID Concepts

      • 9.1.3 The DBMS_ROWID Interface

    • 9.2 UTL_RAW: Manipulating Raw Data

      • 9.2.1 Getting Started with UTL_RAW

      • 9.2.2 Raw Data Manipulation Concepts

      • 9.2.3 The UTL_RAW Interface

      • 9.2.4 UTL_REF: Referencing Objects (Oracle8.0.4)

      • 9.2.5 UTL_REF Interface

      • 9.2.6 UTL_REF Example

  • 10. Miscellaneous Packages

    • 10.1 DBMS_UTILITY: Performing Miscellaneous Operations

      • 10.1.1 Getting Started with DBMS_UTILITY

      • 10.1.2 The DBMS_UTILITY Interface

    • 10.2 DBMS_DESCRIBE: Describing PL/SQL Program Headers

      • 10.2.1 Getting Started with DBMS_DESCRIBE

      • 10.2.2 Explaining DBMS_DESCRIBE Results

      • 10.2.3 DBMS_DESCRIBE Example

    • 10.3 DBMS_DDL: Compiling and Analyzing Objects

      • 10.3.1 Getting Started with DBMS_DDL

      • 10.3.2 Compiling PL/SQL Objects

      • 10.3.3 Computing Statistics for an Object

      • 10.3.4 Setting Referenceability of Tables

    • 10.4 DBMS_RANDOM: Generating Random Numbers (Oracle8 Only)

      • 10.4.1 Getting Started with DBMS_RANDOM

      • 10.4.2 DBMS_RANDOM Interface

  • 11. Managing Session Information

    • 11.1 DBMS_SESSION: Managing Session Information

      • 11.1.1 Getting Started with DBMS_SESSION

      • 11.1.2 Modifying Session Settings

      • 11.1.3 Obtaining Session Information

      • 11.1.4 Managing Session Resources

      • 11.1.5 DBMS_SESSION Examples

    • 11.2 DBMS_System: Setting Events for Debugging

      • 11.2.1 Getting Started with DBMS_SYSTEM

      • 11.2.2 DBMS_SYSTEM Interface

      • 11.2.3 DBMS_SYSTEM Examples

  • 12. Managing Server Resources

    • 12.1 DBMS_SPACE: Obtaining Space Information

      • 12.1.1 Getting Started with DBMS_SPACE

      • 12.1.2 The DBMS_SPACE Interface

      • 12.1.3 DBMS_SPACE Examples

    • 12.2 DBMS_SHARED_POOL: Pinning Objects

      • 12.2.1 Getting Started with DBMS_SHARED_POOL

      • 12.2.2 Pinning and Unpinning Objects

      • 12.2.3 Monitoring and Modifying Shared Pool Behavior

      • 12.2.4 DBMS_SHARED_POOL Examples

  • 13. Job Scheduling in the Database

    • 13.1 Getting Started with DBMS_ JOB

      • 13.1.1 DBMS_JOB Programs

      • 13.1.2 Job Definition Parameters

      • 13.2.1 INIT.ORA Parameters and Background Processes

      • 13.2.2 Job Execution and the Job Execution Environment

      • 13.2.3 Miscellaneous Notes

      • 13.2.4 DBMS_JOB Interface

      • 13.2.5 Submitting Jobs to the Job Queue

      • 13.2.6 Modifying Job Characteristics

      • 13.2.7 Removing Jobs and Changing Job Execution Status

      • 13.2.8 Transferring Jobs

    • 13.2 Job Queue Architecture

    • 13.3 Tips on Using DBMS_JOB

      • 13.3.1 Job Intervals and Date Arithmetic

      • 13.3.2 Viewing Job Information in the Data Dictionary

      • 13.3.3 DBMS_IJOB: Managing Other Users' Jobs

    • 13.4 DBMS_JOB Examples

      • 13.4.1 Tracking Space in Tablespaces

      • 13.4.2 Fixing Broken Jobs Automatically

      • 13.4.3 Self-Modifying and Self-Aware Jobs

  • 14. Snapshots

    • 14.1 DBMS_SNAPSHOT: Managing Snapshots

      • 14.1.1 Getting Started with DBMS_SNAPSHOT

      • 14.1.2 Using the I_AM_A_REFRESH Package State Variable

      • 14.1.3 Refreshing Snapshots

      • 14.1.4 Purging the Snapshot Log

      • 14.1.5 Reorganizing Tables

      • 14.1.6 Registering Snapshots

      • 14.2.1 Getting Started with DBMS_REFRESH

      • 14.2.2 Creating and Destroying Snapshot Groups

      • 14.2.3 Adding and Subtracting Snapshots from Snapshot Groups

      • 14.2.4 Altering Properties of a Snapshot Group

      • 14.2.5 Manually Refreshing Snapshot Groups

    • 14.2 DBMS_REFRESH: Managing Snapshot Groups

    • 14.3 DBMS_OFFLINE_SNAPSHOT: Performing Offline Snapshot Instantiation

      • 14.3.1 Getting Started with DBMS_OFFLINE_SNAPSHOT

      • 14.3.2 DBMS_OFFLINE_SNAPSHOT Interface

    • 14.4 DBMS_REPCAT: Managing Snapshot Replication Groups

      • 14.4.1 Getting Started with DBMS_REPCAT

      • 14.4.2 Creating and Dropping Snapshot Replication Groups

      • 14.4.3 Adding and Removing Snapshot Replication Group Objects

      • 14.4.4 Altering a Snapshot Replication Group's Propagation Mode

      • 14.4.5 Manually Refreshing a Snapshot Replication Group

      • 14.4.6 Switching the Master of a Snapshot Replication Group

  • 15. Advanced Replication

    • 15.1 DBMS_REPCAT_AUTH: Setting Up Administrative Accounts

      • 15.1.1 Getting Started with DBMS_REPCAT_AUTH

      • 15.1.2 Granting and Revoking Surrogate SYS Accounts

      • 15.1.3 Granting and Revoking Propagator Accounts (Oracle8)

    • 15.2 DBMS_REPCAT_ADMIN: Setting Up More Administrator Accounts

      • 15.2.1 Getting Started with DBMS_REPCAT_ADMIN

      • 15.2.2 Creating and Dropping Replication Administrator Accounts

    • 15.3 DBMS_REPCAT: Replication Environment Administration

      • 15.3.1 Getting Started with DBMS_REPCAT

      • 15.3.2 Replication Groups with DBMS_REPCAT

      • 15.3.3 Replicated Objects with DBMS_REPCAT

      • 15.3.4 Replication Support with DBMS_REPCAT

      • 15.3.5 Adding and Removing Master Sites with DBMS_REPCAT

      • 15.3.6 Maintaining the Repcatlog Queue with DBMS_REPCAT

      • 15.3.7 Quiescence with DBMS_REPCAT

      • 15.3.8 Miscellaneous DBMS_REPCAT Procedures

    • 15.4 DBMS_OFFLINE_OG: Performing Site Instantiation

      • 15.4.1 Getting Started with DBMS_OFFLINE_OG

      • 15.4.2 DBMS_OFFLINE_OG Interface

    • 15.5 DBMS_RECTIFIER_DIFF: Comparing Replicated Tables

      • 15.5.1 Getting Started with DBMS_RECTIFIER_DIFF

      • 15.5.2 DBMS_RECTIFIER_DIFF Interface

    • 15.6 DBMS_REPUTIL: Enabling and Disabling Replication

      • 15.6.1 Getting Started with DBMS_REPUTIL

      • 15.6.2 DBMS_REPUTIL Interface

  • 16. Conflict Resolution

    • 16.1 Getting Started with DBMS_REPCAT

      • 16.1.1 DBMS_REPCAT Programs

      • 16.1.2 DBMS-REPCAT Exceptions

      • 16.1.3 DBMS-REPCAT Nonprogram Elements

      • 16.1.4 Data Dictionary Views

    • 16.2 Column Groups with DBMS_REPCAT

      • 16.2.1 About Column Groups

      • 16.2.2 Creating and Dropping Column Groups

      • 16.2.3 Modifying Existing Column Groups

    • 16.3 Priority Groups with DBMS_REPCAT

      • 16.3.1 About Priority Groups

      • 16.3.2 Creating, Maintaining, and Dropping Priority Groups

      • 16.3.3 Creating and Maintaining Priorities Within a Priority Group

      • 16.3.4 Dropping Priorities from a Priority Group

    • 16.4 Site Priority Groups with DBMS_REPCAT

      • 16.4.1 About Site Priority Groups

      • 16.4.2 Creating, Maintaining, and Dropping Site Priorities

      • 16.4.3 Maintaining Site Priorities

    • 16.5 Assigning Resolution Methods with DBMS_REPCAT

      • 16.5.1 About Resolution Methods

    • 16.6 Monitoring Conflict Resolution with DBMS_REPCAT

      • 16.6.1 About Monitoring

  • 17. Deferred Transactions and Remote Procedure Calls

    • 17.1 About Deferred Transactions and RPCs

      • 17.1.1 About Remote Destinations

      • 17.1.2 Data Dictionary Views

    • 17.2 DBMS_DEFER_SYS: Managing Deferred Transactions

      • 17.2.1 Getting Started with DBMS_DEFER_SYS

      • 17.2.2 Adding and Deleting Default Destinations

      • 17.2.3 Copying Deferred Transactions to New Destinations

      • 17.2.4 Maintenance Procedures

      • 17.2.5 Propagating Deferred RPCs

      • 17.2.6 Scheduling Propagation (Oracle8 only)

    • 17.3 DBMS_DEFER: Building Deferred Calls

      • 17.3.1 Getting Started with DBMS_DEFER

      • 17.3.2 Basic RPCs

      • 17.3.3 Parameterized RPCs

    • 17.4 DBMS_DEFER_QUERY: Performing Diagnostics and Maintenance

      • 17.4.1 Getting Started with DBMS_DEFER_QUERY

    • Table of Contents

      • Part I: Overview

      • Part II: Application Development Packages

      • Part III: Server Management Packages

      • Part IV: Distributed Database Packages

  • Structure of This Book

Nội dung

commfailure −23317 Unable to communicate with one or more master sites missinggroup −23331 Replication group gname does not exist nonmasterdef −23312 Calling site is not master definition site 15.3.2.3.2 Restrictions The COMMENT_ON_REPGROUP procedure must be called from the master definition site. 15.3.2.3.3 Example This call adds or replaces the comment in DBA_REPGROUP for the SPROCKET replication group: BEGIN DBMS_REPCAT.COMMENT_ON_REPGROUP( gname 'SPROCKET', comment => 'Comment added on '||sysdate|| ' by '||user); END; COMMENT_ON_REPGROUP queues an RPC to update the field at all other master sites. 15.3.3 Replicated Objects with DBMS_REPCAT After you have created your replication group(s) (with or without comments), you are ready to add, alter, and remove member objects. Here are the procedures you need: DBMS_REPCAT.CREATE_MASTER_REPOBJECT DBMS_REPCAT.SET_COLUMNS DBMS_REPCAT.DROP_MASTER_REPOBJECT DBMS_REPCAT.COMMENT_ON_REPOBJECT DBMS_REPCAT.ALTER_MASTER_REPOBJECT DBMS_REPCAT.EXECUTE_DDL The following sections describe these programs in detail. 15.3.3.1 The DBMS_REPCAT.CREATE_MASTER_REPOBJECT procedure The CREATE_MASTER_REPOBJECT procedure creates a replicated object. Its specification follows: PROCEDURE DBMS_REPCAT.CREATE_MASTER_REPOBJECT( sname IN VARCHAR2, oname IN VARCHAR2, type IN VARCHAR2, use_existing_object IN BOOLEAN := TRUE, ddl_text IN VARCHAR2 := NULL, comment IN VARCHAR2 := '', retry IN BOOLEAN := FALSE, copy_rows IN BOOLEAN := TRUE, gname IN VARCHAR2 := ''); Parameters are summarized in the following table. Name Description sname Name of the schema to which oname belongs. oname Name of the object to be added. type [Appendix A] What's on the Companion Disk? 15.3.2 Replication Groups with DBMS_REPCAT 656 Object type. Valid types: TABLE, INDEX, SYNONYM, TRIGGER, VIEW, PROCEDURE, FUNCTION, PACKAGE, and PACKAGE BODY. use_existing_object Set to TRUE to reuse existing objects with the same name and structure at master sites. ddl_text Text of DDL statement to create object oname (use this parameter if and only if object does not already exist). comment Comment on replicated object, visible in DBA_REPOBJECT data dictionary view. retry Flag indicating that this call is a reattempt of an earlier call. An attempt is made to create object only at master sites where it does not exist with a status of valid. copy_rows Populate tables and other master sites with data from master definition site. gname Name of the replication group to which oname should be added. 15.3.3.1.1 Exceptions The CREATE_MASTER_REPOBJECT procedure may raise the following exceptions: Name Number Description commfailure −23317 Not all master sites are reachable ddlfailure −23309 Object oname already exists in replication group gname, and retry is not set to TRUE duplicateobject −23374 Replication group gname already exists missingobject −23308 Object oname does not exist nonmasterdef −23373 Calling site is not the master definition site for replication group gname notquiesced −23310 Replication group gname is not quiesced typefailure −23319 The type is not supported 15.3.3.1.2 Restrictions Note the following restrictions on calling CREATE_MASTER_REPOBJECT: • This procedure must be called from the master definition site. • The replication group must already exist and be quiesced. 15.3.3.1.3 Example This section contains a series of examples showing how to create replication objects. 15.3.3.1.4 Adding an existing table to a replication group This call adds table SPROCKET. PRODUCTS to the replication group SPROCKET: BEGIN DBMS_REPCAT.CREATE_MASTER_REPOBJECT(sname => 'SPROCKET', oname => 'PRODUCTS', type => 'TABLE', gname => 'SPROCKET'); END; Since we have not specified ddl_text in this example, the table must already exist. [Appendix A] What's on the Companion Disk? 15.3.3 Replicated Objects with DBMS_REPCAT 657 15.3.3.1.5 Creating an object at the master definition site In this next example, we use CREATE_MASTER_REPOBJECT to create an object at the master definition site and add it to the replication group: BEGIN DBMS_REPCAT.CREATE_MASTER_REPOBJECT( sname => 'SPROCKET', oname => 'STATES', type => 'TABLE' ddl_text => 'CREATE TABLE sprocket.states(state_id VARCHAR2(2), state_name VARCHAR2(20))', gname => 'SPROCKET'); END; Notice that the CREATE TABLE statement in this example specifies the owner of the table. Typically, the replication administrator account uses DBMS_REPCAT, not the owner of the replicated schema. When this is the case, you must be sure to specify the schema in which to create objects. One of the privileges granted through DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_REPGROUP is CREATE ANY TABLE. In all likelihood, you will not create objects with the CREATE_MASTER_REPOBJECT procedure very often, because doing so is rather clumsy for all but the most simple objects. But it's there if you want it. Setting the retry and use_existing_object parameters to TRUE in this third example creates the table PRODUCTS at all master sites where it does not already exist; setting copy_rows to TRUE copies the data from the master definition site to the master sites. BEGIN DBMS_REPCAT.CREATE_MASTER_REPOBJECT( sname => 'SPROCKET', oname => 'PRODUCTS', type => 'TABLE', use_existing_object => TRUE, retry => TRUE, copy_rows => TRUE, gname => 'SPROCKET'); END; If tables exist at master sites, but do not have the same definition as at the master definition site, Oracle returns an error. NOTE: If you are incorporating an existing database into a replication group, you should consider precreating all of the objects at the new site manually, especially if the objects have interdependencies. At my sites, we always run a "catalog" script to create all schema objects, including triggers, primary and foreign key definitions, check constraints, etc. We then let Oracle generate the replication support objects. This methodology gives us complete control over how the schema is created, and we can easily reproduce the objects in other environments. 15.3.3.1.6 Replicating a package In this final example, we replicate a package. To replicate a package, you must make two calls to CREATE_MASTER_REPOBJECT, one for the package, and one for the package body. BEGIN DBMS_REPCAT.CREATE_MASTER_REPOBJECT sname => 'SPROCKET', oname => 'PRODUCTMAINT', type => 'PACKAGE', [Appendix A] What's on the Companion Disk? 15.3.3 Replicated Objects with DBMS_REPCAT 658 use_existing_object => TRUE, comment => 'Added on '||sysdate, retry => FALSE, gname => 'SPROCKET'); DBMS_REPCAT.CREATE_MASTER_REPOBJECT sname => 'SPROCKET', oname => 'PRODUCTMAINT', type => 'PACKAGE BODY', use_existing_object => TRUE, comment => 'Added on '||sysdate, retry => FALSE, gname => 'SPROCKET'); END; For an additional example, see the repobjs.sql file on the companion disk. The example queries the DBA_REPOBJECT data dictionary view and lists all replicated objects in the database. 15.3.3.2 The DBMS_REPCAT.SET_COLUMNS procedure When you replicate a table, Oracle must be able to uniquely identify each record in the table so that it can propagate changes to the correct row or rows. By default, the advanced replication facility uses the primary key to identify rows. However, if your table does not have a primary key, or if you wish to use a different criteria to uniquely identify records, you can use SET_COLUMNS to designate a pseudo−primary key. Here's the specification for the package: PROCEDURE DBMS_REPCAT.SET_COLUMNS (sname IN VARCHAR2, oname IN VARCHAR2, column_list IN VARCHAR2 | column_table IN dbms_utility.name_array); Parameters are summarized in the following table. Name Description sname Name of the schema that owns the replicated table. oname Name of the table with the column_group. column_list A comma−delimited list of column names to use as the pseudo−primary key. Use either column_list or column_table. column_table A PL/SQL table of column names. Use either column_list or column_table. 15.3.3.2.1 Exceptions DBMS_REPCAT.SET_COLUMNS may raise the following exceptions: Name Number Description nonmasterdef −23312 Invoking site is not master definition site missingobject −23308 Table oname does not exist missingcolumn −23334 Column(s) specified do not exist in table oname 15.3.3.2.2 Restrictions Note the following restrictions on calling DBMS_REPCAT.SET_COLUMNS. • [Appendix A] What's on the Companion Disk? 15.3.3 Replicated Objects with DBMS_REPCAT 659 DBMS_REPCAT.SET_COLUMNS must be run from the master definition site. • The changes do not take effect until the next call to DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT. 15.3.3.2.3 Example The following call designates columns COLOR, MODEL, and YEAR as the pseudo−primary key columns in table SPROCKET.PRODUCTS: BEGIN DBMS_REPCAT.SET_COLUMNS(sname => 'SPROCKET', oname => 'PRODUCTS', column_list => 'COLOR,MODEL,YEAR'); END; 15.3.3.3 The DBMS_REPCAT.DROP_MASTER_REPOBJECT procedure The DROP_MASTER_REPOBJECT procedure drops a replicated object at the master site. The specification follows: PROCEDURE DBMS_REPOBJECT.DROP_MASTER_REPOBJECT (sname IN VARCHAR2, oname IN VARCHAR2, type IN VARCHAR2, drop_objects IN BOOLEAN := FALSE); Parameters are summarized in the following table. Name Description sname Name of the schema to which oname belongs. oname Name of the object to be added. type Object type. Valid types: TABLE, INDEX, SYNONYM, TRIGGER, VIEW, PROCEDURE, FUNCTION, PACKAGE, and PACKAGE BODY. drop_objects If TRUE, drop the object at all master sites; default is FALSE. 15.3.3.3.1 Exceptions The DROP_MASTER_REPOBJECT procedure may raise the following exceptions: Name Number Description commfailure −23317 Not all master sites are reachable missingobject −23308 Object oname does not exist nonmasterdef −23373 Calling site is not the master definition site for replication group gname typefailure −23319 The type is not supported 15.3.3.3.2 Restrictions Note the following restrictions on calling DROP_MASTER_REPOBJECT: • This procedure must be called from the master definition site. • [Appendix A] What's on the Companion Disk? 15.3.3 Replicated Objects with DBMS_REPCAT 660 . tables exist at master sites, but do not have the same definition as at the master definition site, Oracle returns an error. NOTE: If you are incorporating an existing database into a replication. objects, including triggers, primary and foreign key definitions, check constraints, etc. We then let Oracle generate the replication support objects. This methodology gives us complete control over. objects in the database. 15.3.3.2 The DBMS_REPCAT.SET_COLUMNS procedure When you replicate a table, Oracle must be able to uniquely identify each record in the table so that it can propagate changes

Ngày đăng: 07/07/2014, 00:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN