在linux上安装oracle时,先要创建两个组,在创建一个用户 的意义?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在linux上安装oracle时,先要创建两个组,在创建一个用户 的意义?相关的知识,希望对你有一定的参考价值。

求高手不吝赐教,为什么在linux上安装oracle时,先要创建两个组,在创建一个用户,而这个用户的primary group是oninstall Seondary group是dba,分析这些意义

linux的用户是允许加入多个用户组的
至于oracle的两个用户组,
一个组是用来安装或者卸载Oracle软件的,这个组可以访问操作系统中 的一些配置文件,直接修改系统的相关文件,例如服务、自动启动项等等。对于操作系统而言,这个用户组相应的权力比较大,也存在一定的危险。
另一个组是用于访问和修改oracle侧用户目录下的文件的,由于linux/unix可以直接针对用户组收取,所以如在某些程序或者用户需要执行oracle用户组下的程序,或者调用oracle用户组的lib,可以直接将这个用户加入oracle的用户族中使用。
参考技术A linux下,系统用户oracle,执行dbca命令(要确定你有图形界面啊,不然这个命令打不开),然后按照要求一步一步来,就能建立一个数据库了。至于实例,只要这个数据库启动了,那么他就是一个实例。
如果没有图形界面,那么就静默设置安装数据库,具体的忘记了,好象需要写一个脚本,去百度搜一下,应该有相关的内容的。
参考技术B 没什么大用,一个用户 一个组就够了

Oracle的密码文件及远程SYSDBA登录

密码文件(password file)是一个可选的文件,允许远程SYSDBA或管理员访问数据库。

启动Oracle时,还没有数据库可以用来验证密码。在本地系统上启动Oracle时,Oracle会利用操作系统来执行这种认证。安装Oracle时,会要求完成完成的人指定管理员“组”。在Unix/Linux上,这个组一般默认为dba,在Windows上默认为OSDBA,不过也可以是平台上任何合法的组名。这个组很特殊,因为这个组中的任何用户都可以作为SYSDBA连接Oracle,而无需指定用户名或密码。

[[email protected] ~]# id mysql
uid=496(mysql) gid=495(mysql) groups=495(mysql),500(oinstall)
[[email protected] ~]# su - mysql
-bash-4.1$ export ORACLE_HOME=/u02/app/oracle/product/11.2.4/db1
-bash-4.1$ export ORACLE_SID=orcl
-bash-4.1$ cd $ORACLE_HOME/bin
-bash-4.1$ ./sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Dec 15 21:32:05 2016

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

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: ^C
-bash-4.1$ su
Password: 
[[email protected] bin]# usermod -G dba mysql
[[email protected] bin]# id mysql
uid=496(mysql) gid=495(mysql) groups=495(mysql),501(dba)
[[email protected] bin]# exit
exit
-bash-4.1$ ./sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Dec 15 21:32:36 2016

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[email protected]>show user
USER is "SYS"

现在可以连接数据库做管理工作,或启动关闭数据库。如果要从另外一台机器通过网络完成这个操作会怎么样呢?下面我使用@连接串来连接:

C:\Users\victor>sqlplus /@orcl as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 21:42:04 2016

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

ERROR:
ORA-01017: invalid username/password; logon denied

在网络上,对于SYSDBA的操作系统认证不再奏效,即使把很不安全的REMOTE_OS_AUTHENT参数设置为TRUE也不例外。所以操作系统认证不可行。因此密码文件应运而生了。

密码文件保存了一个用户名和密码列表,这些用户名和密码分别对应于通过网络远程认证为SYSDBA的用户。Oracle必须使用这个文件来认证用户,而不是数据库中存储的正常密码列表。

下面验证这种情况。首先,设置REMOTE_LOGIN_PASSWORDFILE,有三个值:NONE,意味着没有密码文件,不存在“远程SYSDBA登录”、SHARED,多个数据库可以使用同样的密码文件、EXCLUSIVE,只有一个数据库使用一个给定的密码文件。这里设置为EXCLUSIVE。

alter system set remote_login_passwordfile=exclusive scope=spfile;

修改这个参数需要重启数据库。

使用orapwd创建和填写这个初始的密码文件,密码文件位于$ORACLE_HOME/dbs目录中。

[[email protected] dbs]$ which orapwd
/u02/app/oracle/product/11.2.4/db1/bin/orapwd
[[email protected] dbs]$ orapwd
Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>

  where
    file - name of password file (required),
    password - password for SYS will be prompted if not specified at command line,
    entries - maximum number of distinct DBA (optional),
    force - whether to overwrite existing file (optional),
    ignorecase - passwords are case-insensitive (optional),
    nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).
    
  There must be no spaces around the equal-to (=) character.
[[email protected] dbs]$ pwd
/u02/app/oracle/product/11.2.4/db1/dbs
[[email protected] dbs]$ orapwd file=orapw$ORACLE_SID password=oracle entries=20
[[email protected] dbs]$ ls -l orapw$ORACLE_SID
-rw-r----- 1 oracle oinstall 3584 Dec 15 21:55 orapworcl

目前该文件中只有一个用户,也就是用户SYS,尽管数据库上还有其他SYSDBA账户,但它们还不在密码文件中。不过基于以上设置我们可以作为SYSDBA通过网络连接Oracle,即使Oracle没有启动,并且可以远程启动Oracle。

C:\Users\victor>sqlplus sys/[email protected] as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:00:24 2016

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

已连接到空闲例程。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  784998400 bytes
Fixed Size                  2257352 bytes
Variable Size             754978360 bytes
Database Buffers           20971520 bytes
Redo Buffers                6791168 bytes
数据库装载完毕。
数据库已经打开。

注意:如果上边这一步遇到ORA-12505 "TNS:listener does not currently know of SID given in connect descriptor"说明没有配置数据库实例的静态监听。

创建了密码文件,那我们能不能看看密码文件里到底记录了什么内容呢,会不会把我们的密码泄漏呢?

密码文件是一个二进制文件是不能直接查看的,Linux上可以使用strings命令查看

[[email protected] dbs]$ strings orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2

从输出可以看出密码文件中没有使用明文记录我们的密码而是记录了一些串码。

其实这个密码文件还和数据库中的一个视图v$pwfile_users有一些关系

V$PWFILE_USERS lists all users in the password file, and indicates whether the user has been granted the SYSDBA, SYSOPER, and SYSASM privileges.
USERNAME VARCHAR2(30) Name of the user that is contained in the password file
SYSDBA VARCHAR2(5) Indicates whether the user can connect with SYSDBA privileges (TRUE) or not (FALSE)
SYSOPER VARCHAR2(5) Indicates whether the user can connect with SYSOPER privileges (TRUE) or not (FALSE)
SYSASM VARCHAR2(5) Indicates whether the user can connect with SYSASM privileges (TRUE) or not (FALSE)
[email protected]>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
--给用户zx赋予SYSDBA权限可以看到v$pwfile_users多了一条记录,而密码文件orapworcl也多了一行串码。
[email protected]>grant sysdba to zx;

Grant succeeded.

[email protected]>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
ZX											   TRUE 	   FALSE	   FALSE

[email protected]>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--给用户zx赋予SYSOPER的权限,可以看到v$pwfile_users的zx行状态发生了变化,但是orapworcl没有变化
[email protected]>grant sysoper to zx;

Grant succeeded.

[email protected]>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
ZX											   TRUE 	   TRUE 	   FALSE

[email protected]>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--移除密码文件再移回来,移除密码文件后v$pwfile_users变为空,移回后v$pwfile_users又有记录。
[email protected]>! mv /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl_orcl

[email protected]>select * from v$pwfile_users;

no rows selected

[email protected]>! mv /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl_orcl /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl

[email protected]>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE
ZX											   TRUE 	   TRUE 	   FALSE
--测试zx用户远程以SYSDBA登录
C:\Users\victor>sqlplus zx/[email protected] as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:34:09 2016

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


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show user;
USER 为 "SYS"
--回收用户zx的SYSDBA和SYSOPER权限,v$pwfile_users中的zx记录行没有了,密码文件orapworcl没有变化
[email protected]>revoke sysdba,sysoper from zx;

Revoke succeeded.

[email protected]>select * from v$pwfile_users;

USERNAME										   SYSDBA	   SYSOPER	   SYSASM
------------------------------------------------------------------------------------------ --------------- --------------- ---------------
SYS											   TRUE 	   TRUE 	   FALSE

[email protected]>!strings /u02/app/oracle/product/11.2.4/db1/dbs/orapworcl
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
mHD2
7B06550956254585
--再次测试zx用户远程以SYSDBA登录,现在无法登录
C:\Users\victor>sqlplus zx/[email protected] as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期四 12月 15 22:35:17 2016

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

ERROR:
ORA-01017: invalid username/password; logon denied


参考:http://www.xifenfei.com/2011/12/vpwfile_users%E5%92%8C%E5%AF%86%E7%A0%81%E6%96%87%E4%BB%B6%E5%85%B3%E7%B3%BB.html

《9i10g11g编程艺术 深入数据库体系结构》

本文出自 “DBA Fighting!” 博客,请务必保留此出处http://hbxztc.blog.51cto.com/1587495/1883180

以上是关于在linux上安装oracle时,先要创建两个组,在创建一个用户 的意义?的主要内容,如果未能解决你的问题,请参考以下文章

怎么在linux下安装oracle数据库

在安装Windows与Linux双系统时需要如何进行分区?

Oracle的密码文件及远程SYSDBA登录

Linux下安装Oracle的一般步骤

在Sun Unix solaris 下安装Oracle8i 最好能给完整的安装步骤

如何在unix下安装软件