Oracle建库、建表空间、建用户并授权、导入导出命令

时间:2022-09-15 08:38:21

(1)新建数据库
     可以使用图形化界面直接新建一个空的数据库

(2)连接数据库
     在cmd命令中连接数据库的方法:
     方式一:
     输入sqlplus,回车
     输入用户名:system,回车
     输入密码:orcl,回车
     方式二:
     输入sqlplus
system/orcl@orcl,回车(system是用户名,orcl是密码,@后面的orcl是库的名字)
     (数据库安装完成后,有两个系统级的用户 :
         1) system 默认密码为 :manager;
         2) sys 默认密码为 :change_on_install)

(3)创建临时表空间
     create temporary tablespace 临时表空间名 tempfile 文件位置 size 临时表空间初始大小 autoextend on next 临时表空间自动增长的大小 maxsize 临时表空间最大的大小(建议最大设为32G) extent management local;

    例如:create temporary tablespace user_temp  tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m  autoextend on  next 50m maxsize 20480m extent management local;

(4)创建表空间
     create tablespace 表空间名 logging datafile 文件位置 size 临时表空间初始大小 autoextend on next 临时表空间自动增长的大小 maxsize 临时表空间最大的大小 extent management local;

    例如:create tablespace user_data  logging  datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf' size 50m  autoextend on  next 50m maxsize 20480m  extent management local; 

(5)创建用户并指定表空间
     create user 用户名 identified by 密码 default tablespace 表空间名 temporary tablespace 默认表空间名;

    例如:create user username identified by password  default tablespace user_data  temporary tablespace user_temp; 

(6)给用户授予权限(Oracle权限介绍见下面附录2)
     GRANT 权限 to 用户名;

    例如:GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY  IEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO ora;


(7)数据库的导出
     1)用Sytem完全导出数据库(所有数据库的默认账号:system;密码:manager)
          exp
system/manager@TEST file="d:\daochu.dmp" full=y;
     2)导出特定用户下的数据库
         exp 登入数据库名/登入数据库密码@服务名 file=文件存放路径 log=日子文件存放路径 owner=用户名;
        例如:exp
username/password@orcl file="E:\DATABASE_BAK\orcl.dmp"  log="E:\DATABASE_BAK\orclLog.log" owner=(username) full=y ;
        注:如果该用户有DBA权限则导出所有数据。

(8)数据库的导入
     导入数据前要保证该用户下不存在,任何表结构、数据、函数、包等。
     如果存在,可以先清空。(采用直接删除用户或表空间见下面附录1)
     以用户名密码登录后,在执行sql窗口中(例如:PLSQL Developer的Sql窗口)执行以下sql:

    BEGIN 
         FOR rec IN 
         (SELECT object_name,object_type from user_objects 
         WHERE object_type='PROCEDURE' 
         OR object_type='TABLE' 
         OR object_type='VIEW' 
         OR object_type='FUNCTION' 
         OR object_type='PACKAGE' 
         OR object_type='SEQUENCE' 
         ) 
         LOOP 
             IF rec.object_type='TABLE' THEN 
                EXECUTE IMMEDIATE 'DROP '||rec.object_type||' '||rec.object_NAME||' CASCADE CONSTRAINTS'; 
             ELSE 
                 EXECUTE IMMEDIATE 'DROP '||rec.object_type||' '||rec.object_NAME; 
             END IF; 
        END LOOP;     
     END;

    然后执行导入语句:
     1)用Sytem完全导入数据库(所有数据库的默认账号:system;密码:manager)
       imp
system/manager@TEST  file="E:\DATABASE_BAK\orcl.dmp"  full=y ignore=y;
     2)导入特定用户下的数据库
      imp 用户名/密码@数据库 file=导入的文件路径 fromuser=需要导入的那个文件是属于哪个用户的 touser=要导入的用户名  ignore=y;
      例如:imp
username/password@orcl file="E:\DATABASE_BAK\orcl.dmp" log="E:\DATABASE_BAK\orclLog.log" fromuser=username touser=musername ignore=y;
      注:两个数据库同名则fromuser=username touser=musername 可省略。(添加ignore=y参数,防止已存在数据,不能覆盖导入,会报错,相当于直接跳过该错误继续导入;建议再导入前先清空数据库)

 

    附录1
     (1)删除用户及用户所有的对象
         drop user 用户名 cascade;
         注:cascade 参数是级联删除该用户所有对象;只是删除了该user下的schema objects,是不会删除相应的tablespace的。

    (2)删除表空间
         drop tablespace 表空间名 including contents and datafiles cascade constraints;
         注:including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉
                including datafiles 删除表空间中的物理文件 
                cascade constraints 同时删除tablespace中表的外键参照

     附录2
         (1)系统权限和实体权限
              1)系统权限分为三类:
              DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
              RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
              CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

             对于普通用户:授予connect, resource权限。
              对于DBA管理用户:授予connect,resource, dba权限。

             注:系统权限只能由DBA用户授出:sys, system(权限范围:sys>system)
              [普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]
              授权命令: grant connect, resource, dba to 用户名1 [,用户名2]...;

        2)实体权限分类:
              select, update, insert, alter, index, delete, 
              all  //all包括所有权限
              execute  //执行存储过程权限

             授权命令: grant all to 用户名1 [,用户名2]...;

 

小技巧:Orcle密码忘记怎么办?

在服务器端找回密码,

(1)打开cmd窗口,输入 sqlplus / as sysdba  

(2)运行cmd ,输入  alter user 用户名 account unlock;  (用户名为你想要找回/修改 密码的用户,这里举例为 system 用户 )

(3)alter user 用户名(system) identified by  新密码(m1234) ; 修改密码 (注意:一定要在英文输入状态下输入字母,否则不识别 )

(4)修改成功 ,现在可以用新密码 m1234 登录。