文章目录[隐藏]
1.数据库连接
conn 用户名/密码@[ip地址或域名][:端口号]/数据库名
当连接本地的Oracle时,ip地址和端口号可以省略。
例题:小陈为公司新来员工,使用plsql developer工具访问公司oracle数据库处理数据业务,已知服务器地址为172.16.75.9,端口为1523,采用默认安装的数据库名,账号为scott,密码也是该账号的默认密码,则小陈在pl/sql developer连接窗口该如何填?
解答:
默认安装的数据库名叫做ORCL,scott账号默认密码是tiger。(scott是Oracle公司的第一个员工,他养了一只猫叫tiger,Oracle为了纪念他创建了这个账号。)
因此正确的语句如下
conn scott/tiger@172.16.75.9:1523/orcl
2.账号管理
(1)创建用户
create user 用户名 identified by 密码 default tablespace 默认表空间名 temporary tablespace 临时表空间名 quota 表空间配额大小 on 表空间名
以上命令中,2-4行当题目没有指定时可以不写。
(2)为用户分配表空间配额
当我们创建用户时没有为用户分配表空间配额,而后期需要进行分配时,使用下面的语句
alter user 用户名 quota 表空间配额大小 on 表空间名
现在做一道例题
例题:小明是公司中的软件工程师,现因工作需要向数据库(oracle)管理员申请使用数据库资源,申请的账号为MARY,密码为pink,使用磁盘空间为600m。
解答:
使用磁盘空间为600m,意思就是为该用户分配600MB的表空间供他使用,由于此处只说了分配600M,并没有说分配在哪个表空间上,所以我们可以任意选择一个合适的表空间,例如users表空间,语句如下:
create user mary identified by pink quota 600m on users;
(3)解锁账户(不知道考不考)
alter user 用户名 account unlock;
3.权限管理
权限分为系统权限和对象权限,其中系统权限特别多,具体内容看书P127,对象权限是对表和视图的操作,只有四个,也就是增删改查(select,insert,update,delete)
(1)为用户授予系统权限
grant 系统权限名 to 用户名或角色名
(2)为用户授予某个表的对象权限
grant 对象权限名 on 用户名.该用户下的表名 to 用户名或角色名
例如为用户名anonyeast授予表yddlovexhh的insert权限,语句如下
grant insert on yddlovexhh to anonyeast
这样anonyeast用户就对表yddlovexhh拥有了insert权限,可以往这个表里面插入数据了。
4.角色管理
角色是用来管理权限的,可以用于为用户授权。Oracle自带了一些角色,没有特殊需求的话不用自己去创建角色。
以下是常用角色,请记住将用户指定了connect角色和resource角色后,就足以满足绝大多数需求。其中connect角色确保用户可以连接到数据库,resource角色确保用户可以创建数据库对象。
grant 角色名 to 用户名
例题:以管理员的方式为上一题中的小明创建的mary账号授予使用数据库资源的相应权限。
解答:
使用数据库资源,就直接赋予connect角色和resource角色就完事。
如果题目上说的是,授予用户连接到数据库的权限,就赋予connect角色。
如果题目说的是授予用户所有系统管理权限,就赋予DBA角色。
因此本题SQL语句如下:
grant connect,resource to mary;
(2)创建角色
create role 角色名 [identified by 密码];
如果不需要设置密码,可以不写“identified by 密码”。
(3)设置当前用户要生效的角色
如果用户A有role1,role2,role3这三个角色,如果role1未生效,则role1所包含的权限对于用户A来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户。
命令如下:
set role 角色名 [identified by 该角色的密码];
如果需要生效的角色没有密码,则不写“identified by 密码”。
例题:
小东与小杨都是公司的员工,公司要给他们分配相同的数据库登录账号(tom),但业务不同,小东业务中除登录账号的权限外,还需要有hr.sales表的查询权限。小杨业务中除登录账号的权限外,还需要有hr.employees表的查询与修改权限,但公司不能让小东在他的业务中访问hr.employees表,小杨的业务中不能访问hr.sales表,作为数据库管理员如何操作解决本问题,并给出相应操作命令。
解答:
①小东和小杨都要登录tom这个账号,但小东只能对hr.sales表进行查询,不能访问hr.employees表,小杨只能对hr.employees表进行查询与修改,不能访问hr.sales表。
②要解决这个问题,只需要设置一个带密码的角色只能对hr.sales表进行查询,另一个带密码的角色只能对hr.employees表进行查询与修改,把这两个角色的密码分别告诉小东和小杨,让他们在登录tom账号之后自己激活他们对应的这两个角色,就可以访问自己对应的表了。
因此SQL语句如下:
①创建两个带密码的角色,并把相应的权限分别授予给两个角色。
Create role xiaodong identified by xiaodong123;--为小东创建密码角色。
Create role xiaoyang identified by xiaoyang123;--为小杨创建密码角色。
Grant select on hr.sales to xiaodong;
Grant select,update on hr.employees to xiaoyang;
②因为小东和小杨都是登录tom这个账号,所以要授予以上两个角色给tom账号。
Grant xiaodong,xiaoyang to tom;
③把这两个角色的角色名和密码分别告诉小东和小杨,他们自己只知道自己对应的角色名和密码。
在登录tom账号之后,将自己对应的角色生效即可。
小东登录后执行:Set role xiaodong identified by xiaodong123;
小杨登录后执行:Set role xiaodong identified by xiaoyang123;
5.数据导入导出
Oracle数据导入导出imp/exp相当于oracle数据还原与备份。
(1)数据导出
exp 用户名/密码@数据库名 file=导出到哪里 owner=(用户名或表空间名) tables=(表名)
举几个例子,网上复制的:
- 将数据库TEST完全导出,用户名system 密码manager 导出到D:\export.dmp中
exp system/manager@TEST file=d:\export.dmp full=y
2、将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\export.dmp owner=(system,sys)
3、 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\export.dmp tables=(table1,table2)
(2)数据导入
imp 用户名/密码@数据库名 file=从哪个文件导入
同样举几个例子,还是网上复制的
1 、将D:\export.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\export.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。在后面加上 ignore=y 就可以了。
2、 将d:\export.dmp中的表table1 导入
imp system/manager@TEST file=d:\export.dmp tables=(table1)
例题:
小李是公司软件工程师,一直使用公司提供的数据库服务器进行软件开发,现因业务需要,须把小李使用的表空间computer导出转移到其它数据库服务器上,则数据库管理员使用exp命令导出表空间,已知公司数据库名为jw,system账号密码为njtcjkx,导出文件为e:\data\computer.dmp,请给出管理员导出表空间的完整操作命令。
解答:
关键信息有表空间computer,数据库名jw,用户名system,密码njtcjkx,导出到e:\data\computer.dmp,将这些东西替换掉上面的exp命令,就可以了
正确答案如下:
exp system/njsyjkx@jw file=e:\data\computer.dmp owner=(computer)
6.数据库配置参数修改
若要了解初始化参数文件,请阅读教材P67
使用alter system语句来修改初始化参数的值,命令如下:
alter system set 参数名=参数值 scope=spfile或memory或both
如果数据库处于open状态,修改初始化参数的值后需要重启数据库才能生效,建议在mount状态下进行修改。
例题:
小陈是公司数据库管理员,以前公司人数较少,随着公司业务增长,新进很多新员工,所有员工都要连接到公司的oracle数据库服务器上,但oracle数据默认安装时专用数据库服务器连接数为150,默认安装时连接数不能满足保证全部员工都能连上数据库服务器,为了保证公司的正常运转,所有员工都能连接到数据库服务器,服务器的连接数至少需要设置到900个,那么小陈该进行怎样的操作?
解答:
①先把数据库以mount模式启动:startup mount;
②再修改系统服务器参数processes值。请务必看一下书P69,不然你根本不知道要改哪个参数。
alter system set processes=900 scope=spfile;
③最后启动到open状态。
alter database open;
也可在打开状态下设置好参数后强制重启数据库(startup force)。
7.表空间和数据文件
(1)创建表空间和数据文件
PS:数据文件是和表空间一起创建的,不能单独创建数据文件。
create [bigfile|temporary] tablespace 表空间名 datafile 表空间路径 size 表空间大小 extend management local autoallocate autoextend on next 每次增长多大 maxsize 最大大小
bigfile表示大文件表空间,temporary表示临时表空间。
extend management local表示创建一个本地管理的表空间,
autoallocate表示表空间的每个区间大小由系统管理,与之对应的是uniform size xxM,可以指定最小区间大小,例如:uniform size 20M。
autoextend on表示当数据文件不够用时自动扩展,
next 表示每次自动增长多大
maxsize表示这个数据文件最大多大,
这些参数题目上没有要求的时候都可以不写。
(2)修改表空间的属性
因为表空间的属性太多了,举几个重要一点的例子吧。具体的可以看书P92-93。
①修改表空间的名字
alter tablespace 原来的表空间名 rename to 修改后的表空间名
②向表空间添加新的数据文件
alter tablespace 表空间名 add datafile 数据文件位置 size 数据文件大小;
③将表空间设置为脱机状态或联机状态
alter tablespace 表空间名 offline或online
(3)删除表空间
drop tablespace 表空间名 [including contents and datafiles]
如果只是删除表空间执行 drop tablespace 表空间名
即可,不需要加including和后面的部分。如果要删除表空间中的段和数据文件则加上后面的including部分。
(4)修改数据文件的属性
alter database datafile 数据文件位置 修改属性的子句
其中,修改属性的子句请参考创建表空间时举的例子。
例题:
小强是公司数据库管理员,最近发现用于销售管理的表空间sales所在磁盘空间不足了,原来该表空间只有一个数据文件:e:\sals\database\sales01.dbf,小强发现N盘空间很大很空,请代小强为sales表空间在N盘添加一个数据文件,文件位置、文件名自定,但文件大小为2G,请写出相应管理命令,并对原有数据文件限制在4G内。
解答:
①在N盘添加一个大小2GB数据文件,文件位置、文件名自定
alter tablespace sales add datafile 'N:\tablespace\sales02.dbf' size 2G;
②将原来的数据文件限制在4G以内
请注意限制文件大小必然是要自动增长的,不然完全就没有限制的意义,所以必须加上autoextend on
alter database datafile 'e:\sales\database\sales01.dbf ' autoextend on maxsize 4G;
8.日志文件
(1)创建日志文件
alter database add logfile [group 日志组编号] (日志文件位置1,日志文件位置2...) [SIZE 初始日志文件大小];
在以上SQL中,group和size可以省略,分别用于指定日志组和初始日志文件大小。
例题:创建重做日志组10,其中包含日志文件log1c.rdo和log2c.rdo,大小5MB,写出SQL
解答:
alter database add logfile group 10 ('log1c.rdo','log2c.rdo') size 5M
(2)将已存在的日志文件添加到日志组中
alter database add logfile member 已存在的日志文件位置 to group 日志组编号
9.使用RMAN备份和还原数据库
(1)在archivelog模式下备份数据库
该模式可以在数据库打开的情况下进行备份,俗称热备份。
切换到archivelog模式的语句: alter database archivelog
执行以下语句将整个数据库及其日志文件备份到默认的备份设备:
backup database plus archivelog
(2)在noarchivelog模式下备份数据库
该模式必须先关闭数据库,再以mount模式启动数据库,才能备份。
先执行以下操作:
# 关闭数据库实例 shutdown immediate # 以mount模式启动数据库 startup mount
然后执行备份命令即可完成备份:
backup [as copy] database
as copy可以省略,如果想在备份数据库时创建数据文件的映像副本时,才写as copy。
(3)恢复数据库
首先需要以mount模式启动数据库,才能开始恢复
# 关闭数据库实例 shutdown immediate # 以mount模式启动数据库 startup mount
执行下面的语句开始恢复数据库:
# 数据库还原 restore database; # 介质还原 recover database;
10.数据库启动/关闭
(1)关闭数据库
1、shutdown normal
正常方式关闭数据库。
2、shutdown immediate
立即方式关闭数据库,当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。
3、shutdown abort
直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
(2)启动数据库
1、startup
该命令等于以下三个命令
startup nomount
alter database mount
alter database open
2、startup nomount
非安装启动,这种方式下启动可执行:重建控制文件、重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
3、startup mount
安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。
执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。
4、startup open
先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。
5、startup force
强制启动方式,当不能关闭数据库时,可以用startup force来完成数据库的关闭,先关闭数据库,再执行正常启动数据库命令
6、startup pfile=参数文件名
带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库
例:startup pfile=E:\Oracle\admin\oradb\pfile\init.ora
(3)使用Alter Database语句,在各启动模式间切换。
①从NoMount模式切换到Mount模式(没有从mount切换到nomount的):
命令:ALTER DATABASE MOUNT;
②从Mount模式切换到Open模式:
命令:ALTER DATABASE OPEN;
2 Comments
哇哦,看起来很棒呢,很用心呢!
@缺居居不可的仙女 那不是嘢!