环境说明:以下对比的ORACLE版本,不作特殊说明,8i指的是oracle817,10g指的ORACLE10g r2:一、安装配置上的差异1、安装前提条件的变化A、最低硬件配置要求硬件要求对比要求 最小值10g 8i物理内存 256 MB minimum, 512 MB recommended 96M虚拟内存 Double the amount of RAM 无要求磁盘空间(基本安装) 2.04 GB 796M磁盘空间(高级安装) 1.94 GB 785M显卡 256 colors 16色处理器 550 MHz Pentium 166B、软件配置要求软件需求对比项目 10g 8i系统架构 Intel (x86), AMD64, and Intel EM64T X86Windows 2000 with service pack 1 or laterWIN2000Windows Server 2003 - all editionswin2003操作系统Windows XP ProfessionalWINXP-------------------Windows NT is not supported. WIN NT说明:8i没有64位版本,但可以在64位机器上安装2、默认用户的变化A、默认用户对比序号10g(R2) 8i(817) 描述 备注1 XDB SQL XML management不能删除,否则会导致SYS模式的一些对象失效2 WMSYS Oracle Workspace Manager3 TSMSYSTransparent SessionMigration主要是在升级过程中解决大对象存储的问题,不能删除4 SYSTEM SYSTEM Administrative 不能删除5 SYSMAN DB Control Repository 不能删除6 SYS SYS Administrative 不能删除7 SI_INFORMTN_SCHEMA InterMedia创建的用户8 SCOTT SCOTT ORACLE演示用户9 OUTLN OUTLNStored Outlines固定执行计划的所有者不能删除10 OSE$HTTP$ADMIN Oracle Servlet Engine11 ORDSYS ORDSYS InterMedia Audio option12 ORDPLUGINS ORDPLUGINS InterMedia Audio option13 MTSSYSOracle Services forMicrosoft TransactionServer14 OLAPSYS OLAP用户15 MGMT_VIEW DB Control Repository不要删除,否则OEM不能使用16 MDSYS MDSYS Spatial Data Option user17 JONES ORACLE练习例子中的用户18 MDDATA Spatial Data Option user19 EXFSYSExpression Filter Featurerepository20 DMSYS OEM监视管理21 DIP Provision event processing22 DBSNMP DBSNMP Intelligent Agent user-------------------23 CTXSYS CTXSYS Intermedia Text schema24 ANONYMOUS SQL XML management 不能删除25 CLARK ORACLE练习例子中的用户26 BLAKE ORACLE练习例子中的用户27 AURORA$ORB$UNAUTHENTICATED Oracle Servlet Engine28 AURORA$JIS$UTILITY$ Oracle Servlet Engine29 ADAMS ORACLE练习例子中的用户B、SYS/SYSTEM用户密码设置的变化SYS/SYSTEM用户密码设置的变化用户 8i 10gsys change_on_install 安装时指定SYSTEM manager 安装时指定说明:8i的用户的密码在安装时,已经固定,而10G的密码是在安装时,必须输入新密码C、默认活动用户的变化活动用户对比8i 10GSYSSYSTEMSYSMANDBSNMP默认用户都是活动的MGMT_VIEW说明:10G除了在这里指出的活动用户外,其他用户默认都是被锁定了的,如果要使用,必须使用以下语法来解锁:alter user 具体用户名 account unlock3、ORACLE默认安装文件位置的变化ORACLE文件默认文件位置变化-------------------8i 10gORACLE_BASE文件 D:/oracle D:/oracleORACLE_HOME D:/oracle/ora81 D:/oracle/product/10.2.0/db_1说明:1.这里假定ORACLE是安装在D:盘上2.ORACLE8I在不同操作系统上的路径可能不一样3.10G已经统一各操作系统上的路径4、安装后程序菜单变化在WINDOWS下安装ORACLE后菜单的变化ORACLE常用功能菜单位置变化项目8i(起点:开始->所有程序->Oracle-OraHome81->)10g(起点:开始->所有程序->Oracle-OraDb10g_home1->)DBA StudioDatabase Administration->DBA Studiohttp://localhost:1158/em也可以单独安装10G客户端,就有这个DBA STUDIO数据库配置助手Database Administration->Database Configuration Assistant配置和移植工具->Database Configuration Assistant数据库升迁助手Migration Utilites->Oracle Data Migration Assistant配置和移植工具->Database Upgrade Assistant网络配置助手Network Administration->Net8 Configuration Assistant配置和移植工具->Net Configruation Assistant网络管理员Network Administration->Net8 Assistant配置和移植工具->Net ManagerSQLPLUSApplication Development->SQL PLUS应用程序开发->SQL Plus说明:1.10G和8I菜单的最大变化是10G把所有需要配置的功能,都放到"配置和移植工具"下面2.另一个变化是DBA管理工具,在10G中,安装服务器后,已经取消基于C/S方式的管理界面,代之以WEB方式的管理界面,如果需要C/S方式的管理界面,必须单独安装ORACLE10G提供的CLIENT安装程序.该程序没有包含在企业版的安装包中,需要单独下载.5、注册表项的变化A、ODBC名称的变化ODBC注册项变化8i 10gODBC注册项HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Oracle ODBC DriverHKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Oracle in OraDb10g_home1-------------------B、ORACLE注册键入口的变化注册表入口对比版本 注册项8i HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/Home010gHKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb10g_home1或者HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraClient10g_home1(单独客户端安装后)说明:项ORACLE_HOME,ORACLE_SID,NLS_LANG,ORA_ORCL_AUTOSTART都是在上面列出的注册项下面6、监听的变化A、监听配置文件内容的变化listener.ora文件内容对比变化版本 listener.ora文件默认内容8iSID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:/Oracle/Ora81)(PROGRAM = extproc))(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = D:/Oracle/Ora81)(SID_NAME = orcl)))10g SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)(PROGRAM = extproc)))-------------------说明:10G默认没有把SID加到SID_LIST_LISTENER下,在10G中默认为动态监听B、监听设置的变化正如上面监听内容变化所表明的,在10G中默认没有把SID加到listener.ora文件的SID_LIST_LISTENER下,如果有多个实例,如果你关闭一个实例后,你再去执行启动,会提示错误:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务。具体我们来看看一个实验:现象:(1).连接C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10月 12 13:43:58 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect sys/oracle@orcl as sysdba;已连接。(2)、关闭数据库SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。(3)、接着启动SQL> startupORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务这个问题的根本原因是10G对监听是动态从服务中去读取的,而这是服务已经停止了,所以,就提取不到这个服务了。而8I是从LISTENER.ORA文件中读取的,所以,就不存在这个问题。解决办法有两个:方法1、在listener.ora中增加监听SID在sid_listener_list下增加(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)(SID_NAME = orcl))这样,就和8I一样了,可以正常启动。不过这样加了之后,在lsnrctl status中看到该SID的监听状态为UNKNOWN,这个不用管它。方法2、直接通过控制面板的服务来解决说明:为了便于表现,我这里使用NET START方式来展现这个方法SQL> hostMicrosoft Windows XP [版本 5.1.2600](C) 版权所有 1985-2001 Microsoft Corp.-------------------先看看监听状态,发现没有SID服务:C:/Documents and Settings/郑全>lsnrctl statusLSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 12-10月-2006 13:46:34Copyright (c) 1991, 2005, Oracle. All rights reserved.正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 12-10月-2006 13:24:54正常运行时间 0 天 0 小时 21 分 40 秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数文件 D:/oracle/product/10.2.0/db_1/network/admin/listener.ora监听程序日志文件 D:/oracle/product/10.2.0/db_1/network/log/listener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zhengquan)(PORT=1521)))服务摘要..服务 "PLSExtProc" 包含 1 个例程。例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功C:/Documents and Settings/郑全>net start OracleServiceORCL请求的服务已经启动。请键入 NET HELPMSG 2182 以获得更多的帮助。由于服务已经启动,首先关闭SID服务:C:/Documents and Settings/郑全>net stop OracleServiceORCLOracleServiceORCL 服务正在停止.OracleServiceORCL 服务已成功停止。C:/Documents and Settings/郑全>net start OracleServiceORCLOracleServiceORCL 服务正在启动 ...............OracleServiceORCL 服务已经启动成功。C:/Documents and Settings/郑全>exitSQL> connect sys/oracle@orcl as sysdba;已连接。SQL> startupORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它SQL>-------------------C:/Documents and Settings/郑全>lsnrctlLSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 12-10月-2006 14:10:12Copyright (c) 1991, 2005, Oracle. All rights reserved.欢迎来到LSNRCTL, 请键入"help"以获得信息。LSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 12-10月-2006 13:24:54正常运行时间 0 天 0 小时 45 分 19 秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数文件 D:/oracle/product/10.2.0/db_1/network/admin/listener.ora监听程序日志文件 D:/oracle/product/10.2.0/db_1/network/log/listener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zhengquan)(PORT=1521)))服务摘要..服务 "PLSExtProc" 包含 1 个例程。例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "orcl" 包含 1 个例程。例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "orclXDB" 包含 1 个例程。例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "orcl_XPT" 包含 1 个例程。例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...命令执行成功LSNRCTL>7、客户端兼容差异A、向下连接兼容的变化ORACLE客户端连接兼容表ORACLE7.3 ORACLE8 ORACLE816 ORACLE817 ORACLE9I ORACLE10G8i(817) √ √ √ √ √ √10g(R2) × × × √ √ √说明:1.如果以10G为客户端,向下只能连接到817,而以8I为客户端,可以连接到现在-------------------主流的所有ORACLE版本数据库服务器.2.正因为如此,如果医院数据库使用10G作为服务器,如果考虑到有医保使用低于817的服务器,那么,建议医院的工作站安装8i,那么这个问题就可以解决.B、连接到服务器端EXP/IMP的变化ORACLE的EXP/IMP兼容表EXP/IMP ORACLE7.3 ORACLE8 ORACLE816 ORACLE817 ORACLE9I ORACLE10G8i(817) √ √ √ √ √ √10g(R2) × × × × × √说明:1.如果以10G为客户端,只能导出导入10G的服务器数据,而以8I为客户端,可以导其他版本的的数据.2.不过,可以使用10G客户端,向10G的服务器导入8I导出的DMP数据.8、闪回恢复区的增加闪回恢复区是在 10g中新增的功能,通过闪回恢复区,所有归档日志,RMAN的备份集,控制文件,SPFILE备份等,都可以保存在该目录下。闪回恢复区对应的ORACLE目录为flash_recovery_area1.查看闪回目录参数C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 10月 25 17:11:39 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect sys/oracle as sysdba;已连接SQL> show parameters db_recovery_file_destNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest stringdb_recovery_file_dest_size big integer 02、设置闪回文件目录设置闪回目录的大小,在设置闪回目录之前,必须先设置闪回目录的大小,这个大小应该按以下公式计算:物理数据文件大小*2+一天的归档日志大小*2,这个空间如果充满了,必须使用RMAN进行删除,否则,是删除不了的。当然,设置闪回文件目录,主要是设置了归档日志模式才有用,否则,这个目录是没有使用的。-------------------SQL> alter system set db_recovery_file_dest_size=4G;系统已更改。SQL> alter system set db_recovery_file_dest='D:/oracle/product/10.2.0/flash_recovery_area' scope=both;系统已更改。SQL> show parameters db_recovery_file_destNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest string D:/oracle/product/10.2.0/flash_recovery_areadb_recovery_file_dest_size big integer 4GSQL>3、查看当前闪回文件目录的使用情况当然,在这个文件快满时,在报警文件alert_orcl.log中也有提示,所以,需要注意观察报警文件。SQL> select name,space_limit,space_used from v$recovery_file_dest;NAME SPACE_LIMIT SPACE_USED--------------------------------------------- ----------- ----------D:/oracle/product/10.2.0/flash_recovery_area 4294967296 47982592SQL>4、RMAN删除已经手工删除的归档日志C:/>rman nocatalog target sys/oracleRman>crosscheck archivelog all;Rman>delete expired archivelog all;9、安装补丁的差异A.执行统一安装程序8I和10G方法上没有差异B、数据库补丁的处理B1.8i 数据库本身的升级执行以下命令:1.以SYSDBA 用户登陆SQLPLUS-------------------2.sql>startup migrate3.sql>spool patch.LOG4.sql>@?/rdbms/admin/catpatch.sql?号会自动代表ORACLE 主目录,所以,这里输入?就可以了,不用去具体输入ORACLE 主目录,避免了由于盘符几ORACLE主目录选择不对所带来的问题.当然,你这里的?,也可以直接输入具体的ORACLE 主目录的位置也可以,比如我的ORACLE 主目录在D:/ORACLE/ORA81,那么,这样输入也可以:sql>@d:/oracle/ora81/rdbms/admin/catpatch.sql5.sql>spool off6.查看PATCH.LOG,看哪些地方有错,如果有错,修正它,并再执行catpatch.sql根据我几次打补丁的情况来看,基本没有看到有什么错误出现.7.关闭数据库 sql>shutdown,再重起.sql>startup8.重新编译无效的过程执行sql>@ %ORACLE_HOME%/rdbms/admin/utlrp.sql 即可.%ORACLE_HOME%用?也可以.9.退出.10.如果使用了RMAN.还得对RMAN 进行升级.执行以下脚本就可以了.rman catalog <user/passwd@alias> upgrade catalog; upgrade catalog;B2.ORACLE10G 数据库本身的升级和8I 的升级,主要不同点是第二步.其他步骤是相同的。8i:sql>startup migrate10g:sql>startup UPGRADE10、撤卸差异撤卸没有差异:二、管理上的差异1、ORACLE企业管理器(OEM)的变化-------------------A、界面的变化OEM管理界面变化8i 10gOEM DBA Studio基于WEB方式的管理器http://localhost:1158/em说明;1.在默认安装服务器的情况下,8I下的DBA STUDIO不用配置,就可以直接使用,而且机器名称变化,也不影响他的使用,而10G的OEM,如果是机器名称发生了变化,需要重新设置2.对于安装了多个实例的机器,10G OEM的端口号可以在%ORACLE_HOME%/install/readme.txt文件中可以找到3.也可以单独安装10G客户端,就有这个DBA STUDIO,10G中叫Enterprise Manager Console,具体在安装的客户端组件中,选择Enterprise Manager 10g Java Console 10.2.0.1.0项即可.主界面对比8i10g-------------------表空间管理界面8i-------------------10g-------------------重做日志8i:10g-------------------用户管理8i-------------------10g-------------------B、配置上的变化这里主要讲10G OEM的配置,在8I中,DBA STUDIO一般不需要配置对于ORACLE10G,如果改变了服务器名称,一般是需要重新配置OEM的,否则,这个OEM就不能用了。下面列了在10g r2上配置OEM的方法:B1、创建配置文件和仓库C:/>emca -config dbcontrol db -repos createB2、删除配置文件和仓库C:/>emca -deconfig dbcontrol db -repos dropB3、在创建的同时,删除以前配置文件和仓库C:>emca -config dbcontrol db -repos recreate可以根据你的情况,选择对应的方法,我一般在OEM 不能用时,使用B3 的方法,主要是简单方便。当然,在创建过程中,有什么问题,可以检查下面地址中的日志文件:ORACLE_HOME/cfgtoollogs/emca/<sid>-------------------2、SVRMGRL的变化ORACLE8I中可以使用SVRMGRL登陆数据库,10G中已经取消SVRMGRL命令,一般都使用SQLPLUS对数据库进行管理,比如关闭,启动等:8i:C:/Documents and Settings/郑全>svrmgrlOracle Server Manager Release 3.1.7.0.0 - ProductionCopyright (c) 2000, Oracle Corporation. All Rights Reserved.Oracle8i Enterprise Edition Release 8.1.7.0.0 - ProductionWith the Partitioning optionJServer Release 8.1.7.0.0 - ProductionSVRMGR> connect internal/oracle;连接成功。SVRMGR> shutdown immediate已关闭数据库。已卸下数据库。已关闭 ORACLE 实例。SVRMGR>10g:C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期一 10月 23 17:08:49 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect sys/oracle@orcl as sysdba;已连接。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup3、回滚段管理的变化管理的变化8i中回滚段是手工进行管理,具体需要多少个回滚段,是需要通过计算的,大概是四个事务需要一个回滚段,这个事务到底有多少,可以通过STATSPACK来进行提取。所以,在8I中设置回滚段数要麻烦一些。10G中回滚段是自动管理的,一般不需要我们去管理。8i:-------------------10G:4、SGA的变化-------------------A、组成的变化SGA组成变化共享池数据缓冲区JAVA池 大型池 流池日志缓冲区KEEP池 回收池非标准块大小8I √ √ √ √ √ √ √10G √ √ √ √ √ √ √ √ √B、SGA管理的变化SGA管理的变化8i 10gSGA管理手动管理一经设置,不会动态变化自动管理各组成部分的大小动态变化C、设置的变化C1、SGA自动管理设置Sql>connect sys/oracle as sysdba;Sql>alter system set sga_target=30% * 物理内存一旦设置了SGA_TARGET为非零值,那么这个SGA的管理,就为自动管理这里允许为动态设置C2、数据缓冲区的设置8i:db_block_buffers10g: db_cache_size所以,在8I中,只需要设置DB_BLOCK_BUFFER,表示有多少个块,最终数据缓冲区的大小为db_block_buffers* db_block_size而在10G中,只需要设置DB_CACHE_SIZE一个参数即可。当然,如果我们设置了SGA为自动管理,就可以不用管它了。当然,如果是动态管理SGA,那么通过SHOW PARAMETERS db_cache_size,大小为零。5、PGA的变化由于PGA是针对单个进程的,所以,在8I中我们设置的排序区的大小,一般不能大于1M,因为,这是一个用户会话的大小,总的大小还要乘于会话数。-------------------在10G中,增加了pga_aggregate_target ,表示所有用户进程的PGA合计不能超过这个参数的值。该值默认为SGA大小的20%,最小不能低于10M。只要这个值非零,就表示PGA自动管理,ORACLE10G默认为自动管理。SQL> show parameters pgaNAME TYPE VALUE------------------------------------ ----------- ------------------------------pga_aggregate_target big integer 194MPGA组成PGA组成8i 10gbitmap_merge_area_size √ √create_bitmap_area_size √ √hash_area_size √ √sort_area_retained_size √ √sort_area_size √ √6、临时表空间的变化A、管理的差异10G对于整个数据库,增加了一个默认临时表空间,如果某个用户在建立时,没有指定临时表空间,那么,默认为数据库的临时表空间,同时,这个数据库的临时表空间可以修改。而对于8i,这个数据库的默认临时表空间为SYSTEM,而且不能修改。所以,在8i下,如果你建立一个用户不指定临时表空间,临时表空间就默认为SYSTEM了,当然,用户的临时表空间是可以修改的。A1、修改数据库的默认临时表空间Sql>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;A2、测试建立不指定临时表空间的用户8iC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 8.1.7.0.0 - Production on 星期二 10月 24 10:05:33 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.SQL> connect system/manager;已连接。SQL> CREATE USER test1 identified by test;用户已创建SQL> SELECT username, temporary_tablespace "Temporary Tablespace" FROM dba_users-------------------where username like 'TEST1';USERNAME Temporary Tablespace------------------------------ ------------------------------TEST1 SYSTEMSQL>SQL>--修改用户的临时表空间,可以指定为永久表空间SQL> alter user test temporary tablespace users;用户已更改。SQL>--通过V$DATAFILE可以查看临时文件SQL> select name from v$datafile;NAME-------------------------------------------------------------------------------D:/ORACLE/ORADATA/ORCL/SYSTEM01.DBFD:/ORACLE/ORADATA/ORCL/RBS01.DBFD:/ORACLE/ORADATA/ORCL/USERS01.DBFD:/ORACLE/ORADATA/ORCL/TEMP01.DBFD:/ORACLE/ORADATA/ORCL/TOOLS01.DBFD:/ORACLE/ORADATA/ORCL/INDX01.DBFD:/ORACLE/ORADATA/ORCL/DR01.DBFD:/ORACLE/ORADATA/ORCL/TEST.ORA已选择8行。SQL>10gC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 12:08:08 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> -- 1、查看当前数据库默认的临时表空间是什么?SQL> SELECT PROPERTY_NAME, PROPERTY_VALUEFROM DATABASE_PROPERTIESwhere property_name like 'DEFAULT_TEMP_TABLESPACE';PROPERTY_NAME PROPERTY_VALUE------------------------------ -----------------------------DEFAULT_TEMP_TABLESPACE TEMPSQL> --2、创建一个临时表空间,以便测试SQL> CREATE TEMPORARY TABLESPACE TESTtmp TEMPFILE'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/testtmp' SIZE 10M-------------------2 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;Tablespace createdSQL>--3、修改数据库默认临时表空间为新建立的临时表空间SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TESTtmp;Database alteredSQL>--4、显示是否修改成功SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES where property_namelike 'DEFAULT_TEMP_TABLESPACE';PROPERTY_NAME PROPERTY_VALUE------------------------------ ----------------------DEFAULT_TEMP_TABLESPACE TESTTMPSQL>--5、创建一用户,不指定临时表空间SQL> create user test identified by test;User createdSQL>--6、检查该用户的临时表空间为什么?SQL> SELECT username, temporary_tablespace "Temporary Tablespace" FROM dba_users where username like'TEST';USERNAME Temporary Tablespace------------------------------ -----------------TEST TESTTMPSQL>--通过以上实验,可以看出,如果创建用户不指定临时表空间,就会使用默认临时表空间。SQL>--7、注意,默认临时表空间是不能删除的,也不能脱机,如果要删除,必须转移默认临时表空间到其他临时表空间才行。SQL >--下面例子对此进行演示SQL> drop tablespace testtmp;drop tablespace testtmpORA-12906: 不能删除默认的临时表空间SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;Database alteredSQL> drop tablespace testtmp;Tablespace droppedSQL> --指定用户的临时表空间,不能指定为永久表空间SQL> alter user test temporary tablespace users;-------------------alter user test temporary tablespace usersORA-10615: Invalid tablespace type for temporary tablespaceSQL>--查看当前有哪些临时表空间,必须使用V$TEMPFILE;SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBFD:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBFD:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBFD:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBFD:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBFSQL> select name from v$tempfile;NAME--------------------------------------------------------------------------------D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TEMP01.DBFSQL>--8、修改临时表空间的大小SQL> ALTER DATABASE TEMPFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/temp01.DBF'RESIZE 550M;数据库已更改。SQL>B、建立的差异建立的差异,主要在于8I可以使用字典管理方式,而10G不允许使用字典管理方式建立临时表空间。具体如下:8i下建立临时表空间语句:CREATE TABLESPACE test DATAFILE 'D:/ORACLE/ORADATA/ORCL/TEST.ora' SIZE 5M TEMPORARY10g下建立临时表空间语句:CREATE TEMPORARY TABLESPACE TESTtmp TEMPFILE'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/testtmp' SIZE 10MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M7、表空间管理的变化-------------------A、管理的变化表空间管理变化8i 10g字典管理 √本地管理 √ √自动段空间管理 √1.表空间本地区管理,在8I就提供了,但不是必选,而且默认为字典管理,从920开始,就只有本地管理了.2.ASSM的tablespace是通过将SEGMENT SPACE MANAGEMENT AUTO子句添加到tablespace的定义句法里而实现的。通过使用位图freelist取代传统单向的链接列表freelist,ASSM的tablespace会将freelist的管理自动化,并忽略为独立的表格和索引指定PCTUSED、FREELISTS和FREELIST GROUPS存储参数的能力。B、设置的变化B1、默认管理方式的变化8iC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 8.1.7.0.0 - Production on 星期二 10月 24 14:52:43 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.SQL> connect system/manager;已连接。SQL> CREATE TABLESPACE "ZLTEST1" DATAFILE 'D:/ORACLE/ORADATA/ORCL/ZLTEST.ora' SIZE 5M;表空间已创建。SQL> SELECT TABLESPACE_NAME,extent_management2 FROM SYS.dba_tablespaces3 WHERE tablespace_name = 'ZLTEST1';TABLESPACE_NAME EXTENT_MAN------------------------------ ----------ZLTEST1 DICTIONARYSQL>10g:-------------------C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 14:54:49 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect system/oracle;已连接。SQL> CREATE TABLESPACE ZLTEST12 DATAFILE 'D:/oracle/product/10.2.0/oradata/orcl/ZLTEST.ora'3 SIZE 5M;表空间已创建。SQL> SELECT TABLESPACE_NAME,extent_management2 FROM SYS.dba_tablespaces3 WHERE tablespace_name = 'ZLTEST1';TABLESPACE_NAME EXTENT_MAN------------------------------ ----------ZLTEST1 LOCALSQL>通过以上的试验,可以看出,在8I上,建立的表空间,默认为字典管理,而在10G上,默认为本地管理。B2、建立表空间语法对比SQL>--1、建立本地管理表空间SQL> CREATE TABLESPACE ZLTEST22 DATAFILE 'D:/ORACLE/ORADATA/ORCL/ZLTEST2.ora' SIZE 5M EXTENT3 MANAGEMENT LOCAL;表空间已创建。SQL> SELECT TABLESPACE_NAME,extent_management2 FROM SYS.dba_tablespaces3 WHERE tablespace_name = 'ZLTEST2';TABLESPACE_NAME EXTENT_MAN------------------------------ ----------ZLTEST2 LOCALSQL>--2、建立字典管理表空间SQL> CREATE TABLESPACE ZLTEST32 DATAFILE 'D:/ORACLE/ORADATA/ORCL/ZLTEST3.ora' SIZE 5M EXTENT3 MANAGEMENT DICTIONARY;表空间已创建。SQL> SELECT TABLESPACE_NAME,extent_management2 FROM SYS.dba_tablespaces3 WHERE tablespace_name = 'ZLTEST3';-------------------TABLESPACE_NAME EXTENT_MAN------------------------------ ----------ZLTEST3 DICTIONARYSQL>--3、建立自动段空间管理SQL> CREATE TABLESPACE ZLTEST42 DATAFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/ZLTEST4.DBF'3 SIZE 100M4 EXTENT MANAGEMENT LOCAL5 SEGMENT SPACE MANAGEMENT AUTO;表空间已创建。SQL>8、SQL优化器模式的变化.A、几种优化器的意义当前的几种优化器优化器 描述RULE 根据ORACLE制定的规则选择SQL语句的执行路径CHOOSE 如果SQL语句涉及到的表进行分析,就使用CBO方式,否则,使用RULEFIRST_ROWS 对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化ALL_ROWS 对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化B、默认优化器的变化8I:choose10g: ALL_ROWS具体见下面的试验:1、8i的SQL默认优化器C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 8.1.7.0.0 - Production on 星期二 10月 24 15:55:05 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.SQL> connect system/manager;已连接。SQL> show parameters optimizer_modeNAME TYPE VALUE------------------------------------------------------- ------- ------------------------------optimizer_mode string CHOOSESQL>2、10G的SQL默认优化器C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 15:55:16 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect system/oracle;已连接。SQL> show parameters optimizer_mode;NAME TYPE VALUE------------------------------------ ----------- ------------------------------optimizer_mode string ALL_ROWSSQL>9、安全管理的变化A、用户登陆的变化8i中,sys用户和SYSDBA身份是独立的10G中,sys用户必须以sysdba身份登陆,当然,修改O7_DICTIONARY_ACCESSIBILITY=true,也可以不用SYSDBA身份登陆。8iC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 8.1.7.0.0 - Production on 星期二 10月 24 16:20:26 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.SQL> connect sys/change_on_install;已连接。SQL>10gC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 16:19:30 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect sys/oracle;ERROR:-------------------ORA-28009: connection as SYS should be as SYSDBA or SYSOPERSQL> connect sys/oracle as sysdba;已连接。SQL>B、INTERNAL用户变化8i:internal用户就sys的sysdba身份10g:取消了internal用户1、8iC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 8.1.7.0.0 - Production on 星期二 10月 24 16:26:21 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.SQL> connect internal/oracle已连接。SQL>2、10gC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 16:24:56 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect internal/oracleERROR:ORA-09275: CONNECT INTERNAL 不是有效的 DBA 连接SQL>B、锁定的变化8i:默认用户都没有锁定10g:默认用户中除了sys/system/sysman/dbsnmp外,其他用户都被锁定了。8iC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 8.1.7.0.0 - Production on 星期二 10月 24 15:55:05 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.-------------------SQL> connect system/manager;已连接。SQL>SQL> col username for a35;SQL> col account_status for a10 heading 'account | status'SQL> col profile for a15SQL> select username,account_status,profile from dba_users;accountUSERNAME status PROFILE----------------------------------- ---------- ---------------SYS OPEN DEFAULTSYSTEM OPEN DEFAULTOUTLN OPEN DEFAULTDBSNMP OPEN DEFAULTTEST OPEN DEFAULTAURORA$JIS$UTILITY$ OPEN DEFAULTOSE$HTTP$ADMIN OPEN DEFAULTAURORA$ORB$UNAUTHENTICATED OPEN DEFAULTORDSYS OPEN DEFAULTORDPLUGINS OPEN DEFAULTaccountUSERNAME status PROFILE----------------------------------- ---------- ---------------MDSYS OPEN DEFAULTCTXSYS OPEN DEFAULTSCOTT OPEN DEFAULTADAMS OPEN DEFAULTJONES OPEN DEFAULTCLARK OPEN DEFAULTBLAKE OPEN DEFAULTMTSSYS OPEN DEFAULTTEST1 OPEN DEFAULT已选择19行。SQL>10gC:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 15:55:16 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect system/oracle;已连接SQL> col username for a20;SQL> col account_status for a20 heading 'account | status'SQL> col profile for a15-------------------SQL> select username,account_status,profile from dba_users;accountUSERNAME status PROFILE--------------- ------------------------- ---------------MGMT_VIEW OPEN DEFAULTSYS OPEN DEFAULTSYSTEM OPEN DEFAULTDBSNMP OPEN MONITORING_PROFILESYSMAN OPEN DEFAULTTEST OPEN DEFAULTOUTLN EXPIRED & LOCKED DEFAULTMDSYS EXPIRED & LOCKED DEFAULTaccountUSERNAME status PROFILE--------------- ------------------------- ---------------ORDSYS EXPIRED & LOCKED DEFAULTEXFSYS EXPIRED & LOCKED DEFAULTDMSYS EXPIRED & LOCKED DEFAULTWMSYS EXPIRED & LOCKED DEFAULTCTXSYS EXPIRED & LOCKED DEFAULTANONYMOUS EXPIRED & LOCKED DEFAULTXDB EXPIRED & LOCKED DEFAULTORDPLUGINS EXPIRED & LOCKED DEFAULTSI_INFORMTN_SCH EXPIRED & LOCKED DEFAULTEMAaccountUSERNAME status PROFILE--------------- ------------------------- ---------------OLAPSYS EXPIRED & LOCKED DEFAULTSCOTT EXPIRED & LOCKED DEFAULTTSMSYS EXPIRED & LOCKED DEFAULTBI EXPIRED & LOCKED DEFAULTPM EXPIRED & LOCKED DEFAULTMDDATA EXPIRED & LOCKED DEFAULTIX EXPIRED & LOCKED DEFAULTSH EXPIRED & LOCKED DEFAULTDIP EXPIRED & LOCKED DEFAULTaccountUSERNAME status PROFILE--------------- ------------------------- ---------------OE EXPIRED & LOCKED DEFAULTHR EXPIRED & LOCKED DEFAULT-------------------C、登陆次数的变化8i:没有限定用户的登陆次数10g:限定用户登陆失败的次数,默认为10次,如果10次都没有成功,该用户将被锁定,因此,为了和8I一样,需要取消对登陆失败次数的限制8i:C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 8.1.7.0.0 - Production on 星期二 10月 24 16:44:15 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.SQL> connect system/manager;已连接。SQL> COL profile FOR A25;SQL> COL resource_name FOR A25 HEADING 'resource | name';SQL> COL limit for a15SQL> select PROFILE,RESOURCE_NAME,LIMIT2 from dba_profiles3 where resource_NAME ='FAILED_LOGIN_ATTEMPTS'4 ;10gresourcePROFILE name LIMIT------------------------- ------------------------- ---------------DEFAULT FAILED_LOGIN_ATTEMPTS UNLIMITEDSQL>C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 17:11:58 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect system/oracle;已连接。SQL>--1、查看当前失败重试次数Sql>COL profile FOR A25;SQL> COL resource_name FOR A25 HEADING 'resource | name';SQL> COL limit for a15SQL> select PROFILE,RESOURCE_NAME,LIMIT2 from dba_profiles3 where resource_NAME ='FAILED_LOGIN_ATTEMPTS';resource-------------------PROFILE name LIMIT------------------------- ------------------------- ---------------DEFAULT FAILED_LOGIN_ATTEMPTS 10MONITORING_PROFILE FAILED_LOGIN_ATTEMPTS UNLIMITEDSQL>--2、测试一个用户错误登陆10次,看结果SQL> create user test1 identified by test1;用户已创建。SQL> grant connect,resource to test1;授权成功。SQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon denied警告: 您不再连接到 ORACLE。SQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon deniedSQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon deniedSQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon deniedSQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon deniedSQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon deniedSQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon deniedSQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon denied-------------------SQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon deniedSQL> connect test1/test2;ERROR:ORA-01017: invalid username/password; logon deniedSQL>--在第十一次后,TEST1用户被锁定SQL> connect test1/test2;ERROR:ORA-28000: the account is lockedSQL> connect test1/test1;ERROR:ORA-28000: the account is lockedSql>-- 3、解锁SQL> connect system/oracle;已连接。SQL> alter user test1 account unlock;用户已更改。SQL> connect test1/test1;已连接。SQL>SQL>-- 4、为了和8I一样,不限制用户登陆失败次数,可以执行以下语句:SQL> connect system/oracle;已连接。SQL> ALTER PROFILE "DEFAULT" LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED2 ;配置文件已更改SQL>-- 这样,用户登陆失败多次,只要用户密码正确,都可以登陆。10、初始参数设置的变化A、使用init的变化参数文件对比参数文件类型参数文件格式修改方式 参数文件默认位置-------------------8i 初始化参数文件(pfile)文本文件手工修改 d:/oracle/admin/orcl/pfile/init.ora10g 服务器参数文件(spfile)二进制文件通过altersystem或altersession修改d:/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora说明:在8i中,ORACLE使用PFILE存储初始化参数设置,参数文件的修改需要手工进行,这些参数在实例启动时被读取,通过PFILE的修改需要重起实例才能生效;从ORACLE9I开始,ORACLE引入SPFILE文件,使用SPFILE用户可以通过ALTER SYSTEM或者ALTERSESSION来修改参数,而不再需要手工修改,反而手工去修改SPFILE文件,会导致该文件破坏,不能被ORACLE认识.对于动态参数,所有更改可以立即生效,同时用户可以选择更改只应用于当前实例,还是同时应用于SPFILE,对于静态参数,只能将变更应用到SPFILE文件,这些变更在数据库重启后生效.B、spfile的搜索顺序(1) spfile<oracle_sid>.ora,其默认目录如下:%ORACLE_HOME%/database(2) spfile.ora,其默认目录如下:%ORACLE_HOME%/database(3)init<ORACLE_SID>.ora, 其默认目录如下:%ORACLE_HOME%/databaseORACLE会按上面的顺序搜索以上的目录,来找到SPFILE。注意,我们可以结合PFILE和SPFILE使用,比如安装10G的双机,我们把SPFILE文件放到阵列柜上,那么ORACLE怎么知道SPFILE在阵列柜上,这时,我们可以通过定义PFILE文件,在PFILE文件中对SPFILE文件进行重定向,下面是一个例子:D:/>cd D:/oracle/product/10.2.0/db_1/databaseD:/oracle/product/10.2.0/db_1/database>type initorcl.oraSPFILE='H:/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora'阵列柜在H盘,这样,ORACLE就会自动找到这个SPFILE文件。C、设置初始参数的变化8i:通过手工去修改init.ora文件10g:通过alter system方式来修改在10g中修改参数processes为350.C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 23:11:24 2006-------------------Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect sys/oracle as sysdba;已连接。SQL> show parameters processes;NAME TYPE VALUE------------------------------------ ----------- ------------------------------aq_tm_processes integer 0db_writer_processes integer 1gcs_server_processes integer 0job_queue_processes integer 10log_archive_max_processes integer 2processes integer 150sql>--说明:processes是一个静态参数,只能在SPFILE中修改。重启数据库后,才能生效SQL> alter system set processes=350 scope=spfile;系统已更改。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startupORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 184552324 bytesDatabase Buffers 419430400 bytesRedo Buffers 7135232 bytes数据库装载完毕。数据库已经打开。SQL> show parameters processes;NAME TYPE VALUE------------------------------------ ----------- ------------------------------aq_tm_processes integer 0db_writer_processes integer 1gcs_server_processes integer 0job_queue_processes integer 10log_archive_max_processes integer 2processes integer 350SQL>-------------------D、SPFILE参数修改的范围有三个选项:memory,spfile及bothMemory:只改变当前实例运行,重新启动数据库失效Spfile:只改变SPFILE的设置,不改变当前实例运行,重新启动数据库后生效Both:同时改变实例及spfile,当前更改立即生效,重新启动数据库后仍然有效。下面举一个例子来说明这个问题:1.SCOPE=MEMORYSQL> show parameter db_cache_adviceNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_advice string ONSQL> alter system set db_cache_advice=off scope=memory;系统已更改。SQL> show parameter db_cache_adviceNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_advice string OFFSQL> --重新启动数据库,这个更改会丢失SQL> startup force;ORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 188746628 bytesDatabase Buffers 415236096 bytesRedo Buffers 7135232 bytes数据库装载完毕。数据库已经打开。SQL> show parameter db_cache_adviceNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_advice string ONSQL> --也就是说scope=memory的修改影响,不会跨越一次数据库的重新启动SQL>2.scope=spfileSQL>SQL> alter system set db_cache_advice=off scope=spfile;系统已更改。-------------------SQL> show parameter db_cache_adviceNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_advice string ONSQL> --这里值没有变,需要重新启动数据库后才能生效SQL> startup force;ORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 192940932 bytesDatabase Buffers 411041792 bytesRedo Buffers 7135232 bytes数据库装载完毕。数据库已经打开。SQL> show parameter db_cache_adviceNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_advice string OFFSQL> -- 对于静态参数,只能指定scope=spfilSQL>3.scope=bothSQL>SQL> -- 使用both选项,等同于不带参数的alter system语句SQL> show parameter db_cache_adviceNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_advice string OFFSQL> alter system set db_cache_advice=on scope=both;系统已更改。SQL> show parameter db_cache_adviceNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_advice string ONSQL> startup force;ORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 197135236 bytes-------------------Database Buffers 406847488 bytesRedo Buffers 7135232 bytes数据库装载完毕。数据库已经打开。SQL> show parameter db_cache_adviceNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_advice string ONSQL>E、相互之间的转化方法很多时候,我们错误的修改SPFILE的参数,导致ORACLE无法启动,这时,我们可以通过创建PFILE文件,修改其中的参数,再由pfile创建SPFILE的方式解决,最后,由spfile正常启动数据库。下面举一个例子来说明这个问题:C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 24 23:47:20 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect sys/oracle as sysdba;已连接。SQL> alter system set db_block_buffers=1000 scope=spfile;系统已更改。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startupORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information对于这种情况,是由于使用了sga_target自动管理SGA后,不能再设置db_block_buffers了,如果再设置它,系统就起不来了。这时,可以由spfile创建pfile,创建pfile可以在系统关闭的情况下进行SQL> create pfile='d:/initorcl.ora' from spfile='D:/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora';文件已创建。修改参数文件,删除其中的db_block_buffers参数:*.db_block_buffers=1000-------------------然后由pfile创建spfile 并启动数据库SQL> create spfile='D:/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora' from pfile='d:/initorcl.ora';create spfile='D:/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora' from pfile='d:/initorcl.ora'*第 1 行出现错误:ORA-32002: cannot create SPFILE already being used by the instanceSQL> shutdown immediateORA-01012: not logged onSQL> connect sys/oracle as sysdba;已连接到空闲例程。SQL> create spfile='D:/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora' from pfile='d:/initorcl.ora';文件已创建。SQL> startupORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 201329540 bytesDatabase Buffers 402653184 bytesRedo Buffers 7135232 bytes数据库装载完毕。数据库已经打开。SQL>F.如何判断当前是否使用SPFILE到底当前ORACLE是否是使用的SPFILE来启动的,可以通过查看参数SPFILE的值来判断,如果这个值为空,表明没有使用SPFILE来启动,否则,表示使用的SPFILE启动SQL> show parameter spfileNAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string D:/ORACLE/PRODUCT/10.2.0/DB_1/DBS/SPFILEORCL.ORASQL>11、归档日志设置的变化-------------------8i的归档日志设置,需要先进行初始参数log_archive_start=true的设置,才能启动归档日志,而在10g 中,不再需要设置这个参数,直接就可以启动到归档日志状态。下面以一个例子进行说明。8i:1、 修改初始参数文件D:/oracle/admin/orcl/pfile/init.ora# log_archive_start = true# log_archive_dest_1 = "location=D:/oracle/oradata/orcl/archive"# log_archive_format = %%ORACLE_SID%%T%TS%S.ARC去掉前面的#log_archive_start = truelog_archive_dest_1 = "location=D:/oracle/oradata/orcl/archive"log_archive_format = %%ORACLE_SID%%T%TS%S.ARC2、 关闭数据库C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 8.1.7.0.0 - Production on 星期三 10月 25 09:42:22 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.SQL> connect internal/oracle已连接。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。3、 启动到安装状态SQL> startup mountORACLE 例程已经启动。Total System Global Area 237856796 bytesFixed Size 75804 bytesVariable Size 80416768 bytesDatabase Buffers 157286400 bytesRedo Buffers 77824 bytes数据库装载完毕。SQL> archive log list;数据库日志模式 非存档模式自动存档 启用存档终点 D:/oracle/oradata/orcl/archive最早的概要信息日志序列 1当前日志序列 3SQL> --看到这里自动存档状态为启用,但数据库日志模式为非存档模式4、 以归档方式打开SQL> alter database archivelog;数据库已更改。5、 查看当前归档模式SQL> archive log list;-------------------数据库日志模式 存档模式自动存档 启用存档终点 D:/oracle/oradata/orcl/archive最早的概要信息日志序列 1下一个存档日志序列 3当前日志序列 3SQL> --这里数据库的日志模式已经变成存档模式了SQL> alter database open;数据库已更改。6、 测试归档模式A、 进行手工归档当前日志SQL> alter system archive log current;系统已更改。SQL>B、 查看D:/oracle/oradata/orcl/archive 下面是否已经有归档日志文件通过下面的图形,发现已经有归档日志文件了。7、 停止归档模式有时候,由于各种原因,我们需要把数据库由归档模式转为非归档模式,该怎么操作呢,具体见下面的操作。A、首先看看当前的模式SQL> archive log list;数据库日志模式 存档模式自动存档 启用-------------------存档终点 D:/oracle/oradata/orcl/archive最早的概要信息日志序列 1下一个存档日志序列 3当前日志序列 3B、转为非归档SQL> alter database noarchivelog;alter database noarchivelog*ERROR at line 1:ORA-01126: database must be mounted EXCLUSIVE and not open for this operation看来在数据库OPEN状态不能直接转为非归档,必须在MOUNT状态才能转。SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area 237856796 bytesFixed Size 75804 bytesVariable Size 80416768 bytesDatabase Buffers 157286400 bytesRedo Buffers 77824 bytes数据库装载完毕。SQL> archive log list;数据库日志模式 存档模式自动存档 启用存档终点 D:/oracle/oradata/orcl/archive最早的概要信息日志序列 1下一个存档日志序列 3当前日志序列 3SQL> alter database noarchivelog;数据库已更改。SQL> alter database open;数据库已更改。SQL> archive log list;数据库日志模式 非存档模式自动存档 启用存档终点 D:/oracle/oradata/orcl/archive最早的概要信息日志序列 1当前日志序列 3-------------------SQL>C、修改初始参数文件D:/oracle/admin/orcl/pfile/init.oralog_archive_start = truelog_archive_dest_1 = "location=D:/oracle/oradata/orcl/archive"log_archive_format = %%ORACLE_SID%%T%TS%S.ARC在前面加上## log_archive_start = true# log_archive_dest_1 = "location=D:/oracle/oradata/orcl/archive"# log_archive_format = %%ORACLE_SID%%T%TS%S.ARCD、关闭并重新启动数据库SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startupORACLE 例程已经启动。Total System Global Area 237856796 bytesFixed Size 75804 bytesVariable Size 80416768 bytesDatabase Buffers 157286400 bytesRedo Buffers 77824 bytes数据库装载完毕。数据库已经打开。E、查看模式SQL> archive log list;数据库日志模式 非存档模式自动存档 禁用存档终点 D:/oracle/ora81/RDBMS最早的概要信息日志序列 1当前日志序列 3SQL>这个时候,我们发现自动存档也为禁用了。10g下面看看10g的操作在10G中,不需要修改初始参数,就可以启动到归档模式1.关闭数据库C:/Documents and Settings/郑全>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 10月 25 10:16:32 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect sys/oracle as sysdba;已连接。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。-------------------ORACLE 例程已经关闭。SQL> startup mount;ORACLE 例程已经启动。Total System Global Area 612368384 bytesFixed Size 1250428 bytesVariable Size 213912452 bytesDatabase Buffers 390070272 bytesRedo Buffers 7135232 bytes数据库装载完毕。2、查看log_archive_start参数SQL> show parameters log_archive_startNAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_start boolean FALSE3、查看归档模式SQL> archive log list数据库日志模式 非存档模式自动存档 禁用存档终点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 9当前日志序列 114、直接转为归档模式SQL> alter database archivelog;数据库已更改。SQL> alter database open;数据库已更改。5、查看归档模式,发现已经变为归档了。SQL> archive log list;数据库日志模式 存档模式自动存档 启用存档终点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 9下一个存档日志序列 11当前日志序列 11SQL>到此,在10G的归档日志设置已经完成,其他操作和8I就一样了。12、后台服务的变化ORACLE服务对比8i 10g 描述-------------------OracleOraHome81Agent √OEM代理服务,接收和响应来自OEM控制台的任务和事件请求,只有使用OEM管理数据库时才需要,它的缺省启动类型为自动。服务进程为DBSNMP.EXE,参数文件snmp_rw.ora,日志文件nmi.log,控制台LSNRCTL.EXE,默认端口1748OracleOraHome81ClientCache √名字缓存服务,服务缓存用于连接远程数据库的OracleNames 数据。它的缺省启动类型是手动。然而,除非有一台Oracle Names 服务器,否则没有必要运行这个服务。服务进程为ONRSD.EXE,参数文件NAMES.ORA,日志文件ONRSD.LOG,控制台NAMESCTL.EXE。OracleOraHome81DataGatherer √性能包数据采集服务,除非使用Oracle CapacityPlanner 和 Oracle Performance Manager,否则不需要启动,它的缺省启动类型是手动。服务进程为VPPDC.EXE,日志文件alert_dg.log,控制台vppcntl.exe。OracleOraHome81HTTPServer √Oracle提供的WEB服务器,一般情况下我们只用它来访问Oracle Apache 目录下的Web 页面,比如说JSP 或者modplsql 页面。除非你使用它作为你的HTTP服务,否则不需要启动(若启动它会接管IIS的服务),它的缺省启动类型是手动。服务进程为APACHE.EXE,参数文件httpd.conf,默认端口80。OracleOraHome81PagingServer √通过一个使用调制解调器的数字传呼机或者电子邮件发出警告(没试过),它的缺省启动类型是手动。服务进程PAGNTSRV.EXE,日志文件paging.log。OracleOraHome81TNSListener √监听器服务,服务只有在数据库需要远程访问时才需要(无论是通过另外一台主机还是在本地通过 SQL*Net网络协议都属于远程访问),不用这个服务就可以访问本地数据库,它的缺省启动类型为自动。服务进程为TNSLSNR.EXE,参数文件Listener.ora,日志文件listener.log,控制台LSNRCTL.EXE,默认端口1521、1526OracleServiceORCL √数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程为ORACLE.EXE,参数文件initSID.ora,日志文件SIDALRT.log,控制台SVRMGRL.EXE、SQLPLUS.EXEOracleDBConsoleorcl √ ORACLE企业管理器服务OracleJobSchedulerORCL √ Scheduler服务OracleOraDb10g_home1iSQL*Plus √ iSQLPLUS服务OracleOraDb10g_home1TNSListener √ ORACLE监听服务OracleServiceORCL √ ORACLE实例服务说明:我们一般使用OracleOraDb10g_home1TNSListener,OracleServiceORCL即可,双机上也就放这两个服务.13、connect角色权限的变化connect角色权限对比8i 10gALTER SESSION √ √CREATE CLUSTER √CREATE DATABASE LINK √CREATE SEQUENCE √-------------------CREATE SESSION √CREATE SYNONYM √CREATE TABLE √CREATE VIEW √说明:无.14、导入导出工具的变化A、跨平台传输表空间10g新增跨平台传输表空间,也就是说在unix下的ORACLE的表空间,可以通过exp直接传输到WINDOWS上来。这个功能在10G以前的版本上是没有的假设您想从一台在 Intel 体系结构上运行 HP-UX 操作系统的主机 SRC1 中将一个表空间 USERS 传输到运行Microsoft Windows 操作系统的计算机 TGT1 上。表空间 USERS 的数据文件是 users_01.dbf。下面是操作的顺序:1.使表空间为只读:alter tablespace users read only;2.导出表空间。在操作系统提示符下执行:exp tablespaces=users transport_tablespace=y file=exp_ts_users.dmpexp_ts_users.dmp 文件只包含元数据(不是表空间 USERS 的内容)因此它将非常小。3.将文件 exp_ts_users.dmp 和 users_01.dbf 拷贝至主机 TGT1。4.将表空间插入到数据库中。在操作系统命令提示符下执行下面的语句:imp tablespaces=users transport_datafiles='users_01.dbf' tablespace=y file=exp_ts_users.dmp这时,目标数据库将有一个名称为 USERS的表空间,并将提供该表空间的内容不过,不是任何表空间之间都可以直接传输,通过以下语句,可以看出哪些系统之间可以转换, 只要ENDIAN_FORMAT相同的,就可以直接转换:SQL> select PLATFORM_NAME,ENDIAN_FORMATfrom v$transportable_platformorder by platform_id;PLATFORM_NAME ENDIAN_FORMAT----------------------------------- ---------------Solaris[tm] OE (32-bit) BigSolaris[tm] OE (64-bit) Big-------------------HP-UX (64-bit) BigHP-UX IA (64-bit) BigHP Tru64 UNIX LittleAIX-Based Systems (64-bit) BigMicrosoft Windows IA (32-bit) LittleMicrosoft Windows IA (64-bit) LittleIBM zSeries Based Linux BigLinux IA (32-bit) LittleLinux IA (64-bit) LittlePLATFORM_NAME ENDIAN_FORMAT----------------------------------- ---------------Microsoft Windows 64-bit for AMD LittleLinux 64-bit for AMD LittleHP Open VMS LittleApple Mac OS BigSolaris Operating System (x86) LittleIBM Power Based Linux Big已选择17行。SQL>B、expdp/impdpEXPDP/IMPDP数据泵是10G新增加的功能,速度要比8I的EXP/IMP快一些,ORACLE也推荐使用它。今后的版本,EXP/IMP可能淘汰。注意:expdp是运行在服务器本地的,所以,远程通过EXPDP导出的文件,是放在服务器本地的.下面举一个例子,导出SYSTEM用户的数据SQL> CREATE DIRECTORY dmpdir AS 'd:/data';目录已创建。expdp system/oracle DUMPFILE=system.dmp DIRECTORY=dmpdir SCHEMAS=system导入数据:impdp system/oracle DIRECTORY=dmpdir DUMPFILE=system.dmp另外:关于EXPDP/IMPDP和EXP/IMP的对比,可以参见EYGLE的文章:http://www.eygle.com/10g/10g_expdp&impdp_speed.htm15、冷备份的差异数据冷备份对比8i 10g-------------------D:/oracle/admin/orcl/pfile/init.ora D:/oracle/product/10.2.0/db_1/dbs/SPFILEORCL.ORAD:/oracle/ora81/database/PWDorcl.ora D:/oracle/product/10.2.0/db_1/database/PWDorcl.oraD:/oracle/oradata/目录下的所有文件 D:/oracle/product/10.2.0/oradata/目录下的所有文件说明:10g下面不用再备份init初始参数了.备份了也没有用.16、删除差异8i:对表使用DROP TABLE删除后,就不存在了。10g:使用DROP TABLE删除表后,系统只是把他放到回收站去了,如果需要真正删除,需要使用purge recyclebin;命令才能砌底删除,不过,一般可以不用管这个。
Oracle10g与8i常规操作上的差异
最新推荐文章于 2024-09-22 06:07:54 发布