学习Oracle遇到的实际问题(持续更新)
有三个用户参与这个事情:
system用户,拥有表manager。
sys create了一个用户item,并赋予权限:
SQL> GRANT SELECT ON SYSTEM.MANAGER TO ITEM;
SQL> GRANT INSERT ON SYSTEM.MANAGER TO ITEM;
这时 sys用户进行的操作:
SQL> set transaction name 'INSERT INTO TABLE manager';
事务处理集。
SQL> insert into system.manager
2 values (15,'AA','seter','2200');
已创建 1 行。
已用时间: 00: 00: 00.00
SQL> select name from v$transaction;
NAME
----------------------------------------------------------------------------------------------------
INSERT INTO TABLE manager
已选择2行。
已用时间: 00: 00: 00.01
此时在 item 用户窗口可以查看到数据的更新:
SQL> select * from system.manager;
MGRNO MNAME JOB REMARK
---------- ------------------------------ ------------------------------ -------------
12 Smith manager 3600
13 Paul coder 3000
15 AA seter 2200
14 Daisy tester 2000
已选择4行。
但是 在item 用户窗口进行操作:
SQL> insert into system.manager
2 values ( 16,'BB','bb','2000')
3 /
已创建 1 行。
SQL> select * from system.manager;
MGRNO MNAME JOB REMARK
---------- ------------------------------ ------------------------------ --------------
12 Smith manager 3600
13 Paul coder 3000
15 AA seter 2200
14 Daisy tester 2000
16 BB bb 2000
已选择5行。
而在sys窗口进行查询的时候却看不到item用户对manager表的操作结果。这是为什么呢? 为什么呢 ?
SQL> select * from system.manager;
MGRNO MNAME JOB
---------- ------------------------------ ------------------------
REMARK
------------------------------------------------------------------
12 Smith manager
3600
13 Paul coder
3000
15 AA seter
2200
我再用system用户连接数据库查看表manager发现数据确实改变了的:
C:\Users\dingqi>sqlplus system@dabook
SQL*Plus: Release 11.2.0.1.0 Production on 星期日 9月 15 00:05:56
Copyright (c) 1982, 2010, Oracle. All rights reserved.
输入口令:
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Produ
With the Partitioning, OLAP, Data Mining and Real Application Tes
SQL> SET PAGESIZE 25
SQL> SET TIMING ON
SQL> SET FEEDBACK ON
SQL> select * from manager;
MGRNO MNAME JOB
---------- ------------------------------ -----------------------
REMARK
-----------------------------------------------------------------
12 Smith manager
3600
13 Paul coder
3000
15 AA seter
2200
14 Daisy tester
2000
16 BB bb
2000
已选择5行。
原因: 在item窗口进行DML 语句的操作 需要显式提交 COMMIT;因为ORACLE会隐式的提交DDL语句。
DDL语句包括:
create alter drop 模式对象及其他数据库结构(包括数据库本身及数据库用户)
rename数据库对象
删除所有的数据 (truncate)
管理权限(grant revoke)
设置审计(audit noaudit)
添加注释(COMMENT)到数据字典
DML语句包括:
从表或视图中检索数据(select)
往表或视图中插入数据(insert)
修改列的值(update)
有条件的往表或试图中插入或更新数据(merge)
从表或视图中删除数据(delete)
查看SQL语句的执行计划(explain plan)
锁住表及用户
哈哈 小误会。不过亲身体会的感觉还是很爽的。。
问题2: system 创建procedure,execute的时候却提示权限不足,真是气死我了!
SQL> CREATE OR REPLACE PROCEDURE p_create_view
2 is
3 sql_string varchar2(500);
4 BEGIN
5 sql_string :='CREATE view v_zero3 as SELECT * FROM s
6 EXECUTE IMMEDIATE sql_string;
7 END;
8 /
过程已创建。
已用时间: 00: 00: 00.27
SQL> execute p_create_view;
BEGIN p_create_view; END;
*
第 1 行出现错误:
ORA-01031: 权限不足
ORA-06512: 在 "SYSTEM.P_CREATE_VIEW", line 6
ORA-06512: 在 line 1
解决办法:在create procedure的时候加上一句authid current_user 解决。
CREATE OR REPLACE PROCEDURE p_create_view
authid current_user is
sql_string varchar2(500);
BEGIN
sql_string :='CREATE view v_zero3 as SELECT * FROM system.manager';
EXECUTE IMMEDIATE sql_string;
END;
Authid Current_User:以执行过程的用户的权限来处理涉及的对象权限.
学习Oracle遇到的实际问题(持续更新)的更多相关文章
- C++入职学习篇--代码规范(持续更新)
C++入职学习篇--代码规范(持续更新) 一.头文件规范 在头文件中大家一般会定义宏.引入库函数.声明.定义全局变量等,在设计时最后进行分类,代码示范(自己瞎琢磨的,请多多指点): #ifndef T ...
- java 学习必备的软件,持续更新中
小编会持续更新在学习Java过程中需要的软件以及各种文件: 话不多说,看行动! 一:JDK (1)JDK1.8(*64): 链接:https://pan.baidu.com/s/1vM0jNXn2CT ...
- 资源| 学习视频库-永久有效,持续更新!附赠java面试汇总
每天进步一丢丢,连接梦与想 我们总是羡慕他人的光芒,却忘记自己也会发光 声明 资源来自于网络,小编只是资源的搬运工,若有侵权,联系小编即删. 期待已久的学习视频库来啦! 经过小编多日整理,整理了1.5 ...
- oracle 常用操作记录--持续更新...
一.oracle grant 授权语句(转自:https://www.cnblogs.com/yt954437595/p/6488819.html) --select * from dba_users ...
- Oracle常用命令(持续更新)
--1.解锁用户 alter user 用户名 account unlock; --2.开启最小补充日志记录(执行的DML操作会被记录下来) alter database add supplemen ...
- Oracle自用脚本(持续更新)
--查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, ...
- 【Android XMPP】 学习资料收集贴(持续更新)
系列一: 基于xmpp openfire smack开发之openfire介绍和部署[1] 基于xmpp openfire smack开发之smack类库介绍和使用[2] 基于xmpp openfir ...
- 【Python灰帽子--黑客与逆向工程师的Python编程之道】我的学习笔记,过程.(持续更新HOT)
我的学习笔记---python灰帽子 世界让我遍体鳞伤,但伤口长出的却是翅膀. -------------------------------------------- 前言 本书是由知名安全机构Im ...
- JVM学习--内存分配策略(持续更新)
一.前言 最近学习<深入java虚拟机>,目前看到内存分配策略这块.本文将进行一些实践. 二.内存分配策略 1.大对象直接进入老年代 书中提到了: 下面进行测试,代码如下: public ...
随机推荐
- Spring Cloud调用接口过程
Spring Cloud 在接口调用上,大致会经过如下几个组件配合: Feign== >Hystrix ==>Ribbon ==>Http Client(apache http co ...
- pipeline学习
目录 一.常用语法 二.基础使用 三.使用 Groovy 沙盒 四.参数化构建过程 五.pipeline script from SCM 六.参考 一.常用语法 1.拉取git仓库代码 checkou ...
- 团队内部密码共享方案:KeePassXC+微盘(企业微信)
目录 需求描述 适用场景 安装使用 KeePassXC初始化 浏览器插件安装设置 1.火狐 2.Edge 3.Chrome 软件-插件的链接 登陆网站并保存密码 (企业微信)微盘共享内部数据库 其他 ...
- 使用pmml实现跨平台部署机器学习模型
一.概述 对于由Python训练的机器学习模型,通常有pickle和pmml两种部署方式,pickle方式用于在python环境中的部署,pmml方式用于跨平台(如Java环境)的部署,本文叙述的 ...
- 快速从零开始整合SSM,小白包会(1)
整合SSM,关键就是几个xml的配置. 准备: 1. Idea(配置好tomcat,可以安装插件freeMybatis,提高效率,安装插件不难,百度经验就有) 2. 下载好数据库MySql,以 ...
- 如何查看dpdk版本
服务器上曾经装过很多版本的dpdk,此时如果编译某个程序出现奇怪错误的时候不由得会怀疑是不是dpdk版本的问题= = 令人吃惊的是,网上搜了一圈居然没有一个简单直接的方法能够直接使用,于是自己实验了一 ...
- Codeforces 1396D - Rainbow Rectangles(扫描线+线段树)
Codeforces 题面传送门 & 洛谷题面传送门 一道鸽了整整一年的题目,上一次提交好像是 2020 年 9 月 13 日来着的(?) 乍一看以为第 2 个提交和第 3 个提交只差了 43 ...
- Codeforces 1010F - Tree(分治 NTT+树剖)
Codeforces 题面传送门 & 洛谷题面传送门 神仙题. 首先我们考虑按照这题的套路,记 \(t_i\) 表示 \(i\) 上的果子数量减去其儿子果子数量之和,那么对于一个合法的放置果子 ...
- Atcoder Typical DP Contest S - マス目(状压 dp+剪枝)
洛谷题面传送门 介绍一个不太主流的.非常暴力的做法( 首先注意到 \(n\) 非常小,\(m\) 比较大,因此显然以列为阶段,对行的状态进行状压.因此我们可以非常自然地想到一个非常 trivial 的 ...
- Perl语言编程(大骆驼)
啰嗦几句 Perl的时代已经过去,现在年轻的同事们基本上都在用Python了.但个人认为单就生物信息文本处理而言,Perl语言是绝对够用的.最主要的是,前辈们搭建的流程大多数是Perl写的,因此,如果 ...