zoukankan      html  css  js  c++  java
  • oracle 数据导入案例

    1、数据库监听启动关闭
    2、创建表空间,创建用户赋权和回收用户权限
    3、查看用户权限
    4、删除用户和表空间
    5、快速删除某个用户所有的表数据,表结构,回收权限,删除用户

    6、查看表空间的大小及使用情况sql语句

    7、表结构及数据导入与导出

    1、数据库监听启动关闭

    // 登录方式  
    SQL> sqlplus "/as sysdba"
    SQL> conn / as sysdba
    // 以system用户身份登陆oracle 
    SQL> sqlplus /nolog
    SQL> conn / as sysdba
     
    //立 即关闭方式  
    SQL> shutdown immediate
    // 启动数据库    
    SQL> startup
    // 查看监听状态 
    SQL> lsnrctl status 
    // 启动监听    
    SQL> lsnrctl start
    // 关闭监听    
    SQL> lsnrctl stop

    附:oracle常用的45个查询Sql   http://blog.sina.com.cn/s/blog_6d6e54f70102w78r.html

    2、创建表空间,创建用户赋权和回收用户权限

    //创建tablespace自动扩展大小
    create tablespace URSP_SLSADMIN logging datafile '/data/URSP_SLSADMIN.dbf' size 1500M
    autoextend on next 8000M  maxsize unlimited extent management local segment space
    management auto;
    SQL> create tablespace SLSADMIN datafile '/data/SLSADMIN.dbf' size 1500M
    //自动扩展表空间大小
    create tablespace SLSADMIN datafile '/tab/SLSADMIN.DBF' size 100M autoextend on;
     
    //删除tablespace,需要手动删除路径下对应的文件
    SQL> drop tablespace SLSADMIN.dbf
     
    //创建用户赋值tablespace
    SQL> create user SLSADMIN_1104 identified by SLSADMIN_1104 default tablespace URSP_SLSADMIN;
    SQL> alter user SLSADMIN_1104 default tablespace TBS_SJ_POC;
    //赋值用户BDA权限
    SQL> grant connect,resource,dba to SLSADMIN_1104 ;
    //回收dba权限
    SQL> revoke dba from SLSADMIN_1104;
     
    // 授权表的权限给某个用户
    select 'grant select,insert,update,delete  on ' || table_name || ' to user;'  from user_tables
    

      

    3、查看用户权限

    //可能遇到的问题?
    //当在一个新建数据库用户上创建表失败时,可以查看系统权限;在当前用户执行
    select * from dba_role_privs where grantee=upper('username');
    //如果不能执行(提示表或视图不存在),说明没有dba权限
        解决方法:可以登录sys账户赋予dba权限
        登录sys:sqlplus / as sysdba
        给username赋权限:grant dba to username;
     
    //也可以直接登录sys账户:
    如果granted_role的值没有dba,说明没有dba权限
    select * from dba_role_privs where grantee=upper('username'),
     
    //查看指定用户有哪些系统权限
    SQL> select * from dba_role_privs where grantee=upper('username');
     
    //查看指定用户有哪些对象权限
    SQL> select * from dba_tab_privs where grantee=upper('username');
    

      

    4、删除用户和表空间

    //查询DBA权限用户
    select * from dba_role_privs where granted_role='DBA'
    //回收DBA权限
    revoke dba from SLSADMIN_GX
    //查询所有用户,包含普通用户
    select  * from dba_users;
     
     
    //查看表tablespace路径
    select * from dba_data_files;
    //删除tablespace
    drop tablespace SLSADMIN including contents and datafiles cascade constraint
     
    //锁定用户
    alter user SLSADMIN_GX account lock
    //查看用户的连接状况
    select * from V$session where username='SLSADMIN_GX'
    //kill 当前用户session回话
    alter system kill session 'xx,xx'
    //删除用户以及所有关联的数据库对象
    drop user xx cascade
    

      

    5、快速删除某个用户所有的表数据,表结构,回收权限,删除用户

    //查询单列重复信息
    select * from test
    where name in (select name from test group by name having count
    (name) > 1)
    
    //删除重复信息
    select * from
    delete from cap_user where rowid in (
    select  max(rowid) from cap_user group by operator_id having count(1)>1
    )

    //快速查询删除用户下的表数据据 select 'delete from '|| table_name || ';' from user_tables order by table_name; //锁定用户 alter user reports account lock; //查询用户的session连接 select * from V$session where username='REPORTS' //kill当前用户session连接 alter system kill session '239,85' drop user reports cascade

      

     

    6、查看表空间的大小及使用情况sql语句

    1、//查看表空间的名称及大小 
    SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
    FROM dba_tablespaces t, dba_data_files d 
    WHERE t.tablespace_name = d.tablespace_name 
    GROUP BY t.tablespace_name; 
     
    2、//查看表空间物理文件路径的名称及大小 
    SELECT tablespace_name, 
    file_id, 
    file_name, 
    round(bytes / (1024 * 1024), 0) total_space 
    FROM dba_data_files 
    ORDER BY tablespace_name; 
     
    3、//查看回滚段名称及大小 
    SELECT segment_name, 
    tablespace_name, 
    r.status, 
    (initial_extent / 1024) initialextent, 
    (next_extent / 1024) nextextent, 
    max_extents, 
    v.curext curextent 
    FROM dba_rollback_segs r, v$rollstat v 
    WHERE r.segment_id = v.usn(+) 
    ORDER BY segment_name; 
     
    4、//查看控制文件 
    SELECT NAME FROM v$controlfile; 
    5、//查看日志文件 
    SELECT MEMBER FROM v$logfile; 
     
    6、//查看表空间的使用情况 
    SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name 
    FROM dba_free_space 
    GROUP BY tablespace_name; 
    SELECT a.tablespace_name, 
    a.bytes total, 
    b.bytes used, 
    c.bytes free, 
    (b.bytes * 100) / a.bytes "% USED ", 
    (c.bytes * 100) / a.bytes "% FREE " 
    FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
    WHERE a.tablespace_name = b.tablespace_name 
    AND a.tablespace_name = c.tablespace_name; 
     
    7、//查看表空间总数求和,已经使用的表空间
    select total.tablespace_name,round(total.MB,2) as Total_MB,
    round(total.MB-free.MB, 2) as Used_MB
    from (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_free_space 
    group by tablespace_name) free,
    (select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by
    tablespace_name) total
    where free.tablespace_name=total.tablespace_name
     
    8、//查看数据库库对象 
    SELECT owner, object_type, status, COUNT(*) count# 
    FROM all_objects 
    GROUP BY owner, object_type, status; 
    9、//查看数据库的版本  
    SELECT version 
    FROM product_component_version 
    WHERE substr(product, 1, 6) = 'Oracle'; 
    10、//查看数据库的创建日期和归档方式 
    SELECT created, log_mode, log_mode FROM v$database;
     
    11、//查表空间使用率情况(含临时表空间)
    SELECT d.tablespace_name "Name", d.status "Status", 
           TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",
              TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024,
                       '99999999.99'
                      ) USE,
           TO_CHAR (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0),
                    '990.00'
                   ) "Used %"
      FROM SYS.dba_tablespaces d,
           (SELECT   tablespace_name, SUM (BYTES) BYTES
                FROM dba_data_files
            GROUP BY tablespace_name) a,
           (SELECT   tablespace_name, SUM (BYTES) BYTES
                FROM dba_free_space
            GROUP BY tablespace_name) f
     WHERE d.tablespace_name = a.tablespace_name(+)
       AND d.tablespace_name = f.tablespace_name(+)
       AND NOT (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')
    UNION ALL
    SELECT d.tablespace_name "Name", d.status "Status", 
           TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",
              TO_CHAR (NVL (t.BYTES, 0) / 1024 / 1024, '99999999.99') USE,
           TO_CHAR (NVL (t.BYTES / a.BYTES * 100, 0), '990.00') "Used %"
      FROM SYS.dba_tablespaces d,
           (SELECT   tablespace_name, SUM (BYTES) BYTES
                FROM dba_temp_files
            GROUP BY tablespace_name) a,
           (SELECT   tablespace_name, SUM (bytes_cached) BYTES
                FROM v$temp_extent_pool
            GROUP BY tablespace_name) t
     WHERE d.tablespace_name = a.tablespace_name(+)
       AND d.tablespace_name = t.tablespace_name(+)
       AND d.extent_management LIKE 'LOCAL'
       AND d.CONTENTS LIKE 'TEMPORARY';
     
     
      
     
      
     
    --------------------------tablespace使用大小计算-------------------------------
     
    1G=1024MB 
    1M=1024KB 
    1K=1024Bytes 
    1M=11048576Bytes 
    1G=1024*11048576Bytes=11313741824Bytes 
    SELECT a.tablespace_name "表空间名", 
    total "表空间大小", 
    free "表空间剩余大小", 
    (total - free) "表空间使用大小", 
    total / (1024 * 1024 * 1024) "表空间大小(G)", 
    free / (1024 * 1024 * 1024) "表空间剩余大小(G)", 
    (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", 
    round((total - free) / total, 4) * 100 "使用率 %" 
    FROM (SELECT tablespace_name, SUM(bytes) free 
    FROM dba_free_space 
    GROUP BY tablespace_name) a, 
    (SELECT tablespace_name, SUM(bytes) total 
    FROM dba_data_files 
    GROUP BY tablespace_name) b 
    WHERE a.tablespace_name = b.tablespace_name
     
     
     
    -----------------------------扩增表空间大小-----------------------------------------
     
    //查询用户对应的表空间,我们可以看到针对不同的数据库用户ORACLE
    select username, default_tablespace, temporary_tablespace
    from dba_users;
     
    //查询用户的对应的数据文件,以及数据文件大小
    select tablespace_name, file_id, file_name,
    round(bytes/(1024*1024),0) total_space
    from dba_data_files
    order by tablespace_name;
     
    //扩增表空间大小
    SQL> ALTER DATABASE DATAFILE '/data/URSP_SLSADMIN.dbf' RESIZE 8000M ;
    

        

    7、表结构及数据导入与导出

    // 导入数据
    imp AML/AML@172.16.87.140:1521/orcl fromuser=URSPMONITOR touser=AML
      FILE=/data/aml.dmp full=y ignore=y;
    imp aml/xjnx_ursp_aml1@10.1.51.53:1521/pisa  fromuser=URDPMONITOR touser=aml file=/jgtest/aml_rule_autoslay.dump
    
    
    在导入数据时出现无法找到目标用户进行赋值错误,需要使用fromuser=URSPMONITOR  touser=AML,即忽略用户授权错误;
    exp urspmonitor/urspmonitor@10.1.48.53:1521/dwursp file=aml_rule_autoslay.dump tables=aml_rule_autoslay_0705
    

      

      

  • 相关阅读:
    AtCoder Beginner Contest 184 ABCDE 题解
    Codeforces Round #685 (Div. 2) C. String Equality 思维
    Codeforces Round #682 (Div. 2) ABC 题解
    Gym 102215 & 队内训练#5
    【题解】 CF436E Cardboard Box 带悔贪心
    【题解】 「NOI2019」序列 模拟费用流 LOJ3158
    【笔记】 exlucas
    【题解】 「HNOI2018」毒瘤 树形dp+动态dp+容斥+格雷码 LOJ2496
    【笔记】 异或高斯消元方案数
    【笔记】 用生成函数推二项式反演
  • 原文地址:https://www.cnblogs.com/zhenning17/p/9362092.html
Copyright © 2011-2022 走看看