zoukankan      html  css  js  c++  java
  • Oracle迁库(创建表空间,用户,导入dmp文件,删除表空间)

    ORACLE表空间概念去过大型超市吧,一排排的货架很多,看着很杂乱,但是也会分出生鲜区、食品区、日常用品区什么的。 Oracle表空间就是这样的逻辑概念,表空间只是包含一些堆在一起的表的集合。
    相当于一个虚拟的划定范围
    界限,方便管理的。
    1、创建表空间:
    格式: create tablespace 表空间名 datafile '数据文件名' size 表空间大小
    栗子:create tablespace data_test datafile 'd:oracleoradata	estdata_1.dbf' size 2000M;
    解释:
      表空间名:自己定义,如果是迁库的话,需与之前的表空间命名一样
      数据文件名:这个是生成存储数据的dbf文件在服务器存储的全路径,包含文件名称,这个随意命名
      表空间大小:2000M 表是 2000兆
    2、建好tablespace, 就可以建用户了
    格式: create user 用户名 identified by 密码 default tablespace 表空间表;
    栗子:create user study identified by study default tablespace data_test;
    4. 授权给新用户
     grant connect,resource to study;   --表示把 connect,resource权限授予study用户
     grant dba to study;   --表示把 dba权限授予给 study
     解释:其中connect是赋予连接数据库的权限,resource是赋予用户只可以创建实体但是没有创建数据结构的权限,dba是赋予用户所有权限,这个地方如果不赋dba权限,会导致某些操作权限级别不够,报错;
    5. 创建数据表 
     在上面,我们已建好了用户 study 我们现在进入该用户           
     sqlplusw study/study@test   然后就可以在用户study中创建数据表了  
     这里就不再列举如何创建表数据的sql了,网上一搜一大堆,因为我是迁库,直接导入在之前数据亏服务器导出的dmp文件即可
    
    
    6. 导入dmp文件 

    在cmd黑窗口下执行语句即可
    格式:imp 用户名/密码@实例名 file=dmp文件路径  full=y;
    栗子:imp study/study@orcl file="c:/data/temp.dmp" full=y;
    可能会出现的错误:导入的dmp文件太大,数据过多,数据库初始化2000M不够用,原因是因为之前没有赋予自动扩充的功能;
    
    查询当前数据库中表空间SEC_D是否为自动扩展:
    sec@orcl> select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'data_test';
    
    
    TABLESPACE_NAME   FILE_NAME                                 AUT
    ----------------- ----------------------------------------- ---
    DATA_TEST             /u01/app/oracle/oradata/orcl/data_1.dbf  NO
    你会发现:NO,未开启自动扩充
    sec@orcl> alter database datafile '/u01/app/oracle/oradata/orcl/data_1.dbf' autoextend on;
    
    Database altered.
    
    确认是否已经修改成功
    sec@orcl> select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'data_test';
    
    TABLESPACE_NAME   FILE_NAME                                 AUT
    ----------------- ----------------------------------------- ---
    data_test             /u01/app/oracle/oradata/orcl/data_1.dbf  YES
    
    
    
     
    7. 后悔药(删除表空间,清除创建用户,清除所有的数据)
       以system用户登录,查找需要删除的用户:
    
       --查找用户
    
       select  * from dba_users;
    
       --查找工作空间的路径
    
       select * from dba_data_files; 
    
       --删除用户
    
       drop user 用户名称 cascade;
    
    
       --删除表空间
       drop tablespace 表空间名称 including contents and datafiles cascade constraint;
    
       栗子:删除用户名成为study,表空间名称为data_test
    
       --删除用户,及级联关系也删除掉
       drop user study cascade;
       --删除表空间,及对应的表空间文件也删除掉
       drop tablespace data_test including contents and datafiles cascade constraint;

    当然删除用户的时候可能报如下错误:
    SQL> drop user study cascade;
    drop user study cascade
    *
    ERROR at line 1:
    ORA-01940: cannot drop a user that is currently connected

    字面翻译是该用户有连接,不能删除,我把我自己连接的Oracle Develop客户端断开了连接,再次执行,还是报相同的错误,因为除了我们自己连接,还有其他远程客户端连接。该如何解决该问题,成功删除该用户呢?

    先查询study用户的连接状况。

    SQL>  select username,sid,serial# from v$session where username='study';
    
    USERNAME                              SID    SERIAL#
    ------------------------------ ---------- ----------
    study                                  429          7
    study                                  499          9
    
    2 rows selected.

    然后把相关的session连接删掉。

    alter system kill session'429,7';
    alter system kill session'499,9';

    这样再次执行删除study用户就可以删除成功了!

    SQL> drop user study cascade;
    
    User dropped.
     
  • 相关阅读:
    数据库知识总结
    servlet总结
    创建Dynamic Web Project工程
    Python--(爬虫与数据库的连接)
    Mongodb数据库操作
    Python Web(Django)连接SQL SERVER
    Python操作MySql
    Python(Django)项目与Apache的管理交互
    Python Django连接(听明白了是连接不是创建!)Mysql已存在的数据库
    Python selenium自动化网页抓取器
  • 原文地址:https://www.cnblogs.com/dk1024/p/12494775.html
Copyright © 2011-2022 走看看