1、第 1 章 Oracle 安装配置1Oracle 服务端安装好之后,在命令提示符下,利用 echo %Path%命令查看此时的系统变量Path。在 Windows 系统中,单击【 开始】|【运行】,并键入“cmd”,如下图所示:单击【确定】按钮,将进入 Windows 命令提示符,如下图所示:键入 echo %path%,并按下回车键,将显示此时变量 path 的值,如下图所示:2利用 java version 命令,查看此时 java 环境的版本,以确认是否为 Oracle 安装时自带的 Java文件。在 Windows 的【Command】窗口中执行 java version 命令,将看到
2、本机 Java 环境的版本,如下图所示:2173Oracle 数据库服务器安装之后,在硬盘上搜寻名为 oradata 的文件夹。其中包含了所有数据库的物理文件,查看已有数据库的子文件夹及文件。一个数据库的典型文件包括:后缀为 CTL 的控制文件;后缀为 LOG 的重做日志;后缀为 DBF 的数据文件。第 2 章 Oracle 常用工具1有时无法连接数据库,是由于多次安装了服务端/客户端,而导致客户端软件寻找 TNS 配置文件时,混淆了当前有效的路径。此时,可以利用将 DNS 描述直接作为参数传递给客户端软件的方式来登录数据库,从而不再使用 TNS 配置文件。尝试利用数据库 ORCL 的 TNS
3、 描述直接登录数据库。利用 sqlplus+TNS 配置登录数据库的命令如下所示:sqlplus sys/abc123(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.5)(PORT=1521)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl) as sysdba登录成功的界面如下所示:2EZConnect 是 EasyConnect 的简称。利用 EZConnect 可以在客户端以 IP+SID 的方式登录数据。利用 NetManager 配置 EZConn
4、ect 的连接方式,并利用客户端软件+EZConnect 的方式登录数据库 ORCL。首先保证 Oracle 数据库服务器支持 EZConnect 连接方式,如下图所示:218然后,在【Command】窗口中,利用 sqlplus 登录数据库:sqlplus sys/abc123/192.168.16.5/ORCL as sysdba登录成功的界面如下所示:当然,也可以利用 PL/SQL Developer 进行登录:2193客户端连接 Oracle 数据库连接时,默认端口为 1521。创建一个新的监听程序,其端口为1522。然后将 ORCL 注册于该监听程序。1)在 Net Manager
5、中创建名为 LISTENER_1522。为【监听位置】填写主机 IP 和端口号。注意其端口号为 15222)选择监听程序的【数据库服务】,并为其输入 ORCL。3)利用【文件】|【保持网络配置 】,保存监听程序 LISTENER_1522 的信息。2204)在 Windows Command 窗口中,启动监听程序 LISTENER_1522。C:lsnrctl start listener_1522LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 31-7 月 -2011 19:37:17Copyright (c) 1
6、991, 2004, Oracle. All rights reserved.Starting tnslsnr: please wait.TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - ProductionSystem parameter file is D:oracleNETWORKADMINlistener.oraLog messages written to d:oraclenetworkloglistener_1522.logListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=
7、192.168.16.5)(PORT=1522)Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.5)(PORT=1522)STATUS of the LISTENER-Alias listener_1522Version TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - ProductionStart Date 31-7 月 -2011 19:37:17Uptime 0 days 0 hr. 0 min. 0 secTrace Level offSecurity
8、 ON: Local OS AuthenticationSNMP OFFListener Parameter File D:oracleNETWORKADMINlistener.oraListener Log File d:oraclenetworkloglistener_1522.logListening Endpoints Summary.(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.16.5)(PORT=1522)Services Summary.Service “ORCL“ has 1 instance(s).Instance “O
9、RCL“, status UNKNOWN, has 1 handler(s) for this service.The command completed successfully这样,即使没有其他监听程序的存在,或者 1521 端口冲突。Oracle 也会自动通过监听程序LISTENER_1522 来连接数据库 ORCL。第 3 章 SQL Plus 和 PL/SQL1利用 sqlplus 登录数据库,并查看数据库版本。利用 SQL Plus 登录数据库:C:sqlplus / as sysdbaSQL*Plus: Release 10.1.0.2.0 - Production on 星期日
10、 7 月 10 18:43:50 2011Copyright (c) 1982, 2004, Oracle. All rights reserved.221Connected to:Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL在控制台上打印出的信息,可以清楚看到 Oracle 数据库的版本为 10.1.0.2.0。2在对数据库进行重要操作时,首先应该确认数据库身份,以免在其他数据库上进行操作。
11、尝试利用 SQL Plus 显示数据库实例名称。1)利用 SQL Plus 登录数据库:C:sqlplus / as sysdbaSQL*Plus: Release 10.1.0.2.0 - Production on 星期日 7 月 10 18:43:50 2011Copyright (c) 1982, 2004, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP a
12、nd Data Mining optionsSQL2)键入 show parameter instance_name 来查看实例名称SQL show parameter instance_nameNAME TYPE VALUE- - -instance_name string orcl3试着利用 SQL Plus 来创建一个新表 test (id number, name varchar2(20)。可以通过如下步骤利用 SQL Plus 来创建一个新表:(1)利用 SQL Plus 登录数据库 ORCL。在 Windows 的【开始】|【运行】的【打开】文本框中输入 sqlplus scott
13、/abc123orcl 来登录数据库ORCL。(2)在 SQL Plus 命令行下输入如下命令来创建新表 test:create table test (id number, name varchar2(20);(3)在 SQL Plus 会出现表创建成功的提示,如图所示。222此时,证明表创建成功。第 4 章 Oracle 数据库1在数据库中创建一个表 lob_source(id number, description clob)。将表 lob_test 的数据导入另外一个数据表 lob_dest(id number, description clob)。1)创建表 lob_sourceSQ
14、L create table lob_source(id number, description clob);Table created.2)向表 lob_source 中插入测试数据SQL insert into lob_source values(1, a clob text from source);1 row created.3)创建测试表 lob_destSQL create table lob_dest(id number, description clob);Table created.4)向测试表 lob_dest 中插入测试数据,但是不包含 clob 类型的 descript
15、ion 列SQL insert into lob_dest(id) values(1);1 row created.5)利用表 lob_source 中的 description 信息,更新表 lob_dest 中的 description 信息。SQL update lob_dest set description = (select description from lob_source source where source.id = lob_dest.id);1 row updated.SQL select * from lob_dest;ID DESCRIPTION- -1 a cl
16、ob text from source该实例实际说明了针对 lob 类型的数据的操作方式。由于 lob 类型的数据的特殊性,因此在实现数223据库迁移时,如果遇到棘手的 lob 类型处理,可以考虑利用本例所演示的方法。2利用 exp/imp 方式,将数据库 orcl 中 users 表的内容,迁移到数据库 test 中。1)在数据库 orcl 中,创建测试表 usersSQL create table users(user_id number, user_name varchar(20);Table created.SQL insert into users values(1, allen);
17、1 row created.SQL insert into users values(2, mike);1 row created.SQL commit;Commit complete. 2)导出表 users 到 d:user.bakC:exp system/abc123/192.168.16.5/orcl tables=(users) file=d:/users.bakExport: Release 10.1.0.2.0 - Production on 星期三 7 月 13 00:06:22 2011Copyright (c) 1982, 2004, Oracle. All rights
18、reserved.Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsExport done in ZHS16GBK character set and AL16UTF16 NCHAR character setAbout to export specified tables via Conventional Path . . exporting table USERS 2 ro
19、ws exportedExport terminated successfully without warnings.3)将 d:user.bak 的内容导入数据库 testC:imp system/abc123/192.168.16.5/test tables=(users) file=d:/users.bakImport: Release 10.1.0.2.0 - Production on 星期三 7 月 13 00:10:09 2011Copyright (c) 1982, 2004, Oracle. All rights reserved.Connected to: Oracle D
20、atabase 10g Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsExport file created by EXPORT:V10.01.00 via conventional pathimport done in ZHS16GBK character set and AL16UTF16 NCHAR character set. importing SYSTEMs objects into SYSTEM. . importing ta
21、ble “USERS“ 2 rows imported224Import terminated successfully without warnings.3如果数据库处于归档模式,那么,随着时间的累积,归档日志将会占用很大空间。一旦达到默认大小 20G,那么将导致数据库挂起,在告警日志中一般会有如下提示:ORA-00257: archiver error. Connect internal only, until freed。利用修改参数 db_recovery_file_dest_size 的方式,快速解决数据库无法归档的问题。1)查看默认空间大小SQL show parameter db
22、_recovery_file_dest_sizeNAME TYPE VALUE- - -db_recovery_file_dest_size big integer 2G2)修改其大小SQL alter system set db_recovery_file_dest_size=3G scope=both;System altered.这一用法,适合于快速处理现场由于归档日志过大导致的数据库挂起。第 5 章 Oracle 数据表对象1创建一个表空间 testsize,其数据文件大小为 2M,并设置自动增长尺寸为 1M。在表空间中建立一个数据表,并向其中插入大量数据,观察表空间文件的变化。1)创
23、建一个大小为 2M,自动增长尺寸为 1M 的表空间SQL create tablespace testsize datafile e:databaseoracletestsize_data.dbf size 2M2 autoextend on next 1M3 /Tablespace created2)创建一个数据表 test_tablespace_size(test_data varchar2(100)SQL create table test_tablespace_size(test_data varchar2(100) tablespace testsize;Table created3
24、)利用如下 SQL 语句向表 test_tablespace_size 中插入数据SQL begin2 for i in 1.100000 loop3 insert into test_tablespace_size values(0123456789);4 end loop;5 commit;6 end;7 /PL/SQL procedure successfully completed4)此时,表空间文件 testsize_data.dbf 将增长为 3M。2252删除表空间 testsize,同时删除其物理文件。删除表空间应该使用 drop tablespace 命令,同时删除物理文件,
25、应使用 including contents and datafiles。SQL drop tablespace testsize including contents and datafiles;Tablespace dropped.3在数据库中创建一个表 test_bak,并向其中插入 10 条记录。利用 exp/imp 命令来实现该数据表的备份/恢复。1)在数据库中创建表 test_bak(id number)。SQL create table test_bak(id number);Table created2)向其中插入 10 条数据。SQL begin2 for i in 1.10
26、 loop3 insert into test_bak values(i);4 end loop;5 end;6 /PL/SQL procedure successfully completedSQL commit;Commit complete3)利用 exp 命令备份该表C:exp system/abc123/192.168.16.5/orcl tables=(test_bak) file=d:/test_bak.bakExport: Release 10.1.0.2.0 - Production on 星期六 7 月 16 14:51:54 2011Copyright (c) 1982,
27、 2004, Oracle. All rights reserved.Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsExport done in ZHS16GBK character set and AL16UTF16 NCHAR character setAbout to export specified tables via Conventional Path . . exporting table TEST_BAK 10 rows exportedExport terminated successfully without warnings.4)在数据库中删除表 test_bak。SQL drop table test_bak;Table dropped5)将表 test_bak 重新导入数据库