首页 > 代码库 > 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                            NO
dba_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          YES
DBA_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 selected
system_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用户采用的是第一种和第二种验证方式。这个就清楚了,下面有两种方法解决。
(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循序渐进讲解(第四讲)