ࡱ>  )Ybjbj 4g1gg1gVG% 08H|hPf"7&&4' h h h h h h h$`kn1h#'5$7&#'#'1hDDFh+++#'pD< h+#' h++NZ|!_r'9\0g\h0hi\n'(n`!_!_jn_l#'#'+#'#'#'#'#'1h1h*T#'#'#'h#'#'#'#'n#'#'#'#'#'#'#'#'#' X : SQLPLUS204_s21.doc Oracle usage, CSC204, January 27, 2021 - Prof. Mitchell Section #0. Accessing ECS servers in spring 2021 IF you have been or will be given a ECS Linux class account in more than one class, you can login to the OS on BOTH athena AND cscoracle with any such class account. This is because these servers share the same file system and authentication (means login using a username and password). Although athena and cscoracle have the same file system from a student viewpoint, they do not have the same software systems. Specifically, Oracle runs on cscoracle and NOT on athena. This section outlines how to authenticate (means login via username & password) for access to the servers needed for this course. There are two different procedures for DB login, depending on whether you are using the CSUS vpn to connect to ECS servers OR whether you are not using the CSUS vpn to connect to ECS servers CSUS vpn If you have installed the CSUS vpn (by GlobalProtect), you can then directly log into the OS on any ECS Linux server, including cscoracle. Using the vpn avoids athena login and ssh login to cscoracle, as described elsewhere in this document. How To Get the GlobalProtect vpn installed In your web browser, type ecs.csus.edu. From the top menu, choose TECH TOOLS, and then choose Helpdesk; in the Tutorials section of that page (down and to the left) choose Connect To The CSUS VPN via Global Protect (it should be the top entry in the Tutorials area) The connect tutorial is an Installation and Use guide for the CSUS vpn. Although not being enforced for athena access this spring, using the vpn for CSC204 work enables you to directly log into cscoracle (bypassing/eliminating the need to log into athena) Connecting to an Oracle DB session, requires two (2) or three (3) authentications, depending on whether the vpn is or is not used. 3 authentications to login to Oracle If you are NOT using the CSUS vpn and you are off campus: Login to athena in one of two ways: A ) If you are a NEW STUDENT to CSUS this semester, log into athena using the CSC204 class specific account emailed to you by Prof. Mitchell B ) If you are a CONTINUING student in ECS college, and already have an ECS Linux account from previous semesters, you can use that account to login to athena, OR use the spring 2021 CSC204 class specific account emailed to you by Prof. Mitchell Caution: if you forget the password to any ECS account, you must contact ECS Helpdesk to get your password reset. Only ECS Helpdesk, not the instructor, can reset an ECS Linux account password. Login to cscoracle (= the vm running Oracle) as follows: a command-line OS session on cscoracle can be initiated when logged in to athena via Secure Shell protocol using the ssh command, with: %OS_Prompt ssh l Your_OS_UserName cscoracle (the firstt ssh argument is el, not one) where %OS_Prompt is OS shell prompt The cscoracle server has the same OS username + password as your ECS Linux account Log into Oracle on cscoracle as described in the boxes below. Caution: The course instructor is the ONLY person who can reset an Oracle password. DO NOT ASK the ECS Helpdesk concerning forgotten Oracle passwords. Opposite to ECS server passwords, only the instructor, not ECS, can reset Oracle passwords. 2 authentications to login to Oracle If you ARE using the CSUS vpn: You can bypass athena login, and log in directly to the Linux OS on cscoracle by using step 1A ) or 1B ) above (returning students have an option of using their existing ECS account; new students must use a spring 2021 class account) Log into Oracle on cscoracle as described in the boxes below. Section #1. Configuring and using your Oracle Account on cscoracle Class home work must be completed using the course virtual server named cscoracle. cscoracle is an ECS server that also supports other CSC database courses. It is very common that large software systems such as Oracle require customized installation, but also need a small amount of individual DB user settings/configuration (such a configuration adds some Oracle-specific symbols/variables to the users OS shell on cscoracle) Complete the configuration of your Oracle account when you are logged in to the OS on cscoracle for the first time. Carry out the steps in the boxes below:  #1 Do the following file edit ONLY ONE TIME for the course: {Hint for appending the configure_204_xxx.txt file for c or bash shell Linux described below: Use Unix command cat f2 >> f1 to append contents of file f2 to end of file f1 } A full file path and filename will be needed for the f2 argument of the cat command (cut-and-paste instead of using cat might put invisible characters in .login & corrupt it; same warning for bash shell users) IF using Linux c shell: append, to the end of your existing .login file, the contents of the file: /gaia/home/faculty/mitchell/html/csc204/homework/configure_204_cshell.txt IF using Linux bash shell: add the contents of the file: /gaia/home/faculty/mitchell/html/CSC204/homework/configure_204_bashshell.txt to the end of your existing .bash_profile file (if .bash_profile does not exist, create an empty one) Then, any future oracle login automatically executes your .login or .bash_profile Note: logout and then login again for your shell updates to take effect (or do Unix shortcuts you know to avoid logging out that force the file changes to take effect without logging out)   #3. cscoracle runs the Linux CentOS 6 OS on an ECS virtualized machine; the OS is an open source dialect of Redhat Linux; the Oracle system on cscoracle is Enterprise version 11g release 2.0.1.0 This is a quite old version of Oracle , but it is more than adequate for CSC204. After login to cscoracle, you can connect to an Oracle SQL*Plus command session by: % OS prompt sqlplus ( Recall:Unix/Linux OS commands are case sensitive ( Note: [yourOS_username]cscoracle is the cscoracle servers OS prompt ) You are then prompted for the standard Oracle USERNAME and PASSWORD prompts. Initially, your Oracle password is the same as your Oracle username After successful first-time connection to Oracle (you will see the SQL> prompt), IMMEDIATELY change your Oracle password using Oracle SQL DDL command: SQL> alter user cs2041xx identified by NewOraclePassword; (semicolon required) (See footnote 3 about ; xx syntax, and legal Oracle password characters) A SQL*Plus connection is persistent until session logout. ((Normal) logout from a SQL*Plus session and return to the OS using: SQL> exit) You are now properly configured for CSC204 course work. Oracle schemas and the DD Each cs2041xx account maps to Oracle DB space (consisting of logical and physical space see Fig 1). Disk space is nfs filesystem filespace ( = SAME file system on cscoracle as on athena ). By default, each object (such as a table/view) you create is private to your Oracle account. All CSC204 students share 2 Oracle logical tablespace objects, named STUD_CS2041 and DATABASE_TEMP. Table rows, are mapped by STUD_CS2041 into physical disk space. Per-user space quota is enforced for STUD_CS2041, and (temporary) quota for DATABASE_TEMP is shared (for large SQL sorts, transactions, etc.). Tablespaces have parameters defining storage allocation/placement/etc. per object associated with that tablespace. A given users objects can be associated with different tablespaces (for flexible physical storage)          After each Oracle login, you see the standard Oracle SQL*Plus command prompt SQL >. At the SQL> prompt, you are interacting with the command-line language (named SQL*Plus) interface to oracle SQL. Used frequently this semester, it is closest to the SQL engine. During a SQL session, you can suspend the Oracle session and spawn a Linux command shell to execute an OS-level command via: SQL> host Any_OS_command (or SQL> ! Any_OS_command) For example, try this NOW: SQL> host date When the command finishes, the OS shell process spawned by the OS command terminates, and the Oracle session automatically resumes with the SQL> prompt. Terminate an Oracle session and return to the OS command shell by: SQL> exit Section #2. Oracle SQL and SQL*Plus introduction Section 2.1 Sample user queries and data dictionary (DD) queries You can practice queries on schema SHs (a public readable schema) tables. Almost all SH tables can be queried (via SELECT). You access tables such as SALES with qualified name SH.SALES (syntax is: SchemaName.TableName) SQL> select count(*) from sh.sales; [ Unlike some non-Oracle DBMSs, the above syntax does not need to specify a database name, nor initialize database access all student accounts use one implicitly named database. ] Note: each student schema name is of the form: cs2041xy = > thus, sales is not in your schema Every existing object has an owner schema. If you own an object, you do not need to prefix its name with your schema name. You can display schema structures of Oracle tables/views you own via: SQL> describe TableName (or ViewName) (Try this NOW for the two TableNames SALES and then SH.SALES and compare the result) You should see that: the SQL*Plus describe command queries Oracle DD content and displays the schema for TableName (if it exists and user has access rights to it, otherwise, error). ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ You often need to capture results from many kinds of processing into a simple text file (as the OS sees it). The SQL*Plus spool command creates such files and is required in homeworks. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Spooling how to capture output from a SQL*Plus script to an OS text file Example scripts and homework questions in this course often require oracle spooling. Use the following steps whenever you need to capture a (plain text) file copy of a sequence of SQL*Plus (or other oracle) commands and their results: set echo on (Displays each executed command as well as command results) show user (Display the oracle username of this session; only one spool file can be open at any moment in a SQL*Plus session) spool spoolFileName (the file is an OS text file; suggested naming convention xxx.out) . . . command(s) (Any number of SQL*Plus commands, except quit/exit ; . . . can also call various kinds of other modules) set echo off spool off (spool file remains open until this command closes the spool file or session terminates/aborts) Section 2.2 Review of some simple (standard) SQL; additional Oracle SQL*Plus syntax Each Oracle SQL statement (SELECT, UPDATE, etc.) is terminated by an ; SQL*Plus session commands affecting the user interface of display (such as: describe, show, column, etc.) do not require a ; for command termination SQL statement clauses are free-format, but it is easier to read code with select, from, where, etc. clauses on different source lines SQL statement elements do not distinguish case (Example: SELECT same as SElecT) LIKE is a string comparison operator, and string values are delimited by single quotes. Upper and lower case are significant in strings Ex: this is a string constant in SQL A * in a SELECT clause represents (i.e., is an alias for) all columns of the table(s) Schema object naming (is DBMS-vendor specific) see Section #4 for the basics. Oracle translates schema names (table, view, etc.) into upper case before storing the name in the DD. That is why uppercase SH is the string value in a query such as: select table_name from all_tables where owner = SH; (coding = sh will return 0 rows) When working on complicated queries (for which several attempts at correct code might be needed), it is best to initially code the query in a text file in your cscoracle OS filespace, and then have Oracle load and execute the file. xxx.sql is the Oracle naming form for SQL source code files. Recommended SQL development/testing cycle with SQL*Plus in this course: Code queries in file, assuming a name such as MyQuery.sql (use any OS-installed editor) In an Oracle session, do: SQL> @MyQuery.sql (loads and executes contents of MyQuery.sql ) Note: filename upper/lower case reverts to Linux filename syntax Note: if MyQuery.sql is not in the same directory as the current directory during Oracle login, then fullPath/MyQuery.sql must be specified. If there are problems/errors, re-edit the source using: SQL> host nano MyQuery.sql (nano editor is assumed here, or your preferred editor) exit your editor session in the usual way for that editor; and, resume at step 2 Practice the above 3-step cycle on a simple example of your own, now. Section #3. SQL user session login file and cascaded login initializations This information in this section will not be needed/used in the early part of this course, but is FYI, and will be used later in homeworks. SQL*Plus provides session initialization capabilities. Each Oracle user can compose his/her own set of commands (in a file that must be named login.sql). login.sql is automatically executed during session startup, as SQL*Plus will search for login.sql in the path: SQLPATH/login.sql. The shell symbol SQLPATH must be defined in your OS shell; define it (using a setenv in your .login file (for C-shell users), for example) In addition, Oracle installs also configure a global SQL*Plus startup file for all Oracle users by executing the following initialization before a users login.sql (if login.sql exists): $ORACLE_HOME/sqlplus/admin/glogin.sql One of the things glogin.sql does is pre-format the display of some columns in Oracle DD. Section #4. Summary of Oracle schema object naming rules Reference Database SQL Reference, pg. 19 of 479, Oracle 10g release 2.0 Quoting the reference: Schema objects are made up of parts that you can or must name, such as the columns in a table or view, index and table partitions and sub-partitions, integrity constraints on a table, and objects that are stored within a package, including procedures and stored functions. Every database object has a name. You represent the name of an object within a schema with aquoted identifieror anon-quoted identifier (aka regular identifier). A non-quoted identifier (the more common usage) is not surrounded by any punctuation. You can use either quoted or non-quoted identifiers to name any database object. Case mapping: select * from abC (or any mix of case) maps to select * from ABC because the table object is stored in the Oracle DD as ABC (all upper case) A quoted identifier begins and ends with double quotation marks ("); it cannot contain a double quotation character. If you name a schema object using a quoted identifier, then you must use the double quotation marks whenever you refer to that object. Note: non-quoted names are usually used in Oracle. Regular of names are defined in the SQL standard Database names, global database names, and database link names are always case insensitive and are stored as uppercase. With quoted identifiers, the quotation marks are silently ignored. Refer tothe Oracle  HYPERLINK "https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_8003.htm" \l "i2065278" CREATE USERfor additional rules for naming users and passwords. These rules apply to both quoted and non-quoted identifiers unless otherwise indicated: Names must be from 1 to 30 bytes long with these exceptions: Names of databases are limited to 8 bytes. Names of database links can be <= 128 bytes. If an identifier includes multiple parts separated by periods, then each attribute can be up to 30 bytes long. Each period separator, as well as any surrounding double quotation marks, counts as one byte. For example, suppose you identify a column like this: "schema"."table"."column" The schema name can be 30 bytes, the table name can by 30 bytes, and the column name can be 30 bytes. Each of the quotation marks and periods is a single-byte character, so the total length of the identifier in this example can be up to 98 bytes. Non-quoted identifiers cannot be Oracle Database reserved words. Quoted identifiers can be reserved words, although this is not recommended, as it can be confusing. Depending on the Oracle product you plan to use to access a database object, names might be further restricted by other Oracle product-specific reserved words. {Reserved wordROWIDis an exception to this rule. You cannot use the uppercase wordROWID, either quoted or non-quoted, as a column name (because every Oracle table has a pseudocolumn named ROWID)} The Oracle SQL language contains other words that have special meanings. These words include datatypes, schema names, function names, the dummy system tableDUAL, and keywords (the uppercase words in SQL statements, such as DIMENSION, SEGMENT, ALLOCATE,DISABLE, and so forth). These words are not reserved. However, Oracle uses them internally in specific ways. Non-quoted identifiers must begin with an alphabetic character from your database character set. Quoted identifiers can begin with any character. Non-quoted identifiers can contain only alphanumeric characters from your database character set and the underscore (_), dollar sign ($), and pound sign (#). Database links can also contain periods (.) and "at" signs (@). Oracle strongly discourages you from using $ and # in non-quoted identifiers. Quoted identifiers can contain any characters and punctuations marks as well as spaces. However, neither quoted nor non-quoted identifiers can contain double quotation marks or the null character (\0). Within a namespace, no two objects can have the same name. In each schema, the following object categories share one namespace: Tables Views {Thus, a view cannot have the same name as a table, and conversely} Sequences {sequenced key generation} Private synonyms Stand-alone stored procedures Stand-alone stored functions Packages Final note In Oracle, schema/user/username/account are all synonymous (mean same thing) schema would be preferred, as it conforms to SQL standard terminology.  SQL*Plus is an Oracle-specific command language environment. SQL*Plus provides additional commands/directives that facilitate using SQL 1) interactively and 2) in scripts for DB processing  An Oracle table name can be any valid Oracle identifier. Note: there is a substantial list of Oracle pre-defined reserved words, such as DATE, FROM, etc. (not for user usage). More about this list soon.  xx denotes the trailing ONE or TWO digits in your Oracle username. Elmasri/Navathe was written for the widest possible audience. There are several major DB environments: Oracle, SQL-Server, Sybase, DB2, MySQL, etc. Oracles version of SQL contains many extensions to the SQL standard. Textbook SQL examples use a terminating ; the terminating ; is also our Oracle installation default (although it can be changed). SQL*Plus control commands, such as describe, can use the OPTIONAL terminating ; or just . If the password is not enclosed in quotes then it can include any letter, any digit, "_", "#" or "$" characters. Only a letter can be used in the first character, any of these characters can be used after that. If on the other hand you enclose a password in double quotes, you can use any character in any position.     PAGE  PAGE 5 #2. Assuming you are logged in at cscoracle, you can verify that your .login (c shell) or .bash_profile (bash shell) has been configured correctly by checking that: 1. cscoracle OS login displays: Starting CSc oracle-specific commands of .login (OR) .bash_profile 2. Various Oracle symbols are now defined in your cscoracle shell. Another check to try is: %cscoracle_Prompt echo $ORACLE_HOME The returned string value should be exactly: /u01/app/oracle/product/11.2.0/dbhome_1 Contact instructor immediately (via email) if returned string is an error or undefined value. Be sure to check your steps #1. and #2. for simple mistakes, before emailing for help. Do not go on until steps #1 and #2 are correct; otherwise, some Oracle shell commands will fail, and Oracle login will not work. Table rows are physically stored in segments of Oracle storage in x.dbf files Fig 1 Oracle external-to-conceptual-to-internal mappings Permanent tablespace STUD_CS2041.dbf Us quota Oracle user U Us tables, indexes, etc. DATABASE_TEMP1.dbf Temporary tablespace On-disk OS filesystem files (owned by OS user: oracle) for physical storage of user data Tablespaces component of DDs Internal Schema   !#&+679:;LMNOT[\detz~  ' ¾hCrh(Gh*>*h* hQ5\ h#5\hVh^ 5B*CJ\phhC\"hQ\hc3h$hQhTh^ h h{L5h-h<CJ hQaJ h#aJh-h<aJ8MNO Z [  ] b : $`gdgd$a$gdV+Y$a$gd#$a$gd*$a$gdo3$a$gd<' ( * + . 1 8 9 > Y t ! & K Y Z [ \ ` h p {      ! ( + 6 8 ·hUchV+YB*ph/hUch*B*ph/hV+Y hV+YhV+Yh ""hzah#hBhB>*hBhCr>*hCrhfh*H8 9 B Q U \ ] b c d f k | }      # 9 : B G H J K M N O P U V ] c i v   + , 0 4 6 8 h:h hh h\hh\hhfh*U8 9 = m q z {   "#$%3=EFKLX^dlmn~ 39?\`a¾¾¾hV+Yhh:h@$h ""h* hh hh5& hhH#hHhH5B*CJ\aJphhBh hhF$%bctj,-fr`gdi A^`Agdi^gdi $^a$gd(G $^a$gd&C $ & Fa$gd "" $`a$gdz]#$a$gd#$a$gdV+Ygdgdabct$%*+345:PSaefgjst  Ͻh(Gh ""6B*]phffh&C6B*]phffh#h ""6B*]phffh&Ch "" h5\hDgh^5\hDghDg5\hDghz]#5\hz]#h@$@%)*+38@AFIX[\]`ijqv!&¤–hh2>*h(Gh2hzahC\" hb?>* h&C>*hC\"h "">*hb?h ""CJaJhb?h&CCJaJh ""hC\"h ""B*phffh&C6B*]phffh#h&C6B*]phffh&Ch&C6B*]phffh&Ch3&*+,-2RVZef "#$()*+/2IKLMORbeqrsvȼϵh^hB*phff hhihihi>* hihihANUhi6CJH* hi6CJhANUhi6CJhbwhi6hhihC\" h#hh ""hzah2<X='ef$a$gd# $ & Fa$gdza $^a$gd: $ & Fa$gd^$a$gd^ $`a$gd^$a$gdza $^a$gd $`a$gd $ & Fa$gd^ $`a$gdi  *.2MRVWXY_abcgjo~  #&)*2:;<=EFLMRSXYqtƼhDghDg5\hDgh^5\hzahh>* h>*hzah>*hhC\"hB*phffhih^Htxz   %&'0=Ccdefn~h >Vhvhzahi,hDn hmNho3h>Dh5ofCJ h#h#h%{ hC\"5\ h-5\ h:5\ h| 5\ hmHg5\h: h6] hU6]h^h^6]h^h/5#&*+,1GHIt  .49<=>HUVWX`aeirɼ㢕h*mqh#>*B*phh*mqh@$>*B*phh*mqhA3$>*B*phh*mqhaV>*B*phh*mqh->*B*phh*mqh0;>*B*phh*mqh>*B*phh-h0;h/hh9HWX3:gUcdefghijklgdW$a$gd)wgdie$a$gd_E$a$gdiegdi &23:=@CJQ`jsyyqi *hUhANU *hUhX+. *hUh# *hUhV *hUh|X *hUh< *hUh;, *hUh0; *hUhbwh0; h hiehaVhUhiCJaJhUhi5CJ\aJhUhie5CJ\aJhDn h%{CJjhUmHnHtHu)!&9:;@HKSXYZdg#$,>@ADɽᕍzsssssss hb?h<h_Eh<>*h< h h<hBh<5 hbw6CJ *hU6CJ *hUhvo6CJ *hUh6CJ *hUhV6CJ *hUh|X6CJ *hUh/Xe6CJ *hUhANU6CJ *hUh6 *hUhX+.-DFT[fg~,2@FSTU[fm~ ,@F\]bcd¾㲺hb?5B*CJph h2>* hX+.>*h_EhQG>*h >VhhbwhQGh;,h+hhBhie>* hb?h+h hb?h < hb?hie h hiehBhie5 h<h< hb?h<6defghijklmnopqrstuvwxyz{|}~²¦{{wsssssho/hEZ}h9hvhUhWCJ aJ hUhW5CJ aJ hUhW5CJaJhUhW5CJaJ jhUUmHnHtHu hU5CJ h/5CJ!jh/5CJUmHnHu hs_5CJ h|X5CJ hb?h_E5B*CJ aJph+lmnopqrtuvwxyz{|}~9 $a$gdo/gdW).BDGHKu0ŭhh6 hQG6 hu6 jhh6hQGh%{hs_hnMhbw *hUch{0 *hUch^3h{0h|hvh#>h!hhh5ofCJ h5K ha#hEZ}hUhq h8hvho/hu204689:;ABHSTU\]ex     > A G Q f h p s t v x ù *hUcha5 *hUch9#C5 *hUch; ^5 *hUch*<5 *hUch%{ *hUch%{5h; ^h+hh%{hbwhQGhvhLh$hnMhuho/huNhh66 !!!!!!!!!$!+!8!Q!R!S!T!i!m!s!u!~!!!!!!!!!!ƻ}ujfffffffff[ffffha#h;CJaJh;hha#CJaJha#CJaJh& h%{CJaJhbwCJaJh;,CJaJhUCJaJh*<CJaJh& h& CJaJh >VCJaJh& h!+CJaJh_h?L5 *hUch^CJ *hUch^5 *hUch5 *hUchW5 *hUch; ^5# !S!T!!!!""4"5"6""""Z##d%f%i%l%o%q%r%u%$a$gd90`gd;gd;gda# ^`gda#!!!!!!!!!!!!!!!!!!!!""""""""!"'"("-"0"1"3"4"5"6"@"H"T"a"r""""""""""""""""""""""Źha#h^36]hi h+h90h^3h; ^hh%{hNha#CJaJh90h%{CJhQh;CJaJh/hNha#h;?""""""""""""# ###$#)#H#X#Y#Z#[#`#a#|#################ÿθҞxqqqqjjqjq h h%{ h h h hsb. h;>*h hsb.>* h >* hdMF>*hch%{>*hchsb.>*hi hsjhM| hsjha hsjh;h^3hNh^3CJaJhM|h90 hi CJha#hi 6CJ]ha#hv6CJ]ha#h906CJ])############$$$ $$#$.$3$?$F$J$W$[$m$q$v$w${$$$$$$$$$$$$$$$$$$$% %9%E%I%R%Z%c%d%e%f%hjh[UmHnHuhde hNhdMF hNh8 hNh.h?Lh/hM|hG^hch6 h h h h%{h>hsb.h+hfhNah.:f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%ඨ~zpieaaaeeaazzzh h; h h h90h 5CJhcjh TUmHnHujhcUmHnHujhUmHnHujho @UmHnHujhoUmHnHujh UmHnHujh \UmHnHuh?mjh?LUmHnHujhUmHnHu%u%x%z%{%}%~%%&&A'l''((V(W((((()***+gdp$a$gdp$a$gd@;$a$gd%C$a$gd90gdc%%%%%%%& &&,&D&J&K&h&i&l&{&&&&&&&&&&&&&&&&&' ' ' '''%'&'1'>'?'@'A'O'\']'l'{'|''''¾º¶ƲƗ¾h:e h)3CJh90h90CJh90h[CJh90h \CJh \h@;hhh%{h90h^h%{CJ h;hN}Ahug:h hch5jh%{0JUh hch%{7''''''''''''''''''''''''((((( ((:(J(K(U(V(W(Y(_(a(c(j(r(z({(|((((((((Ľhph@;5h90h@;CJ h5\ h|5\ h 5\ h+"T5\ h%{5\ hmHg5\ h85\h h^h[h90h[CJh9dhQ\hX7h%{hN}Ah:eh;h4((((((((((((()) )))))))!)=)H)K)L)P)S)V)[)])k)p){))))))))))))))* * ***Ժж̮Цh;h5hW`h)3B*phffhW`hW`B*phffhX7hW`hyhchI6h#jh%{0JUh%ChahZh)3h%{hF$hF$5CJ hp5hph"z5hph@;5hphD54*(*=*H*O*W*`*b*h*o*p*s*x*{*}*********************+++ + ++2+5+?+@+_+c+f+j+u+v+{+++++++++h_chh"zhfh%{h)3hchc>*hc h)3>*h9dhc>*hI6hI6>*CJaJh;hI6>*h;h!:fh;hoh8hphohI6hy;+++++++++++++++,,,, ,,,%,',?,@,C,K,],_,e,n,{,,,,,,,,,,,,,,,,,,- -$-%-?-_-{---׻׿ÿhYh;h6B*phhphhch/kh"zhhlhZh>Dh/h8hzh hh)3hX76]hLFhX7 h)36]h%{:+',,%--#.o.p..]/^///(000011111"22 & F$a$gdp$a$gd ^`gd'gd'h`hgd'--------------. .".#.$.?.K.L.[._.n.o.p.{........./ /?/]/Ͽ}}}}}}qqq}}}}h/kCJOJQJ^Jhr@h'CJOJQJ^J h/>h'CJ OJQJ^JaJ#hQh'CJOJQJ\^JaJhQh97wOJQJ\^JaJhQh'OJQJ\^JaJh9 :h%{5h;hhh6B*phhYh;h6B*phhn6B*ph']/^/_/l/{//////////0 000&0(0-0=0?0_0{0}00000000000000111 1111 151Ң⏃h<0CJOJQJ^J%h)3h<0B*CJOJQJ^Jphfhr@h'5CJOJQJ^J%h)3h'B*CJOJQJ^Jphfh<06CJOJQJ^Jhr@h'6CJOJQJ^Jhr@h'CJOJQJ^Jhr@h'CJ OJQJ^J/51?1Q1_1`1{1}1~111111111111111111111122 2 2!2"2*2+2ɺ~vrrrnnd`\hh jh0JUh${hahph%{5 h 5hph5hph@;5hphD5 h${5 h25 ha5hph!/5h%{h#h'hs CJOJQJ^Jhr@h'CJOJQJ^Jh<06CJOJQJ^Jh36CJOJQJ^Jh@6CJOJQJ^J$+2?2_2c2e2n2v2{222222222222233 3 3 33333:3?3@3_3p3y3{33333333334 4444/4>4?4@4E4T4_4c4{444444444444¾º𳯾ʯh<*hRh hGhhr@hTeCJhth##hA3$h( hTeh|xhTeCJhJVht5hJVhU`t5?:Z:[::: <<<<\====#>c>d>??4@@ & FgdaEh^hgd $h^ha$gdRgdq} $h^ha$gd<*hrThR>*hkhU`t>*hkhU`t>*CJOJQJ^JhrThU`t>*h hr@hOCJhChnyh>hRhU`th8?h^hdh97w1==> >>>#>$>:>?>_>b>c>d>{>|>>>>>>>??? ????_?{????????????????@ @@1@ɼֱ{ hY5\hhL5\hh5\ hhaEhY hhh hCJhG^hROJQJhG^hT5OJQJaJhG^h&|zOJQJaJhG^h&|zCJOJQJaJhh|xhRCJ hR5hRhR501@2@3@4@6@D@K@d@@@@@@@@@@@@@AAA3A4A5ADAdAAAAAAAAAAAAAABBBDBdB|B}B~BBBBBBBBBBBBBBBBCCCûóhYhLhG^h,|h0(haEh>* hh hhaE *hB *h/kh/kh/khaEhaE>* haEhaEhhaE hhB@@4AA~BB[D\DDDEIELFfFgF^G_GHHHKImIh`hgd & Fgdh`hgd2Dh^hgd^gdaE & Fgd`gd/kh`hgdaECCACDCWCsCCCCCCCCCCCDDDDDD$D%DADDDZD[D\DmDsDDDDDDDDDDEEEEE%E=EAEDEIEsEEEEEEFFFFAFDFLFMFȿh|xhLCJh|xhCJhLh hCJhh@h0J>*B*ph h@hjh@hUhaEh@h/k hh?MFSFVF[F^FdFfFgFsFFFFFFGGGGAGDG^G_GiGsGGGGGGGHHHHHHAHDHsH|HHHHHHHHHHHHHIIIIII.I/I4I7I=IAIGIJIKIkImInItI|IIŸhj(hCJh.%hh.%h>*aJhj( h5\haEhLh hCJ hhhh6]HmInIIJJJpKLfMMMM7N\NmNNNNN Ogd & Fgd|x & Fgd2Dh^hgd2Dh^hgd|x & Fgd2Dh^hgd $h^ha$gd2D $h`ha$gdh`hgdIIIIIIJJJJJ.J>JAJPJUJ[JtJuJ|JJJJJJJJJJJJJKKK.KAKUKpKsKtK|KKKKKLLL.LALULtL|LLLLLLLLMMMMM.MŻԧhL *h.%hL *h.%h2D *h hCJ *h Lh h,|h h2Dh2DhaEh2DCJhaEhaECJhaEh2Dh hhB.MAMUMfMtM|MMMMMMMMMMMNNN.N6N7N@NANUN[N\NmNtNyN|NNNNNNNNNNNNO O OOO.OAOUOVOWO±jh ^0JU#hG^h'6CJOJQJ^JaJ#hG^h|x6CJOJQJ^JaJ hG^h|xCJOJQJ^JaJh h|xCJOJQJ^Jh|xhCJh|xh0(CJh|xhLCJh|xh2DCJh|x h2Dh2D3 OVOPPS>T?TATBTDTETGTHTJTKTTTUTVTaTbTcTdT UpUUUgd/$a$gd/h]h&`#$gdWOXO`OtOwO|OOOOOOOOOOOOOPPPP/PAPNPQPVPtP}PPPPPPPPPPPPPQ QQQ*Q0Q@QAQQQoQxQQQQQQQQQֺ h5h+"Th)3h+h h5h+ h5ha h5h ^jh5h ^0JU hN}AY( hT5Y( hF$Y(h5h ^Y(hU`th ^Y(jh ^0JUhI6h \h h ^;QR RR"R#R&R*R8R9R*B*CJOJQJaJfHphq T TTTTT1T=T>T?T@TATBTCTDTETFTGTHTITJTKTLTRTSTTTUTVTWTXT]T^T_T`TaTbTcTdTeTε||xx||m|xxahUh/5CJaJho0JmHnHuh ^ h ^0Jjh ^0JUjhUhh${h9IB*Y(phh9IB*CJOJQJaJph0h9IB*CJOJQJaJfHphq 0hvB*CJOJQJaJfHphq 0h97wB*CJOJQJaJfHphq &eTfTgThToTpTxTTTTTTTTTTTTTTUUU U U U UUU*U,U5U9U=UAUHU]U_U`UkUnUoUpUtUUUUUUUUUUUUUUUUUUUUЯhI^h/CJ hI^h/6hvh/6CJ h/CJhANUh/CJ hI^h/h_Eh/B*CJphh/hUh/CJaJhUh/5CJaJ>UUUUUUUUUVV VVVVVV!VAVHVIVJVQV[VhVkVoVtVwVVVVVVVVVVVVVVVVVVVW W WWW&W:W?WAWFWHWUWZW^WdWkWWWWW㻻h|Xh|Xh/CJ hQGh/ *hUch/ha#h/5\ h+h/ h9h/hP2h/>*h/huh/B* phPh|Xh/B* CJphPBUIVVVWWWWWXX&X'X(X)X*X+X;X2 Title$a$5\8J@8 Subtitle$a$5\4B@4  Body Text$a$4 @"4 Footer  !.)@1. Page Number>@B>  Footnote TextCJaJ@&`Q@ Footnote ReferenceH*HbH [ Balloon TextCJOJQJ^JaJN/qN [Balloon Text CharCJOJQJ^JaJ</< YBody Text CharCJaJH`H /K No SpacingCJ_HaJmH sH tH 6U`6  Hyperlink >*B*phc44 {+Header  H$6/6 {+ Header CharCJaJPK![Content_Types].xmlN0EH-J@%ǎǢ|ș$زULTB l,3;rØJB+$G]7O٭Vj\{cp/IDg6wZ0s=Dĵw %;r,qlEآyDQ"Q,=c8B,!gxMD&铁M./SAe^QשF½|SˌDإbj|E7C<bʼNpr8fnߧFrI.{1fVԅ$21(t}kJV1/ ÚQL×07#]fVIhcMZ6/Hߏ bW`Gv Ts'BCt!LQ#JxݴyJ] C:= ċ(tRQ;^e1/-/A_Y)^6(p[_&N}njzb\->;nVb*.7p]M|MMM# ud9c47=iV7̪~㦓ødfÕ 5j z'^9J{rJЃ3Ax| FU9…i3Q/B)LʾRPx)04N O'> agYeHj*kblC=hPW!alfpX OAXl:XVZbr Zy4Sw3?WӊhPxzSq]y ! *)Qp !7)Q83    p !7 )Q4 $$$'' 8 8 a&tDd0 !"#f%%'(*+-]/51+2468O:X<=1@CMFI.MWOQSTeTUWX)Y-/01345789;<=>@ABDEFGIJKLMOPQRTUVWYZ[]^`acdefghjl$l u%+2:@mI OUpX)Y.26:?CHNSX\_bik;<$<)QX4  '!!t899@d8(  P    "?  V   #  "? P     "?   t   3  S"??  \  3 "?  \  3 "? \  3 "?  t  3  S"??  nB  0D1"? bB  c $D"?n  # S"?? nB  0DjJ"?D !  "?D (  "?b 3 3 #" `? J 4@ # "?P 8  "? B S  ? 4rdfgijlmorsuvx{)Q(.d&5t8%! t!%t37F$td t \ dt4 !=t#tpl\ ttdt\ <dt h t0#Lt \ ld<tdt$,t  nt _Hlk50377004 _Hlk50381399 _Hlk50232682 _Hlk50234931 _Hlk50381197 OLE_LINK16uK ;5*Q\s*  D5*QCR77VG?LALBLDLELGLHLJLKLcLdL'Q*Q!!''((738VG?LALBLDLELGLHLJLKLcLdL'Q*Q3333X X ""77818::VGXG`GwGGGGGGGGGHHHHHHH@I@IIIIIII#J#J9J9JPJXJ`JtJuJJJJJJJJJKK=L?L?LALBLBLDLELGLHLJLKLcLdLOOOOOP%P+P:PCQIcCQIYwn+6V+B.7uj(T5\Gh[r? Lh+^ i | n / ` Dn Wx & \ n+GBc0S|q}<XZe95tV{+ K##Ukp a#@ yEr3oy]n%|#<Q-\ !5!S!w! ""F"C\"#z]#A3$B$F$.%d&1&=&v'\'='d(0(C(5*!+;+P+i,;,-X+.sb.!/&090a0Ns0{02t2P2)3c3q34e5{L5+8v89)9u99 :ug:0;@;8V;<< <*<{e<[>8?b?o @}@N}ADDBD-E5E_E`/FLFdMF(G>GH$Hz@H#VH1hH9IFJUJ|J5KnMIMm NKNuNO{NXO>OqOyO`HPUPxPQ4@QRRVJVaVW|XYV+Y:YjTYZnZZ$/[ \Q\m\i']j]; ^ ^I^$T^:_jS_W`NanOaab ccY^c9dbd:e/XedeeeP|e!:f5ofgr)gmHgvg+hcEhQ7isjk/k[l)m-mi{mvonvphyp;q*mq,rCr<<0W^M|" vZUcy-a3V#!8[+S&r@]aa#>/KOny Y-cX%_2#>0o3Aqz AI*m*G^c{qI6LmNb%2>#2/4S7o{|+<by %g ry: `BBq|OU5& *^Fei:Dg:ltQ]_}l@$X7x 5aEpc( QWiew?m~za,O_cS4TfRg%C8`${;f-BZ+;0\|:|c66 L lD+f@_U"z{Xo/kpvVcs D'#ryuXm;5GR^</=U39Mc#h)w'X6^db8gV}$`VGXG@777)Q@Unknown G.[x Times New Roman5Symbol3. .[x Arial;Wingdings3.[x TimesA. Arial Narrow7. [ @Verdana5. .[`)TahomaC.,.{$ Calibri Light7..{$ Calibri?= .Cx Courier NewA$BCambria Math"qh8FՑG'-) <$ <$242G2G 3QHP?\|2! xx (Homework #3  CSc 134, Summer 2002, Profecsfacbill`                Oh+'0 ,8 X d p |,Homework #3 CSc 134, Summer 2002, Profecsfac Normal.dotmbill301Microsoft Office Word@nz@jw@p٨@Zr < ՜.+,D՜.+,X hp  csus$2G )Homework #3 CSc 134, Summer 2002, Prof Title( 8@ _PID_HLINKSA&7Khttps://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_8003.htm i2065278  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmopqrstuwxyz{|}~Root Entry FPr@Data n1TablevoWordDocument 4SummaryInformation(DocumentSummaryInformation8MsoDataStorePrr2WQUGXTQS3Q==2PrrItem  PropertiesUCompObj r   F Microsoft Word 97-2003 Document MSWordDocWord.Document.89q