oracle操作文档1.0

更新时间:2023-11-15 06:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Oracle学习文档

一、 Oracle的设置

Oracle设置是在Oracle用户下的超级用户下进行设置的。

1. 环境变量的设置

oracle软件使用了许多环境变量,非常重要的三个是ORACLE_HOME,ORACLE_BASE和ORACLE_SID.ORACLE_HOME指定了你希望运行的oracle执行程序的位置.一台计算机上可能安装了若干个版本的oracle软件,大多数oracle程序查询ORACLE_HOME来决定运行何种版本的软件.ORACLE_BASE定义了数据库管理文件安装的基本目录.ORACLE_SID定义了你希望在其上工作的本地oracle数据库名称。 如:

ORACLE_BASE=/home/db/oracle ORACLE_SID=SUPTDB

LD_LIBRARY_PATH=/home/db/oracle/product/10.2.0/lib ORACLE_HOME=/home/db/oracle/product/10.2.0 PATH=$PATH:$ORACLE_HOME/bin

export ORACLE_BASE LD_LIBRARY_PATH ORACLE_SID ORACLE_HOME PATH

2. 数据库的启动

数据库的启动以及监听的启动,这里会涉及到监听器的概念,这里向大家介绍一下监听器,监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。因此在写EC程序的时候会涉及到其他用户访问到oracle数据库时,测试监听必须开启状态。

设置好环境变量后可启动oracle。 su - oracle sqlplus /nolog conn /as sysdba startup

然后启动监听:

进入/opt/oracle/product/9.2.0/bin/ lsnrctl start

3. 创建用户

创建用户,test1为用户名,test2为密码 SQL> connect /as sysdba

SQL> create user test1 identified by test2; 要赋给此用户一些权限用于操作oracle

给用户一些基本权限用于数据库的操作

grant connect, resource to 用户名 (这里只赋给用户链接权限)

二、 连接数据库

首先要在使用数据库的用户设置环境变量 如:

#用户设置

ORACLE_USERNAME=test1 ORACLE_PASSWD=test2 #ORACLE目录

ORACLE_BASE=/home/db/oracle #ORACLE库

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/db/oracle/product/10.2.0/lib ORACLE_HOME=/home/db/oracle/product/10.2.0 #oracle数据库名称 ORACLE_SID=SUPTDB

PATH=$PATH:$ORACLE_HOME/bin

export ORACLE_BASE LD_LIBRARY_PATH ORACLE_HOME ORACLE_SID PATH export ORACLE_USERNAME ORACLE_PASSWD #oracle数据库字符集设置 CLIENT_LOCALE=zh_cn.gb DB_LOCALE=zh_cn.gb SERVER_LOCALE=zh_cn.gb

export CLIENT_LOCALE DB_LOCALE SERVER_LOCALE export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

三、 EC程序的编写

1.连接数据库时需加上用户名和密码以及数据库名称

如:EXEC SQL CONNECT :szDBName;

其中(szDBName为test1/test2@SUPTDB) 对数据库的操作无非是增删查找操作。

这里要注意的一点在做增删操作时,oracle会自动开启事物,所以操作完后务必执行关闭事物语句:EXEC SQL COMMIT。

2.NVL函数的使用

在做查询时要是用数据库函数NVL,当提取某个字段时oracle会自动判断表中字段值情况,因此在使用select语句时要用到NVL函数来避免数据库报错(错误码:-1405),NVL函数处理则是当字段是为空时则默认将' '中的值来进行代替。

如:EXEC SQL SELECT NVL(CERT_TYPE, ' '), NVL(CERT_NO, ' '), NVL(CUST_NM, ' ') INTO :szCertType, :szCertNo, :szCustName FROM suptdata.BSU_ACCT_INFO WHERE ACCT_CRD_NO = :szAcctNo;

3.连接其他用户数据表

以上面的EC程序为例

可以看到FROM后面的表则是采用:用户名.表名。这是由于此张表不是由当前用户所建立的(当前用户为连接数据库的用户,即suss),但是都属于同一个数据库,因此在访问时要加上建立此表的用户名称。同一用户则不用加用户名称。注意:访问其它表时,需要其表的用户赋予使用权限,命令为:grant select on 表名 to 用户名称 ;(赋予查询权限)。

4.序列的使用

在建立表中遇到使用自增序列,但是oracle中没有类似informix中的serial类型,因此需借助与oracle自带的序列来达到自增效果。 建立序列脚本:

create sequence 序列名称 --建立序列命令 increment by 1 --每次加1

start with 1 --从1开始计数 nomaxvalue --不设置最大值

nocycle -- 一直累加,不循环 nocache; --不建缓冲区 再插入数据时则注意此自增字段需为(序列名称.nextval)。 例如:

表结构为:Fi_ID, Fs_Str 表名:tt 序列名:tt_sequence

插入数据:insert into tt values(tt_sequence.nextval, ' asd');

(也可以序列与触发器一起进行设置自增序列,感兴趣可以在网上查查自己试一下)

5.导出以及导入数据处理

下面介绍的是导入导出的实例。

数据导出:

a) 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中

exp system/manager@TEST file=d:daochu.dmp full=y b) 将数据库中system用户与sys用户的表导出

exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) c) 将数据库中的表inner_notify、notify_staff_relat导出

exp aichannel/aichannel@TESTDB2 file=d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

d) 将数据库中的表table1中的字段filed1以\打头的数据导出

exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=\where filed1 like '00%'\

数据的导入

a) 将D:daochu.dmp 中的数据导入 TEST数据库中。

imp system/manager@TEST file=d:daochu.dmp

imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

在后面加上 ignore=y 就可以了。 b) 将d:daochu.dmp中的表table1 导入

imp system/manager@TEST file=d:daochu.dmp tables=(table1)

基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。这里的导入会将数据表的结构一并导入库中。 注意:

操作者要有足够的权限,权限不够它会提示。导入和导出在我们的搭建系统在自己机子上回很有用,可以将测试环境的数据拷贝到自己的数据库中。

此文档会赠送一oracle错误说明文档,便于及时解决操作数据库产生的错误。

本文来源:https://www.bwwdw.com/article/f4jv.html

Top