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;

posted @ 2017-04-14 14:38  来自未来的猪  阅读(249)  评论(0编辑  收藏  举报