Oracle 9i数据库
满天星Oracle9i数据库安装指南
Oracle 9i数据库快速安装指南注:安装光盘共3张,安装过程中将提示替换光盘,请按照提示进行操作即可。
一、将ORACLE的第一张安装光盘放入光驱中,光盘会自动启动。
若没有自动启动,请打开资源管理器,运行光盘驱动器下的setup.exe文件。
看到欢迎界面后,点“开始安装”即可。
为了避免不必要的麻烦,请先确认操作系统上没有曾经安装过的旧版Oracle,如有疑问,可点选“已安装产品”进行具体查询,确认后,按“下一步”。
二、确定Oracle主目录名及安装路径。
使用默认路径即可,或安装在D盘,单击“下一步”。
三、选择要安装的产品,服务器安装请选择Oracle Database 9.2.0.1.0,然后点“下一步”。
四、选择安装的类型为“标准版”,然后点“下一步”。
五、选择数据库配置为“通用”,然后点“下一步”。
六、选择系统默认的端口即可,然后点“下一步”。
七、输入以下数据库标识(重要),然后“下一步”。
八、选择数据库文件的存放位置,默认路径即可,然后“下一步”。
九、选择数据库字符集,一般中文字符集使用ZHSGBK16,若使用字符集不当的话数据库中会出现很多乱码。
十、Oracle将列出选取安装的产品列表,如下图,点“安装”。
十一、开始复制文件,在安装的过程中会弹出两次对话框,要求插入“第二张”和“第三张”光盘,根据提示进行操作便可。
十二、生成数据库并进行如下配置(重要),完成后按确定。
十三、等待数据库完成配置,当出现如下界面表示安装成功,按“退出”完成安装。
注:若退出安装后,发现标题名为Oracle HTTP Server的控制窗口仍在,可以将其关闭。
Oracle 9i 数据库性能调优技术-les02
Maintenance of the Alert Log File
• •
The alert log file consists of a chronological log of messages and errors. Check the alert log file regularly to:
2-21
Copyright © Oracle Corporation, 2002. All rights reserved.
Tuning Using Oracle Expert
2-14
Copyright © Oracle Corporation, 2002. All rights reserved.
Statspack
• • • • •
Installation of Statspack using the spcreate.sql script Collection of statistics execute statspack.snap Automatic collection of statistics using the spauto.sql script Produce a report using the spreport.sql script To collect timing information, set TIMED_STATISTICS = True
2-7
Copyright © ll rights reserved.
Oracle Enterprise Manager Console
2-9
Oracle 8i、9i、10g、11g不同版本的比较
Oracle 8i、9i、10g、11g不同版本的比较Oracle 9i比8i多了哪些新特性?简要说:9i更易于管理。
详细说:并发集群,8i OPS升级为9i RAC,8i结点间用硬盘交换信息,9i结点间采用高速网线的缓存熔合(Cache Fusion)技术交换信息,交换速度提高100倍以上。
9i可以在线修改内核参数和内存分配,8i不行。
数据文件和表空间管理,8i手工管理,9i自动管理。
9i比8i增强了对ANSI SQL99的支持。
9i比8i增强了故障后的快速恢复(Fast-start)。
8i只支持物理备份(physical backup)数据库,9i还增加了支持逻辑备份(logical backup)数据库,使备份数据库除了作为主数据库的镜像外,还可以提供其他数据服务.Oracle 10g比9i多了哪些新特性?简要说:10g支持网格(Grid),支持自动管理(Automatic Management)。
详细说:10g的g是”Grid”缩写,支持网格计算,即,多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网格中均衡(Load Balance),按需增删结点,避免单点故障(Single Point of Faliure)。
安装容易,安装工作量比9i减少了一半。
新增基于浏览器的企业管理器(Enterprise Manager)。
自动存储管理(ASM),增删硬盘不再需要操作系统管理员设置的镜像、负载均衡、物理卷、逻辑卷、分区、文件系统,只要打一条Oracle命令,ASM会自动管理增加或删除的硬盘。
内存自动化,根据需要自动分配和释放系统内存。
SQL性能调整自动化。
免费提供基于浏览器的小应用开发工具Oracle Application Express(原名HTML DB),支持10g和9iR2。
快速纠正人为错误的闪回(Flashback)查询和恢复,可以恢复数据库、表甚至记录。
数据泵(Data Pump)高速导入、导出数据,比传统方法导出速度快两倍以上,导入速度快15–45倍。
Oracle 9i
Oracle 9iORACLE9i数据库技术Oracle数据库效劳器的最新版本Oracle 9i是Oracle数据库效劳器家族中的新一代旗舰产品。
ORACLE数据库产品具备许多技术特性。
1-先进性ORACLE公司成立以来,在数据库领域始终处于技术领先地位。
通过自身产品在技术的不断创新和对信息技术开展方向的敏锐洞察,始终领导数据库产品的开展。
不管在哪个时期,都具有技术优势。
为了实现事务处理的高性能,Oracle 9i的多线程的、多效劳器的体系结构能够协调处理上万条并发用户请求。
单个请求均被放入队列,并由最少量的效劳器进程处理。
Oracle 9i的可伸缩的,可靠的体系结构推出了无法匹敌的任务关键系统所需的可伸缩性、可用性以及高性能。
Oracle 9i和Oracle 9i Real Application Server能充分利用所有的硬件系统资源,从单处理器,并行多处理器,集群系统(cluster)到大规模并行处理器(MPP)系统。
Oracle支持行级封锁技术来解决写/写冲突,并支持数据多版本来解决读/写冲突。
行级封锁因为占用的系统资源最少,能最大限度地提高系统的吞吐量。
数据多版本(读一致性快照)防止了读锁,使系统对锁的管理因锁种类的减少而大大简化。
Oracle杜绝锁升级,防止死锁的发生。
并且,Oracle有专门的后台进程监控和解决死锁,一旦出现死锁,自动解除死锁。
Oracle9i 的一个功能,是能够将业务数据和索引进行分区。
经分区的数据和索引具有以下优点:缩短对长时间运行的查询的响应时间;分区减少了磁盘I/O 操作减少对并发查询的响应时间;I/O 操作在每个分区上同时进行索引维护更加轻松,因为可进行分区级创立和重构操作可以重建分区上的索引,而不影响在其他分区上的查询可以更改每个本地索引的存储参数,而与其他分区无关对于民政部民政公用政务平台系统,需要存贮大量的资料、档案和各地的业务数据,同时,还需要同协作机构进行数据交换,而Oracle9i支持最大为512Peta bytes的数据库(1 Petabytes = 1000TB =1000,000GB),较好地支持大型存储设备的管理操作,整个管理过程对用户是完全透明的。
oracle9i的安装和配置
Oracle 9i数据库安装及配置3.1开始安装将Oracle安装包拷贝到某个硬盘下,双击Disk1目录下的Setup.exe程序,或使用Oracle安装光盘进行安装,安装程序自动运行,此时出现下图:3.2 配置数据库安装路径点击“下一步”:源路径为:D:\software\oracle9i\92010NT_Disk1\stage\products.jar,即安装文件所在目录。
目标路径:D:\oracle\ora92,我们这里可以修改路径,本例按默认路径进行安装。
3.3 选择可用产品点击“下一步”:此图中,有三个选项可以选择,本例安装Oracle数据库服务器,请选择“Oracle9i Database 9.2.0.1.0”,然后单击“下一步”。
3.4 选择安装类型选择“企业版”,单击“下一步”。
3.5 数据库配置选择“通用”,单击“下一步”。
3.6 数据库标识配置输入全局数据库名:DB86013.7 数据库文件目录设定本例选择默认路径,点击“下一步”。
3.8选择数据库字符集本例选择“使用缺省字符集”,点击“下一步”。
3.9 文件摘要单击“安装”。
3.10 更换安装盘安装过程中,需要更换安装盘:单击“浏览”,找到相应安装盘,点击“确定”。
3.11 数据库配置助手初始化之后,出现如下界面:在“更改口令”下,重新设定管理员密码。
至此,Oracle安装结束。
3.12 创建表空间和用户点击开始程序,进入到Oracle enterprise manager console界面,创建表空间:SQLPLUSDB。
选择“独立启动”,点击“确定”。
选择“DB8601”,单击右键,点击“连接”。
输入用户名:system,口令:******(连接身份:normal),点击“确定”。
创建一个名为SQLPLUSDB的表空间,和一个名为SQLPLUS,口令为*****的用户。
3.12.1 创建表空间选择“存储”下的“表空间”,选择“创建”:输入表空间名称:SQLPLUSDB,修改数据文件的大小:2000M。
oracle各个版本之间的区别
Oracle的各个版本之间的区别一、Oracle 9i比8i多了哪些新特性?1、并发集群,8i OPS升级为9i RAC,8i结点间用硬盘交换信息,9i结点间采用高速网线的缓存熔合(Cache Fusion)技术交换信息,交换速度提高100倍以上。
2、9i可以在线修改内核参数和内存分配,8i不行。
数据文件和表空间管理,8i手工管理,9i自动管理。
3、9i比8i增强了对ANSI SQL99的支持。
4、9i比8i增强了故障后的快速恢复(Fast-start)。
5、8i只支持物理备份(physical backup)数据库,9i还增加了支持逻辑备份(logical backup)数据库,使备份数据库除了作为主数据库的镜像外,还可以提供其他数据服务.二、Oracle 10g比9i多的新特性?1. 10g支持网格计算,即多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网格中衡(Load Balance),按需增删结点,避免单点故障(Single Point of Faliure)2.10g容易安装,且安装速度比9i少了一半3.新增基于浏览器的企业管理器(Enterprise Manager)。
4.支持自动管理(Automatic Management)增删硬盘不再需要操作系统管理员设置的镜像、负载均衡物理卷、逻辑卷、分区、文件系统,只要打一条Oracle命令,ASM会自动管理增加或删除的硬盘。
5.内存自动化,根据需要自动分配和释放系统内存。
6.SQL性能调整自动化。
7.快速纠正人为错误的闪回(Flashback)查询和恢复,可以恢复数据库、表甚至记录。
8.数据泵(Data Pump)高速导入、导出数据,比传统方法导出速度快两倍以上,导入速度快15--45倍.9.精细审计(Fine-Grained Auditing),记录一切对敏感数据的操作10.存储数据的表空间(Tablespace)跨平台复制,极大的提高数据仓库加载速度。
Oracle系列数据库版本区别
Oracle系列数据库版本区别Oracle数据库的相关产品,从Oracle2.0开始(没有1.0)到Oracle7.3.4皆只是⽐较简单的相关Oracle版本号,以Oracle8开头,就出现数据库产品特性标识符,如Oracle8i和9i。
这个i是Internet的缩写,表⽰该产品全⾯⽀持Internet应⽤,简单⼀点说,就是融⼊了JAVA技术和对JAVA的⽀持.从Oracle10称为10g,这个g是Grid的缩写,表⽰⽀持"⽹格运算",简单⼀点说,就是更好地⽀持集群和多点应⽤,到⽬前为⽌,最新版的是Oracle11g,⽽Oracle还有⼀个产品,称为Oracle11i,全称是Oracle Applications 11i,这⾥的i是Intelligence的缩写,表⽰电⼦商务智能软件,它不是数据库产品,⽽是⼀整套电⼦商务套件,是⼀套全⾯的商务应⽤软件,主要包括以下功能模块:.财务管理--Oracle财务管理系统(Financials).⼈⼒资源管理--Oracle⼈⼒资源管理系统(Human Resources Management System).商务智能--Oracle电⼦商务智能(E-Business Intelligence)是⼀套⽤于报表编制和分析的应⽤程序.物流管理--Oracle物流管理系统(Logistics).维护管理--Oracle企业资产管理(Enterprise Asset Management)、Oracle综合维护、维修和⼤修管理系统(Maintenance,Repair,and Overhaul).制造管理--Oracle制造管理系统(Manufacturing).市场营销管理--Oracle市场营销管理系统(Marketing).订单履⾏管理--Oracle订单履⾏管理系统(Order Fulfillment).产品⽣命周期管理--Oracle产品⽣命周期管理系统(Product Lifecycle Management).采购管理--Oracle采购管理系统(Procurement).项⽬管理--Oracle项⽬管理系统(Projects).销售管理--Oracle销售管理系统(Sales).供应链计划--Oracle供应链计划系统(Supply Chain Planning)Oracle 10g分为4个Oracle版本,分别是:1.Oracle Database Standard Edition One,最基本的商业版本,包括基本的数据库功能。
Oracle 9i 数据库性能调优技术-20
•
20-5
Copyright © Oracle Corporation, 2002. All rights reserved.
Workshop Database Configuration
• • • • • •
The database consists of a sample schema. Users log in as oltp or dss depending on the nature of their work. End users have access to sample schema objects. There are seven tablespaces: system, undotbs, temp, users, indx, sample, tools. The DBA account is system/oracle. The sys account is sys/oracle.
Summary
In this lesson, you should have learned how to: • Follow the Oracle tuning methodology:
– Collect and review statistics. – List the objectives for enhanced performance before modifications. – Modify the instance and the database. – Re-collect and review new statistics. – Compare the new results with the objectives.
20-8
Copyright © Oracle Corporation, 2002. All rights reserved.
Oracle 9i 数据库性能调优技术-les13
•
Pros
– Are less likely to extend dynamically – Deliver small performance benefit – Enable you to read the entire extent map with a single I/O operation
SQL> EXECUTE dbms_stats.gather_table_stats > ('HR','EMPLOYEES'); PL/SQL procedure successfully completed. SQL> SELECT num_rows, blocks, empty_blocks as empty, 2 avg_space, chain_cnt, avg_row_len 3 FROM dba_tables 4 WHERE owner = 'HR' 5 AND table_name = 'EMPLOYEES'; NUM_ROWS BLOCKS EMPTY AVG_SPACE CHAIN_CNT AVG_ROW_LEN -------- ------ ----- --------- --------- ----------13214 615 35 1753 0 184
13-14
Copyright © Oracle Corporation, 2002. All rights reserved.
Database Block Size
Minimize block visits by: • Using a larger block size • Packing rows tightly • Preventing row migration
Oracle 9i 数据库性能调优技术-les16
16-4
Copyright © Oracle Corporation, 2002. All rights reserved.
Refreshing Materialized Views
The required parameters are: • A comma-delimited list of materialized views to refresh • The refresh method: F-Fast, ?-Force, C-Complete • Refresh after errors
– True: allows the process to continue after an error – False: refresh will stop with errors (default value)
• •
For warehouse refresh, set them to False, 0,0,0. Atomic refresh
SQL> select operation, object_name 2 from v$sql_plan 3 where object_name like 'SALES%'; OPERATION NAME ---------------------- ----------------SELECT STATEMENT TABLE ACCESS SALES_SUMMARY
16-2
Copyright © Oracle Corporation, 2002. All rights reserved.
Materialized Views
• • •
Instantiations of a SQL query May be used for query rewrites Refresh types:
第03章 Oracle 9i安装和配置
3-44
1。 在DOS模式下,启动数据库服务器 。 模式下, 模式下
2。 在企业管理器中,启动数据库服务器 。 在企业管理器中, 见操作演示
3-27
在两次换盘后, 的自动配置界面: 在两次换盘后,进入图 30的自动配置界面: 的自动配置界面
图 30
3-28
•
在Oracle Net Configuration Assistant自动运行 自动运行 过程中, 过程中,会弹出如图 31所示的欢迎使用对话框 所示的欢迎使用对话框
图 31 配置网络服务
3-22
如何查询数据库运行模式: 恢复]选项卡 如何查询数据库运行模式:选择 [恢复 选项卡,如下图 恢复 选项卡,如下图:
3-23
安装Oracle 9i客户端 安装 客户端 要从其它计算机上访问数据库服务器, 要从其它计算机上访问数据库服务器,必须要安装 Oracle 9i的客户端软件。图 25中进行选择。 的客户端软件。 中进行选择。 的客户端软件 中进行选择
图 15
3-18
完成帐户和密码设置以后,系统完成所有配置工作, 完成帐户和密码设置以后,系统完成所有配置工作, 所示的安装结束界面。 弹出如图 16所示的安装结束界面。 所示的安装结束界面
图 16
3-19
查看当前Oracle 9i服务器的配置情况 查看当前 服务器的配置情况
企业管理器中-->例程 图20 企业管理器中 例程
3-45
关闭服务器的4种方式 关闭服务器的 种方式
Oracle 9i 数据库性能调优技术les12
Index Statistics
• • • • • • •
Index level (height) Number of leaf blocks and distinct keys Average number of leaf blocks per key Average number of data blocks per key Number of index entries Clustering factor Data dictionary view: dba_indexes
•
OPTIMIZER_DYNAMIC_SAMPLING > 1
– The higher the value the more aggressive dynamic sampling is performed. The upper limit is 10.
12-9
Copyright © Oracle Corporation, 2002. All rights reserved.
Managing Statistics
Copyright © Oracle Corporation, 2002. All rights reserved.
Objectives
After completing this lesson, you should be able to do the following: • Collect system statistics • Collect statistics on indexes and tables • Collect and manage histogram statistics • Copy statistics between databases • Monitor indexes to determine usage
Oracle 9i 数据库性能调优技术-les14
ORD_NO -----101 102
ORD_DT CUST_CD ----------05-JAN-97 R01 07-JAN-97 N45
Unclustered orders and order_item tables
Clustered orders and order_item tables
14-7
14-16
Copyright © Oracle Corporation, 2002. All rights reserved.
Partitioned Indexes for Scalable Access
Global Nonpartitioned index Global Partitioned Index
Partitioned table
14-3
Copyright © Oracle Corporation, 2002. All rights reserved.
Selecting the Physical Structure
Factors affecting the selection: • Rows read in groups • SELECT or DML statements
Copyright © Oracle Corporation, 2002. All rights reserved.
Cluster Types
Index cluster Hash clusterLeabharlann Hash function
14-8
Copyright © Oracle Corporation, 2002. All rights reserved.
99-Jan
99-Feb 99-Mar 99-Apr 99-May 99-Jun
Oracle 9i安装
Oracle 9i数据库安装一、安装前的准备1、本文档说明的是Oracle9i 的安装过程,在安装之前请准备好安装盘或安装包。
2、Oracle所需配置是:4G内存,windows2003系统二、安装过程1、将安装盘放入光驱中,或解压安装包,运行setup.exe文件,则会弹出以下提示窗口:2、点击“下一步”,会弹出文件定位窗口,其中“源”—“路径”所指的是安装盘或安装包的路径,一般不用修改。
“目标”—“路径”则为oracle主目录的安装路径,一般选择D盘。
修改好之后,点击“下一步”。
注意:安装路径不可以出现中文,否则安装就会出错。
3、这时,弹出的窗口为“产品选择”窗口,默认为第一项,点击“下一步”4、安装类型提示窗口,选择“企业版”,点击“下一步”。
5、数据库配置窗口,选择“通用”,点击“下一步”6、数据库端口号的配置,一般为默认端口号就行,不需要修改。
7、数据库标识窗口,作用是创建全局数据库,全局数据库名称可根据自己的需要进行填写(如esms或者均可)。
填写完毕后,点击“下一步”其中,“SID”的值默认是与“全局数据库名“相同。
8、数据库文件的存放位置,默认一般与选择的安装目录相同,如下图,存放路径在D盘,也可根据实际情况进行修改,一般不建议这样做。
点击“下一步”9、数据库字符集,默认为第一项,不需要修改,点击“下一步”10、点击“安装”按钮,开始安装oracle9i数据库的组件。
11、下图为安装过程注意:在安装过程中会出现dos窗口,不能随意关掉否则会中断安装。
安装完毕后dos窗口可以关闭。
12、因为oracle9i安装盘分为三张,在安装过程中,会弹出更换光盘的提示,如下图:根据提示,将磁盘2或3放入光驱中,点击“确定”,继续安装。
如果使用的是安装包,则点击“浏览”,选则安装包2或3的解压位置打开安装包,在路径中显示出安装包所在的路径后,点击“确定”,继续安装。
13.在安装过程中会自动创建数据库,出现如下界面:下一步出现输入sys和system的口令的窗口:输入sys和system的口令,并且要记录下来,以防忘记密码。
oracle数据库用户创建、权限分配,以及导入,导出数据
下面数据库所用的版本为ORACLE 9I (9.2.0),安装数据库时,数据库系统会创建一个数据库实例,其中:安装目录选为:\oracle,数据库名与数据库SID号都输入:ora9i数据库安装完成后,有两个系统级的用户:1、system 默认密码为:manager2、sys 默认密码为:change_on_install在安装的数据库目录中找到\oracle\product\9.2\bin 中的sqlplus程序,运行:./sqlplus system/manager@ora9i用system用户创建自己的用户、权限;sql语句如下:1、创建用户:create user username identified by pwd default tablespace users Temporary TABLESPACE Temp;2、用户授权grant connect,resource,dba to business;3、提交:commit;如上面所述利用sqlplus以username 用户登陆,专输入:@创建数据库的脚本名称.sql回车,即可创建数据库中的表、视图、存储过程等。
如上面所述利用sqlplus以username 用户登陆,假设有两个数据库 9.0.1 与 9.0.21.导出数据exp system用户/system的密码@服务器名 owner用户名=“oradial ” fi le="oradial.dmp"说明:(1) 如果该命令是在本地执行,则不用指定服务器名(2) owner用户名,通过sys用户的登录所创建的用户名。
同时授予的权限包括connect , dba , resource ,还要创建表空间。
(3) system用户名,owner用户名是9.0.1数据库中的用户2.导入数据imp system用户/system的密码@服务器名 file=oradial.dmp fromuser(用户名)=oradial touser(用户名)=abc说明:(1) 如果该命令是在本地执行,则不用指定服务器名(2) touser用户名,通过sys用户的登录所创建的用户名。
安装Oracle 9i加载数据库时出错的解决方法
YJ:安装Oracle 9i加载数据库时出错的解决方法作者: qgrape, 出处:blog,责任编辑: 李书琴,2008-09-18 09:50安装Oracle9I出现"加载数据库时出错:areasQueries错误",提示停止该组件或所有组件安装,之后安装不能进行。
问题解决:试了很多方法,也在Metalink找答案,仍不能解决,耽误了半天时间,后来去看了一下oracle安装的文件记录,发现问题所在,原来我的oracle安装目带有汉字。
d:\oracle安装\oracle9i\disk1问题就在这个"安装",把它改为d:\oracle\oracle9i\disk1Ok一切解决。
原来看到有很多人问类式的问题,没有留心过,这应该是个解决方法,及问题所在文件察看:Program Files\Oracle\Inventory\oui\srcs.lst文件内容:SourceConfigsStagingAreasStgArea URL="D:\Oracle\Windows\Oracle9201\Disk1\stage\products.jar" /StgArea URL="D:\Oracle???\Windows\Oracle9201\Disk1\stage\products.jar" / StgArea URL="D:\Oracle???\Oracle9i\disk1\stage\products.jar" //StagingAreasServerConfigsServerConfigsSourceConfigs这里的???就是安装时的那个"安装"2字,因此不能进行下去,也算教训,也算经验,与大家共享一下。
Oracle 9i 数据库性能调优技术-les15
Bitmap Indexes
• • • • •
Used for low-cardinality columns Good for multiple predicates Uses minimal storage space Best for read-only systems Good for very large tables
15-13
Copyright © Oracle Corporation, 2002. All rights reserved.
Reverse Key Index
KEY ----1257 2877 4567 6657 8967 9637 9947 ...
ROWID ------------------0000000F.0002.0001 0000000F.0006.0001 0000000F.0004.0001 0000000F.0003.0001 0000000F.0005.0001 0000000F.0001.0001 0000000F.0000.0001 ...
Oracle Enterprise Manager: Index Management
15-16
Copyright © Oracle Corporation, 2002. All rights reserved.
Index-Organized Tables
Regular table access
15-11
Copyright © Oracle Corporation, 2002. All rights reserved.
Creating and Maintaining Bitmap Indexes
SQL> CREATE BITMAP INDEX departments_idx 2 ON hr.departments(manager_id) 3 STORAGE (INITIAL 200K NEXT 200K 4 PCTINCREASE 0 MAXEXTENTS 50) 5* TABLESPACE indx;
ora9i精简版安装步骤和常见问题
如果连接不成功,用前面的部分检查网络服务名部分部分是否正确,如果确信网络服务名部分正确而且所有的客户端都连不上数据库则可能为系统TCP/IP或Oracle系统有问题,建议重新安装数据库。
常见故障解决办法:
TNS-12154 (ORA-12154):TNS:could not resolve service name
test =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=)
)
)
)
(CONNECT_DATA=(SERVICE_NAME=)
)
)
sql*plus运行基本机理:
在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/manager@ ,然后再到tnsnames.ora文件中找网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如#NAMES.DEFAULT_DOMAIN = 。假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找test网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。
Oracle 9i & PLSQL 全简体中文版数据库安装过程(图解)
Oracle 9i & PLSQL 全简体中文版数据库安装过程(图解)Oracle 安装的过程的教程很多,如果你搜索到我的博客,希望能给你带来帮助。
Oracle 9i 下载地址:/otn/nt/oracle9i/9201/92010NT_Disk1.zip /otn/nt/oracle9i/9201/92010NT_Disk2.zip /otn/nt/oracle9i/9201/92010NT_Disk3.zip双击第一张光盘的Setup.exe 进入安装程序,下一步选择安装路径选择第一项安装数据库选择企业版默认,通用端口默认数据库名称,我用了名称加域名,Sid默认文件路径,我选择了默认,但是你可以选择非系统盘缺省字符集即可,其中的字符集必须选为:ZHS16GBK(否则以后进行跨平台操作时对中文的操作将比较困难)。
点击确定开始安装安装到17%的时候会提示你放入第二张光盘,点击浏览选择第二张光盘的文件夹即可安装到46%的时候会让你插入第三张光盘,按上面的方式选择即可安装完成后,会提示输入密码也可以直接关闭,不配置。
点击开始-》所有程序-》Oracle - OraHome92-》Enterprise Manager Console 使用Sys 用户,并输入刚才设置的密码即可使用管理员登录到Oracle 控制台安装PL-SQL点击plsqldev.exe 启动安装向导,选择提取存放的位置,一路下一步即可,中文补丁可以到官方下载在开始程序打开PL/SQL Developer 程序,最后效果如下图Oracle 9i & PLSQL 全简体中文版数据库安装过程(图解)Oracle 10g for Windows 简体中文版的安装过程Oracle 11g for Windows 简体中文版的安装过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 9i/10g sql MERGE详解今天在项目中遇到了一个新的知识点,特此记录。
在项目的开发中,我看到有位同志使用Oracle的MERGE 进行了“没有数据则执行添加操作,有数据则在原有数据基础上进行更新操作”。
MERGE INTO CR_FAVORITE cfUSING (select count(*) cofrom CR_FAVORITE cfwhere ER_ID = '"+userId+"'and cf.IS_VALID = 1and PANY_CODE = "+companyCode+"and cf.TIMEPOINT = to_date('"+timepoint+"', 'yyyy-MM-dd')and cf.CR_INDUSTRY_CODE = '"+industryCode+"') bON (b.co <> 0)WHEN MATCHED THENUPDATESET cf.GRADE = '" + grade + "',cf.UPDATETIME = to_date('" + updatetime + "','yyyy-MM-dd HH24:MI:SS'),cf.RATING_DETAIL = empty_clob()where ER_ID = '" + userId + "'and cf.IS_VALID = 1and PANY_CODE = " + companyCode + "and cf.TIMEPOINT = to_date('" + timepoint + "', 'yyyy-MM-dd')and cf.CR_INDUSTRY_CODE = '" + industryCode + "'WHEN NOT MATCHED THENINSERT(cf.ID,ER_ID,PANY_CODE,GRADE,cf.TIMEPOINT,cf.UPDATETIME,cf.RATING_DETAIL,cf.CR_INDUSTRY_CODE)VALUES(CR_FAVORITE_ID_SEQ.NEXTVAL,'"+userId+"',"+companyCode+",'"+grade+"',to_date('"+timepoint+"', 'yyyy-MM-dd'),to_date('"+updatetime+"', 'yyyy-MM-dd HH24:MI:SS'),empty_clob(),'"+industryCode+"')以下为从网络上搜集的几篇比较好的关于“oracle MERGE”的文章:Oracle 10g中对Merge语句的增强15 02, 2007url: /post/11835/263865在Oracle 10g之前,merge语句支持匹配更新和不匹配插入2种简单的用法,在10g中Oracle对merge语句做了增强,增加了条件选项和DELETE操作。
下面我通过一个demo 来简单介绍一下10g中merge的增强和10g前merge的用法。
参考Oracle 的SQL Reference,大家可以看到Merge Statement的语法如下:MERGE [hint] INTO [schema .] table [t_alias] USING [schema .]{ table | view | subquery } [t_alias] ON ( condition )WHEN MATCHED THEN merge_update_clauseWHEN NOT MATCHED THEN merge_insert_clause;下面我在windows xp 下10.2.0.1版本上做一个测试看看SQL> select * from v$version;BANNER---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for 32-bit Windows: Version 10.2.0.1.0 - ProductionNLSRTL Version 10.2.0.1.0 - ProductionSQL>一、创建测试用的表SQL> create table subs(msid number(9),2 ms_type char(1),3 areacode number(3)4 );表已创建。
SQL> create table acct(msid number(9),2 bill_month number(6),3 areacode number(3),4 fee number(8,2) default 0.00);表已创建。
SQL>SQL> insert into subs values(905310001,0,531);已创建 1 行。
SQL> insert into subs values(905320001,1,532);已创建 1 行。
SQL> insert into subs values(905330001,2,533);已创建 1 行。
SQL> commit;提交完成。
SQL>二、下面先演示一下merge的基本功能1) matched 和not matched clauses 同时使用merge into acct ausing subs b on (a.msid=b.msid)when MATCHED thenupdate set a.areacode=b.areacodewhen NOT MATCHED theninsert(msid,bill_month,areacode)values(b.msid,'200702',b.areacode);2) 只有not matched clause,也就是只插入不更新merge into acct ausing subs b on (a.msid=b.msid)when NOT MATCHED theninsert(msid,bill_month,areacode)values(b.msid,'200702',b.areacode);3) 只有matched clause, 也就是只更新不插入merge into acct ausing subs b on (a.msid=b.msid)when MATCHED thenupdate set a.areacode=b.areacodeConnected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as studySQL> select * from subs;MSID MS_TYPE AREACODE---------- ------- --------905310001 0 531905320001 1 532905330001 2 533SQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------SQL>SQL> merge into acct a2 using subs b on (a.msid=b.msid)3 when MATCHED then4 update set a.areacode=b.areacode5 when NOT MATCHED then6 insert(msid,bill_month,areacode)7 values(b.msid,'200702',b.areacode); DoneSQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------905320001 200702 532 0.00905330001 200702 533 0.00905310001 200702 531 0.00SQL> insert into subs values(905340001,3,534);1 row insertedSQL> select * from subs;MSID MS_TYPE AREACODE---------- ------- --------905340001 3 534905310001 0 531905320001 1 532905330001 2 533SQL>SQL> merge into acct a2 using subs b on (a.msid=b.msid)3 when NOT MATCHED then4 insert(msid,bill_month,areacode)5 values(b.msid,'200702',b.areacode); DoneSQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------905320001 200702 532 0.00905330001 200702 533 0.00905310001 200702 531 0.00905340001 200702 534 0.00SQL> update subs set areacode=999;4 rows updatedSQL> select * from subs;MSID MS_TYPE AREACODE---------- ------- --------905340001 3 999905310001 0 999905320001 1 999905330001 2 999SQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------905320001 200702 532 0.00905330001 200702 533 0.00905310001 200702 531 0.00905340001 200702 534 0.00SQL>SQL> merge into acct a2 using subs b on (a.msid=b.msid)3 when MATCHED then4 update set a.areacode=b.areacode; DoneSQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------905320001 200702 999 0.00905330001 200702 999 0.00905310001 200702 999 0.00905340001 200702 999 0.00 SQL>三、10g中增强一:条件操作1) matched 和not matched clauses 同时使用merge into acct ausing subs b on (a.msid=b.msid)when MATCHED thenupdate set a.areacode=b.areacodewhere b.ms_type=0when NOT MATCHED theninsert(msid,bill_month,areacode)values(b.msid,'200702',b.areacode)where b.ms_type=0;2) 只有not matched clause,也就是只插入不更新merge into acct ausing subs b on (a.msid=b.msid)when NOT MATCHED theninsert(msid,bill_month,areacode)values(b.msid,'200702',b.areacode)where b.ms_type=0;3) 只有matched clause, 也就是只更新不插入merge into acct ausing subs b on (a.msid=b.msid)when MATCHED thenupdate set a.areacode=b.areacodewhere b.ms_type=0;Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as studySQL> select * from subs;MSID MS_TYPE AREACODE---------- ------- --------905310001 0 531905330001 2 533SQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------SQL>SQL> merge into acct a2 using subs b on (a.msid=b.msid)3 when MATCHED then4 update set a.areacode=b.areacode5 where b.ms_type=06 when NOT MATCHED then7 insert(msid,bill_month,areacode)8 values(b.msid,'200702',b.areacode)9 where b.ms_type=0;DoneSQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------905310001 200702 531 0.00 SQL> insert into subs values(905360001,0,536);1 row insertedSQL> select * from subs;MSID MS_TYPE AREACODE---------- ------- --------905310001 0 531905320001 1 532905330001 2 533SQL>SQL> merge into acct a2 using subs b on (a.msid=b.msid)3 when NOT MATCHED then4 insert(msid,bill_month,areacode)5 values(b.msid,'200702',b.areacode)6 where b.ms_type=0;DoneSQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------905310001 200702 531 0.00905360001 200702 536 0.00SQL> update subs set areacode=888 where ms_type=0;2 rows updatedSQL> select * from subs;MSID MS_TYPE AREACODE---------- ------- --------905360001 0 888905310001 0 888905320001 1 532905330001 2 533MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------905310001 200702 531 0.00905360001 200702 536 0.00SQL>SQL> merge into acct a2 using subs b on (a.msid=b.msid)3 when MATCHED then4 update set a.areacode=b.areacode5 where b.ms_type=0;DoneSQL> select * from acct;MSID BILL_MONTH AREACODE FEE---------- ---------- -------- ----------905310001 200702 888 0.00905360001 200702 888 0.00SQL>四、10g中增强二:删除操作An optional DELETE WHERE clause can be used to clean up after a merge operation. Only those rows which match both the ON clause and the DELETE WHERE clause are deleted.merge into acct ausing subs b on (a.msid=b.msid)when MATCHED thenupdate set a.areacode=b.areacodedelete where (b.ms_type!=0);MSID MS_TYPE AREACODE---------- ------- --------905310001 0 531905320001 1 532905330001 2 533SQL> select * from acct;MSID MS_TYPE AREACODE---------- ------- --------905310001 0 531905320001 1 532905330001 2 533SQL>SQL> merge into acct a2 using subs b on (a.msid=b.msid)3 when MATCHED then4 update set a.areacode=b.areacode5 delete where (b.ms_type!=0);DoneSQL> select * from acct;MSID MS_TYPE AREACODE---------- ------- --------905310001 0 531SQL>更为详尽的语法,请参考Oracle SQL Reference手册!详解Oracle 10g 中MERGE 功能的增强url: /serial/523893.htmlOracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表.在Oracle 10g中MERGE有如下一些改进:1、UPDATE或INSERT子句是可选的2、UPDATE和INSERT子句可以加WHERE子句3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行首先创建示例表:1、可省略的UPDATE或INSERT子句在Oracle 9i, MERGE语句要求你必须同时指定INSERT和UPDATE子句.而在Oracle 10g, 你可以省略UPDATE或INSERT子句中的一个. 下面的例子根据表NEWPRODUCTS 的PRODUCT_ID字段是否匹配来updates表PRODUCTS的信息:在上面例子中, MERGE语句影响到是产品id为1502, 1601和1666的行. 它们的产品名字和种类被更新为表newproducts中的值. 下面例子省略UPDATE子句, 把表NEWPRODUCTS中新的PRODUCT_ID插入到表PRODUCTS中, 对于在两个表中能够匹配上PRODUCT_ID的数据不作任何处理. 从这个例子你能看到PRODUCT_ID=1700的行被插入到表PRODUCTS中.2、带条件的Updates和Inserts子句你能够添加WHERE子句到UPDATE或INSERT子句中去, 来跳过update或insert 操作对某些行的处理. 下面例子根据表NEWPRODUCTS来更新表PRODUCTS数据, 但必须字段CATEGORY也得同时匹配上:在这个例子中, 产品ID为1502,1601和1666匹配ON条件但是1666的category不匹配. 因此MERGE命令只更新两行数据. 下面例子展示了在Updates和Inserts子句都使用WHERE子句:注意由于有WHERE子句INSERT没有插入所有不匹配ON条件的行到表PRODUCTS.3、无条件的Inserts你能够不用连接源表和目标表就把源表的数据插入到目标表中. 这对于你想插入所有行到目标表时是非常有用的. Oracle 10g现在支持在ON条件中使用常量过滤谓词. 举个常量过滤谓词例子ON (1=0). 下面例子从源表插入行到表PRODUCTS, 不检查这些行是否在表PRODUCTS中存在:4、新增加的DELETE子句Oracle 10g中的MERGE提供了在执行数据操作时清除行的选项. 你能够在WHEN MATCHED THEN UPDATE子句中包含DELETE子句. DELETE子句必须有一个WHERE 条件来删除匹配某些条件的行.匹配DELETE WHERE条件但不匹配ON条件的行不会被从表中删除.下面例子验证DELETE子句. 我们从表NEWPRODUCTS中合并行到表PRODUCTS 中, 但删除category为ELECTRNCS的行.产品ID为1502的行从表PRODUCTS中被删除, 因为它同时匹配ON条件和DELETE WHERE条件. 产品ID为1501的行匹配DELETE WHERE条件但不匹配ON条件, 所以它没有被删除. 产品ID为1700 的行不匹配ON条件, 所以被插入表PRODUCTS. 产品ID 为1601和1666的行匹配ON条件但不匹配DELETE WHERE条件, 所以被更新为表NEWPRODUCTS中的值.Oracle中的Merge函数(批量更新/删除)url: /induction/714430.html所有的MIS系统都存在一个同样的需求,就是对于特定的数据,在一次批量操作过程中,如果数据已经存在,则对存在的数据按照现有情况进行更新,如果不存在,则需要加入数据库。