home *** CD-ROM | disk | FTP | other *** search
/ Winzipper / Winzipper_ISO.iso / programming / oracle7 7.2 / DB / RDBMS72 / README.DOC < prev    next >
Encoding:
Text File  |  1995-06-23  |  53.2 KB  |  1,449 lines

  1. ...
  2. ... $Header: README.doc 7020200.2 95/06/20 10:57:26 cli Generic<base> $ 
  3. ...
  4. ------------------------------------------------------------------------- 
  5.                     Oracle7 Server
  6.                     Release 7.2.2
  7.  
  8. -------------------------------------------------------------------------
  9. Copyright (C) Oracle Corporation 1993, 1994, 1955
  10.  
  11. Primary Author:        Jason Durbin
  12. Contributing Authors:  Bill Lee, Bill Maimone. Hari Sankar, Amitabh 
  13.                        Sinha
  14.  
  15. This software/documentation contains proprietary information of Oracle
  16. Corporation; it is provided under a license agreement containing
  17. restrictions on use and disclosure and is also protected by copyright 
  18. law.
  19. Reverse engineering of the software is prohibited.
  20.  
  21. If this software/documentation is delivered to a U.S. Government Agency 
  22. of
  23. the Department of Defense, then it is delivered with Restricted Rights 
  24. and
  25. the following legend is applicable:
  26.  
  27. RESTRICTED RIGHTS LEGEND:   Use, duplication, or disclosure by the 
  28. Government is subject to restrictions as set forth in subparagraph
  29. (c)(1)(ii) of DFARS 252.227-7013, Rights in Technical Data and Computer
  30. Software (October 1988).
  31.  
  32. If this software/documentation is delivered to a U.S. Government Agency 
  33. not within the Department of Defense, then it is delivered with
  34. "Restricted Rights," as defined in FAR 52.227-14, Rights in Data -
  35. General,  including Alternate III (June 1987).
  36.  
  37. Oracle Corporation, 500 Oracle Parkway, Redwood City, CA  94065.
  38.  
  39. The information in this document is subject to change without notice. 
  40. If you find any problems in the documentation, please report them to us in 
  41. writing.Oracle Corporation does not warrant that this document is error free.
  42.  
  43. Oracle, CASE*Dictionary, Pro*Ada, Pro*COBOL, Pro*FORTRAN, Pro*Pascal,
  44. Pro*PL/I, SQL*Connect, SQL*DBA, SQL*Forms, SQL*Loader, SQL*Net, and 
  45. SQL*Plus are registered trademarks of Oracle Corporation. CASE*Designer, CASE*Method, 
  46. Oracle7, Oracle Parallel Server, PL/SQL, Pro*C/C++, SQL*Module, Oracle 
  47. Server Manager and Trusted Oracle7 are trademarks of Oracle Corporation.
  48.  
  49. All trade names referenced are the service mark, trademark, or registered
  50. trademark of the respective manufacturer. 
  51.  
  52. ---------------------------------------------------------------------------- 
  53.  
  54.  
  55. TABLE OF CONTENTS 
  56. ----------------- 
  57.  
  58. Section Description 
  59. -------  ----------- 
  60.  
  61.       Introduction 
  62.       ------------ 
  63.   
  64.  0.1     Purpose of this README 
  65.  0.2     Cover Letter and Licensing 
  66.  0.3     Oracle7 Documentation Currently Available 
  67.  
  68.  
  69.       Oracle Version 6 
  70.       ----------------
  71.  
  72.  1.0     Before You Migrate 
  73.  1.1        Offline Tablespaces 
  74.  1.2        ORA-1556 When Running the Migration Utility 
  75.   
  76.  2.0     National Language Support 
  77.  2.1        WW Date Format 
  78.  
  79.  
  80.       Oracle7 Release 7.2.2
  81.       --------------------- 
  82.  
  83.  3.0     Forward Compatibility 
  84.  
  85.  4.0     Backward Compatibility 
  86.  
  87.  5.0     Server Changes 
  88.  5.1        SQL Syntax 
  89.  5.2        Indexing for Fixed Tables 
  90.  5.3        Initialization Parameters 
  91.  5.3.1         MAX_TRANSACTIONS_BRANCHES 
  92.  5.4        Data Dictionary Views 
  93.  5.5        Star Hint 
  94.  
  95.  6.0     Upgrading and Downgrading 
  96.  6.1        General Comments about Upgrading and Downgrading 
  97.  6.2        Upgrading to Release 7.2.2 
  98.  6.2.1         New Compatibility Type and Resizable Datafiles 
  99.  6.3        Downgrading from Release 7.2.2 
  100.  6.4        Special Upgrading and Downgrading Issues 
  101.  6.4.1         CAT70102.SQL and the Parallel Query Option 
  102.  6.4.2         ORA_TQ_BASE$ and the Parallel query Option 
  103.  6.4.3         CATSVRMG.SQL and Server Manager 
  104.  
  105.  7.0     Fixes/Enhancements 
  106.  7.1        Fixes/Enhancements in Release 7.2.2 
  107.   
  108.  8.0     Known Server Restrictions 
  109.  8.1        SORT_WRITE_BUFFER_SIZE Problem 
  110.  8.2        Interoperability Problem with Time-Stamp Package 
  111.             "STANDARD"         
  112.  8.3        Restrictions Awaiting Fixes 
  113.  8.3.1         TO_NUMBER Function 
  114.  8.3.2         Snapshot Incompatibility 
  115.  
  116.  9.0     National Language Support  
  117.  9.1        General 
  118.  9.2        Character Sets 
  119.  9.2.1         Applications and Multibyte Character Sets 
  120.  9.3        Conversion Between Non-String and String Values 
  121.  
  122. 10.0    PL/SQL Behavior Changes After Upgrade
  123. 10.1       Behavior Change Caused By Bugfix 237911 
  124.              After Upgrading To PL/SQL 2.1.5 Or Any Higher Release
  125. 10.2      Behavior Change Caused By Bugfix 190119 
  126.             After Upgrading To PL/SQL 2.1.6 Or Any Higher Release 
  127. 10.3      Behavior Change Caused By Bugfixes 235190 And 235193 
  128.             After Upgrading To PL/SQL 2.1.6 Or Any Higher Release
  129. 10.4      PLS-905 Error During Execution/Parse of a Cursor Holding 
  130.           an Anonymous PL/SQL Block
  131.  
  132. ----------------------------------------------------------------------------- 
  133.  
  134. ********************** 
  135. *                    * 
  136. *    Introduction    * 
  137. *                    * 
  138. ********************** 
  139.  
  140. 0.1 Purpose of this README 
  141. --------------------------       
  142.    This README file is relevant only to the delivered Oracle7 Server 
  143. and its integral parts, such as SQL, PL/SQL, the Oracle Call Interface (OCI),
  144. SQL*Loader, Import/Export utilities, SQL*DBA, Server Manager and so 
  145. on. On many operating systems, the file name of this document is readme.doc.
  146.  
  147.    This README documents differences between the server (and its integral  
  148. parts) and documented functionality. 
  149.  
  150.    Each operating system release, such as UNIX, DEC VAX/VMS, MS-DOS, 
  151. AOS/VS, and so on, usually has an additional README document. 
  152. Oracle products, such as SQL*Forms, may have an additional 
  153. README document. A README equivalent would be release notes, system bulletins,
  154. or similar publications.
  155.  
  156.  
  157. 0.2 Cover Letter and Licensing 
  158. ------------------------------       
  159.    Please read the cover letter included with your Oracle7 package. 
  160. It contains important information about licenses for Oracle7 product 
  161. options.
  162.  
  163.  
  164. 0.3 Oracle7, Release 7.2 Documentation Currently Available 
  165. ---------------------------------------------       
  166.     A19486-2  PL/SQL User's Guide and Reference 
  167.     A20325-2  Oracle7 Server SQL Reference  
  168.     A19485-2  Oracle7 Server Utilities
  169.     A19483-2  Oracle7 Server Messages 
  170.     A21022-2  Programmer's Guide to the Oracle Precompilers 
  171.     A19489-2  Programmer's Guide to the Oracle Call Interfaces 
  172.     A21027-1  Pro*COBOL Precompiler Supplement   
  173.     A21020-1  Pro*FORTRAN Precompiler Supplement 
  174.     A21021-2  Programmer's Guide to the Oracle Pro*C/C++ Precompiler 
  175.     A19487-2  Oracle7 Parallel Server  
  176.     A19691-1  Trusted Oracle7 Server Administrator's Guide 
  177.     A19484-2  Oracle7 Server Migration Guide 
  178.     A20321-2  Oracle7 Server Concepts 
  179.     A20322-2  Oracle7 Server Administrator's Guide 
  180.     A20323-2  Oracle7 Server Application Developer's Guide 
  181.     A14808-2  Oracle Server Manager(TM) User's Guide 
  182.     A25434-1  Oracle7 Server Distributed Systems, Volume I: Distributed 
  183.               Data 
  184.     A19488-2  Oracle7 Server Distributed Systems, Volume II: Replicated 
  185.               Data 
  186.     A25421-1  Oracle7 Server Tuning 
  187.     A20327-2  Oracle7 Server Reference 
  188.     A21026-2  SQL*Module User's Guide and Reference 
  189.     A21027-2  Pro*COBOL Supplement to the Oracle Precompilers Guide 
  190.     A21020-2  Pro*FORTRAN Supplement to the Oracle Precompilers Guide 
  191.     A30625-2  Programmer's Guide to the Oracle Call Interface for 
  192.               Ada
  193.     A16148-2  Programmer's Guide to the Pro*Ada Precompiler 
  194.     A30888-2  Oracle Server Manager for Windows Installation Guide 
  195.  
  196. ----------------------------------------------------------------------------- 
  197. >
  198.  
  199. ************************ 
  200. *                      * 
  201. *   Oracle Version 6   * 
  202. *                      * 
  203. ************************ 
  204.  
  205.  
  206.  
  207. 1.0 Before You Migrate 
  208. ======================
  209.  
  210.    IMPORTANT:  
  211.     
  212.      ONCE YOU MIGRATE AN ORACLE VERSION 6 DATABASE TO Oracle7,  
  213.      YOU MUST **NOT** RUN ORACLE VERSION 6 AGAINST THAT DATABASE.  
  214.  
  215. To migrate to release 7.2 from Oracle Version 6, follow the 
  216. instructions documented in the Oracle7 Server Migration Guide and 
  217. the Oracle7 Server Documentation Addendum. You can migrate directly from 
  218. Version 6 to release 7.2; it is not necessary to install version 7.0. 
  219.  
  220.  
  221. 1.1 Offline Tablespaces 
  222. -----------------------       
  223. If you are running 6.0.34.3 or earlier, make sure that you pay 
  224. special attention to the information about managing offline tablespaces 
  225. in the Oracle7 Server Migration Guide. 
  226.  
  227. 1.2 ORA-1556 When Running the Migration Utility 
  228. -----------------------------------------------       
  229. If you encountered an ORA-01556 error message while running the 
  230. migration utility, then the cluster index I_FILE#_BLOCK# created 
  231. for the new Version7 catalog tables is not large enough. 
  232. The default cluster index size is insufficient. 
  233.  
  234. The solution to this problem is: 
  235.  
  236.           Rerun the migration utility and specify a 
  237.           larger integer value for the parameter MULTIPLIER.
  238.           For example, set MULTIPLIER=20. 
  239.           The default value for the parameter MULTIPLIER is 15, 
  240.           which creates the version cluster index size 1.5 times 
  241.           the Version 6 I_FILE#_BLOCK# cluster index. 
  242.           A value of 20 creates the Version 7 cluster index 
  243.           size 2.0 times the Version 6 cluster index. 
  244.  
  245.  
  246.  
  247.  
  248. 2.0 National Language Support 
  249. ============================= 
  250.     
  251. If you use National Language Support features, you should also read 
  252. Section 9.0, "National Language Support." 
  253.  
  254. 2.1 WW Date Format 
  255. ------------------       
  256. The WW date format element behaves differently in Oracle7 than in 
  257. Oracle Version 6. In version 6, depending on the territory component of the 
  258. value  of the LANGUAGE initialization parameter, WW returned a week number 
  259. based  on either the ISO standard or the number of days from January 1. In 
  260. Oracle7,  WW always returns a week number based on the number of days
  261. from 
  262. January 1, regardless of the value of the NLS_TERRITORY initialization parameter, 
  263. and  the new IW date format element returns the ISO standard week number. 
  264. If your version 6 application used WW to return the ISO standard week number,
  265. replace WW with IW.
  266.  
  267. ----------------------------------------------------------------------------- 
  268.  
  269.  
  270. ***************************** 
  271. *                           * 
  272. *   Oracle7 Release 7.2.2   * 
  273. *                           * 
  274. ***************************** 
  275.  
  276.  
  277.  
  278. 3.0 Forward Compatibility 
  279. ========================= 
  280.        
  281. Future releases will have changes for which you can prepare now. For 
  282. example, to comply with future SQL ANSI standards. If you follow these 
  283. recommendations, upgrading to newer releases of Oracle will be simplified.
  284.  
  285. Feature                             Recommendation 
  286. ---------------------------------   ---------------------------------------- 
  287. A string of zero length ('')        Your application should use a NULL when 
  288. is not equivalent to a NULL         the value is unknown. 
  289.  
  290. GLOBAL_NAMES initialization         If you use or will use distributed 
  291. parameter                           processing, set this parameter to TRUE
  292.                                     to ensure a unique identifying name for
  293.                                     your database in a networked environment.
  294.  
  295. SELECT privilege will be            Always grant the SELECT privilege to a
  296. required on tables that             user or role if you grant the UPDATE
  297. users update.                       or DELETE privileges on the table. See
  298.                                     also Oracle7 Server Reference,
  299.                                     Release 7.2 for more information
  300.                                     about the initialization
  301.                                     parameter, SQL92_SECURITY.
  302.  
  303.  
  304.  
  305. 4.0 Backward Compatibility 
  306. ========================== 
  307.  
  308. If a new release of Oracle7 incorporates changes or new features, 
  309. the changes and new features must be disabled before you downgrade to 
  310. a previous release. For more information about backward compatibility, 
  311. see Oracle7 Server Migration, Release 7.2, Chapter 8, "Upgrading and 
  312. Downgrading." 
  313.  
  314.  
  315.  
  316. 5.0 Server Changes
  317. ================== 
  318.  
  319. 5.1 SQL Syntax 
  320. -------------- 
  321.  
  322. 5.2 Indexing for Fixed Tables 
  323. -------------------------------- 
  324.  
  325. Certain V$ views now have a fast access method that can greatly 
  326. improve query performance on these views. In previous versions, 
  327. queries of V$SESSION, V$SESSTAT, and V$SQLAREA could cause 
  328. performance bottlenecks due to very large sort and scan operations. 
  329. With Release 7.2, queries using the numeric columns of these tables 
  330. as the search key can perform significantly faster due to an "index" 
  331. on the fixed tables' numeric columns. The specific columns on which there
  332. is now an index are:
  333.  
  334.      VIEW              COLUMNS ON WHICH THERE IS NOW AN INDEX 
  335.      ----------          ---------------------------------------- 
  336.  
  337.      V$SESSION               SID 
  338.  
  339.      V$SESSTAT               SID 
  340.                              STATISTIC# 
  341.  
  342.      V$SQLAREA               HASH_VALUE 
  343.  
  344. Care must be taken in the writing of the queries.
  345.  
  346.    *   Single table queries can use the fast access feature as long 
  347.        as they do not contain an OR clause in the WHERE list.
  348.  
  349.    *   Joins must specify the nested loops join optimizer hint.
  350.  
  351. Here is an example of a query that illustrates the application of 
  352. this feature. 
  353.  
  354.  SELECT /*+ use_nl(w, i) use_nl(i,p) use_nl(p,k) use_nl(k,s) */ 
  355.         s.sid, s.username oracle_user, s.command, s.status, s.server, 
  356.         s.schemaname, s.osuser client_osuser, s.process client_osprocess, 
  357.         s.machine client_machine, 
  358.         s.terminal client_terminal, s.program client_program, 
  359.         p.username process_osuser, p.pid process_orapid, p.spid process_ospid, 
  360.         p.background, p.latchwait, s.lockwait, 
  361.         w.event wait_event, w.p1text, w.p1, w.p2text, w.p2, w.p3text, w.p3, 
  362.         w.wait_time, w.seq# wait_seq#, 
  363.         i.block_gets, i.consistent_gets, i.physical_reads, i.block_changes, 
  364.         i.consistent_changes, 
  365.         k.kglnaobj sql, 
  366.         k.kglnahsh sql_hash_value, 
  367.         k.kglhdadr sql_addr 
  368.   FROM v$session_wait w, v$sess_io i, x$kglcursor k, v$session s, v$process p 
  369.   WHERE p.addr = s.paddr 
  370.     and  w.sid = s.sid 
  371.     and  k.kglnahsh (+) = s.sql_hash_value 
  372.     and  k.kglhdadr (+) = s.sql_address 
  373.     and  i.sid = s.sid; 
  374.  
  375. 5.3 Initialization Parameters 
  376. ----------------------------- 
  377.  
  378. 5.3.1 MAX_TRANSACTIONS_BRANCHES 
  379.  
  380.     Default value:         8 
  381.     Range of values:       1 - 32 
  382.  
  383. This parameter controls the number of branches in a distributed transaction. 
  384. For example, a certain TP monitor uses one branch per server involved 
  385. in a  distributed transaction. Another TP monitor uses one branch per server 
  386. group involved in a distributed transaction. The previously fixed maximum 
  387. number of branches limited the number of servers or server groups involved in 
  388. a distributed transaction to 8 per Oracle instance. With the 
  389. MAX_TRANSACTION_BRANCHES parameter, the maximum number of branches 
  390. can be increased to 32, allowing for 32 servers or server groups per Oracle 
  391. instance to work on one distributed transaction. Setting MAX_TRANSACTION_BRANCHES 
  392. to a lower value will reduce shared pool memory usage slightly
  393. (MAX_TRANSACTION_BRANCHES * DISTRIBUTED_TRANSACTIONS * 72 bytes).
  394.  
  395. 5.4 Data Dictionary Views
  396. -------------------------
  397.  
  398. Data dictionary views maintained in Oracle7 for backward compatibility 
  399. to Oracle Version 5 and Version 6, created in the files CATALOG5.SQL 
  400. and  CATALOG6.SQL, will be obsoleted starting with Oracle, Version 8.  
  401. All references to these dictionary views should be removed.
  402.  
  403. 5.5 Star Hint
  404. ------------- 
  405.  
  406. The STAR hint forces a star query plan to be used if possible.
  407. A star plan has the largest table in the query last 
  408. in the join order and joins it with a nested loops join on a 
  409. concatenated index. The STAR hint applies when there are at least 
  410. 3 tables and the large table's concatenated index has at least 3 columns
  411. and there are no conflicting access or join method hints.  
  412.  
  413.  
  414.  
  415.  
  416. 6.0 Upgrading and Downgrading 
  417. ============================= 
  418.  
  419. 6.1 General Comments about Upgrading and Downgrading 
  420. ---------------------------------------------------- 
  421.  
  422. For more information about upgrading and downgrading issues, see 
  423. Oracle7 Server Migration, Release 7.2, Chapter 8, "Upgrading 
  424. and Downgrading." 
  425.  
  426. 6.2 Upgrading to Release 7.2 
  427. ------------------------------ 
  428.  
  429. 6.2.1 New Compatibility Type and Resizable Datafiles 
  430.  
  431. A new compatibility type has been added to Release 7.2. It 
  432. guarantees that, when any feature of resizable datafiles is 
  433. used, Oracle will either automatically upgrade to Release 7.2 
  434. or issue an error message if such operation is not allowed, 
  435. according to the COMPATIBLE parameter. 
  436.  
  437. WARNING FOR RELEASE 7.2 BETA CUSTOMERS: The 7.2 beta release did not 
  438. contain this compatibility type. If you were a beta customer and used 
  439. any of the resizable data file features, Oracle may, under 
  440. Release 7.2.2, issue meaningless internal errors in certain situations. 
  441. The following procedures can be used to avoid such internal errors:
  442.  
  443.      1. If, while using the 7.2 beta version, you downgraded 
  444.         to an earlier release, upgrade your database to be 7.2 
  445.         compatible when starting the new release of Oracle.
  446.  
  447.      2. Perform either of the following operations:
  448.  
  449.          a. Resize all data files to their original size. 
  450.  
  451.          b. Set AUTOEXTEND ON and then reset it to AUTOEXTEND OFF.
  452.  
  453. The database administrator can query V$COMPATIBILITY to confirm the 
  454. upgrade. 
  455.  
  456. 6.3 Downgrading from Release 7.2 
  457. ---------------------------------- 
  458.  
  459. Downgrading from Release 7.2 is discussed in Oracle7 Server 
  460. Migration, Release 7.2, Chapter 8, "Upgrading and Downgrading". 
  461.  
  462. 6.4 Special Upgrading and Downgrading Issues 
  463. -------------------------------------------- 
  464.   
  465. 6.4.1 CAT70102.SQL and the Parallel Query Option 
  466.  
  467. If you have the 7.1.1 parallel query option and you have already run 
  468. queries in parallel against a given database, you will receive an
  469. error when running CAT70102.SQL on that database because the sequence
  470. will already exist. In this case, the error can be ignored.
  471.  
  472. 6.4.2 ORA_TQ_BASE$ and the Parallel Query Option 
  473.     
  474. The ORA_TQ_BASE$ sequence, introduced in 7.1.2, is required if you
  475. use the Parallel Query option. The sequence is created when any of 
  476. the following scripts are run:
  477.  
  478.    o  SQL.BSQ (automatically run as part of database creation)
  479.    o  MIGRATE.BSQ (when migrating from Oracle version 6)
  480.    o  CAT70102.SQL (when upgrading Oracle7 to 7.1.3 and installing
  481.       Server Manager views) 
  482.  
  483. 6.4.3 CATSVRMG.SQL and Server Manager
  484.  
  485. In 7.1.2, two new SQL scripts were added for the Server Manager product. 
  486. CATSVRMG.SQL is automatically run during database creation by CATALOG.SQL. 
  487. This script installs several views and one public synonym (SM$VERSION) 
  488. required by Server Manager to administer the database. 
  489.  
  490. CATNOSVM.SQL is a script that DROPs all objects created by CATSVRMG.SQL, 
  491. de-installing the Server Manager. 
  492.  
  493. 7.0 Fixes/Enhancements 
  494. ====================================== 
  495.  
  496. This section lists fixes or enhancements introduced in Release 7.2.2. 
  497. Each fix or enhancement is noted with a fix number. Your support 
  498. contract may allow you access to the Oracle bug database; if so, 
  499. you can use the fix number, also known as the bug number, to obtain 
  500. more information about a particular fix. 
  501.  
  502. 7.1 Fixes/Enhancements in Release 7.2.2 
  503. --------------------------------------- 
  504.  
  505.      25778 
  506. NOT IN subqueries now use an index when indexed columns have NOT NULL    
  507. constraints. 
  508.  
  509.     130007   
  510. The current ROWID being waited upon by each session involved in a 
  511. deadlock is now included within the deadlock graph.
  512.  
  513.     142749
  514. When ROWIDs from several tables are stored in another table and used 
  515. to delete rows from one of the former tables (say T), error ORA-01410 
  516. is raised whenever any ROWID does not belong to table T.
  517.  
  518.     156147
  519. V$ views are shown in the view DICTIONARY, even if the user has no
  520. privileges to select from them. The view definition has been updated 
  521. to show these views only if the user has sufficient privileges to select
  522. from them
  523.  
  524.     158950
  525. The views NLS_SESSION_PARAMETERS, NLS_INSTANCE_PARAMETERS, and 
  526. NLS_DATABASE_PARAMETERS now appear in the DICTIONARY view.
  527.  
  528.     170736
  529. CREATE AS SELECT now retains column null constraints through database 
  530. links.
  531.  
  532.     176156
  533. A wrong column name, when selecting from a fixed table as a non-sys
  534. user, would cause a [4828] internal error instead of an ORA-00942 
  535. 'table or view does not exist' error. This has been fixed.
  536.  
  537.      179221
  538. The correct OS related information for terminal now appears in
  539. V$PROCESS.
  540.  
  541.  
  542.  
  543.      184513
  544. DBMS_SHARED_POOL runs as SYS instead of as the caller. This has been 
  545. fixed. In addition, if you call DBMS_SHARED_POOL.KEEP for a package 
  546. or procedure, only the object itself is loaded and pinned. The Diana 
  547. and Machine Pcode for the procedures are not. This can result in an ORA-4031
  548. error when a procedure in the package is later executed, because there 
  549. is not enough memory to load the procedure. This has been fixed so that 
  550. when you KEEP a package or procedure, all the necessary information for 
  551. the package, the package body, and the procedures are loaded.
  552.  
  553.     185132
  554. There is a limit on the size of the INCLUDE parameter initialization
  555. files (8192 bytes). Previously, the code enforced this by silently
  556. truncating the file. This has been corrected and will no longer do
  557. this in Release 7.2. 
  558.        
  559.     185629
  560. Sub-roles of directly granted roles are now enabled as default roles 
  561. when used in the DEFAULT ROLE ALL EXCEPT clause.
  562.  
  563.     185643
  564. The undocumented parameter SORT_MTS_BUFFER_FOR_FETCH_SIZE was removed.
  565.  
  566.     186155
  567. There are now public synonyms for all DBA_% views, so that a user 
  568. with privileges to select from these views no longer needs to run CATDBSYN.SQL.
  569.  
  570.     186269
  571. An improved system default hash function has been provided in 7.2. 
  572. It is used by default when COMPATIBLE=7.2.0 in INIT.ORA. Old hash clusters 
  573. will continue to use the old hash function.
  574.  
  575.     187803
  576. INSTR and INSTRB will no longer accept a 0 as its fourth argument, 
  577. as it used to, which caused it to return an incorrect result.
  578.  
  579.     190987
  580. When a session was killed by the idle sniper, the status column of 
  581. the V$SESSION view was not being properly updated. The status column
  582. will now indicate SNIPED to show that a session is no long active, and 
  583. is just waiting for the client to realize this.
  584.  
  585.      195693
  586. An attempt to add a referential constraint through a public synonym 
  587. fails with ORA-00942. This has been fixed.
  588.      
  589.      195888
  590. We now exchange system commit numbers when the distributed 
  591. operation starts to synchronize them to have a consistent view 
  592. evaluation involving remote tables. Before this fix, this was done 
  593. after the operation.
  594.  
  595.     199168
  596. This bug fix generates a new kind of undo, so it is only enabled when 
  597. COMPATIBLE=7.2.0.0 or greater in INIT.ORA. When enabled, it fixes 
  598. a possible corruption when running parallel server and doing TRUNCATE 
  599. in one instance while a process dies in a different instance with outstanding 
  600. undo on that table. 
  601.  
  602.     200230
  603. Problem: PL/SQL was not raising an error for fully qualified columns 
  604. that were otherwise out of SQL scope, e.g., SELECT dept.dname FROM emp; 
  605. This has been fixed.
  606.  
  607.     200914
  608. Queries involving certain simple UNION ALL views now consider indexes 
  609. on tables inside the views as access-path for nested loop joins.
  610.  
  611.     205721
  612. For some timeout values, DBMS_PIPE.SEND_MESSAGE, DBMS_PIPE.RECEIVE_MESSAGE, 
  613. DBMS_ALERT.WAITONE, and DBMS_ALERT.WAITANY did not process the timeout 
  614. accurately. This has been fixed.
  615.  
  616.     210384
  617. Views with UNION ALL were given cost estimates by the optimizer that
  618. were too high. This has been fixed.
  619.  
  620.     210565
  621. Using the current of cursor on a closed cursor did not generate 
  622. INVALID ROWID. This has been fixed.
  623.  
  624.     210783
  625. When using the CBO on unanalyzed hash-clustered tables, the cost 
  626. for the hash access method is zero. The CBO will thus always choose 
  627. the hash access method when possible.
  628.  
  629.     210784
  630. Hints were being ignored in the presence of MIN or MAX functions for  
  631. simple, single-table queries. This has been fixed.
  632.  
  633.     211500
  634. First-rows processing used sort-merge joins and order-by sorts in 
  635. cases where these could be avoided. This has been fixed.
  636.  
  637.     211543
  638. The accuracy of costing is now improved for queries with NOT LIKE 
  639. and <<> predicates.
  640.  
  641.     211563
  642. The Cost Based Optimizer now generates more accurate cost estimates 
  643. for queries with multiple copies of the same predicate.
  644.  
  645.     212827
  646. When analyzing a cluster or an index, the cursors that depended on 
  647. the cluster or index are now invalidated and reparsed.
  648.  
  649.     213951
  650. RULE, ALL_ROWS, and FIRST_ROWS hints were not having an effect in 
  651. set queries (i.e. UNION, INTERSECT, or MINUS queries). This has been 
  652. fixed.
  653.  
  654.     214868
  655. Joins with outer-join operators that were not real outer-joins due 
  656. to the existence of other predicates w/o outer-join operators no longer 
  657. result in performance inferior to regular joins.
  658.  
  659.     216381
  660. The usage comments showed incorrect usage of SET SERVEROUTPUT. The
  661. comment has been corrected.
  662.  
  663.     217822
  664. The cost of ORDER BY sort of set queries was not computed by the 
  665. cost-based optimizer. This has been fixed.
  666.  
  667.     218218
  668. RULE, ALL_ROWS, and FIRST_ROWS hints were not having an effect in 
  669. set queries (i.e.UNION, INTERSECT, or MINUS queries). This has been 
  670. fixed.
  671.  
  672.     220509
  673. The username printed in ORA-1045 was not the database user. This has 
  674. been fixed.
  675.  
  676.     221252
  677. The cause statement for message ORA-01771 has been updated to include 
  678. the TABLESPACE option. The OERR utility will see this change since 
  679. it just reads the error message file itself.    
  680.  
  681.      221789
  682. Some monitor screens in SQL*DBA may fail with DBA-328 if run by a 
  683. non-dba user granted only the MONITOR role. You must rerun the 
  684. modified ULTMONTR script to add in the missing grant statements. 
  685.  
  686.     225112
  687. UPIDPR returns a type of DTYBOL for a parameter of the type ref 
  688. cursor. This has been fixed.
  689.  
  690.     233779
  691. Session attachment is now done based upon an event, rather than after 
  692. waiting for a fixed amount (1 sec) of time.
  693.  
  694.     237046
  695. Parallel load file name is no longer lower-cased when the parallel 
  696. load file is specified in an options statement in the control file.
  697.  
  698.     244183
  699.  Previously a fully qualified reference to a sequence (e.g. 
  700.  schema.sequence.nextval) within a PL/SQL block would result in  
  701.  ORA-6550 and PLS-00389.  This has been corrected.
  702.  
  703.     245817 
  704.  The PL/SQL parser no longer loops when encountering an unfinish qouted 
  705.  identifier.
  706.  
  707.     247484
  708. Grant and revoke now correctly detect reserved keywords in the 
  709. user/role list, and report an ORA-00987 accordingly.
  710.  
  711.     247871
  712. The general failcase is: SELECT varchar_funct INTO non-char-variable 
  713. FROM ... in a PL/SQL block, where "varchar_funct" is some built in or user 
  714. function returning varchar2, for which the return length is not known in advance.
  715. "non-char-variable" is some variable (or a record field) of type DATE 
  716. or BINARY_INTEGER. On some platform it may also fail for NUMBER/INTEGER/ROWID 
  717. RAW, and other types. For example the following statements also fail 
  718. due to this bug:
  719.  
  720.  DECLARE bi binary_integer; d date; 
  721.  BEGIN  
  722.    SELECT '03-NOV'||'-94' INTO d FROM dual;    -- any usage of d after 
  723.                                                   this fails 
  724.    SELECT '123'||'45' INTO bi FROM dual;       -- fails w/ORA-01460 
  725.    SELECT nvl(null,'12345') into bi FROM dual; -- fails w/ ORA-01460 
  726.  END;                                              
  727.  
  728.     249055
  729. The performance of Cartesian product joins, which are used in star 
  730. queries, is significantly improved, especially when the points of the star 
  731. consist of more than one table.
  732.  
  733.     249703
  734. Execution times for logically equivalent queries with slightly 
  735. different WHERE clauses differ dramatically. This has been fixed.
  736.  
  737.     250063
  738. Functions returning records with embedded index tables may cause a 
  739. bus error during execution because required initializations are not done.
  740.  
  741.     250197
  742. Queries that contain subqueries require excessively long execution 
  743. times. Execution time for such queries can now be reduced by using 
  744. the hint PUSH_SUBQ which causes all subqueries in a query block to 
  745. be executed at the earliest possible time. Normally subqueries are 
  746. executed as the last operation in the query. The PUSH_SUBQ hint 
  747. is not applied to subqueries where the table on which the subquery 
  748. is written is outerjoined, remote, or joined with a merge join.
  749.  
  750.     250482
  751. When error message files are missing or not in the expected directory,
  752. the snapshot background processes (i.e., the job queue processes) 
  753. will die the first time they look for work. 
  754.  
  755.     255776
  756. MIN/MAX optimization using an index no longer occurs 
  757. if the HAVING clause is present.
  758.  
  759.     255969
  760. Optimizer now uses transitivity for LIKE predicates.
  761.    
  762.     258136
  763. The new USE_CONCAT hint will force ORs to be expanded with CONCAT
  764. nodes regardless of cost.
  765.  
  766.     258249
  767. You can now use the role privileges in a PL/SQL function from
  768. within SQL.
  769.  
  770.     259099
  771. PL/SQL functions modifying a package state may now be used in set 
  772. queries, such as UNION, MINUS, etc. 
  773.  
  774.     259193
  775. Grant and revoke of roles "DBA" and "RESOURCE" now process the 
  776. UNLIMITED TABLESPACE privilege correctly.
  777.  
  778.     259639
  779. ALL_OBJECTS did not shows other package bodies in other users' 
  780. schemas. This has been fixed.         
  781.  
  782.     261002 
  783. If ALTER TABLE ADD CONSTRAINT UNIQUE.. was done on a table 
  784. for which the table owner's name was more than 17 characters long, 
  785. an internal error was generated in some cases. This does not happen
  786. anymore.
  787.  
  788.        261035
  789. The choice of index is unpredictable in case of cost ties in the 
  790. cost-based optimizer.
  791.  
  792.     262073 
  793. It is not possible to specify TOP_ON_ERROR or EXECUTE_AS_USER 
  794. in DBMS_DEFER_SYS.SCHEDULE_EXECUTION.
  795.  
  796.     262074
  797. DBMS_DEFER_SYS.SCHEDULE_EXECUTION does not record the number of 
  798. the job that pushes the deferred RPC queue. Consequently, 
  799. DBMS_DEFER_SYS.SCHEDULE_EXECUTION cannot remove the job.
  800.  
  801.     263137 
  802.  
  803. When a background job or a background snapshot refresh raised an 
  804. exception,the background process would go into an infinite loop and 
  805. continually append to the snp*.trc file.  This happened on some, but 
  806. not all platforms.
  807.  
  808.     264122
  809. IS NULL predicate always returned false on index only scans. This 
  810. has been fixed.
  811.  
  812.     264746
  813. An ORA-1219 error is no longer generated if a fixed table or view 
  814. is accessed in a from-clause subquery when the database was not open. 
  815.    
  816.     265372
  817. Unhandled exceptions, such as SNAPSHOT TOO OLD, in the propagation 
  818. of the deferred RPC queue, could cause a communication deadlock.
  819.  
  820.     265376
  821. Unhandled exceptions during DEFCALL cleanup by DBMS_DEFER_SYS.EXECUTE
  822. can leave junk in DEFCALL.
  823.  
  824.     265383
  825. The DEFERRED_TRAN_DB argument accidentally specified both the
  826. origin/copying node for the transaction as well as the transaction 
  827. identifier in DBMS_DEFER_SYS.DELETE_TRAN. This has been fixed.
  828.  
  829.     266068
  830. An error ORA-6502 would be returned by PL/SQL when fetching a 
  831. select-list item whose length is not determined at compile time 
  832. (e.g. 'a'||'b') into a %rowtype variable.
  833.  
  834.     266317
  835. The "size" limit at which PL/SQL Packages generate PLS-00123 has been 
  836. increased for Package Bodies. For typical code the limit is roughly 
  837. doubled.
  838.  
  839.        266542
  840. If there are multiple call records in a deferred transaction in the 
  841. error queue, DBMS_DEFER_SYS.EXECUTE_ERROR raises 1403 when Deferred-TRAN_ID 
  842. is NULL or when both DEFERRED_TRAN_ID is NULL and DEFERRED_TRAN_DB is 
  843. NULL. This has been fixed.
  844.  
  845.     267152
  846. When DBMS_DEFER_ST~YS.EXECUTE is used by two or more processes to 
  847. push deferred transactions to different destinations simultaneously, already 
  848. pushed transactions may remain in DEF$_CALL but will not appear in 
  849. DEFCALL.
  850.  
  851.     268399 <HR>
  852. Multiple before update triggers that modify different columns 
  853. will no longer erroneously report ORA-1401 and ORA-2652 errors.
  854.  
  855.     268441
  856. When a deferred transaction is simultaneously propagated to several
  857. destinations, a conflict at one destination can leave junk in
  858. system.DEF$_CALLDEST at the source database. This can prevent the
  859. transaction from being propagated to its last destination. This has 
  860. been fixed.
  861.  
  862.     269304
  863. The problem is that COMPILED and WRAPPED were added as reserved words
  864. in 2.2, although they weren't reserved words in 2.1. So, users declaring
  865. COMPILED and WRAPPED would start seeing syntax errors in 2.2.
  866. The fix is to make these two words keywords instead of reserved words.
  867.  
  868.     269904
  869. Pro*C could not parse certain va_start() macro expansions
  870. Some va_start() macro expansions used '&...' as part of the
  871. expansion which Pro*C could not parse.  Some also used the
  872. concat operator (ie; '##') as part of the expansion of
  873. va_start() which, in some cases, Pro*C was also not able to
  874. process correctly.
  875.  
  876.     269987
  877. If too many conflicts occur during one call to DBMS_DEFER_SYS.EXECUTE, 
  878. the error transaction cannot be successfully created at the destination 
  879. because too many cursors are open. This has been fixed.
  880.  
  881.     272610
  882. When the destination for pushing the deferred RPC queue is the global 
  883. name of the database and there are one or more calls queued for that
  884. destination, dbms_defer_sys.execute will loop.
  885.  
  886.     275401
  887. There were some cases in which the compiler did not do a correct job 
  888. of privilege-checking. The compiler would incorrectly generate error
  889. pls-904 or pls-201 under the following circumstances (reported under
  890. bug 275401, 181934)
  891.  
  892.    - connected to <<user2>
  893.  
  894.    - compiling PL/SQL code that had a reference to one of the
  895.      following:
  896.  
  897.          <<user1>.<<proc/func>.<<parameter>%type
  898.          <<user1>.<<package>.<<variable>%type
  899.          <<user1>.<<package>.<<cursor>%<<attribute> 
  900.               (where <<attribute> is any allowed attribute: ROWTYPE, NOTFOUND, 
  901.               FOUND, ROWCOUNT, ISOPEN, etc.)
  902.  
  903.     - EXECUTE privilege on <<user1>'s package/procedure/function was 
  904.       granted to <<user2>.
  905.  
  906. Replacing a reference to, for example, <<user1>.<<package>.<<cursor>%NOTFOUND
  907. with a reference to <<synonym>.<<cursor>%NOTFOUND where the synonym 
  908. translates to <<user1>.<<package> will still show the same problems as when there's 
  909. a direct reference to <<user1>.<<package>.<<cursor>%NOTFOUND.
  910.  
  911.     278040 
  912.  Previously, evaluation of a LIKE predicate in an index on multibyte 
  913.  data could give inconsistent results.  The result is now consistent 
  914.  in both index and table scans.
  915.  
  916.     279019 
  917.  Wrong results were possible for certain combinations of outer-joins 
  918.  and NOT IN subqueries.
  919.  
  920.     278331 
  921.  Anonymous PL/SQL blocks referencing a packaged object using a fully 
  922.  qualified name (e.g. schema.package.procedure) was not shared in 
  923.  memory.
  924.  
  925.     281047 
  926. An error ORA-1578 may be returned during an update to a chained row 
  927. if the update results in the column being moved to another block.
  928.  
  929.  
  930.  
  931.  
  932. 8.0 Known Server Restrictions 
  933. ============================= 
  934.  
  935. 8.1 SORT_WRITE_BUFFER_SIZE problem 
  936. ---------------------------------- 
  937.  
  938. Due to a bug in the initial release, the default value of  
  939. SORT_WRITE_BUFFER_SIZE is not correct. If you set SORT_DIRECT_WRITES=TRUE,  
  940. you must also set SORT_WRITE_BUFFER_SIZE to either 32768 or 65536. 
  941. Failure to set SORT_WRITE_BUFFER_SIZE to one of these values may 
  942. result in excessive use of disk space for sorts. 
  943.  
  944.  
  945. 8.2 Interoperability Problem with Time-Stamp Package "STANDARD" 
  946. --------------------------------------------------------------- 
  947.  
  948. Certain PL/SQL programs may fail to compile on 7.0.15/7.0.16 under 
  949. the  following conditions: 
  950.  
  951.      1) use of db links defined on a 7.0 database to connect to a 
  952.         7.2 database 
  953.  
  954.      2) use of %type or %rowtype either on the 7.0 or the 7.2 side.
  955.  
  956. Possible symptoms of failure, while compiling a PL/SQL program on 
  957. 7.0.15/7.0.16 are, as follows: 
  958.  
  959.      1) The 7.0.15/7.0.16 session may crash with the message: 
  960.  
  961.           "Unexpected oracle server termination by signal 6" 
  962.  
  963.         and a trace file might be generated with:
  964.  
  965.           "Exception signal: 11"
  966.  
  967.         and dumps about LIBRARY OBJECTs.
  968.  
  969.      2) The 7.0.15/7.0.16 session may report the following error:
  970.  
  971.           ORA-06501: PL/SQL: internal error 74402, arguments: [],.... 
  972.     
  973.         and a trace file might be generated with a stack trace through 
  974.         the functions: 
  975.  
  976.           ksedmp, ksfdmp, pppjmp, pdtity, pdtity, pdtiit, pdtidc, pdlifu, etc. 
  977.  
  978. This problem can be fixed by either 
  979.  
  980.      1) upgrading the 7.0.15/7.0.16 database to 7.1.3 
  981.  
  982.      2) applying a back-port patch to 7.0.15 or 7.0.16 to include 
  983.         the following two bug-fixes:
  984.  
  985.         a) fix for bug 187531
  986.  
  987.         b) fix for bug 232292
  988.   
  989. 8.3 Restrictions Awaiting Fixes 
  990. -------------------------------
  991.  
  992. 8.3.1  TO_NUMBER Function 
  993.  
  994.  248776 The TO_NUMBER function, using the NLS_CURRENCY clause, does 
  995.         not work as expected. The function expects the currency text
  996.         to be tencharacters. For example, the following will not work:
  997.  
  998.            SELECT TO_NUMBER( 
  999.                       'Fl100.00',  
  1000.                           'L999D99', 'NLS_CURRENCY = ''Fl'' ') 
  1001.            FROM dual; 
  1002.  
  1003.         A possible workaround would be to use the LPAD function. For 
  1004.         example:
  1005.  
  1006.         SELECT TO_NUMBER(  
  1007.                       LPAD('Fl100.00',length('Fl100.00')
  1008.                   +10-length('Fl'), ' '), 
  1009.                             'L999D99', 'NLS_CURRENCY = ''Fl'' ') 
  1010.         FROM dual; 
  1011.  
  1012. 8.3.2  Snapshot Incompatibility 
  1013.  
  1014. 255394 When a 7.1.3+ read-only snapshot performs a fast refresh 
  1015.        from a 7.0 master, the snapshot will not delete rows that
  1016.        were deleted by the master if the snapshot's selection 
  1017.        criteria had no WHERE clause. There are four possible 
  1018.        workarounds. 
  1019.  
  1020.        Workaround 1: Upgrade the master database to 7.1.3+.
  1021.  
  1022.        Workaround 2: Replace the snapshot.
  1023.  
  1024.        Replace the following code:
  1025.  
  1026.           CREATE SNAPSHOT foo AS SELECT c1, c2, c3, 
  1027.           FROM foo@master;
  1028.  
  1029.        with 
  1030.  
  1031.           CREATE SNAPSHOT foo AS SELECT c1, c2, c3, 
  1032.           FROM foo@master
  1033.           WHERE c1 is NULL OR c1 is NOT NULL;
  1034.  
  1035.        or 
  1036.  
  1037.           CREATE SNAPSHOT foo AS SELECT c1, c2, c3, 
  1038.           FROM foo@master 
  1039.           WHERE DECODE(c1, c2, 0) = 0;
  1040.  
  1041.        Workaround 3: Replace the snapshot's underlying MVIEW$ view.
  1042.  
  1043.        Replace the following code:
  1044.  
  1045.        CREATE or REPLACE MVIEW$foo AS SELECT c1, c2, c3,
  1046.        FROM foo@master;
  1047.  
  1048.        with
  1049.  
  1050.        CREATE or REPLACE MVIEW$foo AS SELECT c1, c2, c3,
  1051.        FROM foo@master 
  1052.        WHERE c1 is NULL OR c1 is NOT NULL; 
  1053.  
  1054.        or 
  1055.  
  1056.        CREATE or REPLACE MVIEW$foo AS SELECT c1, c2, c3,
  1057.        FROM foo@master 
  1058.        WHERE DECODE(c1, c2, 0) = 0
  1059.  
  1060.           NOTE: The advantage of replacing the view, something not 
  1061.           recommended by Oracle, is that you don't have to 
  1062.           reinstantiate large snapshots if the 7.1 snapshot was not 
  1063.           yet refreshed from the 7.0 snapshot. If the 7.1 snapshot 
  1064.           has been refreshed, replacing the view could lose deletes; 
  1065.           you should drop and recreate the snapshot instead. 
  1066.  
  1067.        Workaround 4: 
  1068.  
  1069.        Apply the patch to Bug #111890 to the 7.0 master database.
  1070.  
  1071.  
  1072.  
  1073. 9.0 National Language Support  
  1074. ============================= 
  1075.  
  1076. This section is only relevant if you use National Language 
  1077. Support features.  
  1078.  
  1079. If you used National Language Support features in Oracle Version 6, 
  1080. see Section 2.0, "National Language Support." 
  1081.  
  1082. 9.1 General 
  1083. ----------- 
  1084. Some National Language Support interactive interface prompts 
  1085. require YES/NO responses rather than the appropriate National Language 
  1086. Support language-independent equivalent. 
  1087.  
  1088. 9.2 Character Sets 
  1089. ------------------ 
  1090. Single byte and multibyte character encoding schemes are supported. 
  1091.     
  1092. RESTRICTION: Character sets that replace "|" (vertical bar) and "@" 
  1093. (at) with another character CANNOT use these characters in object 
  1094. names. For example, D7DEC replaces "|" with O-umlaut, thus O-umlaut 
  1095. is not allowed in object names as it would be interpreted as the 
  1096. concatenation symbol. This is the same restriction that applied with 
  1097. 7-bit character sets in Oracle version 6. 
  1098.  
  1099. RESTRICTION: If your system has a character set that does not 
  1100. contain "^" (caret) and "~" (tilde), you MUST use "<<>" or "!=" for 
  1101. inequality testing.  (The ANSI/ISO SQL standard permits only "<<>".) 
  1102.  
  1103. 9.2.1 Applications and Multibyte Character Sets 
  1104. --------------------------------------------- 
  1105. The use of multibyte character sets affects the way that many 
  1106. Oracle applications interpret the lengths of character data. Problems 
  1107. can arise when the client and the server use a character 
  1108. representation with a differing number of bytes per character. 
  1109.  
  1110. Note: None of the problems mentioned in the remainder of this section 
  1111. should arise if one of following conditions are met: 
  1112.  
  1113.    * Both the client and the server use a single-byte character set. 
  1114.  
  1115.    * The multibyte character set is guaranteed to have the same number 
  1116.      of bytes per character as the single-byte character set. 
  1117.  
  1118. However, remember that when the length of character string data is 
  1119. specified in an OCI bind or define call, it is always specified in 
  1120. bytes, not characters. Also, when CHAR(n) and VARCHAR(n) table columns 
  1121. or PL/SQL variables are declared, n is the number of bytes in the 
  1122. column or variable. 
  1123.  
  1124. The basic problem occurs when a character string is moved between 
  1125. client and server; its length in bytes can change. In the worst case, 
  1126. the length of the string can shrink or increase by a factor of five. 
  1127.  
  1128. In any conversion, four ratios and as many as three character sets 
  1129. may be involved. The characters sets are client, network, and server. 
  1130. The four ratios are:
  1131.  
  1132. Client-Send    (ratio between client character set and network) 
  1133. Server-Send    (ratio between server character set and network) 
  1134. Client-Receive (ratio between client character set and network for 
  1135.                 receiving) 
  1136. Server-Receive (ratio between server character set and network for 
  1137.                 receiving) 
  1138.  
  1139. Usually, three of the four are 1:1. For example, in the case of a 
  1140. JEUC client and a WE8DEC server, the network character set is WE8DEC: 
  1141.  
  1142.        Client Server Send 1:1 1:1 Receive 2:1 1:1 
  1143.  
  1144. These character set conversion problems affect OCI applications and 
  1145. tools that use the UPI, such as SQL*Forms and the precompilers. 
  1146.  
  1147.  
  1148. 9.3 Conversion Between Non-String and String Values 
  1149. --------------------------------------------------- 
  1150. When a string variable is to receive the output from a non-string 
  1151. datatype, the string variable must be large enough to receive the 
  1152. translated output. String lengths are specified in bytes on the client 
  1153. side, and this may cause problems when a non-string value must be 
  1154. converted to a multibyte string value. The following examples 
  1155. demonstrate this using SQL*DBA; analogies are made to OCI and 
  1156. precompiler applications. 
  1157.  
  1158. The following examples use SQL*DBA to illustrate this point.
  1159.  
  1160. Note: The declaration of "my_string" in the VARIABLE statement is 
  1161. always in bytes. my_string VARCHAR2(4) is a four byte variable named 
  1162. "my_string", and my_string VARCHAR2(8) is an eight byte variable. 
  1163.  
  1164. When running on a client that uses a single byte character set, the 
  1165. following example works: 
  1166.  
  1167.     SQLDBA> variable my_string VARCHAR2(4); 
  1168.     SQLDBA> BEGIN 
  1169.     SQLDBA> SELECT 1234 INTO :my_string from dual; 
  1170.     SQLDBA> END; 
  1171.     SQLDBA> / 
  1172.  
  1173. The example works because the numeric literal 1234 has a precision 
  1174. of four, and the varchar2 variable is four BYTES long. On a client 
  1175. machine that is using a multibyte character set, this example would 
  1176. fail, returning an ORA-006502 error.
  1177.  
  1178. Note: Even the following example could fail if the character set on 
  1179. the client side is multibyte: 
  1180.  
  1181.      SQLDBA> variable my_string VARCHAR2(8) 
  1182.      SQLDBA> BEGIN 
  1183.           2> SELECT 1234 INTO :my_string FROM dual; 
  1184.           3> END; 
  1185.           4> / 
  1186.  
  1187. because there is no guarantee that characters are always represented 
  1188. in two bytes. 
  1189.  
  1190. In OCI applications, make sure that the output length that you use 
  1191. in the ODEFIN call (the BUFL parameter) and the host language string 
  1192. variable are sized sufficiently to receive converted values. In 
  1193. precompiler applications, make sure that the host variable string 
  1194. for the output is large enough. 
  1195.  
  1196.  
  1197.  
  1198. 10.0 PL/SQL Behavior Changes After Upgrade
  1199. --------------------------------------------------- 
  1200.  
  1201. 10.1 Behavior Change Caused by Bugfix 237911 After Upgrading to PL/SQL 
  1202.      2.1.5 or Any Higher Release
  1203.  
  1204. Description of Behavior Change: 
  1205.  
  1206. The PL/SQL compiler must check that the elements of the INTO-target 
  1207. list of a select statement or cursor fetch statement are assignable and 
  1208. report errors PLS-00363 or PLS-00403 if they are not assignable.  PL/SQL 
  1209. 2.1.4 and earlier releases failed to correctly check the assignability 
  1210. of all but the last element in the INTO-target list of select and fetch 
  1211. statements.
  1212.  
  1213. Consider the following example PL/SQL procedure:
  1214.  
  1215.   PROCEDURE  p (...) IS 
  1216.   ... 
  1217.   BEGIN 
  1218.     SELECT * INTO <<a>, <<b>, <<c> FROM <<table>; 
  1219.   END; 
  1220.  
  1221. PL/SQL 2.1.4 correctly checked the assignability of <<c> while failing 
  1222. to do the complete set of checks for <<a> and <<b>.  In particular, 
  1223. it failed to report errors on <<a> and <<b> if they were any of the following:
  1224.  
  1225.     - a reference to an IN parameter 
  1226.     - the name of a function 
  1227.     - a string-literal 
  1228.     - a reference to a scalar for-loop variable 
  1229.     - a reference to a constant 
  1230.     - a reference to an enumeration-literal (e.g.: TRUE, FALSE) 
  1231.  
  1232. Releases 2.1.5 and higher now correctly report this error.
  1233.  
  1234. If you upgrade to release 2.1.5, or higher, and your procedure has 
  1235. the constructs described above, an attempt to recompile your procedure,
  1236. either automatically or manually, will result in either
  1237.  
  1238.     - error PLS-00363, if the upgrade is to 2.1.5 
  1239.     - error PLS-00403, if the upgrade is to any release higher than 
  1240.       2.1.5 
  1241.  
  1242. Corrective Action: 
  1243.  
  1244.   You have two choices: 
  1245.  
  1246.     a)  If you are in a position to fix the PL/SQL code: 
  1247.           Fix your PL/SQL code and recompile the procedure. 
  1248.           (example: decide carefully if your procedure should use
  1249.           IN parameter or an IN OUT parameter and fix your code accordingly).
  1250.  
  1251.     b)  If fixing the PL/SQL code is not an option, then: 
  1252.  
  1253.         If you are running 2.2.x or 2.3.x, do one of the following: 
  1254.  
  1255.           1.  Disable bugfix 237911 permanently by performing the 
  1256.               following steps: 
  1257.               a.  Shutdown the database instance 
  1258.               b.  Add the following line to the INIT.ORA file: 
  1259.                       event="10925 trace name context forever" 
  1260.               c.  Startup the database instance 
  1261.  
  1262.           2.  Disable bugfix 237911 temporarily to allow your procedure
  1263.               to compile by performing the following steps: 
  1264.               a.  Turn off bugfix 237911 temporarily by doing: 
  1265.                   ALTER SESSION SET EVENTS='10925 trace name context 
  1266.                   forever'; 
  1267.               b.  ALTER PROCEDURE <<procedure-name> COMPILE; 
  1268.               c.  Enable bugfix 237911 again by doing: 
  1269.                   ALTER SESSION SET EVENTS='10925 trace name context off';
  1270.  
  1271.         If you are running 2.1.6, do the following to permanently 
  1272.         disable bugfix 237911 in 2.1.6: 
  1273.  
  1274.           Call your Support Rep and ask for a 2.1.6 patch for bugfix 
  1275.           284597 
  1276.           to backout bugfix 237911. 
  1277.  
  1278. 10.2 Behavior Change Caused by Bugfix 190119 After Upgrading To PL/SQL 
  1279.      2.1.6 or Any Higher Release
  1280.  
  1281. Description of Behavior Change: 
  1282.  
  1283. The "end" identifier that is optional at the end of a package,
  1284. procedure or function must match the name of the entity it ends; if there 
  1285. is a mismatch, the compiler must report error PLS-00113.  PL/SQL 2.1.5 
  1286. and lower versions did not report any errors if the identifiers did 
  1287. not match. PL/SQL 2.1.6 and higher revisions now correctly report the error 
  1288. if the identifiers do not match, for example, as in:
  1289.  
  1290.      PACKAGE PKG IS 
  1291.        ... 
  1292.      END PKGXXX; 
  1293.  
  1294. Corrective Action:
  1295.  
  1296.   You have two choices: 
  1297.  
  1298.     a)  If you are in a position to fix the pl/sql code: 
  1299.         Fix the "end" identifier so that it matches or remove it and 
  1300.         recompile your procedure. 
  1301.  
  1302.     b)  If fixing the pl/sql code is not an option, then: 
  1303.  
  1304.         If you are running 2.2.x or 2.3.x, do one of the following: 
  1305.  
  1306.           1.  Disable bugfix 190119 permanently by performing the 
  1307.               following steps:
  1308.  
  1309.               a.  Shutdown the database instance 
  1310.               b.  Add the following line to the INIT.ORA file: 
  1311.                       event="10926 trace name context forever" 
  1312.               c.  Startup the database instance 
  1313.  
  1314.           2.  Disable bugfix 190119 temporarily to allow your procedure 
  1315.               to compile by performing the following steps: 
  1316.  
  1317.               a.  Turn off bugfix 190119 temporarily by doing: 
  1318.                   ALTER SESSION SET EVENTS='10926 trace name context 
  1319.                   forever';
  1320.               b.  ALTER PROCEDURE <<procedure-name> COMPILE; 
  1321.               c.  Enable bugfix 190119 again by doing: 
  1322.                   ALTER SESSION SET EVENTS='10926 trace name context off'; 
  1323.  
  1324.         If you are running 2.1.6, do the following to permanently 
  1325.         disable bugfix 190119: 
  1326.  
  1327.           Call your Support Rep and ask for a 2.1.6 patch for bugfix 
  1328.           284599 to backout bugfix 190119. 
  1329.  
  1330. 10.3 Behavior Change Caused by Bugfixes 235190 and 235193 
  1331.      After Upgrading to PL/SQL 2.1.6 or Any Higher Release
  1332.  
  1333. Description of Behavior Change: 
  1334.  
  1335. The PL/SQL compiler must flag multiple incomplete (forward) type 
  1336. declarations for the same type with error PLS-00105.  It must also 
  1337. flag incomplete types that are not completed within the same compilation 
  1338. unit (stored PL/SQL procedure/package/function) with error PLS-00311.
  1339. PL/SQL 2.1.5 and earlier releases failed to flag these errors 
  1340. (see bugs 235190 and 235193).  PL/SQL 2.1.6 and higher releases 
  1341. now correctly flag these errors.  However, because of this combination 
  1342. of errors, certain PL/SQL programs that previously compiled without 
  1343. errors will now compile with either error PLS-00105 or PLS-00311. 
  1344.  
  1345. For example: 
  1346.  
  1347.      PACKAGE PKG1 IS 
  1348.        TYPE r; 
  1349.        TYPE r; -- will now compile with error PLS-00105 
  1350.        TYPE r IS record (a VARCHAR2(10)); 
  1351.      END; 
  1352.      PACKAGE PKG2 IS 
  1353.        TYPE r; -- will now compile with error PLS-00311 
  1354.      END; 
  1355.  
  1356. Corrective Action:
  1357.  
  1358.   You have two choices: 
  1359.  
  1360.     a)  If you are in a position to fix the PL/SQL code: 
  1361.         Remove all but one of the incomplete type-declarations 
  1362.         and recompile procedure. 
  1363.  
  1364.     b)  If fixing the PL/SQL code is not an option, then: 
  1365.  
  1366.         If you are running 2.2.x or 2.3.x, do one of the following: 
  1367.  
  1368.           1.  Disable bugfixes 235190 & 235193 permanently by performing 
  1369.               the following steps: 
  1370.  
  1371.               a.   Shutdown the database instance 
  1372.               b.   Add the following line to the INIT.ORA file: 
  1373.                        event="10927 trace name context forever" 
  1374.               c.   Startup the database instance 
  1375.  
  1376.           2.  Disable bugfixes 235190 and 235193 temporarily to allow 
  1377.               your procedure to compile by performing the following 
  1378.               steps: 
  1379.  
  1380.               a.  Turn off bugfix 235190 & 235193 temporarily by doing: 
  1381.                   ALTER SESSION SET EVENTS='10927 trace name context 
  1382.                   forever'; 
  1383.               b.  ALTER PROCEDURE <<procedure-name> COMPILE; 
  1384.               c.  Enable bugfixes 235190 and 235193 again by doing: 
  1385.                   ALTER SESSION SET EVENTS='10927 trace name context off';
  1386.  
  1387.         If you are running 2.1.6, do the following to permanently 
  1388.         disdable bugfixes 235190 and 235193: 
  1389.  
  1390.         Call your Support Rep and ask for a 2.1.6 patch for bugfix 
  1391.         284598 to backout bugfixes 235190 and 235193. 
  1392.  
  1393.  
  1394. 10.4    PLS-905 Error During Execution/Parse of a Cursor Holding 
  1395.         an Anonymous PL/SQL Block
  1396.  
  1397. This error can occur when an anonymous PL/SQL block references a remote 
  1398. object (through a dblink) and the remote object has been altered.
  1399. For this to happen, the cursor holding the anonymous PL/SQL needs 
  1400. to be in the following state ... 
  1401.  
  1402. * It has been previously fully compiled
  1403. * Since it was last fully compiled, it has been partly aged out of 
  1404.   the cache
  1405.  
  1406. (Note that "parse" and "compile" are synonymous in this description.) 
  1407.  
  1408. The problem here is that the cursor keeps an old dependency reference 
  1409. on the remote object (which has the old timestamp of the object).  During 
  1410. PL/SQL compilation we notice that the timestamp on the remote object doesn't 
  1411. match the timestamp in the dependency entry and the dependency is marked 
  1412. invalid.  Later, the PL/SQL compiler trys to lock the remote object 
  1413. through the dependency entry and discovers that the dependency is 
  1414. invalid.It then signals the PLS-905 error.
  1415.  
  1416. It is important to note that if the cursor had not been aged out at 
  1417. all, then we would have executed and found the timestamp mismatch.  
  1418. This would have instead signalled an error such as:
  1419.                           
  1420. ORA-04068: existing state of packages has been discarded 
  1421. ORA-04062: timestamp of procedure "SCOTT.P1" has been changed
  1422.  
  1423. To summarize, here are the conditions that can be encoutered when 
  1424. an anonymous PL/SQL block is parsed and executed and which references 
  1425. a remote object that has been modified since the cusor was last completely 
  1426. compiled.
  1427.  
  1428. 1. If the cursor has been fully aged out of the cache (the parse/compilation 
  1429. of the cursor has to start at square 1) then the dependency timestamp 
  1430. will be set to the new one and the cursor will parse and execute without 
  1431. errors.
  1432.  
  1433. 2. If the cursor is in the state that it is partly compiled (it still 
  1434. has the old dependency information), then PL/SQL compilation will discover 
  1435. a timestamp mismatch and signal the ORa-905 error.
  1436.  
  1437. 3. If the cursor is fully compiled (nothing has been aged out of the 
  1438. shared pool), then PL/SQL execution will discover the timestamp mismatch 
  1439. and signal the error ORA-4062.
  1440.  
  1441. The workaround if condition 2 or 3 is encountered is to reissue the 
  1442. the operation that signaled the error.  This works because the cursor 
  1443. is marked to be fully recompiled when the timestamp mismatches are detected.
  1444.  
  1445.  
  1446.  
  1447. <<End of 7.2.2 README file>> 
  1448.  
  1449.