Oracle导入数据(创建表空间、用户及授权和导入)

2022-12-02 10:17:23 浏览数 (1)

背景:从服务器把数据库导至本地 dmp文件已经拉下来了,却不知如何导入,遂请教大佬 总结如下:

代码语言:javascript复制
--******************************************************************************************************************
--创建表空间语句
create tablespace element                                      --表空间名字
logging                                                        --是否生成创建日志  nologging不生成可加快创建速度
datafile 'D:dev-softwareOracleoradataORCLelement_hn.dbf'  --物理文件名及路径
size 20480m                                                    --表空间大小
autoextend on                                                  --自动增长
next 500m maxsize 20480m                                       --每次扩展大小及最大大小
extent management local;                                       --本地管理表空间是通过位图管理的,这是最重要的子句,说明了表空间如何管理范围。一旦你声明了这个子句,只能通过移植的方式改变这些参数。
--******************************************************************************************************************
--为表空间追加一个数据文件
alter tablespace element                                          --表空间名字
add datafile 'D:dev-softwareOracleoradataORCLelement_hn.DBF' --追加的物理文件名及路径
size 20480m                                                       --表空间大小
autoextend on                                                     --自动增长
next 1024m maxsize unlimited;                                     --没有最大限制
--******************************************************************************************************************
-- Create the user                   --创建用户分配表空间                             
create user 用户名 identified  by 密码  --用户名及密码
  default tablespace 表空间             --指定表空间
  temporary tablespace 临时表空间          --临时表空间
  profile DEFAULT;
--******************************************************************************************************************
-- Grant/Revoke role privileges      --给用户授予权限
grant connect to 用户名;             --赋予用户创建连接的权限
grant dba to 用户名;                 --赋予用户数据库管理员的权限
grant resource to 用户名;            --赋予用户创建实体的权限
--******************************************************************************************************************
--导入数据
imp 用户名/密码@orcl  file=c:orabackuphkbfull.dmp log=c:orabackuplog.log full=y
--******************************************************************************************************************

另外给出由这次操作学会的几个关键性知识点:

改变表空间(game)状态

  1. 使表空间脱机 ALTER TABLESPACE game OFFLINE; 如果是意外删除了数据文件,则必须带有RECOVER选项 ALTER TABLESPACE game OFFLINE FOR RECOVER;
  2. 使表空间联机 ALTER TABLESPACE game ONLINE;
  3. 使数据文件脱机 ALTER DATABASE DATAFILE 3 OFFLINE;
  4. 使数据文件联机 ALTER DATABASE DATAFILE 3 ONLINE;
  5. 使表空间只读 ALTER TABLESPACE game READ ONLY;
  6. 使表空间可读写 ALTER TABLESPACE game READ WRITE;

用户权限

CONNECT,RESOURCE,DBA是ORACLE系统的三个内置角色,角色权限如下:

  1. CONNECT:拥有Connect权限的用户只可以登录ORACLE,不可以创建实体,不可以创建数据库结构。
  2. RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
  3. DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 Oracle内置的connect、resource和dba三个标准角色说明.

创建表空间末尾的(extent management DICTIONARY | LOCAL)的含义

代码语言:javascript复制
[AUTOALLOCATE | UNIFORM [SIZE INTEGER[K | M]]]

这是最重要的子句,说明了表空间如何管理范围。一旦你声明了这个子句,只能通过移植的方式改变这些参数。

如果希望表空间本地管理的话,声明local选项。本地管理表空间是通过位图管理的。autoallocate说明表空间自动分配范围,用户不能指定范围的大小。

只有9.0以上的版本具有这个功能。uniform说明表空间的范围的固定大小,缺省是1m。

 不能将本地管理的数据库的system表空间设置成字典管理。oracle公司推荐使用本地管理表空间。

 如果没有设置extent_management_clause,oracle会给他设置一个默认值。如果初始化参数compatible小于9.0.0,那么系统创建字典管理表空间。

  如果大于9.0.0,那么按照如下设置:如果没有指定default storage_clause,oracle创建一个自动分配的本地管理表空间。

 否则,如果指定了mininum extent,那么oracle判断mininum extent 、initial、next是否相等,以及pctincrease是否=0.如果满足以上的条件,oracle创建一个本地管理

  表空间,extent size是initial.如果不满足以上条件,那么oracle将创建一个自动分配的本地管理表空间。

  如果没有指定mininum extent。initial、那么oracle判断next是否相等,以及pctincrease是否=0。表示满足oracle创建一个本地管理表空间并指定uniform。

   否则oracle将创建一个自动分配的本地管理表空间。

  注意:本地管理表空间只能存储永久对象。如果你声明了local,将不能声明default storage_clause,mininum extent、temporary.

0 人点赞