Oracle基本操作指南

 

 


Oracle基本操作指南

 

 


研发中心
刘小强
目录
1. Oracle的一些基本概念 2
1.1 数据库的用户和密码 2
1.2 数据库与实例 2
1.3 表空间 3
1.4 Oracle的文件 3
1.5 SQL*Plus 4
1.6 C嵌入程序Pro*C 4
1.7 Java嵌入程序SQL*J 5
1.8 Oracle接口函数OCI 5
1.9 文本数据导入工具SQL*Loader 5
1.10 数据库导入导出 5
1.11 BLOB, CLOB, RAW, LOGN RAW, BFILE 5
1.12 网络组件Net8 6
2. SQL*PLUS 6
1.13 连接 6
1.14 基本操作 7
1.15 报表 8
1.16 数据库管理 8
1.17 脚本 8
1.18 替代变量 8
3. Server Manager 9
4. 数据库创建工具 9
5. Oracle学习的一些网站资料 10
1.19 中文网站: 10
1.20 国外网站 10
1.21 论坛 10
6. 一些心得 10

 

 

 

 

 

1. Oracle的一些基本概念
    Oracle的一些有关数据库的通用的基本概念和Informix是相同的,签于大家对Informix数据库比较熟悉,这里只介绍Oracle几个和Informix不同的地方,以期对大家在学习Oracle时有所帮助。
数据库的用户和密码
数据库与实例
表空间
Oracle的文件
SQL*Plus
C嵌入程序Pro*C
Java嵌入程序SQL*J
Oracle接口函数OCI
文本数据导入工具SQL*Loader
数据库导入导出
BLOB, CLOB, RAW, LONG RAW, BFILE
Net8网络组件
1.1 数据库的用户和密码
Informix数据库用户权限的分配借助于操作系统, 而Oracle数据库用户权限的分配是借助于数据库内部的用户和密码. 也就是说, 在每次连接数据库时, 不是借助于操作系统的用户的密码, 而是用数据库自己提供的用户和密码. 即使你进入操作系统, 没有数据库密码你照样进不去Oracle数据库.
不同权限的用户可以完成不同的数据库操作, 比如数据库的启动与关闭就必须是DBA才可以.
数据库的用户和密码信息在默认情况下是存储在数据字典中的, 但是在大型数据库系统中, 一般情况是将用户密码信息以加密的形式存储在单独的密码文件中, 保存在操作系统的其它地方, 受操作系统的保护.
将密码单独存放在密码文件中的另一个好处是远端装有客户机的机器上不用连接telnet而只通过SQL*Plus而对Oracle数据库进行一切操作, 包括启动, 操作这样的操作.
1.2 数据库与实例
数据库是一个具体的概念, 它指的是数据库厂家提供的使数据库运行的程序和用户用此程序创建的数据库文件以及参数文件. 这些文件是死的东西. 我们不能通过这些程序来达到我们存取数据的目的. 所以就引出了实例的概念.
实例是指由数据库程序启动的一些进程和系统为数据库运行而分配的一些内存结构. Oracle的内存结构称为SGA(System Global Area), 它是由以下几个部分组成:
数据库高速缓存区
共享池
redo日志缓存器
大缓存池
固定SGA
在SGA中适当地设定结构的大小对于数据库的性能是绝对重要的. 可以通过调整
init.ora参数文件来调整系统的SGA结构
Oracle通过一组后台进程来管理数据库系统的运行. 这组后台进程如下:
DBW0        数据库书写器进程
LGWR     日志书写器进程
SMON   系统监视器进程
PMON   进程监视器进程
REC0   恢复器进程
SNP0   抽点打印进程
QMN0   队列监视进程
LCK0   锁进程
CKPT   检查点进程
ARC0   归档进程

对于Oracle来说, 有些进程是可选的, 如SNP0进程.
以上SGA和进程组成了Oracle的实例. 远端客户端便可通过Net8(Oracle的网络软件)
和这个实例进行连接, 从而在远端使用数据库的功能. 
1.3 表空间
Oracle数据库数据的存储和Informix是不一样的.
Informix是多库结构的数据库系统, 用户的数据存储在一个个单独的数据库中, 在使用一个库时要进行单独的选择和连接.
Oracle中没有多库的概念, 用户面对的是一个数据库, Oracle为了数据存取的效率和数据管理而将数据库对象存储在不同的表空间中, 不同的表空间的存储参数是不同的.
比如, Oracle在安装后会有几个默认的表空间,
索引表空间  indx01
临时表空间  tmp01
系统表空间  system01
用户表空间  users01
工具表空间  tools01
其用法可以不言而喻, 就是用户应该将索引放入索引表空间, 将触发器, 存储过程放入工具表空间, 将一些临时的信息放入临时表空间. 而系统表空间一般是存放系统数据字典用的, 用户最好不要把自己的数据放入这个表空间. 以免影响系统性能.
将自己创建的数据库对象存放在哪一个数据库表空间中是用户自己控制的, 所以用户一定要把握好这个尺度, 以使系统的性能达到最好!
另外, 每一个用户有一个默认的表空间, DBA在创建用户时如果不指定默认的表空间, 系统就会指定system表空间是这个新建用户的默认表空间, 这一点DBA和普通用户都要特别注意.
DBA可以根据用户的需求给用户特定大小的数据库空间, 如果不指定, 这个用户的数据库空间是不限制.
一个表空间由一个到数个数据库文件组成, 文件扩展名为 .dbf, 表空间用完后可以扩展. 扩展大小根据操作系统不同而不同.
为了数据库备份方便, 表空间的大小最好不要太大(比如说超过2G).
1.4 Oracle的文件
不同类型的文件联合组成Oracle数据库, Oracle的启动和运行依赖于这些文件. Oracle中的文件结构如下表:

 

 

 

 

 

 

 

数据库启动顺序如下:
数据库启动时是先根据环境变量中的ORACLE_SI寻找参数文件. 参数据文件会通知系统有关内存分配信息和控制文件的位置信息. 找到控制文件后, Oracle从控制文件中读出数据库状态的信息, 比如: 数据库名, 表空间信息, 所有数据文件的名字和位置, 当前的日志序列号, 检查点信息等. 然后系统从数据库中读取相关数据库. 数据库启动成功.
数据库文件的默认安装路径如下:
参数文件   $ORACLE_HOME/dbs/
控制文件   $ORACLE_HOME /oradata/oracle8/
数据文件   $ORACLE_HOME /oradata/oracle8/
日志文件   $ORACLE_HOME /oradata/oracle8/

为了数据备份方便和数据库的安全性. 一般在安装数据库后将这些重要的文件存放在另外的地方. 这可以安装好数据库后用将文件拷出, 然后用符号链接链接到原来的位置即可. 或者在安装时直接将文件位置指定到别的地方.
1.5 SQL*Plus
Oracle中用户和数据库的勾通渠道最主要的就是SQL*Plus了. 8i 版的Oracle的SQL*Plus可以完成对数据库的一切操作.
DBA可以通过它对数据库进行维护性操作
程序开发者可以通过它进行数据的浏览和对程序中使用的SQL语句的验证, 生成简易报表等.
最终用户一般不被允许使用SQL*Plus.
有关SQL*Plus的详细介绍请参见下面.
1.6 C嵌入程序Pro*C
Oracle提供一个预编译程序Pro*C, 它可以允许程序开发人员在C语言中嵌入SQL语句, 从而实现C程序对数据库的访问与操作. 这一点类似于Informix提供的ESQL/C.
Pro*C的详细介绍与使用方法见文档<<Pro*C快速入门>>.
1.7 Java嵌入程序SQL*J
同C语言嵌入SQL一样, Oracle同样也提供了JAVA语言中嵌入SQL语句的功能, 这种预编译语言称为SQL*J, 这样, 在Java程序中就可以自由操作Oracle数据库的数据了.
1.8 Oracle接口函数OCI
OCI(Oracle Call Interface, 即Oracle调用层接口)是由头文件和库函数等组成的一套Oracle数据库应用程序编程接口工具, 它使程序员能够使用已经熟悉的第三代程序设计语言(如C, C++等)中的编程技术和开发环境, 并通过Oracle的OCI函数调用快速开发Oracle数据库应用程序.
用OCI开发的Oracle应用程序能够充分发挥C语言的特点, 使开发人员对程序的控制更加灵活.
1.9 文本数据导入工具SQL*Loader
SQL*Loader是Oracle提供的一套从文本文件中导入数据的工具, 它功能强大, 使用灵活, 是Oracle推荐的一种数据导入工具.
现实使用中, 经常会发生一些异常情况, 如网络不通, 而程序还要不能停止, 这时就可以用程序先将数据库以特定的格式写入文本文件中, 问题解决后再将先前文本文件中的内容用SQL*Loader导入到数据库中, 这一切都是可能在用户编写的程序中运行的.
另外, 异构数据库迁移数据到Oracle数据库时也常采用先将数据库导出到文本中, 再用SQL*Loader导入到Oracle数据库中.
1.10 数据库导入导出
几乎所以数据库系统都提供导入导出工具, Oracle也不例外, 它的导入导出命令是imp 和exp.
这两个命令使用极为灵活. 用导出工具可以导出:
整个数据库的数据
特定用户的数据
特定表的数据
特定表空间的数据
只导出库结构而不导出数据
只导出用户所要求导出的数据(如某个表中的满足用户需要某些数据)
授权, 索引, 存储过程, 触发器,
……
同导出工具, 导入工具可以将以前导出的内容中的某些特定内容(根据用户给出的参
数而定)导入到数据库中.

      用户使用导入与导出时可以使用两种方式, 一种是交互式, 一种是一次输入所以参数, 后者可以采用参数文件的方式, 即指定一个文件, 将要输入的参数放入此文件中, 使用时只需在参数据位输入此文件名即可, 避免了重复输入的麻烦.
1.11 BLOB, CLOB, RAW, LOGN RAW, BFILE
BLOB, CLOB, RAW是Oracle的几个数据类型, 这个类型在Informix中是没有的, 其中
BLOB是二进制大对象块的数据类型, 它用来存储一些二进制大数据块. 比如图形, 音频, 视频等文件. 它最大可以到达4G.
CLOB 是字符大对象块的数据类型, 它用来存储一些字符的大对象, 比如大的文本文件等. 它最大可以到达4G.
RAW 可变长二进制数据, 它是一种较老的数据类型, 据说要被BLOB取代.
LONG RAW 长可变长二进制数据.
BFILE  Oracle可将大数据对象存到数据库外去, 这对于一些对数据的完整性要求不是很高时的存储是可行的. 这种数据类型是BFILE.
1.12 网络组件Net8
Net8是Oracle的网络组件. 目的是为用户提供一个公用的交互协议. Oracle客户能使用Net8同数据库服务器交换信息, 服务器也可以用Net8与其它用户交流. 从应用程序开发的角度看, Net8提供了一个公用的交互接口.
Net8的连接方式为: 客户软件应用程序的请求传给Net8, Net8用低层网络协议, 如TCP/IP或SPX, 把请求传给数据库服务器.
用户使用最多的服务器部件是Net8监听器(Listener).
监听器是运行于数据库服务器上的一个进程, 它用来监测查询的网络, 使用Listener就可以与监听器交互了.
Net8监听器的工作是监视(Monitor)网络, 或者叫监听(Listen), 接收在数据库服务器上连接一个数据库的请求. 当检测到一个请求时, 监听器使请求生效, 将客户注册到数据库, 然后给客户传递一个服务器进程, 或者调用一个进程. 一旦连接实现, 并且远程用户可以注册到数据库, 监听器就不再扮演任何角色了.
在运行Oracle客户软件时必须典型安装Net8的下面两个组件:
Net8 Client
Net8 Easy Config(Net8 轻松配置)
Net8 Client由DLL组成, DLL通过程序写入与Oracle数据库交互.
Net8 Easy Config 是一个辅助程序, 它在任务上设置一个用户友好界面来编辑本地tnsname.ora文件. tnsnames.ora文件是Net8配置文件中的重要文件, 使用它定义将要连接的远程数据库.
2. SQL*PLUS
Oracle中用户最常用的开发, 查询工具莫过于SQL*PLUS了, 用它可以完成所有数
据库的操作, 包括启动, 关闭, 创建数据库等系统级的操作.
1.13 连接
在unix中启动SQL*PLUS的命令如下:
$sqlplus
启动后系统会出现提示输入用户名, 密码的提示符, 按要求输入即可进入, 如
enter user-name: username@service_name 
enter password: password
注意: 输入username时要输入username和数据数据库的servicename, 其格式如下:
username@service_name  
可采取如下方法进行一次输入:
$sqlplus username/password@service_name
如果是在服务端操作, 则后面的service_name可不用输入.  如下:
$sqlplus username/password
成功连接后, 系统会显示:
SQL*Plus: Release 8.1.6.0.0 - Production on Mon Aug 20 16:53:48 2001

(c) Copyright 1999 Oracle Corporation.  All rights reserved.

Connected to:
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 – Production
SQL>
然后在SQL>提示符下就可以进行你要进行的操作了.
1.14 基本操作
SQL*PLUS中的SQL语句执行方式如下:
以分号”;”或反斜杠”/”结束, 回车即可运行.
Oracle的SQL语句是不分大小写的, 但是习惯上把系统已有的字段大写, 把用户输入或定义的, 如表名, 字段名等小写.


   下面是一些常用的查询语句.
查看表的结构
SQL>describe table_name;
可以简写为
SQL>desc table_name;

显示当前用户所拥有的表名
SQL>select table_name from user_tables;
显示当前用户所拥有的视图
SQL>select view_name from user_views;
显示当前用户所拥有的对象名以及类型
SQL>select object_name, object_type from user_objects;
显示当前的系统日期
SQL>select sysdate from dual;

将上一个SQL语句存入文件中
SQL>save path/file_name
将一个文件中的SQL语句(只能有一句)读入缓冲
SQL>get path/file_name;

1.15 报表
将当前输出的内容写到一个文件中,
SQL>spool path/file_name
SQL>select table_name from user_tables;
SQL>select object_name, object_type from user_objects;
SQL>spool off
则以上粗体的三条语句所输出的内容都会输出到文件file_name.lst中,
SQL*PLUS还可以输出报表标题, 页眉, 页脚, 规定格式, 增加主题等, 加上上面写入文件的操作, 就可以用SQL*PLUS快速生成报表. 下面对这些命令做简要介绍. 如果想看详细的用法, 请在SQL*PLUS中用 help+主题进行查看.
COLUMN
用COLUMN命令可以改变标标题, 设置列宽, 设置列的显示格式, 添加页码等.
用TITLE命令可以为报表设置页眉, 添加页码等
用BTITLE命令可以为报表设置页脚.
以上命令配合灵活的查询, 可以做出灵活多变的报表格式. 如果再加上下面讲的写脚本和替代变量, 可以完全用SQL*PLUS写出各种可以满足用户多变要求的报表来.

1.16 数据库管理
SQL*PLUS除基本用户数据操作之外, 还可能进行数据库的管理操作, 8i版本以后的SQL*PLUS可以完全替代Server Manager.
连接方法和一般用户的连接方法略有不同, 方法如下.
$sqlplus /nolog
SQL>connect internal
之后就可以进行数据库维护等操作了. 其操作命令和Server Manager中的一样.

SQL>startup
SQL>shutdown immediate
1.17 脚本
   在使用SQL*PLUS时, 可以将常用的SQL语句写入一个文本文件中. 如数据库对象的创建, 报表的生成, 复杂查询等语句等, 以后要用的时候, 不用一行一行地输入, 只要在SQL*PLUS执行这个脚本文件就可以
执行脚本文件有两种方法
一种是用@ 命令.如
  SQL>@home/demo/test.sql
另一种是不进入sqlplus中进行的, 如
  $sqlplus username/password[@service] @script_file
1.18 替代变量
  替代变量能帮助用户写出容易使用和更加灵活的查询. 例如, 用户可以写出一个脚本生成
一个报表, 并且这个脚本提示用户每一次去年它时应该选择的标准.
Oracle用”&”号定义一个替代变量, 跟在它后面的单词就是一个替代变量名, 当有包含&号的SQL语句执行后, 系统会提示用户输入变量名, 如下:
SQL> select * from test001 where name='&name';
Enter value for name: conqueror.liu
old   1: select * from test001 where name='&name'
new   1: select * from test001 where name='conqueror.liu'

NAME                  ADDRESS              SEX
--------------------- -------------------- -----
conqueror.liu         shan xi province     male

用替代变量可以编写出有交互功能的脚本程序和查询语句.
3. Server Manager
Server Manager是Oracle的一个管理工具, 用它可以实现Oracle数据库的管理, 比如数据库的启动, 关闭, 表空间的创建, 维护等, 另外,普通用户也可以用它进行登录, 对自己权限内的数据库对象进行操作.
在unix下, 启动Server Manager的命令是
$svrmgrl
进入后, 提示符变成 SVRMGR> .
如要进行对数据库的操作. 用相应权限的用户connect即可, connect的方法如下:
SVRMGR>connect username/password@servicename 
如果是在服务端运行, 则@servicename 可省去不写.即
SVRMGR> connect username/password
  
   如果要对数据库进行启动, 关闭等操作, 则要用一个Oracle的特殊用户internal登录, 如

SVRMGR>connect internal
 然后就可以进行相关操作了.
请注意: 只有unix用户的组是dba才能在数据库中以internal用户登录.
   相关命令这里就不写出了, 在SVRMGR>提示符下, 输入help可得到它的全部help信息.
4. 数据库创建工具
在Oracle中创建数据库虽然可以在SQL*PLUS中完成的, 但是比较麻烦, Oracle为之提供了专门的图形化的工具, dbassistant
在unix下调用它的命令是:
$dbassist
进入图形界面后, 就可以按照自己的意原去定制自己想要的数据库.
出现的界面 要进行的操作
开始画面 选择Create a database,  按next
选择要创建的数据库类型 选择 Custom, 按next
选择数据库操作的环境 选择Hybrid, 按next
输入同时可以连接的用户数量 输入你认为理想的数字, 按next
选择数据库操作的模式 选Dedicated Server模式, 按next
选择数据库要安装的功能 根据你要建的数据库的需要进行选择, 然后按next
输入数据库信息画面 输入数据库名字, SID, 初始化文件名字 和路径, 字符集等相关信息, 然后按next
输入控制文件和日志文件信息画面 按next
以后出现的画面均是要求输入数据库的相关参数和内存参数, 按要求输入即可, 如果不能确定, 直接按next就可以了.

5. Oracle学习的一些网站资料
学习Oracle的最好的地方其实要算internet了, 这里介绍几个我本人常去的网站.

1.19 中文网站:

http://www.oradb.net    Oracle技术网这个网站是我最常去的, 它上面内容丰富, 有技巧, 有文章, 有书下载, 有网址链接. 真的是不错.
http://www.greatchinatelecom.com/card/oracle/index.html   内容不多, 但很实用.
http://www.oraclefan.net    上面有许多技巧和文章, 令人视野开阔不少
http://www.strongsun.com    广东早安, Oracle华南区总代理, 上面有不少 Oracle产品介绍和技术文档
1.20 国外网站
http://otn.oracle.com   Oracle技术网, Oracle 自己搞的技术网站, 原版正宗
http://www.dbdomain.com   有关Oracle数据库的一个网站, 内容绝对丰富, 上面有Oracle的论坛, 技术文章, 认证信息, Oracle软件下载
http://technet.oracle.com/doc   Oracle 公司发行的与软件配套的最详细的技术文档资料, 在它上面你可以找到Oracle所以产品的所有使用方法.
1.21 论坛
http://www.csdn.net     中国软件论坛, 中国程序员有口皆碑的软件方面的论坛, 如果你有什么解决不了的问题, 不妨到上面发帖子问一下.
http://dbasupport.com/forums/   一个国外的Oracle的论坛

6. 一些心得
Oracle是一个内容很多, 很繁杂的数据库系统. 它是目前世界上公认的功能最强大, 综合性能最高, 最有前途的数据库系统, 但也是学习起来最麻烦的数据库系统.
网上有这种说法, 就是学Oracle时要么学数据库开发, 要么学数据库管理, 一个人的精力有限, 不可能两者都学精的.
同其它软件一样, Oracle入门不太难, 但是学精通就很难了. 这不是看一本书就能解决问题的. 好的学习方法和学习资料要靠我们在平时的一点一滴中去积累, 去收集.
一个好的Oracle数据库管理员和Oracle程序员没有灵通的信息是不能生存下来的, 多上网+多学+多问+多练 是一个从事最新数据库开发或管理人员必备的习惯.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值