Oracle 常用的简单语句

一. 表空间
    1.创建数据表空间几种SQL
      create tablespace XXXX
      datafile 'E:\oracle\product\10.2.0\oradata\orcl\XXXXX.dbf'   (表空间的放置位置)
      SIZE 200M REUSE AUTOEXTEND ON NEXT 100M;
      或者:
      create tablespace XXXX
      datafile 'E:\oracle\product\10.2.0\oradata\orcl\XXXXX.dbf'   
      size 200M 
      autoextend on next 100M maxsize unlimited extend managemnet;
      或者:
      create tablespaceXXXX
      logging  
      datafile 'E:\oracle\product\10.2.0\oradata\orcl\XXXXX.dbf'
      size 200m  
      autoextend on  next 100m  maxsize 20480m  extent management local;

    2.创建临时表空间  
      create temporary tablespace user_temp  
      tempfile 'F:\oracle\product\10.2.0\oradata\orcl\TS_TEMP.dbf' 
      size 200m  
      autoextend on  next 100m  

      maxsize 20480m  

    extent management local; 

    3. 删除表空间
      前提:删除表空间之前确认该表空间没有被其他用户使用之后在删除
      drop tablespace TS_STD including contents and datafiles cascade onstraints;
      //including contents 删除表空间的内容(如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉)
      //including datafiles 删除表空间的数据文件
      //cascade onstraints 删除tablespace中表的外键参照。

    4.如果删除表空间之前删除了表空间的文件,解决办法:
      如果在清除表空间之前,先删除了表空间对应的数据文件,会造成数据库无法正常启动和关闭。
      可用如下的方法恢复
      其中,filename是已经被删除的数据文件,如果有多个,则需要多次执行,tablespace_name是相应表空间的名称。
      $ sqlplus /nolog
      SQL> coon /as sysdba;
      如果数据库已经启动,则需要先执行下面这行;
      SQL> shutdown abort;
      SQL> startup mount;
      SQL> alter database datafile 'filename' offline drop;
      SQL> alter database open;
      SQL> drop database tablespace_name including contents;

    5.查看Oracle表空间使用情况
       select * from dba_free_space;
       select * from dba_data_files;
       select b.file_id, --文件ID号
            b.tablespace_name, --空间名
            b.bytes, --字节数
            (b.bytes - sum(nvl(a.bytes, 0))), --已使用,
            sum(nvl(a.bytes, 0)),--剩余空间
            sum(nvl(a.bytes, 0)) / (b.bytes) * 100  --剩余百分比
       from dba_free_space a, dba_data_files b
       where a.file_id = b.file_id
       group by b.tablespace_name, b.file_id, b.bytes

       order by b.file_id


二. 创建用户
      1.创建用户;
  create user 用户名
  identified by 密码
           default tablespace 表空间
           temporary tablespace 临时表空间;

       2.给用户授予权限
           grant connect,resource,dba to test;
           注意:创建完成后,必须分配权限,否则连不上数据库和sqlplus

       3.删除用户
         drop user test cascade;
          注意:cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯加此参数。
   
三.导出表的命令:
       1.导入导出表的SQL语句(导出的表0行数据全部导出)
           exp 用户名/密码@实例名 file=d:\test.dmp owner=test log=d:\test.log rows=y

       2.只导出表结构,不导表数据
         exp test/test@orcl file=d:\test.dmp owner=test log=d:\test.log rows=n;

       3.将数据库中的system和sys用户的表导出
          exp system/manager@orcl file=d:\daochu.dmp owner=(system,sys) log=d:\daochu.log
 
       4.将数据库中的表table1,table2,table3导出
          exp test/test@orcl file=d:\test.dmp tables=(table1,table2,table3) log=d:\test.log;

       5.将数据库中的表table1中的字段filed1以‘00’打头的数据导出
         exp test/test@orcl file=d:\test.dmp tables=(table1) query="where filed1 like '00%'" log=d:\test.log;
         注:上面是常用的导出,对于压缩,即用winzip把dmp文件可以很好的压缩,也可以在上面的命令后面加上compress=y命令。

四. 常用的SQL语言
      1. 复制表结构及其数据  备份表的SQL:
           create table table_name_new as select * from table_name_old

      2. 只复制表结构:
           create table table_name_new as select * from table_name_old where 1=2;

      3. 只复制表数据:
         如果两个表结构一样:
         insert into table_name_new select * from table_name_old
         如果两个表结构不一样:
          insert into table_name_new(column1,column2...) select column1,column2... from table_name_old

     4.查询排序后的第一条记录
        select * from ( select tb.*, rownum from table_name tb where column_name like '20080311%' order by id) where rownum=1

     5.查看有哪些表
        select table_name,tablespace_name from user_tables
        select * from user_tables

     6.查看表的最大ID
        select max(t.id) maxid from test t

      7.求一个月有多少天
        select rownum as varchar01
        from dual c
        connect by rownum <=
        to_char(trunc(add_months(to_date('2012-06', 'YYYY-MM'), 1), 'MM') - 1,'DD');

        select to_char(last_day(to_date('2011-11-01', 'yyyy-mm-dd')), 'dd') from dual;

      8.创建database link
         -- Drop existing database link 
            drop database link XXXX;
         -- Create database link 
          create database link XXXX
          connect to XXXX 
         identified by XXXX

          using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))'; 

      9.查询某个表中的所有的列名的sql语句
         SELECT WMSYS.WM_CONCAT(U.COLUMN_NAME) FROM USER_TAB_COLUMNS U WHERE U.TABLE_NAME=upper('表名');


五. 查看ORACLE的一些资源(可以根据这个查看SQL语句的消耗) 
       select * from dba_tables a where a.TABLE_NAME like '%PROFILER%';
       SELECT * FROM PLSQL_PROFILER_DATA;
       SELECT * FROM PLSQL_PROFILER_RUNS;
       SELECT * FROM PLSQL_PROFILER_UNITS;
       SELECT * FROM ALL_SOURCE A 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值