首页 > 代码库 > ORACLE循序渐进讲解(第四讲)
ORACLE循序渐进讲解(第四讲)
一、数据库管理员
1、sys与system的区别(用实例说明)
在第一讲说过下面两句话:
(1)sys用户是超级用户,具有最高权限,具有dba的角色和sysdba、sysoper数据库管理特殊权限,所有 oracle 的数据字典的基表和视图都存放在sys 用户中,这些基表和视图对于 oracle 的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改,sys有创建create database的权限。
(2)system用户是管理操作员,权限一样很大具有dba角色,没有创建create database的权限。
SQL> select * from dba_roles where role='DBA'; ROLE PASSWORD_REQUIRED ------------------------------ ----------------- DBA NOdba_roles是查询所有系统角色,从结果上看DBA是系统角色,不是权限,同样dba_roles中没有sysdba和sysoper说明这两个不是角色。
SQL> select * from dba_role_privs where granted_role='DBA' and (grantee='SYS' or grantee='SYSTEM'); GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE ------------------------------ ------------------------------ ------------ ------------ SYS DBA YES YES SYSTEM DBA YES YESDBA_ROLE_PRIVS是查询所有用户或角色对应的角色,从结果上看sys和system都有DBA的角色。
SQL> select * from v$pwfile_users; USERNAME SYSDBA SYSOPER ------------------------------ ------ ------- SYS TRUE TRUE
SQL> select * from system_privilege_map; PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- ---------- -3 ALTER SYSTEM 0 -4 AUDIT SYSTEM 0 -5 CREATE SESSION 0 -6 ALTER SESSION 0 -7 RESTRICTED SESSION 0 -10 CREATE TABLESPACE 0 -11 ALTER TABLESPACE 0 -12 MANAGE TABLESPACE 0 -13 DROP TABLESPACE 0 -15 UNLIMITED TABLESPACE 0 -20 CREATE USER 0 -21 BECOME USER 0 -22 ALTER USER 0 -23 DROP USER 0 -30 CREATE ROLLBACK SEGMENT 0 -31 ALTER ROLLBACK SEGMENT 0 -32 DROP ROLLBACK SEGMENT 0 -40 CREATE TABLE 0 -41 CREATE ANY TABLE 0 -42 ALTER ANY TABLE 0 PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- ---------- -43 BACKUP ANY TABLE 0 -44 DROP ANY TABLE 0 -45 LOCK ANY TABLE 0 -46 COMMENT ANY TABLE 0 -47 SELECT ANY TABLE 0 -48 INSERT ANY TABLE 0 -49 UPDATE ANY TABLE 0 -50 DELETE ANY TABLE 0 -60 CREATE CLUSTER 0 -61 CREATE ANY CLUSTER 0 -62 ALTER ANY CLUSTER 0 -63 DROP ANY CLUSTER 0 -71 CREATE ANY INDEX 0 -72 ALTER ANY INDEX 0 -73 DROP ANY INDEX 0 -80 CREATE SYNONYM 0 -81 CREATE ANY SYNONYM 0 -82 DROP ANY SYNONYM 0 -83 SYSDBA 0 -84 SYSOPER 0 -85 CREATE PUBLIC SYNONYM 0 PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- ---------- -86 DROP PUBLIC SYNONYM 0 -90 CREATE VIEW 0 -91 CREATE ANY VIEW 0 -92 DROP ANY VIEW 0 -105 CREATE SEQUENCE 0 -106 CREATE ANY SEQUENCE 0 -107 ALTER ANY SEQUENCE 0 -108 DROP ANY SEQUENCE 0 -109 SELECT ANY SEQUENCE 0 -115 CREATE DATABASE LINK 0 -120 CREATE PUBLIC DATABASE LINK 0 -121 DROP PUBLIC DATABASE LINK 0 -125 CREATE ROLE 0 -126 DROP ANY ROLE 0 -127 GRANT ANY ROLE 0 -128 ALTER ANY ROLE 0 -130 AUDIT ANY 0 -135 ALTER DATABASE 0 -138 FORCE TRANSACTION 0 -139 FORCE ANY TRANSACTION 0 -140 CREATE PROCEDURE 0 PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- ---------- -141 CREATE ANY PROCEDURE 0 -142 ALTER ANY PROCEDURE 0 -143 DROP ANY PROCEDURE 0 -144 EXECUTE ANY PROCEDURE 0 -151 CREATE TRIGGER 0 -152 CREATE ANY TRIGGER 0 -153 ALTER ANY TRIGGER 0 -154 DROP ANY TRIGGER 0 -160 CREATE PROFILE 0 -161 ALTER PROFILE 0 -162 DROP PROFILE 0 -163 ALTER RESOURCE COST 0 -165 ANALYZE ANY 0 -167 GRANT ANY PRIVILEGE 0 -172 CREATE MATERIALIZED VIEW 0 -173 CREATE ANY MATERIALIZED VIEW 0 -174 ALTER ANY MATERIALIZED VIEW 0 -175 DROP ANY MATERIALIZED VIEW 0 -177 CREATE ANY DIRECTORY 0 -178 DROP ANY DIRECTORY 0 -180 CREATE TYPE 0 PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- ---------- -181 CREATE ANY TYPE 0 -182 ALTER ANY TYPE 0 -183 DROP ANY TYPE 0 -184 EXECUTE ANY TYPE 0 -186 UNDER ANY TYPE 0 -188 CREATE LIBRARY 0 -189 CREATE ANY LIBRARY 0 -190 ALTER ANY LIBRARY 0 -191 DROP ANY LIBRARY 0 -192 EXECUTE ANY LIBRARY 0 -200 CREATE OPERATOR 0 -201 CREATE ANY OPERATOR 0 -202 ALTER ANY OPERATOR 0 -203 DROP ANY OPERATOR 0 -204 EXECUTE ANY OPERATOR 0 -205 CREATE INDEXTYPE 0 -206 CREATE ANY INDEXTYPE 0 -207 ALTER ANY INDEXTYPE 0 -208 DROP ANY INDEXTYPE 0 -209 UNDER ANY VIEW 0 -210 QUERY REWRITE 0 PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- ---------- -211 GLOBAL QUERY REWRITE 0 -212 EXECUTE ANY INDEXTYPE 0 -213 UNDER ANY TABLE 0 -214 CREATE DIMENSION 0 -215 CREATE ANY DIMENSION 0 -216 ALTER ANY DIMENSION 0 -217 DROP ANY DIMENSION 0 -218 MANAGE ANY QUEUE 1 -219 ENQUEUE ANY QUEUE 1 -220 DEQUEUE ANY QUEUE 1 -222 CREATE ANY CONTEXT 0 -223 DROP ANY CONTEXT 0 -224 CREATE ANY OUTLINE 0 -225 ALTER ANY OUTLINE 0 -226 DROP ANY OUTLINE 0 -227 ADMINISTER RESOURCE MANAGER 1 -228 ADMINISTER DATABASE TRIGGER 0 -233 MERGE ANY VIEW 0 -234 ON COMMIT REFRESH 0 -235 EXEMPT ACCESS POLICY 0 -236 RESUMABLE 0 PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- ---------- -237 SELECT ANY DICTIONARY 0 -238 DEBUG CONNECT SESSION 0 -241 DEBUG ANY PROCEDURE 0 -243 FLASHBACK ANY TABLE 0 -244 GRANT ANY OBJECT PRIVILEGE 0 -245 CREATE EVALUATION CONTEXT 1 -246 CREATE ANY EVALUATION CONTEXT 1 -247 ALTER ANY EVALUATION CONTEXT 1 -248 DROP ANY EVALUATION CONTEXT 1 -249 EXECUTE ANY EVALUATION CONTEXT 1 -250 CREATE RULE SET 1 -251 CREATE ANY RULE SET 1 -252 ALTER ANY RULE SET 1 -253 DROP ANY RULE SET 1 -254 EXECUTE ANY RULE SET 1 -255 EXPORT FULL DATABASE 0 -256 IMPORT FULL DATABASE 0 -257 CREATE RULE 1 -258 CREATE ANY RULE 1 -259 ALTER ANY RULE 1 -260 DROP ANY RULE 1 PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- ---------- -261 EXECUTE ANY RULE 1 -262 ANALYZE ANY DICTIONARY 0 -263 ADVISOR 0 -264 CREATE JOB 0 -265 CREATE ANY JOB 0 -266 EXECUTE ANY PROGRAM 0 -267 EXECUTE ANY CLASS 0 -268 MANAGE SCHEDULER 0 -269 SELECT ANY TRANSACTION 0 -270 DROP ANY SQL PROFILE 0 -271 ALTER ANY SQL PROFILE 0 -272 ADMINISTER SQL TUNING SET 0 -273 ADMINISTER ANY SQL TUNING SET 0 -274 CREATE ANY SQL PROFILE 0 -275 EXEMPT IDENTITY POLICY 0 -276 MANAGE FILE GROUP 1 -277 MANAGE ANY FILE GROUP 1 -278 READ ANY FILE GROUP 1 -279 CHANGE NOTIFICATION 0 -280 CREATE EXTERNAL JOB 0 166 rows selectedsystem_privilege_map是查询所有系统权限,总共有166个系统权限,但没有sysdba和sysoper。V$PWFILE_USERS是查询所有拥有sysdba和sysoper权限的用户,系统默认只有sys有sysdba和sysoper权限。结合可以看出sysdba和sysoper数据库管理的特殊权限是不存在数据库中的,接下来再看看sysdba和sysoper权限的区别(网上有很多我只粘来一张图片)。
总上所说system没有sysdba和sysoper权限所以system就不能创建数据库启动关闭等操作,DBA的所有操作都必须在数据库打开的情况下,sys登录必须用sysdba或sysoper身份登录。
2、oracle数据库非Dba角色用户使用as sysdba仍然可以连接相关问题
从黑屏的结果上看无论怎么写只要as sysdba都能登录成功并且都是成sys用户,这就奇怪了,oracle是怎样去管理的?
其实oracle登录的时候有三种登录验证机制(1)操作系统验证(2)密码文件验证(3)数据库验证
一般权限用户的登录验证都是第三种方式,即数据库验证,因为用户名和密码都是存储在数据库当中的。然而,SYS用户(具有SYSDBA和SYSOPER权限的用户)却不是数据库验证。在oracle数据没有启动的时候,SYS用户就可以连接到数据库,并对其进行启动等操作,所以不可能是数据库验证。SYS用户采用的是第一种和第二种验证方式。这个就清楚了,下面有两种方法解决。
一般权限用户的登录验证都是第三种方式,即数据库验证,因为用户名和密码都是存储在数据库当中的。然而,SYS用户(具有SYSDBA和SYSOPER权限的用户)却不是数据库验证。在oracle数据没有启动的时候,SYS用户就可以连接到数据库,并对其进行启动等操作,所以不可能是数据库验证。SYS用户采用的是第一种和第二种验证方式。这个就清楚了,下面有两种方法解决。
(1)找到oracle的安装目录NETWORK下ADMIN目录下的sqlnet.ora文件将SQLNET.AUTHENTICATION_SERVICES= (NTS)改成SQLNET.AUTHENTICATION_SERVICES= (NONE)
(2)计算机管理用户组删除ora_dba下面用户
再次连接
3、oracle的备份还原。
(1)导出
导出具体分为:导出表、导出方案、导出数据库三中方式(可以在cmd下导出也可以在oracle的bin目录下exp.exe下导出)。导出使用exp命令来完成,学用的选项有:userid:指定执行导出操作的用户名,口令,连接字符串。table:指定导出操作的表。owner:指定执行导出操作的方案。full=y:指定执行导出操作的数据库。rows:指定执行导出操作是否导出表中的数据。inctype:指定执行导出操作的增量类型。file:指定导出文件名。实例:(导出表)exp userid=scott/scott@orcl tables=(emp,dept) file=d:\data.dmp;(导出方案)exp userid=scott/scott@orcl owner=(scott) file=d:\data.dmp;(导出数据库)exp userid=system/orclt@orcl full=y inctype=complete file=d:\data.dmp;
(2)导入
导入就是使用工具import将文件中的对象和数据导入到数据库中,但导入要使用的文件必须是exp所导出的文件。
imp常用的选项有
userid:指定执行导出操作的用户名,口令,连接字符串。table:指定导出操作的表。fromuser:指定源用户。touser:指定目标用户。file:指定导入文件名。full=y:指定执行导入整个文件。rows:指定执行导出操作是否导出表中的数据。inctype:指定执行导出操作的增量类型。ignore:如果表存在,则只导入数据。
ORACLE循序渐进讲解(第四讲)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。