Oracle期末考试操作题

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角色确保用户可以创建数据库对象。

(1)为用户指定角色
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=(表名)

举几个例子,网上复制的:

  1. 将数据库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;

AnonyEast

一个爱折腾的技术萌新

2 Comments

  • 哇哦,看起来很棒呢,很用心呢!

    • @缺居居不可的仙女 那不是嘢!

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐