今日早上看Oracle官方文档《Administrator's Guide》时,在密码文件章节,关于orapwd命令entries参数的说明如下:

This argument specifies the number of entries that you require the password file to accept. This number corresponds to the number of distinct users allowed to connect to the database as SYSDBA or SYSOPER. The actual number of allowable entries can be higher than the number of users, because theORAPWD utility continues to assign password entries until an operating system block is filled. For example, if your operating system block size is 512 bytes, it holds four password entries. The number of password entries allocated is always a multiple of four.

大意是,entries参数并不是指多少个用户可被赋予sysdba或sysoper权限。实际数量可能高于entries参数指定的值,这与操作系统的block size有关。

按它的说法,操作系统的block size为512字节,entries指定为1的话,我可以给4个用户赋予sysdba或sysoper权限。

好奇,忍不住研究了一下。

一、查看操作系统的block size,本机为RHEL 6.3

[root@node2 ~]# tune2fs -l /dev/sdb |grep 'Block size'

Block size:              4096

block size为4096字节,为512的8倍,按照上面的逻辑,可以给最多32个用户赋予sysdba或sysoper权限。

二、创建密码文件

[oracle@node2 dbs]$ orapwd file=orapworcl password=oracle entries=1 force=y

三、构造用户进行测试

如果能给最多32个用户赋予sysdba或sysoper权限的话,那么创建32个用户并赋予sysdba权限不会有问题,赋予第33个用户sysdba权限的时候会报错,实验一下。

首先创建32个用户并赋予sysdba权限,脚本如下:

declare

sqltext1 varchar2(100);

sqltext2 varchar2(100);

begin

for i in 1..32

loop

sqltext1 := 'create user test'||i||' identified by test'||i;

sqltext2 := 'grant sysdba to test'||i;

execute immediate sqltext1;

execute immediate sqltext2;

end loop;

end;

执行结果如下:

declare

*

ERROR at line 1:

ORA-01996: GRANT failed: password file

'/u01/app/oracle/product/11.2.0.1/db_1/dbs/orapworcl' is full

ORA-06512: at line 10

创建32个用户并赋予sysdba权限竟然没有成功。

四、查看创建成功的用户和被赋予sysdba权限的用户

SQL> select username from dba_users where username like 'TEST%';

USERNAME

------------------------------

TEST4

TEST5

TEST2

TEST1

TEST3

6 rows selected.

SQL> select username from v$pwfile_users where username !='SYS' and sysdba='TRUE';

USERNAME

------------------------------

TEST1

TEST2

TEST3

TEST4

发现只成功创建了5个用户且只有4个用户被赋予sysdba权限。

难道官方文档关于entries的说明有误?将operating system block size is 512 bytes作为关键字在百度上搜了下,原来oracle所谓的block size和系统的block size不一致,可根据select distinct lebsz from x$kccle进行查询,lebsz指的是log file的块大小,它也等于操作系统块大小

Linux: file Block size is selected at the time of high-level formatting。

The log block size is platform. specific, and can be found out using the following query: (size in bytes)

most platforms have log block size of 512, but HPUX has 1k, and tru64 has blocksize of 2k if my memory serves me well.

五、查询Oracle的block size

SQL> select distinct lebsz from x$kccle;

LEBSZ

----------

512

看来,本机的block size是512,这也不难解释当entries指定为1的时候,最多只能给4个用户赋予sysdba的权限。

如果是这样的话,那我将entries指定为5,则可以给8个用户赋予sysdba权限,下面来试试。

六、删除上面新建的5个用户

declare

sqltext varchar2(100);

begin

for i in 1..5

loop

sqltext := 'drop user test'||i;

execute immediate sqltext;

end loop;

end;

七、重新创建密码文件,将entries指定为5

[oracle@node2 dbs]$ orapwd file=orapworcl password=oracle entries=5 force=y

八、新建8个用户并赋予sysdba权限

declare

sqltext1 varchar2(100);

sqltext2 varchar2(100);

begin

for i in 1..8

loop

sqltext1 := 'create user test'||i||' identified by test'||i;

sqltext2 := 'grant sysdba to test'||i;

execute immediate sqltext1;

execute immediate sqltext2;

end loop;

end;

语句执行没有问题

九、新建第9个用户并赋予sysdba权限

SQL> create user test9 identified by test9;

User created.

SQL> grant sysdba to test9;

grant sysdba to test9

*

ERROR at line 1:

ORA-01996: GRANT failed: password file

'/u01/app/oracle/product/11.2.0.1/db_1/dbs/orapworcl' is full

果然出现报错!

由此来看, 官方文档中所说的 “if your operating system block size is 512 bytes, it holds four password entries. The number of password entries allocated is always a multiple of four” 确实没错!

linux 下orapwd 未找到命令,关于orapwd命令entries参数的探究相关推荐

  1. Linux下必须知道的11个网络命令

    Linux下必须知道的11个网络命令 作者:佚名 字体:[增加 减小] 来源:互联网 时间:03-06 15:54:29 我要评论 无论你是要下载文件.诊断网络问题.管理网络接口,还是查看网络的统计数 ...

  2. Linux下常见文件解压方法及命令

    Linux下常见文件解压方法及命令时间:2007-01-08 18:34来源:CSDN作者:bitsCN编辑字体:[大 中 小]1.以.a为扩展名的文件: #tar xv file.a 2.以.z为扩 ...

  3. Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版

    Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版 一.资源 Linux下的Redis的下载地址 二.安装与测试 上传至自己的Linux平台 解压安装包 tar ...

  4. Linux下ps查找进程用kill终止命令

    Linux下ps查找进程用kill终止命令<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offic ...

  5. linux下查看当前用户的 三个命令

    linux下查看当前用户的 三个命令 1,whoami; 2,id -un; 3,who -H  可以列出当前所有的    NAME (用户名)    LINE (窗口列表)    TIME(开启时间 ...

  6. 查看linux的用户 7.2,linux下查看用户登入系统相关命令及编写脚本(七)

    linux下查看用户登入系统相关命令及编写脚本(七) 查看用户登入系统日志 1.w 显示谁登入并正在做什么事 2.who 显示谁登入 -r:显示系统运行级别 3.sleep 睡眠命令(sleep 5 ...

  7. linux 让暂停的进程恢复,Linux 下进程的挂起和恢复命令

    本文给大家介绍进程的挂起及恢复命令,具体内容如下所示: #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前 ...

  8. linux 骇客帝国脚本,Linux下,那些让人惊叹的命令执行效果

    Linux下,那些让人惊叹的命令执行效果 之前介绍过linux常用命令一文,接下来我们来一起学习一下linux里好玩的命令作者:luckyw2016-12-08 18:23 之前介绍过linux常用命 ...

  9. Linux下各压缩工具的解压压缩命令

    Linux下各压缩工具的解压压缩命令 FileName 代表文件,DirName 代表目录,DirName/* 代表目录及子目录 tar命令 解包:tar xvf FileName.tar 打包:ta ...

  10. Linux下 “>/dev/null 2>1 “ 命令学习

    Linux下 ">/dev/null 2>&1 " 命令学习 参考链接: 1.https://blog.csdn.net/sunrier/article/det ...

最新文章

  1. c语言中delay找不到标识符,51单片机的c语言,请问哪里错了?延时没有效果,但是编译又不报错。delay应该怎么写,怎么引用啊?...
  2. R语言使用persp函数绘制三维图像实战(3D):自定义3D图、图像旋转、添加轴标签
  3. ckeditor默认字体设置
  4. 没学过编程可以自学python吗-完全没学过编程的人学习 Python前应该掌握些什么?...
  5. python安装第三方库-python第三方库的四种安装方法
  6. boost::system::errc相关的测试程序
  7. 贝叶斯优化python包_贝叶斯全局优化(LightGBM调参)
  8. html动画加载效果,CSS3 实现 Loading(加载)动画效果
  9. 六、openstack安装之Horizon篇
  10. linux php yii安装教程,Linux 安装php 5.4 – yii2 环境
  11. cmd中如何运行python文件_在cmd中运行.py文件: python的操作步骤
  12. Buct oj 1015
  13. python时间戳是什么意思_python时间戳是什么
  14. PPT形状的多种玩法
  15. 区块链+大数据:万物互联时代的“CP组合”
  16. 图论典型问题--握手定理
  17. 基于粒子群优化的MPPT控制
  18. 毕业设计-基于深度学习的垃圾邮件过滤系统的设计与实现
  19. f(t)=tu(t)matlab,设f(t)=ε(t)-ε(t-1),f1(t)=f(t)cos(10πt),试用MATLAB...
  20. AI就业前景越来越严峻了,AI 开发者能怎样提升个人竞争优势?

热门文章

  1. Memcache 分布式高可用集群介绍
  2. oracle易忘函数用法(1)
  3. 解决Extjs中Combobox显示值和真实值赋值问题
  4. Hibernate基于JDBC的批量删除
  5. java io流(字符流) 文件打开、读取文件、关闭文件
  6. Centos 7下安装nginx,使用yum install nginx,提示没有可用的软件包(亲测)
  7. 一个高效、快速、稳定的PHP日志扩展。
  8. 为什么你总成为不了架构师?
  9. 深入浅出讲解:php的socket通信
  10. Nginx + Lua + 共享内存实现动态查询(简单例子)