zoukankan      html  css  js  c++  java
  • oracleSQL语句

    在linux怎么操控oracle建表

    登陆linux,以oracle用户登录(如果是root用户登录的,登陆后用su - oracle命令切换成oracle用户)

    以sysdba方式来打开sqlplus,命令如下:sqlplus / as  sysdba

    oacle通过sql语句创建表空间并授予用户权限

    1.管理员用户登录oracle数据库
    sqlplus / as sysdba
                    conn  用户/密码;         ----普通用户登录数据库
                    启动数据库
                    startup
                    停止数据库
                    shutdown  immediate
                    shutdown   abort     ---强制删除

    2.查询相关sql语句
      (1)查看用户的数据库名
            SELECT NAME FROM V$DATABASE;
     
    [root@oracle ~]# env | grep ORA
     ORACLE_SID=orcl                     //显示当前数据库实例名
     ORACLE_BASE=/usr/local/oracle/app   //oracle的根目录
     ORACLE_HOME=/usr/local/oracle/app/oracle/product/11.2.0/dbhome   //oracle产品目录
      
       (2)oracle数据库中查询实例名
              方法一:select name from v$database;
              方法二:SELECT host_name, instance_name, version FROM v$instance;
     
        (3)查看当前用户所在表空间
              select username,default_tablespace from user_users;
     
         (4)oracle查询表空间所有表
              select table_name from all_tables where TABLESPACE_NAME='表空间' 表空间名字一定要大写。

          (5)oracle查询表所有的表空间
               select * from user_tables where table_name=‘表名';表名一定要大写;

           (6)查询用户拥有哪里权限:
                SQL> select * from dba_role_privs;
                SQL> select * from dba_sys_privs;
                SQL> select * from role_sys_privs;

           (7)监视用户:
             1、查询用户会话信息:
                 SQL> select username, sid, serial#, machine from v$session;

             2、删除用户会话信息:
                SQL> Alter system kill session 'sid, serial#';

             3、查询用户SQL语句:
                SQL> select user_name, sql_text from v$open_cursor;
              


            (8)查询用户的所有系统权限
                 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'ARWEN';


             (9)查看当前用户拥有的角色权限信息
                  select * from role_sys_privs;

              (10)查看所有用户
                  select * from all_users;


               (11)查看当前用户的详细信息:
                   select * from user_users;


                (12)查看当前用户的角色信息:
                    select * from user_role_privs;


                 (13)查询数据库上操作的所有命令,需要有dba权限
                     select *  from v$sqlarea t  order by t.FIRST_LOAD_TIME desc

                 (14)查询主键、外键
                     select * from dba_constraints;

                  (15)查询索引
                      select * from dba_indexes;

                  (16)查询一张表里面索引
                      select * from user_indexes where table_name=upper('bills');


                    (17)查询被索引字段
                        select * from user_ind_columns where index_name=('in_bills');


                     (18)给某一字段创建索引
                         create index in_bills on bills(account_id);

    查看表空间
    select username,default_tablespace from dba_users;


    查看控制文件
    SELECT NAME FROM v$controlfile;


    查看日志文件
    SELECT MEMBER FROM v$logfile;


    查看数据库的创建日期和方式
    SELECT created, log_mode, log_mode FROM v$database;

    查看当前连接数据库的主机数:
    col machine  for a20
    set linesize 150
    select distinct machine,username from v$session order by username,machine;


    查询用户会话
    select username,serial#,sid from v$session;
    alter system kill session 'serial#,sid'; -- 删除相关用户会话


    查询 oracle 的连接数
    select count(*) from v$session


    查询oracle 的并发连接数
    select count(*)from v$session where status='ACTIVE';

    查看oracle 的版本
    select   banner from sys.v_$version;

    oracle增加/更改sql语句

    oracle授权给其他系统用户登录oracle的权限
       1.普通用户赋予所有权限
          grant  all  to user;

       2.赋予部分权限
         grant create session,select any table,dba to user;

    授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...;

    将表的操作权限授予全体用户:
       SQL> grant all on product to public;  // public表示是所有的用户,这里的all权限不包括drop。

      [实体权限数据字典]:
      SQL> select owner, table_name from all_tables; // 用户可以查询的表
      SQL> select table_name from user_tables;  // 用户创建的表
      SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; //   获权可以存取的表(被授权的)
      SQL> select grantee, owner, table_name, privilege from user_tab_privs;   // 授出权限的表(授出的权限)


    重设密码
    alter  user 用户 identified by 密码;

    创建表
    create  table z_test(id number,name varchar(20));

    插入表数据
    insert into z_test select 1,'a'from dual;
    语法: INSERT INTO table [(column1,column2,...)] VALUE (value1,value2,...)
    例子: insert into dep (dep_id,dep_name) values(1,'技术部');


    一表多行插入
    INSERT [ALL] [condition_insert_clause]

    [insert_into_clause values_clause] (subquery)

    例子:INSERT ALL

     INTO sal_history(emp_id,hire_date,salary) values (empid,hiredate,sal)

     INTO mgr_history(emp_id,manager_id,salary) values (empid,hiredate,sal)

     SELECT employee_id empid,hire_date hiredate,salary sal,manager_id mgr

     FROM employees

     WHERE employee_id>200;

    有条件的Insert

        语法:

     INSERT [ALL | FIRST]

     WHEN condition THEN insert_into_clause values_clause

     [WHEN condition THEN] [insert_into_clause values_clause]

     ......

     [ELSE] [insert_into_clause values_clause]

     Subquery;

    例子:Insert All

     when id>5 then into z_test1(id, name) values(id,name)

     when id<>2 then into z_test2(id) values(id)

     else into z_test3 values(name)

     select id,name from z_test;


    修改用户:

    SQL> Alter User 用户名
    1、修改口令字:
     SQL>Alter user acc01 identified by “12345”;
     2、修改用户缺省表空间:
     SQL> Alter user acc01 default tablespace users;
     3、修改用户临时表空间
     SQL> Alter user acc01 temporary tablespace temp_data;
     4、强制用户修改口令字:
     SQL> Alter user acc01 password expire;
     5、将用户加锁
     SQL> Alter user acc01 account lock;  // 加锁
     SQL> Alter user acc01 account unlock;  // 解锁


    oracle删/改/查sqlyuju

    删除用户:SQL> drop user 用户名 cascade;  //加上cascade则将用户连同其创建的东西全部删除

    删除表空间
    DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES


    删除用户

    SQL>drop user 用户名;  //用户没有建任何实体
     SQL> drop user 用户名 CASCADE;  // 将用户及其所建实体全部删除
     *1. 当前正连接的用户不得删除。


    创建表空间
    create tablespace 表空间名 
     datafile '/usr/local/oracle/app/表空间名.dbf' 
     size 100M    reuse  autoextend  on next 40M maxsize  unlimited
     default storage(inital  128K next 128K  minextents  2  maxextents  unlimited);


    创建新用户
    create user new_username
      identified  by "new_password"
      default tablespace new_tablespacename
      profile default
      account unlock;


    给新建用户授权dba权限
    grant dba to new_username;
    grant unlimited  tablespace to new_username;


    选择表查询
    select  * from z_test;


    重命名表空间
    在表空间为ONLINE的情况下
    ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name ;
     

    在表中添加字段:
    alter table 表名  字段名  字符长度
            
    注:在表中的修改字段:
    alter table 表名 modify(字段名  字符类型 长度)

    23.oracle 中如何设置可上翻键,使用历史命令。
    Oracle 默认是不可以的,需要下载一个rlwrap 插件即可。参考下载地址:http://v.yingsun.net/cobra/download/
               
    下载下来之后,只需在oracle 的家目录下的环境变量进行设置一个别名即可:
    如下:  alias sqlplus='rlwrap sqlplus'
    设置完之后即可用。


    创建用户的Profile文件

    SQL> create profile student limit  // student为资源文件名
     FAILED_LOGIN_ATTEMPTS  3  //指定锁定用户的登录失败次数
     PASSWORD_LOCK_TIME 5  //指定用户被锁定天数
     PASSWORD_LIFE_TIME 30  //指定口令可用天数


    数据库导入导出

    -- 数据库导入1:正常情况
    SQL> impdp bp_oracle/bp_oracle directory=dump_dir dumpfile=bp_oracle20120209.dmp
    -- 数据库导入2:映射情况
    SQL> impdp bp_oracle/bp_oracle directory=dump_dir dumpfile=ncp20120209.dmp remap_schema=ncp:bp_oracle remap_tablespace=ncp:bp_oracle
    -- 数据导出,可以带版本
    SQL> expdp bp_oracle/bp_oracle DIRECTORY=dump_dir dumpfile=bp_oracle.dmp version=10.2.0.1.0


    xpdp 导入导出

    -- 导出数据库不带版本
    SQL>expdp bp_oracle/bp_oracle schemas=bp_oracle DUMPFILE=bp_oracle20120221.dmp DIRECTORY=DUMP_DIR JOB_NAME=full
    -- 导出数据库 带版本
    SQL> expdp bp_oracle/bp_oracle schemas=bp_oracle DIRECTORY=dump_dir dumpfile=bp_oracle20120221.dmp version=10.2.0.1.0


    EXP、IMP导入导出 (常用的方式)

    -- 导出数据 指定表名数据
    SQL>exp nmswxt_mhwz/nmswxt_mhwz file=/home/oracle/dmp/nmswxt_mhwz_news_content.dmp tables=表1,表2,表3    //tables后面不要带括号,并且tables不要和owner一起用,会尝试冲突,owner与tables不能同时指定。owner是指定要导出指定用户的数据,tables参数指定要导出的表
    -- 导入数据,带映射关系
    SQL>imp nmswxt_mhzz/nmswxt_mhzz file=/home/oracle/dmp/nmswxt_mhwz_news_content.dmp fromuser=nmswxt_mhwz touser=nmswxt_mhzz


    一个数据库由多个表空间构成,表空间又是由段构成,而段又是由区构成,而区又是由块构成,这样构成的可以提高数据的效率;

    实际上表空间又是由多个数据文件构成,当表空间不够使用时,可以增加多个数据文件来增大表空间

    增大表空间语句:alter tablespace 表空间名字 add filedata 'd:db2.dbf' size 200m ;

    表空间脱机:alter tablespace 表空间 offline;

  • 相关阅读:
    文档视图
    引入缓冲池技术
    数据库访问与查询
    OnInitialUpdate函数
    显示股票视图的全局函数
    切换视图的核心代码
    GuiEdit的使用
    操作方法
    SQL 使用 解析
    调用API 实现 窗体 拖动
  • 原文地址:https://www.cnblogs.com/dynwings/p/6708798.html
Copyright © 2011-2022 走看看