oracle中sql如何操作

90次阅读
没有评论

共计 7206 个字符,预计需要花费 19 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 oracle 中 sql 如何操作,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

oracle 用户 sys、system 区别:

sys 用户是超级用户,具有最高权限,具有 sysdba 角色,有 create database 的权限

system 用户是管理操作员,权限也很大,具有 sysoper 角色,没有 create database 的权限

一般来说,对数据库维护,使用 system 用户登录就可以

sqlplus:

Usage 2: sqlplus [[ option] [{logon | /nolog}] [start] ]

option is: [-C version] [-L] [-M options] [-R level] [-S]

logon is: {username [/ password][@ connect_identifier] | / }

            [AS {SYSDBA | SYSOPER | SYSASM}] [EDITION=value]

oracle 一个数据库就是一个单实例(创建一个数据库就是创建一个单实例,默认有那么几个用户)

连接命令

1、conn,用法:conn 用户名 / 密码 @网络服务名 [as sysdba/sysoper]

当用特权用户身份连接时,必须带上 as sysdba 或者 as sysoper

使用空用户登录:

[oracle@oracle11g ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 15 22:31:50 2016

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL show user;

USER is

SQL  

使用 system 用户登录

[oracle@oracle11g ~]$ sqlplus system/redhat

SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 15 19:56:40 2016

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL  

SQL show user;

USER is SYSTEM

SQL  

进行切换用户到 scott

SQL conn scott/redhat;

ERROR:

ORA-28000: the account is locked     表明用户已经被锁定了

使用系统用户进行解锁

SQL conn system/redhat

Connected.

SQL alter user scott account unlock;   该条命令进行解锁

User altered.

然后重新使用 Scott 用户登录

SQL conn scott/tiger;

ERROR:

ORA-28001: the password has expired   告知用户 scott 密码过期

Changing password for scott

New password: 

Retype new password: 

Password changed

Connected.

SQL show user;

USER is SCOTT

文件操作命令:

1、运行 sql 脚本,start /root/a.sql

SQL start /home/oracle/a.sql

2、spool 将 sqlplus 屏幕上的输入到一个文件中

SQL spool /home/oracle/b.sql;

SQL select * from emp;

SQL spool off;   将 select * from emp 查询出来的内容保存到某个文件中

: 可以替代变量,而该变量在执行时,需要用户输入

SQL select * from emp where job= job 这里就会输入 job 的一个值来替代

SQL select * from emp where job= job  

Enter value for job: MANAGER

old   1: select * from emp where job= job

new   1: select * from emp where job= MANAGER

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM

———- ———- ——— ———- ——— ———- ———-

    DEPTNO

———-

      7566 JONES      MANAGER         7839 02-APR-81       2975

        20

      7698 BLAKE      MANAGER         7839 01-MAY-81       2850

        30

      7782 CLARK      MANAGER         7839 09-JUN-81       2450

显示和设置环境变量:

SQL show linesize;

linesize 80

SQL set linesize 50;

创建用户

在 oracle 中要创建一个新的用户使用 create user 语句,一般是具有 dba 的权限才能使用

SQL create user xiaoming identified by redhat;

User created.

SQL show user;

USER is SYSTEM

给用户修改密码,需要 dba 权限或者 alter user 的系统权限

SQL password xiaoming

Changing password for xiaoming

New password: 

Retype new password: 

Password changed

或者

sql alter user 用户名 identified by 新密码;

SQL alter user xiaoming identified by redhat;

User altered.

note: 新创建的用户并不能马上能够登录,创建的新用户没有任何权限,所以登录不了

SQL conn xiaoming/huang;

ERROR:

ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon deniedWarning: You are no longer connected to ORACLE.

SQL show user;

USER is

删除用户:

一般以 dba 的身份去删除某个用户,如果用其他的用户去删除某个用户,需要具有 drop user 的权限

比如:drop user 用户名 [cascade]

在删除用户时,注意,如果删除的用户已经创建了表,那么就需要在删除的时候加上一个参数 cascade

这个参数的意思就是删除用户以及用户创建的表

用户管理 —-》授权

创建的新用户是没有任何权限的,连登录都不行,需要为其制定相应的权限,赋予权限用 grant 命令

回收权限的命令为 revoke

oracle 事先就有权限这个定义,有两种

1、系统权限:用户对数据库访问的相关权限(建库建表建索引登录数据库等等)

create session(系统权限 140 个)

2、对象权限:用户对其他用户的数据对象访问操作的权限

数据对象:每个用户创建的表、视图、触发器等等(25 个)

oracle 角色:为了授予权限方便,事先定义了一些角色,赋予了一些权限

从系统权限中选出某些权限赋予给指定的角色

connect 就是其中的一个角色(包含 7 个权限)

grant connect to xiaoming 

角色也分两种:

1、自定义角色:自己定义角色

2、预定义角色:数据库已经制定好的角色(connect 就是预定义角色)

角色举例:

connect

dba:授予 dba 角色就会有 dba 系统的所有权限

resource:可以让某个用户在表空间建表

例子:

SQL grant connect to xiaoming ;   将 connect 角色授予给 xiaoming,并具备一些权限

Grant succeeded.

再次使用用户 xiaoming 登录:

SQL conn xiaoming/redhat;   这样授权之后,用户 xiaoming 就可以登录了

Connected.

刚创建的用户并没有任何表,新创建的用户能否创建表呢?

SQL conn xiaoming/redhat;

Connected.

SQL show user;

USER is XIAOMING

SQL create table student(id number,name varchar2(20));

create table student(id number,name varchar2(20))

*

ERROR at line 1:

ORA-01031: insufficient privileges

由上述报错发现,授予 connect 角色并不能创建表,那么在加上 resource 角色呢?

切换用户,并授予角色给 xiaoming

SQL show user;

USER is XIAOMING

SQL conn system/redhat;

Connected.

SQL grant resource to xiaoming;

Grant succeeded.

再次创建表

SQL show user;

USER is XIAOMING

SQL conn system/redhat;

Connected.

SQL grant resource to xiaoming;

Grant succeeded.

SQL conn xiaoming/redhat

Connected.

SQL create table student(id number,name varchar2(20));

Table created.

SQL desc student;

 Name                                      Null?    Type

 —————————————– ——– —————————-

 ID                                                 NUMBER

 NAME                                               VARCHAR2(20)

可以看出表创建成功,这就是 resource 角色的作用

对象权限:用户对其他用户的数据对象访问操作的权限

1、select

2、insert

3、update

4、delete

5、all

6、create index 等等

数据对象:每个用户创建的表、视图、触发器等等(25 个)

xiaoming 这个用户能否查询 scott 用户下的某个表?

SQL select * from emp;

select * from emp

              *

ERROR at line 1:

ORA-00942: table or view does not exist   可以清楚的看出不能访问 scott 下的表 emp

该如何操作呢?

由于表 emp 是 scott 用户下面的,于是需要使用 scott 用户向 xiaoming 用户进行授权

SQL conn scott/redhat

Connected.

SQL grant select on emp to xiaoming;   使用 scott 用户进行授权

Grant succeeded.

SQL conn xiaoming/redhat   连接 xiaoming 这个用户

Connected.

SQL select * from emp;     查询表 emp,但是依然失败,由于是 scoot 的表 emp

select * from emp

              *

ERROR at line 1:

ORA-00942: table or view does not exist

所以需要下面这样进行查询

SQL select * from scott.emp;  scott 用户下面的表

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM

———- ———- ——— ———- ——— ———- ———-

    DEPTNO

———-

      7369 SMITH      CLERK           7902 17-DEC-80        800

        20

收回权限 revoke

scott 收回 xiaoming 有查询的权限

revoke select on emp from xiaoming;

revoke 收回权限,必须是原始用户对其赋予权限的那个用户收回

SQL show user;

USER is XIAOMING

SQL conn scott/redhat;

Connected.

SQL revoke select on emp from xiaoming;

Revoke succeeded.

对权限的维护:

1、如果是对象权限

希望 xiaoming 用户可以去查询 scott 的 emp 表,而且还希望 xiaoming 可以把这个权限能够给另外的用户?

利用 scott 用户进行如下授权

SQL show user;

USER is SCOTT

SQL grant select on emp to xiaoming with grant option;

Grant succeeded.

然后新建一个用户,授予 connect 角色权限

SQL conn system/redhat

Connected.

SQL create user xiaobai identified by redhat;

User created.

SQL grant connect to xiaobai;

Grant succeeded.

然后使用 xiaoming 用户给 xiaobai 用户进行授权

SQL conn xiaoming/redhat

Connected.

SQL grant select on scott.emp to xiaobai;

Grant succeeded.

最后使用 xiaobai 用户进行查询 emp 表

SQL conn xiaobai/redhat

Connected.

SQL select * from scott.emp;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM

———- ———- ——— ———- ——— ———- ———-

    DEPTNO

———-

      7369 SMITH      CLERK           7902 17-DEC-80        800

        20

2、如果是系统权限

system 用户给 xiaoming 授权,并且使用户能够授权权限给其他用户

grant connect to xiaoming with admin option;   with admin option 这里不同而已

使用 profile 管理用户口令

profile 是口令限制,资源限制的命令集合,当监理数据库时,oracle 会自动建立

名称为 default 的 profile,当建立用户没有指定 profile 选项,那么 oracle 就会将 default 分配给用户

1、账户锁定

指定该账户登录时最多可以输入密码的次数,也可以指定用户锁定的时间,一般用 dba 的身份去执行该命令

例如:指定 tea 这个用户最多只能尝试三次登录,锁定时间为两天

创建 profile 文件(规则)

SQL create profile lock_account limit failed_login_attempts 3 password_lock_time 2;   —–》lock_account 为 profile 名称随便起

SQL alter user tea profile lock_account;   给用户 tea 添加上 profile 文件约束

2、解决锁定:

SQL conn system/redhat;

Connected.

SQL alter user scott account unlock;

User altered.

SQL conn scott/redhat;

Connected

3、终止口令

为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要 dba 身份来操作

例子:给前面创建的用户 tea 创建一个 profile 文件,要求该用户每隔 10 天要修改自家的登录密码

宽限为 2 天        —– 宽限期限表示过了 10 之后,提醒你还有两天时间进行修改,相当于一共 12 天

SQL create profile myprofile limit password_life_time 10 password_grace_time 2;

SQL alter user tea profile myprofile;

4、口令历史

如果希望用户在修改密码时,不能使用以前使用过的密码,口令历史就是这样将口令修改的信息存放在一个数据字典中

这样当用户修改密码时,oracle 就会对新旧密码进行比较,当发现新旧密码一样时,就会提示用户需要重新输入密码

例子:

1、建立 profile 文件

SQL create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10;

—- password_reuse_time: 指定口令可重用时间即 10 天后就可以重用(新旧密码一样,需要过 10 天才能使用)

2、分配给某个用户 —》tea

SQL alter user tea profile password_history;

删除 profile

当不需要某个 profile 文件时,可以删除该文件

SQL drop profile password_history [cascade];

用此 profile 约束过的用户都将失效

cascade:级联关系

关于“oracle 中 sql 如何操作”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计7206字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)