oracle操作你我知.docx
- 文档编号:9122243
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:19
- 大小:22.37KB
oracle操作你我知.docx
《oracle操作你我知.docx》由会员分享,可在线阅读,更多相关《oracle操作你我知.docx(19页珍藏版)》请在冰豆网上搜索。
oracle操作你我知
/Java及Oracle学习之Oracle创建用户及数据表
要写程序,大多要用到数据库。
因此在讲编程之前,有必要把Oracle的一些最基本的操作讲一点做底子.
一、概念
1.数据库(Database)
什么是数据库?
数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。
这种数据集合具有如下特点:
尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。
从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
什么是数据库系统?
数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。
它通常由软件、数据库和数据管理员组成。
其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。
数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。
数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。
数据库管理员一般是由业务水平较高、资历较深的人员担任
打个比喻吧:
库据库就是存放数据的仓库.当然仓库得组织得有序,这需要一套管理方法及管理组织,管理方法及管理组织结合就成了一个管理仓库的有机体--系统.
2.数据表空间(Tablespace)
存放数据总是需要空间,Oracle把一个数据库按功能划分若干空间来保存数据。
当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件
3.Oracle用户
一个数据库多个用户来创建和管理自己的数据,每个用户有自己的权限,也可与其他用户共享数据
4.数据表
在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层。
我们在数据库中存放数据,最终是数据表的单元来存储与管理的。
5.数据文件
以上几个概念都是逻辑上的,而数据文件则是物理上的。
就是说,数据文件是真正“看得着的东西”,它在磁盘上以一个真实的文件体现.
二、创建
(*凡oracle命令在sqlplus中执行,即运行sqlpluswsystem/manager@test -这是以前安装时讲到的)
1.数据库 当我们安装好oracle8i后,一个数据库系统就安装好了,其中有一个缺省的数据库,当然,我们还可以创建新的数据库.
2.现在我们应该建数据表空间,就如要存放货物,起码首先得把房子建好吧。
就是存放东西的空间。
表空间就存放数据的空间.
格式:
createtablespace表间名datafile'数据文件名'size表空间大小;
example:
createtablespacedata_testdatafile'e:
\oracle\oradata\test\data_1.dbf'size2000M;
createtablespaceidx_testdatafile'e:
\oracle\oradata\test\idx_1.dbf'size2000M;
(*数据文件名包含全路径,表空间大小2000M表是2000兆)
3.建好tablespace,就可以建用户了
格式:
createuser 用户名identifiedby密码 defaulttablespace表空间表;
example:
createuser studyidentifiedbystudy defaulttablespacedata_test;
(*我们创建一个用户名为study,密码为study,缺少表空间为data_test-这是在第二步建好的.)
(*抽省表空间表示用户study今后的数据如果没有专门指出,其数据就保存在data_test中,也就是保存在对应的物理文件e:
\oracle\oradata\test\data_1.dbf中)
4.授权给新用户
grantconnect,resourcetostudy;
--表示把connect,resource权限授予study用户
grantdbatostudy;
--表示把dba权限授予给study
5.创建数据表
在上面,我们已建好了用户study我们现在进入该用户
sqlpluswstudy/study@test
然后就可以在用户study中创建数据表了
格式:
createtable数据表名, 后面的详细参数,请你在网上搜索"oracle""createtable""语法".太多了,我就不附在这里了。
下面给一个例子,自己体会.
createtabletest_user(
no number(5) notnull,--pk
username varchar2(30) notnull,--用户名
passpord varchar2(30) notnull,--密码
constraintpk_connectdbprimarykey(no)
)storage(initial10knext10kpctincrease0);
*下面讲解上面命令的各方面的含义
createtabletest_user --创建数据表
no number(5) notnull, --pk
(列名或字段名) 数据类型(数据长度) 该数据列不能为空 ,是列之间的分隔符 --后的内容是注释
constraintpk_connectdbprimarykey(no)
(约束) 约束名 (主键) (列名) 意思就是在数据表test_user中所有行数据no的值不能相同(这就是主键的含义)
storage(initial10knext10kpctincrease0); 这个说起来比较复杂,反正如果某个数据表要存放大量数据,就把initial和next后的值设置大一点,否则设置小一点.
既然上面在创建数据表中没有特别指定表空间,当然该表就存放在study缺省表空间data_test了.
*如果以前没有接触数据库的,这说起来可能比较抽象,欢迎提问,实在不懂,照着我说的命令操作一遍,今后慢慢学习,慢慢理解.
小弟想创建一个只能执行查询命令的用户,如何建,请教各位。
SQL>dropuserjoyw;
用户已丢弃
SQL>createuserjoywidentifiedbyjoyw;
用户已创建
SQL>grantcreatesession,selectanytabletojoyw;
授权成功。
SQL>alteruserjoywquota0onsystem;
用户已更改。
SQL>setwrapoff
Oracle创建用户、表空间、导入导出、...命令
//创建临时表空间
createtemporarytablespacetest_temp
tempfile'E:
\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'
size32m
autoextendon
next32mmaxsize2048m
extentmanagementlocal;
//创建数据表空间
createtablespacetest_data
logging
datafile'E:
\oracle\product\10.2.0\oradata\testserver\test_data01.dbf'
size32m
autoextendon
next32mmaxsize2048m
extentmanagementlocal;
//创建用户并指定表空间
createusertestserver_useridentifiedbytestserver_user
defaulttablespacetest_data
temporarytablespacetest_temp;
//给用户授予权限
grantconnect,resourcetotestserver_user;(db2:
指定所有权限)
导入导出命令:
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。
exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。
利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:
可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于在oracle8i中安装目录ora81BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:
1将数据库TEST完全导出,用户名system密码manager导出到D:
daochu.dmp中
expsystem/manager@TESTfile=d:
daochu.dmpfull=y
2将数据库中system用户与sys用户的表导出
expsystem/manager@TESTfile=d:
daochu.dmpowner=(system,sys)
3将数据库中的表inner_notify、notify_staff_relat导出
expaichannel/aichannel@TESTDB2file=d:
datanewsmgnt.dmptables=(inner_notify,notify_staff_relat)
4将数据库中的表table1中的字段filed1以"00"打头的数据导出
expsystem/manager@TESTfile=d:
daochu.dmptables=(table1)query="wherefiled1like'00%'"
上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面加上compress=y来实现。
数据的导入
1将D:
daochu.dmp中的数据导入TEST数据库中。
impsystem/manager@TESTfile=d:
daochu.dmp
impaichannel/aichannel@HUSTfull=yfile=d:
datanewsmgnt.dmpignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上ignore=y就可以了。
2将d:
daochu.dmp中的表table1导入
impsystem/manager@TESTfile=d:
daochu.dmptables=(table1)
基本上上面的导入导出够用了。
不少情况要先是将表彻底删除,然后导入。
注意:
操作者要有足够的权限,权限不够它会提示。
数据库时可以连上的。
可以用tnspingTEST来获得数据库TEST能否连上。
附录一:
给用户增加导入数据权限的操作
第一,启动sql*puls
第二,以system/manager登陆
第三,createuser用户名IDENTIFIEDBY密码(如果已经创建过用户,这步可以省略)
第四,GRANTCREATEUSER,DROPUSER,ALTERUSER,CREATEANYVIEW,
DROPANYVIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATESESSIONTO用户名字
第五,运行-cmd-进入dmp文件所在的目录,
impuserid=system/managerfull=yfile=*.dmp
或者impuserid=system/managerfull=yfile=filename.dmp
执行示例:
F:
WorkOracle_Databackup>impuserid=test/testfull=yfile=inner_notify.dmp
屏幕显示
Import:
Release8.1.7.0.0-Productionon星期四2月1616:
50:
052006
(c)Copyright2000OracleCorporation.Allrightsreserved.
连接到:
Oracle8iEnterpriseEditionRelease8.1.7.0.0-Production
WiththePartitioningoption
JServerRelease8.1.7.0.0-Production
经由常规路径导出由EXPORT:
V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入
导出服务器使用UTF8NCHAR字符集(可能的ncharset转换)
.正在将AICHANNEL的对象导入到AICHANNEL
..正在导入表 "INNER_NOTIFY" 4行被导入
准备启用约束条件...
成功终止导入,但出现警告。
附录二:
Oracle不允许直接改变表的拥有者,利用Export/Import可以达到这一目的.
先建立import9.par,
然后,使用时命令如下:
impparfile=/filepath/import9.par
例import9.par内容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (注:
把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log
给oracle建用户需要注意的地方
给oracle添加一个用户时一般都分配个connect、resource角色就行了如:
grantconnect,resourcetochenwm;
但这里connect角色有一个UNLIMITEDTABLESPACE权限,也就是chenwm这个用户可以在其他表空间
里随意建表。
ConnectedtoOracleDatabase11gEnterpriseEditionRelease11.1.0.6.0
ConnectedasSYS
SQL>select*fromdba_sys_privswheregrantee='CHENWM';
GRANTEE PRIVILEGE ADMIN_OPTION
----------------------------------------------------------------------------------
CHENWM UNLIMITEDTABLESPACE NO
SQL>
一般DBA要把这个UNLIMITEDTABLESPACE权限关掉
SQL>revokeunlimitedtablespacefromchenwm; #回收unlimitedtablespace权限
Revokesucceeded
SQL>alteruserchenwmquotaunlimitedonchenwm;#其中后面chenwm是表空间名
Useraltered
SQL>
经过这样修改,用imp就不会导入到其他表空间的情况了。
Oracle在PLSQLDeveloper上创建表空间和用户脚本
Oracle在PLSQLDeveloper上建立表空间脚本
创建表空间
一、
createtablespaceMOF_TEMP//name
datafile'D:
\oracle\product\10.2.0\oradata\orcl\MOF_TEMP.def'size500M //---/oracle/oradata/orcl/portal01.dbf
autoextendonnext100Mmaxsizeunlimitedlogging //自动扩展表空间
extentmanagementlocalautoallocate
segmentspacemanagementauto;
1)DATAFILE:
表空间数据文件存放路径
2)SIZE:
起初设置为200M
3)UNIFORM:
指定区尺寸为128k,如不指定,区尺寸默认为64k
4)空间名称MOF_TEMP与数据文件名称MOF_TEMP.dbf不要求相同,可随意命名.
5)AUTOEXTENDON/OFF表示启动/停止自动扩展表空间
6)alterdatabasedatafile'D:
\oracle\product\10.2.0\oradata\orcl\MOF_TEMP.dbf'resize500m;//手动修改数据文件大小为500M
二、
Sql>createtablespacehistdbdatafile'D:
\oracle\product\10.2.0\oradata\orcl\histdb.dbf'size200mautoextendonnext10mmaxsizeunlimited;
Sql>alterdatabasedatafile'D:
\oracle\product\10.2.0\oradata\orcl\histdb.dbf'autoextendon;
//删除用户
dropuserUTESTcascade;
删除表空间
DROPTABLESPACEMOF_TEMPINCLUDINGCONTENTSANDDATAFILES;
测试创建表空间
createtablespaceIMSTEST
datafile'D:
\ORACLE\PRODUCT\10.2.0\ORADATA\HNORCL\IMTEST.def'size200M
autoextendonnext20Mmaxsizeunlimitedlogging
extentmanagementlocalautoallocate
segmentspacemanagementauto;
commit;
创建用户,设置DBA角色
CREATEUSERMARTIN
IDENTIFIEDBYmartinpwd
DEFAULTTABLESPACEUSERS
TEMPORARYTABLESPACETEMP;
例如:
--创建新用户
CREATEUSERjack
IDENTIFIEDBY"123"
DEFAULTTABLESPACE"USERS"
TEMPORARYTABLESPACE"TEMP"
grantconnecttojack;
grantdbatojack;
grantsysdbatojack;
//删除用户
dropuserjack cascade;
oracle创建用户并授权
CREATEUSERFTIT
IDENTIFIEDBY
DEFAULTTABLESPACEUSR_INDEX01
TEMPORARYTABLESPACETEMP
PROFILEDEFAULT
/
GRANTAQ_ADMINISTRATOR_ROLETOFTITWITHADMINOPTION
/
GRANTAQ_USER_ROLETOFTITWITHADMINOPTION
/
GRANTAUTHENTICATEDUSERTOFTITWITHADMINOPTION
/
GRANTCONNECTTOFTITWITHADMINOPTION
/
GRANTCTXAPPTOFTITWITHADMINOPTION
/
GRANTDBATOFTITWITHADMINOPTION
/
GRANTDELETE_CATALOG_ROLETOFTITWITHADMINOPTION
/
GRANTDMUSER_ROLE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 操作
![提示](https://static.bdocx.com/images/bang_tan.gif)