oracle解读.docx
《oracle解读.docx》由会员分享,可在线阅读,更多相关《oracle解读.docx(31页珍藏版)》请在冰点文库上搜索。
oracle解读
1.sys和system用户的区别
system用户只能用normal身份登陆em。
除非你对它授予了sysdba的系统权限或者syspoer系统权限。
sys用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。
--
最重要的区别,存储的数据的重要性不同
sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。
sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户。
system用户用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。
system用户拥有普通dba角色权限。
“SYSOPER”权限,即数据库操作员权限,权限包括:
打开数据库服务器 关闭数据库服务器
备份数据库 恢复数据库
日志归档 会话限制
“SYSDBA”权限,即数据库管理员权限,权限包括:
打开数据库服务器 关闭数据库服务器
备份数据库 恢复数据库
日志归档 会话限制
管理功能 创建数据库
2.normal、sysdba、sysoper区别
normal是普通用户,只有通过被sys授权之后才可以对数据库进行操作
sysdba拥有最高的系统权限
sysoper主要用来启动、关闭数据库,sysoper登陆后用户是public
sysdba登陆后是sys,而且只能是SYS登录sysdba.
[html] viewplaincopy
1.SQL> conn / as sysdba
2.已连接。
3.SQL> grant sysoper to test;
4.授权成功。
5.SQL> conn test/test as sysoper;
6.已连接。
7.SQL> show user
8.USER 为"PUBLIC"
9.SQL> conn test/test as sysdba
10.已连接。
11.SQL> show user
12.USER 为"SYS"
13.SQL>
系统权限
sysdba
sysoper
区别
Startup(启动数据库)
startup
Shutdown(关闭数据库)
shutdown
alterdatabaseopen/mount/backup
alterdatabaseopen/mount/backup
改变字符集
none
createdatabase(创建数据库)
None不能创建数据库
dropdatabase(删除数据库)
none
createspfile
createspfile
alterdatabasearchivelog(归档日志)
alterdatabasearchivelog
alterdatabaserecover(恢复数据库)
只能完全恢复,不能执行不完全恢复
拥有restrictedsession(会话限制)权限
拥有restrictedsession权限
可以让用户作为sys用户连接
可以进行一些基本的操作,但不能查看用户数据
登录之后用户是sys
登录之后用户是public
system如果正常登录,它其实就是一个普通的dba用户,但是如果以assysdba登录,其结果实际上它是作为sys用户登录的,这一点类似Linux里面的sudo的感觉,从登录信息里面我们可以看出来。
因此在assysdba连接数据库后,创建的对象实际上都是生成在sys中的。
其他用户也是一样,如果assysdba登录,也是作为sys用户登录的,看以下实验:
[html] viewplaincopy
1.SQL> create user strong identified by strong;
2.用户已创建。
3.SQL> conn strong/strong@magick as sysdba;
4.已连接。
5.SQL> show user;
6.USER 为 "SYS"
7.SQL> create table test(a int);
8.表已创建。
9.SQL> select owner from dba_tables where table_name='test';
10.未选定行 //因为创建表时oracle自动转为大写,所以用小写查的时候是不存在的;
11.SQL> select owner from dba_tables where table_name='TEST';
12.OWNER
13.------------------------------
14.SYS
3.dba和sysdba的区别
dba、sysdba这两个系统角色有什么区别呢
在说明这一点之前我需要说一下oracle服务的创建过程
·创建实例
·启动实例
·创建数据库(system表空间是必须的)
启动过程
·实例启动
·装载数据库
·打开数据库
sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,
只要实例启动了,它就已经存在,以sysdba身份登陆,装载数据库、打开数据库
只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础,dba只是个角色而已.
4.在查询用户角色表的时候,没有看到sysdba等角色,为什么?
[html] viewplaincopy
1.sys@WENCHAOD> select role from dba_roles order by role
2. 2 ;
3.
4.ROLE
5.------------------------------
6.ADM_PARALLEL_EXECUTE_TASK
7.APEX_ADMINISTRATOR_ROLE
8.AQ_ADMINISTRATOR_ROLE
9.AQ_USER_ROLE
10.AUTHENTICATEDUSER
11.CONNECT
12.CSW_USR_ROLE
13.CTXAPP
14.CWM_USER
15.DATAPUMP_EXP_FULL_DATABASE
16.DATAPUMP_IMP_FULL_DATABASE
17.DBA
18.DBFS_ROLE
19.DELETE_CATALOG_ROLE
20.EJBCLIENT
21.EXECUTE_CATALOG_ROLE
22.EXP_FULL_DATABASE
23.GATHER_SYSTEM_STATISTICS
24.GLOBAL_AQ_USER_ROLE
25.HS_ADMIN_EXECUTE_ROLE
26.HS_ADMIN_ROLE
27.HS_ADMIN_SELECT_ROLE
28.IMP_FULL_DATABASE
29.JAVADEBUGPRIV
30.JAVAIDPRIV
31.JAVASYSPRIV
32.JAVAUSERPRIV
33.JAVA_ADMIN
34.JAVA_DEPLOY
35.JMXSERVER
36.LOGSTDBY_ADMINISTRATOR
37.MGMT_USER
38.OEM_ADVISOR
39.OEM_MONITOR
40.OLAPI_TRACE_USER
41.OLAP_DBA
42.OLAP_USER
43.OLAP_XS_ADMIN
44.ORDADMIN
45.OWB$CLIENT
46.OWB_DESIGNCENTER_VIEW
47.OWB_USER
48.RECOVERY_CATALOG_OWNER
49.RESOURCE
50.SCHEDULER_ADMIN
51.SELECT_CATALOG_ROLE
52.SPATIAL_CSW_ADMIN
53.SPATIAL_WFS_ADMIN
54.WFS_USR_ROLE
55.WM_ADMIN_ROLE
56.XDBADMIN
57.XDB_SET_INVOKER
58.XDB_WEBSERVICES
59.XDB_WEBSERVICES_OVER_HTTP
60.XDB_WEBSERVICES_WITH_PUBLIC
61.
62.55 rows selected.
63.
64.sys@WENCHAOD>
解释:
dba是Oracle里的一种对象,Role和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象,在Oracle数据里并不存在。
所以说这两个概念是完全不同的。
dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已。
[html] viewplaincopy
1.--grant dba 和grant sysdba的差别
2.--dba是正真的role,所以grant后在dba_role_privs里有记录,而revoke后就没有了
3.
4.SQL> grant dba to testuser;
5.SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
6.GRANTEE GRANTED_ROLE ADM DEF
7.—————————— —————————— — —
8.TESTUSER RESOURCE NO YES
9.TESTUSER CONNECT NO YES
10.TESTUSER DBA NO YES
11.SQL> revoke dba from testuser;
12.SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
13.GRANTEE GRANTED_ROLE ADM DEF
14.—————————— —————————— — —
15.TESTUSER RESOURCE NO YES
16.TESTUSER CONNECT NO YES
17.
18.--对于sysdba是不会出现这个情况的,因为他不是正真的role
19.SQL> grant sysdba to testuser;
20.SQL> select * from dba_role_privs where grantee = ‘TESTUSER’;
21.GRANTEE GRANTED_ROLE ADM DEF
22.—————————— —————————— — —
23.TESTUSER RESOURCE NO YES
24.TESTUSER CONNECT NO YES
那么这个是sysdba是这么记录的叻,
我在一个文章和帖子里对对sysdba的登录有过详细的叙述
对了,sysdba是登录时候需要的他是和remote_login_passwordfile关联的
我们可以查询v$pwfile_users;
如下:
SQL>select*fromv$pwfile_users;
USERNAME SYSDBSYSOP
———————————–—–
SYS TRUE TRUE
SYSTEM TRUE FALSE
TESTUSER TRUE FALSE
当你grantsysdba后,在这里就多了一条
下面我们revoke一下,再来看
SQL>revokesysdbafromtestuser;
SQL>select*fromv$pwfile_users;
USERNAME SYSDBSYSOP
———————————–—–
SYS TRUE TRUE
SYSTEM TRUE FALSE
没有叻。
所以在这里dba和sysdba是根本不同概念了。
有关sysdba登录的解释可以查看帖子
5.Oracle数据库登录一些命令及解释
1、启动oracle数据库:
从root切换到oracle用户进入:
su-oracle
进入sqlplus环境,nolog参数表示不登录:
sqlplus/nolog
以管理员模式登录:
sqlplus/assysdba
启动数据库
startup;
停止数据库
shutdownimmediate
远程连接数据库
sqlplus/nolog
connsys/sys@ip:
1521/orainstanceassysdba
也可以直接运行:
dbstart
#启动数据库的脚本
dbshut
#停止数据库的脚本
2、数据库监听:
启动监听服务:
lsnrctlstart
停止监听服务:
lsnrctlstop
查看监听状态:
lsnrctlstatus
3、用户权限管理:
注:
以下命令都需要DBA权限。
创建用户:
createuserittbankidentifiedby123456;
赋予用户的表空间权限:
alteruserittbankdefaulttablespaceittbank;;
或者两条命令合并为:
createuserittbankidentifiedby123456defaulttablespaceittbank;
注:
刚刚创建完的新用户是没有任何权限的,甚至连登录数据库的权限都没有。
这时使用conn用户名/密码会提示没有权限。
在新建一个用户之后还要对这个用户进行授权操作。
当然是要使用有能力授权的用户,如sys、system。
角色是指由系统权限集合。
通常给某个用户授予权限时如果没有角色存在的话,那么需要一条一条的操作,角色的存在就是使得授权变得很方便。
通常一个角色由多个系统权限组成。
常用的角色有三个connect(7种权限)、dba、resource(在任何表空间建表)。
授予用户管理权限:
grantconnect,resource,dbatoittbank;
删除用户
dropuser“name”cascade;
注:
cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数。
“name”的引号有无都是一样的。
修改用户密码
passwordittbank(在用户已经连接的情况下)或者
alteruserittbankidentifiedbynewpassword
注意:
在给其他用户修改密码时,需要具有DBA的权限或拥有alteruser的系统权限。
查看当前用户的角色
select*fromuser_role_privs;
select*fromsession_privs;
查看当前用户的系统权限和表级权限
select*fromuser_sys_privs;
select*fromuser_tab_privs;
查询用户表
selectnamefromdba_users;
修改用户口令
alteruser"name"identifiedby"password";
显示当前用户
showuser;
6.ORACLE用户权限管理笔记整理
selectusernamefromdba_users; 查询系统所有用户
select*fromdba_userswhereusername='XXXX';查询用户相关信息
select*fromdba_roles; 查询系统所有角色
DBA_ROLE_PRIVS 查询某个用户具有的角色或者某个角色下的有哪些用户
select*fromdba_role_privswheregrantee='SYS';
select*fromdba_role_privswheregranted_role='RESOURCE';
DBA_SYS_PRIVS 查询某个用户具有的系统权限
selectgrantee,privilegefromdba_sys_privswheregrantee='XXXX';
ROLE_SYS_PRIVS显示授予角色的系统权限
select*fromrole_sys_privswhererole='RESOURCE';查询RESOURCE角色相关的权限
ROLE_TAB_PRIVS显示授予角色的表权限
管理用户、角色和权限的DBA视图:
DBA_USERS 提供用户的信息
DBA_ROLES 显示数据库中所有角色
DBA_COL_PRIVS 显示列级对象授权
DBA_ROLE_PRIVS 显示用户及其角色
DBA_SYS_PRIVS 显示被授予系统权限的用户
DBA_TAB_PRIVS 显示用户及他们在表上的权限
ROLE_ROLE_PRIVS 显示授予角色的角色
ROLE_SYS_PRIVS 显示授予角色的系统权限
ROLE_TAB_PRIVS 显示授予角色的表权限
SESSION_PRIVS 显示允许用户使用的权限
SESSION_ROLES 显示当前允许用户使用的角色
select*fromsession_privs;查询用户本身拥有的权限
select*fromuser_role_privs;查询用户本身拥有的角色
select*fromdba_sys_privswheregrantee='CONNECT';查询角色所拥有的权限
select*fromrole_sys_privswhererole='CONNECT';查询角色所拥有的权限
7.权限讲解
(
首先我应该分清权限和角色,大致讲讲
权限
oracle提供两种权限(系统权限sysprivileges和对象(实体)权限objectprivileges)
角色:
是具有名称的一组系统权限和对象权限的集合
)
一、权限分类:
系统权限:
系统规定用户使用数据库的权限。
(系统权限是对用户而言)。
实体权限:
某种权限用户对其它用户的表或视图的存取权限。
(是针对表或视图而言的)。
二、系统权限管理:
1、系统权限分类:
DBA:
拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:
拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:
拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:
授予connect,resource权限。
对于DBA管理用户:
授予connect,resource,dba权限。
2、系统权限授权命令:
[系统权限只能由DBA用户授出:
sys,system(最开始只能是这两个用户)]
授权命令:
SQL>grantconnect,resource,dbato 用户名1[,用户名2]...;
[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。
]
例:
SQL>connectsystem/manager
SQL>Createuseruser50identifiedbyuser50;
SQL>grantconnect,resourcetouser50;
查询用户拥有哪里权限:
SQL>select*fromdba_role_privs;
SQL>select*fromdba_sys_privs;
SQL>select*fromrole_sys_privs;
删除用户:
SQL>dropuser 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除
3、系统权限传递:
增加WITHADMINOPTION选项,则得到的权限可以传递。
SQL>grantconnect,resorcetoqwithadminoption; //可以传递所获权限。
4、系统权限回收:
系统权限只能由DBA用户回收
命令:
SQL>Revokeconnect,resourcefromuser50;
说明:
1)如果使用WITHADMINOPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有