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

Tài liệu Oracle Unleashed- P4 doc

50 182 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tài Liệu Oracle Unleashed- P4 Doc
Thể loại Tài liệu
Định dạng
Số trang 50
Dung lượng 119,65 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Method 1 Listing 6.5 uses the SQL command RPAD see line 6 in combination with LINESIZE line 2 to create an output line.. The SQLPLUS command on line 1 connects to the database and runs t

Trang 2

Listing 6.3 creates a master/detail SQL*Plus report by utilizing the SQL UNION command In this example, there are six distinct separate types of lines to be printed: the sales person (line 4), a line of dashes under the sales person (line 7), the detail line (line 10), a line of dashes under the detail total (line 14), a total line (line 17), and a blank line (line 21) There are six separate queries that have their output merged and sorted together by the SQL JOIN statement (see lines 6,

9, 13, 16, 19, and 23) When you use JOIN to merge the output of two or more queries, the output result set must have the same number of columns The headings are turned off (line 2) because regular SQL*Plus column headings are not desired for this type of report The first column of each query has an alias column name of DUMMY This DUMMY column is used to sort the order of the six types of lines (denoted by each of the six queries) The DUMMY column's only role is to maintain the order of the lines within the major sort field (SALES_REP_NO in this example); therefor, the NOPRINT option is specified in line 3

Listing 6.4 uses the JOIN feature to display output from two or more tables within the same report

Listing 6.4 Multitable SQL*Plus report code.

1: column OBJECT_TYPE format a20 heading 'Object'

2: column OBJECT_NAME format a8 heading 'Name'

3: column COMMENT format a8 heading 'Comments'

4: break on OBJECT_TYPE skip 1

5: ttitle 'System Summary Report

6: select 'Program' OBJECT_TYPE, program_name OBJECT_NAME,

System Summary Report

Object Name Comments

- -

-Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 3

Programs AM1 Algebra Test 1

AM2 Algebra Test 2

AM3 Algebra Test 3

Command Language CL1 AM1

CL2 AM2

CL3 AM3

Files AM1.TST File Size = 1200 Bytes

AM2.TST File Size = 3000 Bytes

AM3.TST File Size = 2200 Bytes

Listing 6.4 creates a SQL*Plus report utilizing different columns from different tables using the SQL UNION command

In this example, there are three different tables (see lines 8, 11, and 14), but there are only three columns of output The first query contains the column names (see lines 6 and 7) This is because of the way the UNION operator works The queries after the first query must follow the number of columns and the type of column (text or numeric) based on the column definitions of the first query The BREAK command (line 4) causes the OBJECT_NAME to print once and creates the blank line between the groupings of records

I will demonstrate two methods of creating reports that print with specific text in specific positions Method 1 in Listing 6.5 utilizes the RPAD SQL function whereas Method 2 in Listing 6.6 utilizes the COLUMN formatting command Both examples will create the same output report

Listing 6.5 Method 1 fixed position formatting SQL*Plus report code.

1: define TICKET_ROWID = &1

2: set LINESIZE 80

3: set HEADING OFF

4: set FEEDBACK OFF

5: spool TICKET.OUT

6: select RPAD(' -' || 7: null,80),

8: RPAD(' Customer Contact Survey' || null,80), 9: RPAD(' -' || null,80), 10: RPAD(' Customer Name: ' || CUSTOMER_NAME || ' PHONE#: ' ||

PHONE || null,80),

11: RPAD(' Customer Address: ' || CUSTOMER_ADDRESS || null,80),

12: RPAD(' ' || CUSTOMER_CITY || CUSTOMER_STATE ||Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 4

13: CUSTOMER_ZIP || null,80),

14: RPAD(' -' || null,80), 15: RPAD(' ' || TO_CHAR(CONTACT_DATE,'mm/dd/yy HH:MI') ||

' Caller: ' || CALLER ||

16: null,80),

17: RPAD(' -' || null,80), 18: RPAD(' Home Phone? ' || HPHONE_YN || 'Best Time to call: ' || CALL_TIME ||

Listing 6.6 Method 2 fixed position formatting SQL*Plus report code.

1: define TICKET_ROWID = &1

2: set PAGESIZE 55

3: set LINESIZE 80

4: set HEADING OFF

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 5

5: set FEEDBACK OFF

6: column LINE1 JUSTIFY LEFT NEWLINE

7: column LINE2 JUSTIFY LEFT NEWLINE

8: column LINE3 JUSTIFY LEFT NEWLINE

9: column LINE4 JUSTIFY LEFT NEWLINE

10: column LINE5 JUSTIFY LEFT NEWLINE

11: column LINE6 JUSTIFY LEFT NEWLINE

12: column LINE7 JUSTIFY LEFT NEWLINE

13: column LINE8 JUSTIFY LEFT NEWLINE

14: column LINE9 JUSTIFY LEFT NEWLINE

15: column LINE10 JUSTIFY LEFT NEWLINE

16: column LINE11 JUSTIFY LEFT NEWLINE

17: column LINE12 JUSTIFY LEFT NEWLINE

18: column LINE13 JUSTIFY LEFT NEWLINE

19: column LINE14 JUSTIFY LEFT NEWLINE

20: break ON ROW SKIP PAGE

21: SPOOL TICKET

22: select ' -' || null LINE1, 23: ' Customer Contact Survey' || null LINE2, 24: ' -' || null LINE3, 25: ' Customer Name: ' || CUSTOMER_NAME || ' PHONE#: ' ||

PHONE || null LINE4,

26: ' Customer Address: ' || CUSTOMER_ADDRESS || null LINE5,

27: ' ' || CUSTOMER_CITY || CUSTOMER_STATE || 28: CUSTOMER_ZIP || null LINE6,

29: ' -' || null LINE7, 30: ' ' || TO_CHAR(CONTACT_DATE,'mm/dd/yy HH:MI || ' Caller: ' ||

CALLER || null

31: LINE8,

32: ' -' || null LINE9,Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 6

33: ' Home Phone? ' || HPHONE_YN || 'Best Time to call: ' ||

OPERATOR || null

39: LINE13,

40: ' -' || null LINE14 41: from CUSTOMER_TABLE

42: where ROWID = '&&TICKET_ROWID'

43: /

44: spool OUT

45: exit

Listings 6.5 and 6.6 both produce the same output report, as follows in Listing 6.7

Listing 6.7 Output of Listing 6.5 and 6.6, fixed position formatting SQL*Plus report.

Customer Contact Survey

Customer Name: John Smith PHONE#: 515 123-4567

Customer Address: 123 Oak Street

Anytown VA 12345

31-Aug-95 10:05 Caller: DHotka

Home Phone? Y Best Time to call: 8pm

-Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 7

Has Catalog? Y Desire Future Calls? N

PRINTED: 31-Aug-95 12:45 BY: DHotka

-Listings 6.5 (method 1) and 6.6 (method 2) produce the exact same output, as seen in Listing 6.7 Both of these methods will produce reports with information in fixed or predefined positions Both of these methods could be utilized to print information on a preprinted form These particular examples were designed to be started from inside another process, such as SQL*Forms, because the only input parameter is an Oracle ROWID used to read and process a single row from the database (see lines 1 and 26 in Listing 6.5 and lines 1 and 42 in Listing 6.6)

These examples utilize the concatenation feature of SQL (||) to blend text between database fields Each column in the SQL statement represents an individual line in the report Both examples have the standard column headings feature turned off (line 3 of Listing 6.5, line 4 of Listing 6.6) Both examples have a one-to-one relationship between a SQL column and a line of output The methods differ in how the columns are formatted to create the individual lines

The main difference in these two methods is the approach used in the individual line setup Method 1 (Listing 6.5) uses the SQL command RPAD (see line 6) in combination with LINESIZE (line 2) to create an output line The RPAD is used to fill the line with blanks to position 80, and with LINESIZE set at 80 will cause the formatted line to appear on a line by itself Method 2 (Listing 6.6) uses the column command with the option NEWLINE specified in conjunction with

a field alias name (see lines 6 and 22) The column command with the NEWLINE option will make the formatted line appear on a line by itself

Listing 6.5 uses lines 28 through 31 to skip to the top of a new page Listing 6.6 uses a break command to skip to

a new page after each row of data from the SQL query The entire SELECT command of each example formats one row

of information from the database

SQL*Plus Additional Functionality

The remainder of this chapter discusses a variety of ways to format SQL*Plus output to create database-driven types of output (that is, SQL code, operating system-dependent command language, and script files for other Oracle products)

SQL Creating SQL

The classic example of using SQL*Plus formatting to create other SQL statements (hence the term "SQL creating SQL")

is cleaning up a table after an employee leaves a company The Oracle data dictionary view TAB is used in this example You can easily enter at the SQL*Plus prompt (shown here as SQL>) the steps in Listing 6.8 or adapt them to a

SQL*Plus command file using features you already learned

Listing 6.8 is an example of SQL creating SQL

Listing 6.8 Dropping all tables owned by a particular user.

SQL>set headings off

SQL>set pagesize 0

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 8

SQL>set termout off

It is common practice to use this SQL-creating-SQL example to perform a variety of clean-up and monitoring tasks

Listing 6.9 is an extension of Listing 6.8 as another example of creating useful database-driven programs This example will add four auditing fields to the end of each table owned by the user ID that runs this particular SQL*Plus command file This script will also create a database trigger that will automatically maintain these four added fields I utilized the fixed position formatting discussed in Listing 6.5

Listing 6.9 SQL creating database triggers.

1: set ECHO OFF

2: set TERMOUT OFF

3: set FEEDBACK OFF

4: set VERIFY OFF

5: set PAGESIZE 0

6: set LINESIZE 80

7: set HEADING OFF

8: spool cre_dbtrg.sql

9: select RPAD('select ' alter table ' || TNAME || null,80),

10: RPAD( ' add (inserted_by varchar2(10), ' || null,80), 11: RPAD( ' inserted_date date , ' || null,80), 12: RPAD( ' updated_by varchar2(10), ' || null,80),Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 9

13: RPAD( ' updated_date date ); ' || null,80) 14: from TAB;

15: select RPAD(' create trigger trg_' || TNAME || null,80),

16: RPAD(' before insert or update ' || null,80),

17: RPAD(' on ' || TNAME || null,80),

18: RPAD(' for each row ' || null,80),

19: RPAD(' begin ' || null,80),

20: RPAD(' if :old.inserted_by is null then ' || null,80),

21: RPAD(' :new.inserted_by := USER; ' || null,80),

22: RPAD(' :new.inserted_date := SYSDATE; ' || null,80),

23: RPAD(' :new.updated_by := null; ' || null,80),

24: RPAD(' :new.updated_date := null; ' || null,80),

25: RPAD(' else ' || null,80),

26: RPAD(' :new.inserted_by := :old.inserted_by; ' || null,80), 27: RPAD(' :new.inserted_date := :old.inserted_date; ' || null,80), 28: RPAD(' :new.updated_by := USER; ' || null,80),

29: RPAD(' :new.updated_date := SYSDATE; ' || null,80),

30: RPAD(' end if; ' || null,80),

31: RPAD(' end; ' || null,80),

Trang 10

Lines 1 through 7 set up the SQL*Plus environment so that no extra messages appear in the cre_dbtrg.sql file (see line 8) Lines 9 through 14 create the SQL alter table statement that will add the audit fields to each table, and lines 15 through 33 create the SQL create trigger statement that will add the database triggers necessary to maintain these audit fields Lines 35 through 38 reset the SQL*Plus environment so that all SQL commands and messages display Line 40 then runs the SQL*Plus command file cre_dbtrg.sql that was just created

In Listing 6.9, line 39 opens the file DBTRG.LOG This file will contain the output (an audit trail) when the DBTRG.SQL statement is executed with the START command on Line 40 I like to create SQL audit trails for various DBA commands, particularly ones such as this example where the process is rather automated The audit trails enable me to review the additions and any errors that might have occurred by simply editing the log file

SQL Creating Command Language Scripts

SQL*Plus formatting commands are quite versatile Besides their uses discussed previously, they can be used to create operating system-dependent command language scripts The examples in this section apply to an MS-DOS environment; however, the scripts can easily be adapted to any operating system-dependent command language

The example in Listing 6.10 applies the SQL creating SQL discussed in Listing 6.8 to create a DOS BAT file

Listing 6.10 SQL creating command language scripts.

1: column HOME_DIR new_value HDIR noprint

2: column PROGRAM_DIR new_value PDIR noprint

3: column PROGRAM_SUFFIX new_value PSUF noprint

Trang 11

Use the column command with the NEW_VALUE option to load variables from Oracle tables to use in other SQL queries

SQL*Plus Creating Database-Driven Command Language Scripts

The final example, Listing 6.11, incorporates a variety of concepts discussed in this chapter The goal of this example is

to load all program names and program sizes found in a particular directory structure, along with some database

information, into an Oracle database table, APPLICATION_PROGRAMS This directory structure is stored in a

different Oracle database table, APPLICATION_DEFAULTS

Listing 6.11 MS-DOS batch command file.

1: SQLPLUS -S HOTKA/DAN @LIST6_16.SQL

2: CALL LIST6_16.BAT

3: SED -F LIST6_19.SED LIST6_15A.DAT > LIST6_15B.DAT

4: SQLLOAD USERID=HOTKA/DAN CONTROL=LIST6_16.CTL

Listing 6.10 is the actual MS-DOS bat command file that runs the four computer tasks to accomplish our goal The SQLPLUS command on line 1 connects to the database and runs the SQL*Plus command file LIST6_16.SQL (see Listing 6.12) LIST6_16.SQL creates two files, LIST6_16.BAT (see Listing 6.12) and LIST6_16.CTL (see Listing 6.13) Line 2 executes the newly created LIST6_16.BAT file This command creates the file, LIST6_15A.DAT, that is an MS-DOS DIR (directory) list of directory 'C:\COBOL' Line 3 is a stream editor (SED) that deletes the first few lines and the last few lines (as directed by LIST6_19.SED; see Listing 6.15) of file LIST6_15A.DAT, creating LIST6_15B.DAT This file is the MS-DOS DIR output without the heading and trailing text information Line 4 then runs Oracle's SQL*Loader program, using the LIST6_16.CTL SQL*Loader control file created by line 1 and reading the datafile LIST6_15B.DAT Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 12

file created by line 3

Listing 6.12 is the LIST6_16.SQL referenced in Line 1 of Listing 6.11 and will create the LIST6_16.BAT file referenced

in Line 2 of Listing 6.11

Listing 6.12 SQL*Plus command file LIST6_16.SQL.

1: set PAGESIZE 0

2: column HOME_DIR new_value HDIR noprint

3: column PROGRAM_DIR new_value PDIR noprint

4: column PROGRAM_SUFFIX new_value PSUF noprint

Trang 13

26: select '(PROGRAM_NAME position(1:8) char,'

The file in Listing 6.13, LIST6_16.BAT, was created by Listing 6.12, lines 8 and 9

Listing 6.13 SQL creating MS-DOS batch file output.

DIR C:\COBOL\*.COB > C:\FILES\LIST6_15A.DAT

The Oracle SQL*Loader control file in Listing 6.14, LIST6_16.CTL, was created by the remainder of Listing 6.12, beginning at line 13

Listing 6.14 SQL creating Oracle SQL*Loader control file output.

load data

infile 'LIST6_15B.DAT'

append

into table APPLICATION_PROGRAMS

(PROGRAM_NAME position(1:8) char,

PROGRAM_SUFFIX constant 'COB',

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 14

PROGRAM_SIZE position(15:22) integer external,

PROGRAM_PATH constant 'C:\COBOL',

ASSIGNED_ANALYST constant 'HOTKA')

The file in Listing 6.15 is needed to modify the LIST16_5A.DAT file, the file created from a MS-DOS DIR command (see Listing 6.13) Remember: Listing 6.13 was created by Listing 6.12 at Line 9

Listing 6.15 LIST6_17.SED file used in Listing 6.15, line 3.

1,4d

/bytes/,$d

Listing 6.12 expands on the Listing 6.10 example This SQL*Plus command file reads the Oracle database, loading three user variables with default information from database table APPLICATION_DEFAULTS (lines 2 through 7) Line 8 opens the first file, LIST6_16.BAT Simple text, in the form of MS-DOS commands, is joined with information stored in the above-mentioned variables with default information (see line 9 for syntax and Listing 6.13 to view results of this SQL query) This file is closed at line 12 and the second output file, LIST6_16.CTL, is opened This file is the control file that tells Oracle's SQL*Loader what to do Lines 14 through 40 are a series of select from dual SQL queries Each

of these SQL statements will output one line The table DUAL (its real name is SYSTEM.DUAL) contains one column and one row and is convenient in the example when only one row of output is desired from each of these SQL queries (see lines 14 through 40) Lines 29 and 35 incorporate the default information stored in the user variables Listing 6.14 displays the results of this series of SQL queries

The goal here was to use information stored in the Oracle database to retrieve information from an operating system file system directory and to load this information into the Oracle database Listing 6.11 drives this whole example, running Listing 12 to create the necessary files with information from the Oracle database, preparing the output file created for loading, and running the Oracle SQL*Loader process with the SQL*Loader control file created by Listing 6.12 The goal

of this example is a simple one and used several of the concepts in this chapter

The table SYSTEM.DUAL, or DUAL, is a one-column, one-row table that played a major role in the

programming of Oracle tools before the introduction of Oracle's PL/SQL software

Line 9 of Listing 6.12 can easily be adapted for more complex command syntax using the SQL UNION operator discussed previously in this chapter

Summary

In this chapter you learned the history and functional uses of SQL*Plus and saw an in-depth list of SQL*Plus commands with examples You used these commands in a variety of ways to produce report and program output examples Some of the features discussed in this chapter are not directly referenced in Oracle documentation

Hopefully, you can utilize the skills and refer to the examples provided in this chapter in your application, design, and development of Oracle-based products

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 15

Previous

Page TOC

Next Page Home

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 16

Previous

Page TOC

Next Page Home

● 7

❍ SQL*DBA

■ Introduction to Oracle SQL*DBA

■ The SQL*DBA Command Set

■ Before You Start SQL*DBA

■ Connecting to a Database

■ Terminating SQL*DBA Commands

■ SQL*DBA Operation Modes

■ SQL*DBA in Line Mode

■ Starting SQL*DBA in Line Mode

■ Startup and Shutdown with SQL*DBA in Line Mode

■ SQL*DBA in Command Mode

■ Automating the Startup and Shutdown Options

■ SQL*DBA in Menu Mode

■ Parts of the Menu

The purpose of this chapter is to familiarize you with the basic, mid-level, and many advanced functions of SQL*DBA

It should also help you to put that knowledge to use in your current and future environments Although this chapter's coverage is not exhaustive, it should certainly give you all the requirements you need to forge ahead in understanding the more advanced concepts of database management with SQL*DBA

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 17

The following screen captures and sample programs come from a DG/UX Aviion 9500, 8-processor UNIX system running a DG/UX 5.4.3.10 MU02 operating system with Oracle RDBMS Version 7.1.4 The output or code could run differently on your system

Introduction to Oracle SQL*DBA

To assist in the setup, administration, and day-to-day operations of your Oracle databases, Oracle Corporation provided a tool called SQL*DBA Although SQL*DBA has many functions, its most obvious use is to start up and shut down local databases If you have SQL*Net installed, SQL*DBA uses its features to start up and shut down remote databases as well This versatility gives the database administrator great flexibility in database management

Secondary functions of SQL*DBA include altering database and system statistics, modifying the characteristics of a database, administering users and security, restoring a database, and manipulating data files belonging to the databases With the added capability to monitor various aspects of the database as it is running, SQL*DBA is an important and multifaceted tool

SQL*DBA has three modes of operation:

Line mode Command mode Menu mode

Line mode is a non-graphical interface that enables the user to interactively enter commands The output is scrolled across the user's screen This mode is very useful for managing portions of the database that do not require the ease of screen mode

Command mode is identical to line mode with the exception of how it is used Although line mode is interactive by nature, command mode is intended to run in batch mode Generally, command mode is used to run a script, or collection

of commands, created by the user

Menu mode, also referred to as screen mode, is a graphical interface that you can use on supported ASCII terminals, including X terminals It provides the user with a menu-driven interface from which they can issue most SQL*DBA commands

Please be aware that some versions of SQL*DBA (such as those supplied with Oracle Version 6 and Personal Oracle) might not support the menu (screen) mode, as well as shortcut keys

Although the menu interface is quite powerful, a handful of commands can only be executed from the command line Table 7.1 contains a list of those commands Screen mode supports all the commands that line mode supports in addition

to a feature called monitor, which I discuss later in this chapter

Table 7.1 SQL*DBA commands available only through the command line.

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 18

Command Purpose

DESCRIBE Describes tables and views

EXECUTE Executes PL/SQL blocks

PRINT Prints the value of a variable defined with the VARIABLE command

REMARK Denotes a comment or remark and prevents the interpreter from executing the line

SET Sets or modifies the characteristics of the current SQL*DBA session

SHOW Shows characteristics of the current SQL*DBA session

VARIABLE

Defines a variable to be used within the current SQL*DBA session

Each of the modes is covered in greater detail in later sections First, it is important to cover a few topics before

proceeding to the commands

The SQL*DBA Command Set

SQL*DBA accepts all standard SQL, PL/SQL, and SQL*DBA commands with few exceptions Exceptions to this rule include SQL*Plus formatting commands such as set heading or set linesize You can find a complete list of SQL*DBA specific commands in the command reference at the end of this chapter

Before You Start SQL*DBA

There are several requirements to meet before you can run SQL*DBA First, the user must either own the executable or

be a member of the group associated with it You can find the SQL*DBA executable in the bin directory of your

ORACLE_HOME environment variable; it's usually named sqldba (DOS-based systems might include an EXE or COM extension) If you are running Oracle on a DOS machine, the executable is located in the directory pointed to by your XBIN environment variable

Once you can execute SQL*DBA, you must also have privileges to execute the specific commands you want to use For instance, if you want to add a data file to a tablespace, you must have the ALTER TABLESPACE privilege

Next, it is important to know how to connect to a database Nearly all the commands supported by SQL*DBA require a connection to a database (especially startup and shutdown options)

Connecting to a Database

All SQL*DBA modes support the connect commands With a username/password specification, you can connect to your default database SQL*Net supports special connect strings to connect to remote databases on your network You can use this option to eliminate the need for logging into every system where a database is running

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 19

connect internal is the most typical connection using SQL*DBA Internal, a special username viable only through SQL*DBA, is actually a alias for logging into the SYS account Intended strictly for use with special operations such as startup and shutdown, the internal username is limited to users with the correct access to SQL*DBA (ownership and group access to the executable)

Terminating SQL*DBA Commands

SQL*DBA, like SQL*Plus, enables you to execute multiple-line commands By default, you must terminate all

commands with a semicolon (;) or forward slash (/), regardless of which mode you are using These characters tell SQL*DBA to execute the command Some commands might not require the terminator If you press return while

entering a command where SQL*DBA expects further input, SQL*DBA provides a continuation line where you can enter the next part of the command line Entering the termination character ends the command and begins execution

SQL*DBA Operation Modes

I mentioned earlier the three modes of operation for SQL*DBA; only one major difference distinguishes the three modes Screen mode is the only mode capable of running monitor programs that help you monitor various aspects of your instance Apart from this difference, all three modes function identically Commands that you can issue in line mode work identically when issued in either screen or command modes

SQL*DBA in Line Mode

Line mode places the user into a line-driven, interactive interface This mode does not support menus or additional input devices other than the keyboard You usually use line mode for quick access to SQL*DBA commands or for automating different aspects of its functionality

Because line and screen mode are identical in nature except for monitor commands, I limit the scope of this discussion

on line mode to starting SQL*DBA in line mode, starting up and shutting down the database, and automating the startup and shutdown processes The following section on screen mode goes into much greater depth about the commands available in SQL*DBA

Line mode is provided strictly for backward compatibility with older versions of Oracle Oracle announced that

it will not support SQL*DBA in future releases At press time, SQL*DBA is still a supported product

Starting SQL*DBA in Line Mode

To start SQL*DBA in line mode, you can enter one of the following commands: sqldba mode=line or sqldba lmode=y After starting SQL*DBA, you should see a prompt that resembles SQLDBA>

At this point, you can connect to the database using connect internal or connect username/password Once you are

finished with your SQL*DBA session, you can issue the exit command to leave

SQL*DBA is not case sensitive unless you are dealing with the selection of data from the database Uppercase or lowercase letters are perfectly legitimate

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 20

Startup and Shutdown with SQL*DBA in Line Mode

As stated before, the primary use for SQL*DBA is the startup and shutdown of your database You can do this from line

or screen mode, but it seems the most common way is from line mode

You cannot issue startup and shutdown commands from a connection via the Multi-Threaded Server You must have a dedicated session to issue these commands If running the Multi-Threaded Server, you must first disable the TWO_TASK environment variable before starting SQL*DBA

To start up a database, use the following set of commands

1 Start SQL*DBA by issuing the sqldba command

2 Issue the CONNECT INTERNAL command to connect to the database

3 Start the database using any of the STARTUP commands

4 Exit SQL*DBA by typing EXIT

You can substitute any one of the startup options for the STARTUP command listed in step 3, such as STARTUP MOUNT, or STARTUP FORCE Later on, I discuss the startup and shutdown options in greater depth

To shut down the database from line mode, use the following steps:

1 Start SQL*DBA by issuing the sqldba command

2 Issue the CONNECT INTERNAL command to connect to the database

3 Shut down the database using any of the SHUTDOWN commands

4 Exit SQL*DBA by typing EXIT

You can substitute other shutdown options for the SHUTDOWN option listed in step 3, depending on your site's needs

An example is using the SHUTDOWN IMMEDIATE command if you want to log out all processes connected to the database

SQL*DBA in Command Mode

Command mode enables you to place a group of commands in the same file to be executed together Various uses of command mode include starting up or shutting down an instance and collecting data for a custom report

The format and execution of a command file for use in SQL*DBA is identical to the format of command files used in SQL*Plus The following is a list of guidelines you can use for formatting a command file

Although the SQL extension is not required, using it could help you identify the file in the future

If any commands in your command file require you to be connected to the database, the first line should be CONNECT INTERNAL

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 21

You should terminate all single-line or multiple-line commands with ; or / If the command is longer than a single line, only the last line of the command must have a ; or / terminating it

You can separate command lines with a return for readability

Scripts can call other scripts, but the depth of the nesting is operating-system dependent

The command mode does not require an EXIT command

To call a command script while executing SQL*DBA, you can use the following command format:

sqldba command="@filename.sql"

SQL*DBA requires the quotes and the @ to execute the script properly The following is a sample startup script:

REM

REM startup.sql to be used to automate the startup

REM of a database through SQL*DBA command mode

REM shutdown.sql to be used to automate the shutdown

REM of a database through SQL*DBA command mode

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 22

You can further customize these scripts by adding startup and shutdown options (such as shutdown immediate) or SQL statements that show who is currently logged into the Oracle instance

Automating the Startup and Shutdown Options

With a certain amount of operating system expertise, you can automate the startup and shutdown of your Oracle

instance This can be helpful if you have an operations staff that routinely must start and stop your database instances for basic maintenance (system reboot, offline backup, and so on)

The previous section discussed one possible way to automate startup or shutdown using command scripts Another, more typical way is to embed these commands in a script that a system operator could run without any knowledge of Oracle commands or SQL*DBA modes The following is a sample UNIX script for starting an Oracle instance

#! /bin/sh

##########

# filename: oracle_start.sh

#####

# As Oracle recommends, the first line is to force the script

# to run in the Bourne Shell

#####

#####

# This script should be run from the Oracle DBA account

# It assumes that ORACLE_HOME has been defined If it has not,

# this script will exit with the appropriate error message

#

# Other assumptions include that your ORACLE_SID has been set before

# running this script

Trang 23

# Check to see if the database is up

# if the sgadef(instance).dbf file is there, the instance is

# running and the startup should NOT proceed

if [ -f "${ORACLE_HOME}/dbs/${ORACLE_SID}.dbf" ]

then

echo "The ${ORACLE_SID} instance of Oracle is running"

echo "You must shutdown before starting up."

exit 3

fi

# The database is not running, so let's start it in normal mode

# using the script we defined in the preceding sections

# If we cannot find sqldba, then we will exit with an error

# Now let's check to see if it came up

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 24

if [ -f "${ORACLE_HOME}/dbs/${ORACLE_SID}.dbf" ]

then

echo "The instance has now started."

else

echo "The instance is NOT started Please check for errors "

echo "before attempting to restart the database."

# As Oracle recommends, the first line is to force the script

# to run in the Bourne Shell

#####

#####

# This script should be run from the Oracle DBA account

# It assumes that ORACLE_HOME has been defined If it has not,

# this script will exit with the appropriate error message

#

# Other assumptions include that your ORACLE_SID has been set

# before running this script

#

#####

# If ORACLE_HOME = nothing then exit with a status of 1

Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.

Trang 25

# Check to see if the database is down

# if the sgadef(instance).dbf file is not there, the instance is

# not running and the shutdown should exit

if [ ! -f "${ORACLE_HOME}/dbs/${ORACLE_SID}.dbf" ]

then

echo "The ${ORACLE_SID} instance of Oracle is not currently echo "running You must startup before you can shutdown." exit 3

fi

# The database is running, so let's do a normal shutdown

# using the script we defined in the preceding sections

# If we cannot find sqldba, then we will exit with an error

Ngày đăng: 26/01/2014, 15:20

w