oracle学习笔记(14)——安全管理

ORACLE AUDIT 审计 审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/)或数据库(存储在system表空间中的SYS.AUD$表中,可通过视图dba_audit_trail查看)中。在Oracle11g之前,oracle数据库自带的审计功能是关闭的,考虑到性能和审计管理的复杂性,用户一般不打开审计功能.如果有审计要求,DBA会采用trigger来实现对DDL审计的方法来折中.例如 ... 阅读详情

        数据库的安全性主要包括两个方面的含义:一方面是防止非法用户对数据库的访问,未授权的用户不能登录数据库;另一方面是每个数据库用户都有不同的操作权限,只能进行自己权限范围内的操作。Oracle数据库的安全可以分为两类:

       1)系统安全性

             系统安全性是指在系统级控制数据库的存取和使用的机制,包括有效的用户名与口令的组合、用户是否被授权可连接数据库、用户创建数据库对象时可以使用的磁盘空间大小、用户的资源限制、是否启动了数据库审计功能,以及用户可进行哪些系统操作等。

       2)数据安全性

             数据安全性是指在对象级控制数据库的存取和使用机制,包括用户可存取的模式对象和在该对象上允许进行的操作等。

       Oracle数据安全控制机制

        用户管理:合法身份的用户才能访问数据库

        权限管理:用户登录后只能进行权限范围内的操作

        角色管理:方便实现用户权限的授予与回收

        表空间设置和配额:控制用户对数据库存储空间的使用

        用户资源限制:通过概要文件,限制用户对数据库资源的使用

        数据库审计:监视和记录用户在数据库中的活动

1、  用户管理

(1)概述:

          1)Oracle数据库初始用户,口令公开,处于封锁状态,需要解锁并重设口令:

                SYS:是数据库中具有最高权限的数据库管理员,可以启动、修改和关闭数据库,拥有数据字典;

                SYSTEM:是一个辅助的数据库管理员,不能启动和关闭数据库,但可以进行其他一些管理工作,如创建用户、删除用户等。

                SCOTT:是一个用于测试网络连接的用户,其口令为TIGER。

                PUBLIC:实质上是一个用户组,数据库中任何一个用户都属于该组成员。要为数据库中每个用户都授予某个权限,只需把权限授予PUBLIC就可以了。

         2)用户的安全属性

               为防止非授权用户对数据库进行操作,在创建数据库时,必须用安全属性对用户进行限制。安全属性包括:用户身份认证方式、默认表空间、临时表空间、表空间配额 、概要文件 、账户状态。

               ①   用户身份认证方式(三种)

                      数据库身份认证:数据库用户口令以加密方式保存在数据库内部,当用户连接数据库时必须输入用户名和口令,通过数据库认证后才可以登录数据库。 

                      外部身份认证:当使用外部身份认证时,用户的账户由Oracle数据库管理,但口令管理和身份验证由外部服务完成。外部服务可以是操作系统或网络服务。当用户试图建立与数据库的连接时,数据库不会要求用户输入用户名和口令,而从外部服务中获取当前用户的登录信息。  

                      全局身份认证:当用户试图建立与数据库连接时,Oracle使用网络中的安全管理服务器(OracleEnterprise Security Manager)对用户进行身份认证。Oracle的安全管理服务器可以提供全局范围内管理数据库用户的功能。

               ②   默认表空间

                      当用户在创建数据库对象时,如果没有显式地指明该对象在哪个表空间中存储,系统会自动将该数据库对象存储在当前用户的默认表空间中。如果没有为用户指定默认表空间,则系统将数据库的默认表空间作为用户的默认表空间。

               ③   临时表空间

                     当用户进行排序、汇总和执行连接、分组等操作时,系统首先使用内存中的排序区SORT_AREA_SIZE,如果该区域内存不够,则自动使用用户的临时表空间。在Oracle10g中,如果没有为用户指定临时表空间,则系统将数据库的默认临时表空间作为用户的临时表空间。

               ④   表空间配额

                      表空间配额限制用户在永久表空间中可以使用的存储空间的大小,默认情况下,新建用户在任何表空间中都没有任何配额。用户在临时表空间中不需要配额。

               ⑤   概要文件

                     每个用户都必须有一个概要文件,从会话级和调用级两个层次限制用户对数据库系统资源的使用,同时设置用户的口令管理策略。如果没有为用户指定概要文件,Oracle将为用户自动指定DEFAULT概要文件。

              ⑥   账户状态

                     在创建用户的同时,可以设定用户的初始状态,包括用户口令是否过期以及账户是否锁定等。Oracle允许任何时候对帐户进行锁定或解锁。锁定账户后,用户就不能与Oracle数据库建立连接,必须对账户解锁后才允许用户访问数据库。

(2)创建用户

          基本语法

             CREATE USER user_name 

             IDENTIFIED [BY password|EXTERNALLY|GLOBALLYAS 'external_name']

             [DEFAULT TABLESPACE tablespace_name]

             [TEMPORARY TABLESPACE temp_tablesapce_name]

             [QUOTA n K|M|UNLIMITED ON tablespace_name]

             [PROFILE profile_name]

             [PASSWORD EXPIRE]

             [ACCOUNT LOCK|UNLOCK];

        参数说明

            user_name:用于设置新建用户名,在数据库中用户名必须是唯一的;

            IDENTIFIED:用于指明用户身份认证方式;

            BY password:用于设置用户的数据库身份认证,其中password为用户口令;

            EXTERNALLY:用于设置用户的外部身份认证;

            GLOBALLYAS'external_name':用于设置用户的全局身份认证,其中external_name为Oracle的安全管理服务器相关信息;

            DEFAULTTABLESPACE:用于设置用户的默认表空间,如果没有指定,Oracle将数据库默认表空间作为用户的默认表空间;

            TEMPORARYTABLESPACE:用于设置用户的临时表空间;

            QUOTA:用于指定用户在特定表空间上的配额,即用户在该表空间中可以分配的最大空间;

            PROFILE:用于为用户指定概要文件,默认值为DEFAULT,采用系统默认的概要文件;

            PASSWORDEXPIRE:用于设置用户口令的初始状态为过期,用户在首次登录数据库时必须修改口令;

            ACCOUNTLOCK:用于设置用户初始状态为锁定,默认为不锁定;

            ACCOUNTUNLOCK:用于设置用户初始状态为不锁定或解除用户的锁定状态

       注意:

           在创建新用户后,必须为用户授予适当的权限,用户才可以进行相应的数据库操作。例如,授予用户CREATESESSION权限后,用户才可以连接到数据库

       示例:

          ①   创建一个用户user3,口令为user3,默认表空间为USERS,在该表空间的配额为10 MB,初始状态为锁定。

                 SQL>CREATE USER user3 IDENTIFIED BY user3

                           DEFAULT TABLESPACE USERS QUOTA 10MON USERS ACCOUNT LOCK;

         ②   创建一个用户user4,口令为user4,默认表空间为USERS,在该表空间的配额为10 MB。口令设置为过期状态,即首次连接数据库时需要修改口令。概要文件为example_profile(假设该概要文件已经创建)。

               SQL>CREATE USER user4 IDENTIFIED BY user4

                         DEFAULT TABLESPACE USERS

                         QUOTA 10M ON USERS

                         PROFILE example_profile

                         PASSWORD EXPIRE;

(3)修改用户

          基本语法

            ALTER USER user_name [IDENTIFIED]

            [BY password|EXTERNALLY|GLOBALLYAS 'external_name']

            [DEFAULT TABLESPACEtablespace_name]

            [TEMPORARY TABLESPACEtemp_tablesapce_name]

            [QUOTA n K|M|UNLIMITED ONtablespace_name]

            [PROFILE profile_name]

            [DEFAULT ROLE role_list|ALL[EXCEPT role_list] |NONE]

            [PASSWORD EXPIRE]

            [ACCOUNT LOCK|UNLOCK];

        参数说明 

            role_list:角色列表;

            ALL :表示所有角色;

            EXCEPTrole_list:表示除了role_list列表中的角色之外的其他角色;

            NONE:表示没有默认角色

       注意:

           指定的角色必须是使用GRANT命令直接授予该用户的角色。

       示例:

           ①   将用户user3的口令修改为newuser3,同时将该用户解锁。

                 SQL>ALTER USER user3 IDENTIFIED BYnewuser3 ACCOUNT UNLOCK;

          ②   修改用户user4的默认表空间为ORCLTBS1,在该表空间的配额为20 MB,在USERS表空间的配额为10 MB。

                SQL>ALTER USER user4 DEFAULT TABLESPACEORCLTBS1 

                          QUOTA 20M ON ORCLTBS1 

                          QUOTA 10M ON USERS;

(4)删除用户

          当一个用户被删除时,其所拥有的所有对象也被删除。先删除用户所拥有的对象,再删除用户,将参照该用户对象的其他数据库对象标志为INVALID。若用户拥有数据库对象,则必须用CASCADE 选项。

          基本语法:DROPUSER user_name [ CASCADE ];

(5)查询用户信息

          ALL_USERS:包含数据库所有用户的用户名、用户ID和用户创建时间。

          DBA_USERS:包含数据库所有用户的详细信息。

          USER_USERS:包含当前用户的详细信息。

          DBA_TS_QUOTAS:包含所有用户的表空间配额信息。

          USER_TS_QUOTAS:包含当前用户的表空间配额信息。

          V$SESSION:包含用户会话信息。

          V$OPEN_CURSOR:包含用户执行的SQL语句信息。

         示例:

             查看数据库所有用户名及其默认表空间。

             SQL>SELECT SERNAME, DEFAULT_TABLESPACEFROM DBA_USERS;

             查看数据库中各用户的登录时间、会话号。

            SQL>SELECT SID, SERIAL#, LOGON_TIME, USERNAMEFROM V$SESSION;

2、权限管理

       所谓权限就是执行特定类型SQL命令或访问其他用户的对象的权利。用户在数据库中可以执行什么样的操作,以及可以对哪些对象进行操作,完全取决于该用户所拥有的权限。

       分为如下两类:

           系统权限:系统权限是指在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。例如,CREATESESSION权限、CREATEANY TABLE权限。

           对象权限:对象权限是指对某个特定的数据库对象执行某种操作的权限。例如,对特定表的插入、删除、修改、查询的权限。

       授权方法:

           直接授权:利用GRANT命令直接为用户授权。

           间接授权:先将权限授予角色,然后再将角色授予用户。

(1)系统权限管理

          1)系统权限分类

                一类是对数据库某一类对象的操作能力,通常带有ANY关键字。例如,CREATEANY INDEX,ALTER ANY INDEX,DROP ANY INDEX 。

                另一类是数据库级别的某种操作能力。例如,CREATE SESSION。

          2)系统权限的授权

               GRANT sys_priv_list TOuser_list|role_list|PUBLIC [WITH ADMIN OPTION];

               参数说明:

                   sys_priv_list:表示系统权限列表,以逗号分隔;

                   user_list:表示用户列表,以逗号分隔;

                   role_list:表示角色列表,以逗号分隔;

                   PUBLIC:表示对系统中所有用户授权;

                   WITH ADMIN OPTION:表示允许系统权限接收者再把此权限授予其他用户。

        注意:

               只有DBA才应当拥有ALTER DATABASE 系统权限。

               应用程序开发者一般需要拥有CREATE TABLE、CREATEVIEW和CREATEINDEX等系统权限。

               普通用户一般只具有CREATE SESSION系统权限。

               只有授权时带有WITH ADMIN OPTION子句时,用户才可以将获得的系统权限再授予其他用户,即系统权限的传递性。

        示例:

               ①   为PUBLIC用户组授予CREATESESSION系统权限。

                      SQL>GRANT CREATE SESSION TO PUBLIC;

               ②   为用户user1授予CREATESESSION,CREATETABLE,CREATEINDEX系统权限。

                      SQL>GRANT CREATE SESSION,CREATETABLE,CREATE VIEW TO user1;

               ③   为用户user2授予CREATESESSION,CREATETABLE ,CREATEINDEX系统权限。user2获得权限后,为用户user3授予CREATE  TABLE权限。

                     SQL>GRANT CREATE SESSION,CREATE TABLE,CREATEVIEW TO user2 WITH ADMIN OPTION;

                     SQL>CONNECT user2/user2 @ORCL

                     SQL>GRANT CREATE TABLE TO user3;

            3)系统权限的回收

                   REVOKE sys_priv_list FROM user_list|role_list|PUBLIC;

                   注意事项:

                    多个管理员授予用户同一个系统权限后,其中一个管理员回收其授予该用户的系统权限时,该用户将不再拥有相应的系统权限。

                    为了回收用户系统权限的传递性(授权时使用了WITH ADMIN OPTION子句),必须先回收其系统权限,然后再授予其相应(原拥有)的系统权限。

                  示例:

                    SQL>connect system/manager @ORCL

                    SQL>revokecreate session,create table from user2;

                    SQL>grant create session,create table touser2;

                    如果一个用户获得的系统权限具有传递性,并且给其他用户授权,那么该用户系统权限被回收后,其他用户的系统权限并不受影响。

(2)对象权限管理

           1)对象权限分类

              

           2)对象权限的授权 

                 GRANT obj_priv_list|ALL ON [schema.]object TOuser_list|role_list [WITH GRANT OPTION];

                 参数说明

                   obj_priv_list:表示对象权限列表,以逗号分隔;

                   [schema.]object:表示指定的模式对象,默认为当前模式中的对象;

                   user_list:表示用户列表,以逗号分隔;

                   role_list:表示角色列表,以逗号分隔;

                   WITHGRANT OPTION:表示允许对象权限接收者把此对象权限授予其他用户。

               示例:

                  ①   将scott模式下的emp表的SELECT,UPDATE,INSERT权限授予user1用户。

                        SQL>GRANTSELECT,INSERT,UPDATE ON scott.emp TO user1;

                  ②   将scott模式下的emp表的SELECT,UPDATE,INSERT权限授予user2用户。user2用户再将emp表的SELECT,UPDATE权限授予user3用户。

                        SQL>GRANTSELECT,INSERT,UPDATE ON scott.emp TO user2 WITH GRANT OPTION;

                        SQL>CONNECTuser2/user2@ORCL

                        SQL>GRANTSELECT,UPDATE ON scott.emp TO user3;

           3)对象权限的回收

                 REVOKE obj_priv_list| ALL ON [schema.]object FROM user_list|role_list;

                 注意事项:

                      多个管理员授予用户同一个对象权限后,其中一个管理员回收其授予该用户的对象权限时,该用户不再拥有相应的对象权限。

                      为了回收用户对象权限的传递性(授权时使用了WITH GRANT OPTION子句),必须先回收其对象权限,然后再授予其相应的对象权限。

                      如果一个用户获得的对象权限具有传递性(授权时使用了WITH GRANT OPTION子句),并且给其他用户授权,那么该用户的对象权限被回收后,其他用户的对象权限也被回收。

          WITH ADMIN OPTION与WITH GRANT OPTION比较

          WITH ADMIN OPTION:

           当甲用户授权给乙用户,且激活该选项,则被授权的乙用户具有管理该权限的能力:或者能把得到的权限再授给其他用户丙,或者能回收授出去的权限。

           当甲用户收回乙用户的权限后,乙用户曾经授给丙用户的权限仍然存在

          WITH GRANT OPTION:

           当甲用户授权给乙用户,且激活该选项,则被授权的乙用户具有管理该权限的能力:或者能把得到的权限再授给其他用户丙,或者能回收授出去的权限。

           当甲用户收回乙用户的权限后,乙用户曾经授给丙用户的权限也被回收。

(3)查询权限信息

          DBA_TAB_PRIVS:包含数据库所有对象的授权信息

          ALL_TAB_PRIVS:包含数据库所有用户和PUBLIC用户组的对象授权信息

          USER_TAB_PRIVS:包含当前用户对象的授权信息

          DBA_COL_PRIVS:包含所有字段已授予的对象权限

          ALL_COL_PRIVS:包含所有字段已授予的对象权限信息

          USER_COL_PRIVS:包含当前用户所有字段已授予的对象权限信息。

          DBA_SYS_PRIVS:包含授予用户或角色的系统权限信息

          USER_SYS_PRIVS:包含授予当前用户的系统权限信。


3、角色管理

      所谓角色就是一系列相关权限的集合,角色权限的授予与回收和用户权限的授予与回收完全相同,如下图:

      

         预定义角色

         预定义角色是指在Oracle数据库创建时由系统自动创建的一些常用的角色,这些角色已经由系统授予了相应的权限。

         DBA可以直接利用预定义的角色为用户授权,也可以修改预定义角色的权限。

         Oracle数据库中有30多个预定义角色。

         可以通过数据字典视图DBA_ROLES查询当前数据库中所有的预定义角色,通过DBA_SYS_PRIVS查询各个预定义角色所具有的系统权限。

         部分预定义角色的权限见下表:

          

            自定义角色

          (1)创建角色

                    CREATE ROLE role_name [NOTIDENTIFIED][IDENTIFIED BY password];

                    参数说明 :

                    role_name:用于指定自定义角色名称,该名称不能与任何用户名或其他角色相同;

                    NOT IDENTIFIED:用于指定该角色由数据库授权,使该角色生效时不需要口令;

                    IDENTIFIED BYpassword:用于设置角色生效时的认证口令。

                   示例:创建不同类型的角色。

                              SQL>CREATE ROLE high_manager_role;

                              SQL>CREATE ROLE middle_manager_roleIDENTIFIED BY middlerole;

                              SQL>CREATE ROLE low_manager_roleIDENTIFIED BY lowrole;

          (2)角色权限的授予与回收

                    给角色授予适当的系统权限、对象权限或已有角色。在数据库运行过程中,可以为角色增加权限,也可以回收其权限。给角色授权时应该注意,一个角色可以被授予另一个角色,但不能授予其本身,不能产生循环授权。

                   示例:

                        SQL>GRANTCONNECT,CREATE TABLE,CREATE VIEW TO low_manager_role;

                        SQL>GRANTCONNECT,CREATE TABLE,CREATE VIEW TO middle_manager_role;

                        SQL>GRANTCONNECT,RESOURCE,DBA TO high_manager_role;

                        SQL>GRANTSELECT,UPDATE,INSERT,DELETE ON scott.emp TO high_manager_role;

                        SQL>REVOKECONNECT FROM low_manager_role;

                        SQL>REVOKECREATE TABLE,CREATE VIEW FROM middle_manager_role;

                        SQL>REVOKEUPDATE,DELETE ,INSERT ON scott.emp FROM high_manager_role;

       (3)修改角色

                 修改角色是指修改角色生效或失效时的认证方式,也就是说,是否必须经过Oracle确认才允许对角色进行修改。

                 修改角色的语法

                    ALTER ROLE role_name [NOTIDENTIFIED]|[IDENTIFIED BY password];

                 示例 :

                   SQL>ALTER ROLE high_manager_roleIDENTIFIED BY highrole;

                   SQL>ALTER ROLE middle_manager_role NOTIDENTIFIED;

      (4)角色的生效与失效

                所谓角色的失效是指角色暂时不可用。当一个角色生效或失效时,用户从角色中获得的权限也生效或失效。因此,通过设置角色的生效或失效,可以动态改变用户的权限。在进行角色生效或失效设置时,需要输入角色的认证口令,避免非法设置。

               SETROLE [role_name [IDENTIFIED BY password]]|[ALL [EXCEPT role_name]]|[NONE];

               参数说明 :

                role_name:表示进行生效或失效设置的角色名称;

                IDENTIFIED BY password:用于设置角色生效或失效时的认证口令;

                ALL:表示使当前用户所有角色生效;

                EXCEPT role_name:表示除了特定角色外,其余所有角色生效;

                NONE:表示使当前用户所有角色失效。

                示例:

                    SQL>SET ROLE NONE;

                    SQL>SET ROLE high_manager_role IDENTIFIEDBY highrole;

                    SQL>SET ROLEmiddle_manager_role,low_manager_low IDENTIFIED BY lowrole;

                    SQL>SET ROLE ALL EXCEPTlow_manager_role,middle_manager_role;   

       (5)删除角色

                 DROP ROLE role_name;

                 如果某个角色不再需要,则可以使用DROP ROLE语句删除角色。角色被删除后,用户通过该角色获得的权限被回收。


利用角色进行权限管理

(1)给用户或角色授予角色

           GRANT role_list TO user_list|role_list;

           例如,将CONNECT,high_manager_role角色授予用户user1,将RESOURCE,CONNECT角色授予角色middle_manager_role。

          SQL>GRANT CONNECT, high_manager_role TOuser1;

          SQL>GRANT RESOURCE, CONNECT TOmiddle_manager_role;

(2)从用户或角色回收角色

          REVOKE role_list FROM user_list|role_list;

          例如,回收角色middle_manager_role的RESOURCE,CONNECT角色。

          SQL>REVOKE RESOURCE, CONNECT FROMmiddle_manager_role;

(3)用户角色的激活或屏蔽

          ALTERUSER user_name DEFAULT ROLE [role_name]|[ALL [EXCEPT role_name]]|[NONE];

         示例

          SQL>ALTER USER user1 DEFAULT ROLE NONE; //激活所有的角色

          SQL>ALTER USER user1 DEFAULT ROLECONNECT,DBA;

          SQL>ALTER USER user1 DEFAULT ROLE ALL;

          SQL>ALTER USER user1 DEFAULT ROLE ALLEXCEPT DBA;//激活除了DBA外的所有角色

查询角色信息

          DBA_ROLES:包含数据库中所有角色及其描述;

          DBA_ROLE_PRIVS:包含为数据库中所有用户和角色授予的角色信息;

          USER_ROLE_PRIVS:包含为当前用户授予的角色信息;

          ROLE_ROLE_PRIVS:为角色授予的角色信息;

          ROLE_SYS_PRIVS:为角色授予的系统权限信息;

          ROLE_TAB_PRIVS:为角色授予的对象权限信息;

          SESSION_PRIVS:当前会话所具有的系统权限信息;

          SESSION_ROLES:当前会话所具有的角色信息。

          示例:

          查询角色CONNECT所具有的系统权限信息。

            SQL>SELECT * FROM ROLE_SYS_PRIVS WHEREROLE='CONNECT';

         查询DBA角色被授予的角色信息。

           SQL>SELECT * FROM ROLE_ROLE_PRIVS WHEREROLE='DBA';

4、概要文件管理

(1)概要文件的作用

          概要文件(PROFILE)是数据库和系统资源限制的集合,是Oracle数据库安全策略的重要组成部分。

          利用概要文件,可以限制用户对数据库和系统资源的使用,同时还可以对用户口令进行管理。

          在Oracle数据库创建的同时,系统会创建一个名为DEFAULT的默认概要文件。如果没有为用户显式地指定一个概要文件,系统默认将DEFAULT概要文件作为用户的概要文件。

(2)资源限制级别和类型

          资源限制级别

          会话级资源限制:对用户在一个会话过程中所能使用的资源进行限制。

          调用级资源限制:对一条SQL语句在执行过程中所能使用的资源进行限制。

          资源限制类型

          CPU使用时间;逻辑读;每个用户的并发会话数;用户连接数据库的空闲时间;用户连接数据库的时间;私有SQL区和PL/SQL区的使用。

(3)启用或停用资源限制

           ①  数据库启动前启用或停用资源限制

                 将数据库初始化参数文件中的参数RESOURCE_LIMIT的值设置为TRUE或FALSE(默认),来启用或停用系统资源限制。

           ② 在数据库启动后启用或停用资源限制

                使用ALTER SYSTEM语句修改RESOURCE_LIMIT的参数值为TRUE或FALSE,来启动或关闭系统资源限制。

           如:SQL>ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

(4)概要文件的参数

          1)资源限制参数

                CPU_PER_SESSION:限制用户在一次会话期间可以占用的CPU 时间总量,单位为百分之一秒。当达到该时间限制后,用户就不能在会话中执行任何操作了,必须断开连接,然后重新建立连接。

                CPU_PER_CALL:限制每个调用可以占用的CPU 时间总量,单位为百分之一秒。当一个SQL语句执行时间达到该限制后,该语句以错误信息结束。

                CONNECT_TIME:限制每个会话可持续的最大时间值,单位为分钟。当数据库连接持续时间超出该设置时,连接被断开。

                IDLE_TIME:限制每个会话处于连续空闲状态的最大时间值,单位为分钟。当会话空闲时间超过该设置时,连接被断开。

                SESSIONS_PER_USER:限制一个用户打开数据库会话的最大数量。

                LOGICAL_READS_PER_SESSION:允许一个会话读取数据块的最大数量,包括从内存中读取的数据块和从磁盘中读取的数据块的总和。 

                LOGICAL_READS_PER_CALL:允许一个调用读取的数据块的最大数量,包括从内存中读取的数据块和从磁盘中读取的数据块的总和。

                PRIVATE_SGA:在共享服务器操作模式中,执行SQL语句或PL/SQL程序时,Oracle将在SGA中创建私有SQL区。该参数限制在SGA中一个会话可分配私有SQL区的最大值。

                COMPOSITE_LIMIT:称为“综合资源限制”,是一个用户会话可以消耗的资源总限额。该参数由CPU_PER_SESSION,LOGICAL_READS_PER_SESSION,                 PRIVATE_SGA,CONNECT_TIME几个参数综合决定。

          2)口令管理参数

                FAILED_LOGIN_ATTEMPTS:限制用户在登录Oracle数据库时允许失败的次数。一个用户尝试登录数据库的次数达到该值时,该用户的账户将被锁定,只有解锁后才可以继续使用。

                PASSWORD_LOCK_TIME:设定当用户登录失败后,用户账户被锁定的时间长度。

                PASSWORD_LIFE_TIME:设置用户口令的有效天数。达到限制的天数后,该口令将过期,需要设置新口令。

                PASSWORD_GRACE_TIME:用于设定提示口令过期的天数。在这几天中,用户将接收到一个关于口令过期需要修改口令的警告。当达到规定的天数后,原口令过期。

                PASSWORD_REUSE_TIME:指定一个用户口令被修改后,必须经过多少天后才可以重新使用该口令。

                PASSWORD_REUSE_MAX:指定一个口令被重新使用前,必须经过多少次修改。

                PASSWORD_VERIFY_FUNCTION:设置口令复杂性校验函数。该函数会对口令进行校验,以判断口令是否符合最低复杂程度或其他校验规则。

(5)概要文件的管理

           1)创建概要文件

                 CREATEPROFILE profile_name LIMIT resource_parameters|password_parameters;

                 参数说明:

                 profile_name:用于指定要创建的概要文件名称;

                 resource_parameter:用于设置资源限制参数,形式为

                 resource_parameter_name integer|UNLIMITED|DEFALUT

                 password_parameters:用于设置口令参数,形式为

                 password_parameter_name integer|UNLIMITED|DEFALUT

                 示例:

                  ① 创建一个名为res_profile的概要文件,要求每个用户最多可以创建4个并发会话;每个会话持续时间最长为60分钟;如果会话在连续20分钟内空闲,则结束会话;每个会话的私有SQL区为100 KB;每个SQL语句占用CPU时间总量不超过10秒。

                  SQL>CREATE PROFILE res_profile LIMIT

                            SESSIONS_PER_USER4 CONNECT_TIME 60

                            IDLE_TIME20 PRIVATE_SGA 100K

                            CPU_PER_CALL 100;

                 ② 创建一个名为pwd_profile的概要文件,如果用户连续4次登录失败,则锁定该账户,10天后该账户自动解锁。

                 SQL>CREATE PROFILE pwd_profile LIMIT FAILED_LOGIN_ATTEMPTS 4 PASSWORD_LOCK_TIME10;

          2)将概要文件分配给用户

                可以在创建用户时为用户指定概要文件

                SQL>CREATE USER user5 IDENTIFIED BY user5PROFILE res_profile;

                也可以在修改用户时为用户指定概要文件。

                SQL>ALTER USER user5 PROFILE pwd_profile;

          3)修改概要文件

                ALTERPROFILE profile_name LIMIT resource_parameters|password_parameters;

                对概要文件的修改只有在用户开始一个新的会话时才会生效。

                示例:

                修改pwd_profile概要文件,将用户口令有效期设置为10天。

                SQL>ALTER PROFILE pwd_profile LIMIT PASSWORD_LIFE_TIME10;

          4)删除概要文件

                DROP PROFILE profile_name [CASCADE];

                如果要删除的概要文件已经指定给用户,则必须在DROP PROFILE语句中使用CASCADE子句。如果为用户指定的概要文件被删除,则系统自动将DEFAULT概要文件指定给该用户。

                删除概要文件pwd_profile。

                SQL>DROP PROFILE pwd_profile CASCADE;

         5)查询概要文件

               USER_PASSWORD_LIMITS:包含通过概要文件为用户设置的口令策略信息。

               USER_RESOURCE_LIMITS:包含通过概要文件为用户设置的资源限制参数。

               DBA_PROFILES:包含所有概要文件的基本信息。

 

5、审计

      审计是监视和记录用户对数据库所进行的操作,以供DBA进行统计和分析。一条审计记录中包含用户名、会话标识、终端标识、所访问的模式对象名称、执行的操作、操作的完整语句代码、日期和时间戳、所使用的系统权限等。

     利用审计可以完成:调查数据库中的可疑活动;监视和收集特定数据库活动的数据。

(1)审计的分类

          语句审计(Statement Auditing):对特定的SQL语句进行审计,不指定具体对象。

          权限审计(Privilege Auditing):对特定的系统权限使用情况进行审计。

          对象审计(Object Auditing):对特定的模式对象上执行的特定语句进行审计。

          精细审计(Fine-Grained Auditing,FGA):对基于内容的各种SQL语句进行审计,可以使用布尔表达式对列级别上的内容进行审计。

          根据用户执行的语句是否成功,审计分为:

           成功执行语句的审计

           不成功执行语句的审计

           无论语句是否执行成功都进行审计

          根据对同一个语句审计次数的不同,审计分为:

           会话级审计:对某一个用户或所有用户的同一个语句只审计一次,形成一条审计记录;

           存取方式审计:对某一个用户或所有用户的同一个语句每执行一次便审计一次,即同一条语句形成多个审计记录。

(2)审计的启动

          通过修改静态参数AUDIT_TRAIL值来启动或关闭数据库的审计功能。AUDIT_TRAIL参数可以取值:为DB,OS,NONE,TRUE,FALSE,DB_EXTENDED,XML或EXTENDED。

          DB表示启动审计功能,审计信息写入SYS.AUD$数据字典中;

          OS表示启动审计功能,审计信息写入操作系统文件中;

          默认为NONE,表示不启动审计功能;

          TRUE功能与DB选项一样;

          FALSE表示不启动审计功能,但Oracle会监视特定活动并写入操作系统文件,如例程的启动、关闭以及DBA连接数据库等。

          示例:

          SQL>ALTER SYSTEM SET audit_trail ='DB'SCOPE=SPFILE;

(3)语句审计

          1)概述

                语句审计是指对特定类型的SQL语句进行审计,与具体的对象没有关系。可以审计某个用户或所有用户的SQL语句;可以是会话级审计或存取方式审计;可以对成功执行的SQL语句、没有成功执行的SQL语句或无论是否成功执行的SQL语句进行审计。

          基本语法:

          AUDITsql_statement|sql_statement_option

          [BY user1,user2…]

          [BY SESSION|ACCESS]

          [WHENEVER [NOT] SUCCESSFUL]

          参数说明:

           sql_statement:被审计的SQL语句

           sql_statement_option:被审计的SQL语句选项

           BY user:指定审计的用户,如果没有指定,则审计所有用户;

           BY SESSION:语句级审计,同一个SQL语句只审计一次(默认);

           BY ACCESS:存取方式审计,同一个SQL语句执行几次审计几次;

           WHENEVER SUCCESSFUL:只审计成功的SQL语句;

           WHENEVER NOT SUCCESSFUL:只审计不成功的SQL语句。

           示例:

               SQL>AUDIT TABLE BY scott BYACCESS;

               SQL>AUDIT VIEW BY scott BYSESSION;

               SQL>AUDIT ALTER TABLE BYscott,sfd BY SESSION WHENEVER SUCCESSFUL;

               SQL>AUDIT SESSION BY sfd;

               SQL>CONN scott/tiger

               SQL>CREATE TABLE test_audit(snoNUMBER,sname CHAR(20));

               SQL>ALTER TABLE test_audit ADD(sex CHAR(2));

               SQL>CONN / AS SYSDBA

               SQL>SELECT * FROM aud$;

          2)查询语句审计信息

                如果要了解当前数据库对哪些用户进行了语句审计,以及审计设置信息,可以通过查询数据字典视图DBA_STMT_AUDIT_OPTS获得。

                SQL>SELECT user_name,audit_option,success FROMdba_stmt_audit_opts;

          3)取消语句审计

                取消对某个语句的审计,只需将AUDIT命令改为NOAUDIT命令就可以了。

(4)权限审计

          1)概述

              权限审计是指对特定系统权限的使用情况进行审计。

              AUDIT system_privilege

              [BY user1,user2…]

              [BY SESSION|ACCESS]

              [WHENEVER [NOT] SUCCESSFUL]

              示例:

             SQL>AUDIT CREATE ANY TABLE,CREATE ANY VIEWBY scott,sfd;

             SQL>AUDIT ALTER ANY TABLE BY sfd BYSESSION WHENEVER SUCCESSFUL;

          2)权限审计信息查询

              如果要了解当前数据库对哪些用户的系统权限进行了审计以及审计设置信息,可以通过查询数据字典DBA_PRIV_AUDIT_OPTS获得。

              SQL>SELECT user_name,privilege,successFROM dba_priv_audit_opts;

         3)取消权限设计

               取消对某个系统权限的审计,只需将AUDIT命令改为NOAUDIT命令就可以了。

(5)对象审计

         1)概述

               对象审计是指对特定模式对象执行的特点操作进行审计,与用户没有关系。

               AUDIT object_privilege ON schema.object_name

               [BY user1,user2…][BY SESSION|ACCESS][WHENEVER [NOT]SUCCESSFUL]

               参数说明 :

               object_privilege:特定的对象权限

               schema.object_name:特定模式对象。

              示例:

               对scott模式下的emp表、dept表进行审计。

                SQL>AUDIT SELECT,UPDATE ON scott.emp BYACCESS;

                SQL>AUDIT INSERT,DELETE ON scott.dept BYSESSION WHENEVER NOT SUCCESSFUL;

        2)查询对象审计信息

              如果要了解当前数据库对哪些模式对象进行了审计以及审计设置信息,可以通过查询数据字典视图DBA_OBJ_AUDIT_OPTS获得。

              SQL>SELECTowner,object_type,ins,upd,sel,del FROM dba_obj_audit_opts;

       3)取消对象审计

             如果要取消对某个模式对象的审计,只需将AUDIT命令改为NOAUDIT命令就可以了。

(6)精细审计

         1)概述

              精细审计是Oracle 10g的新特性,可以对表或视图上执行的SELECT,INSERT,UPDATE,DELETE操作创建审计策略。通过DBMA_FGA包对审计策略进行管理。

              DBMA_FGA包中定义了下列4个用于精细审计策略管理的子程序

              ADD_POLICY:创建一个审计策略

              DROP_POLICY:删除一个审计策略

              ENABLE_POLICY:启用一个审计策略

              DISABLE_POLICY:禁用一个审计策略

          基本语法:

              DBMS_FGA.ADD_POLICY(

              object_schemaVARCHAR2,

              object_nameVARCHAR2,

              policy_nameVARCHAR2,

              audit_conditionVARCHAR2,

              audit_columnVARCHAR2,

              handler_schemaVARCHAR2,

              handler_moduleVARCHAR2,

              enableBOOLEAN,

              statement_typesVARCHAR2,

              audit_trailBINARY_INTEGER IN DEFAULT,

              audit_column_optsBINARY_INTEGER IN  DEFAULT);

 

              DBMS_FGA.DROP_POLICY(

              object_schemaVARCHAR2,

              object_nameVARCHAR2,

              policy_nameVARCHAR2 );

 

              DBMS_FGA.ENABLE_POLICY(

              object_schemaVARCHAR2,

              object_nameVARCHAR2,

              policy_nameVARCHAR2,

              enableBOOLEAN);

 

             DBMS_FGA.DISABLE_POLICY(

             object_schemaVARCHAR2,

             object_nameVARCHAR2,

             policy_nameVARCHAR2 );

          2)精细审计的步骤:

                首先创建一个精细审计策略,然后启动精细审计策略

                示例:对 scott模式下emp表中20号部门员工工资的查询进行审计。

                ① 创建精细审计策略

                     BEGIN

                          DBMS_FGA.ADD_POLICY(

                          object_schema=>'scott',

                          object_name=>'emp',

                          policy_name=>'audit_emp_sal',

                          audit_condition=>'deptno=10',

                          audit_column=>'sal',

                          handler_schema=>NULL,

                          handler_module=>NULL,

                          enable=>TRUE,

                          statement_types=>'select');

                     END;

               ② 启动精细审计策略

                    BEGIN

                         DBMS_FGA.ENABLE_POLICY(

                         object_schema=>'scott',        

                         object_name=>'emp',

                         policy_name=>'audit_emp_sal');

                   END;

              ③ 禁用精细审计策略

                  BEGIN     

                       DBMS_FGA.DISABLE_POLICY(

                       object_schema=>'scott',

                       object_name=>'emp',

                       policy_name=>'audit_emp_sal');

                 END;

           ④ 删除精细审计策略

                BEGIN

                     DBMS_FGA.DROP_POLICY(

                     object_schema=>'scott',

                     object_name=>'emp',

                     policy_name=>'audit_emp_sal');

               END;

       3)查询精细审计策略

             了解当前数据库中有哪些精细审计策略,以及审计设置信息,查询数据字典视图DBA_FGA_AUDIT_TRAIL

             示例

              SQL>SELECTpolicy_name,object_name,object_schema,sql_text FROM dba_fga_audit_trail; 


Oracle数据库安全管理的5个方面 前言 我是在乐字节教育学习的小小学员,我给大家介绍一下oracle数据库 数据库安全控制策略概述 安全性是评估一个数据库的重要指标,Oracle数据库从3个层次上采取安全控制策略: 1、系统安全性。在系统级别上控制数据库的存取和使用机制,包括有效的用户名与口令、是否可以连接数据库、用户可以进行哪些系统操作等; 2、数据安全性。在数据库模式对象级别上控制数据库的存取和使用机制。用户要对某个模式对象进行操作,必须要有操作的权限; 3、网络安全性。Oracle通过分发Wallet、数字证书、SSL安全套接字和数据 阅读详情

相关推荐

【Oracle】第1天 安全管理

下面所有加粗的命令都是我按顺序执行过的命令 写在前面的 --Oracle使用两个横杠来表示单行注释注释,多行注释和Java一致为/** */ Oracle习惯使用单引号' '而非双引号" " Oracle列名不区分大小写,但是列的内容区分大小写 sqlplus 显示的设置:             linesize                         【show line...

midnight_time的博客 677

Oracle Database标准审计和细粒度审计功能

这篇文章主要简单的讨论一下Oracle的审计功能,包括粗粒度审计、细粒度审计(FGA) 一.粗粒度审计功能。 1.审计级别: 语句级审计(stmt):表示只审计某种类型的SQL语句,不指定结构或对象。 权限级审计(privs):表示只审计执行相应动作的系统权限的使用情况。 实体级审计(obj):表示只对指定模式上的实体指定语句的审计。     根据用户语句的执行结果,审计语

xiaoxu oracle专栏 5129

Oracle PeopleSoft 应用安全加固

本文根据官方文档编写,主要介绍如何管理、审查以及监控PeopleSoft的安全性。 目录 0、PeopleSoft安全 一、用户管理安全 1.1、配置权限列表 1.1.1.配置常规权限 1.1.2.配置页面权限 1.1.3. 配置PeopleTools权限 1.1.4. 配置进程权限 1.1.5. 配置登陆时间权限 1.1.6. 配置组件接口权限 1.1.7. 配置web服务...

hudi2011的博客 1757

ORACLE审计小结

 1、什么是审计审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/)或数据库(存储在system表空间中的SYS.AUD$表中,可通过视图dba_audit_trail查看)中。默认情况下审计是没有开启的。不管你是否打开数据库的审计功能,以下这些操

坤哥的专栏 1086

14、Oracle身份与访问管理器集成指南

本文详细介绍了如何集成Oracle Internet Directory(OID)、Oracle Access Manager(OAM)和Oracle Identity Manager(OIM),以提升用户生产力和身份安全性。通过使用IdmConfigTool工具,逐步配置OAM、OIM并完成两者的集成,实现单点登录、用户自助服务及权限管理。文章还提供了配置参数说明、注意事项、测试验证方法以及常见问题的解决方案,为企业提供了一套完整的身份与访问管理集成方案。

opencv7vision的博客 65

Oracle JDBC驱动jar包全版本合集(ojdbc14至ojdbc6)

Java数据库连接(JDBC)是实现Java应用与关系型数据库通信的核心API,而Oracle的JDBC驱动——ojdbc系列jar包,则是企业级系统中连接Oracle数据库的关键组件。作为Type 4纯Java驱动,ojdbc通过Socket直接与Oracle数据库的TNS(Transparent Network Substrate)协议通信,无需本地客户端库,实现了跨平台、高性能的数据访问能力。// 典型的ojdbc驱动加载与连接示例。

weixin_42668301的博客 1285

oracle审计脚本,关于ORACLE 审计的一些视图和脚本

审计视图STMT_AUDIT_OPTION_MAP -- 审计选项类型代码AUDIT_ACTIONS -- action代码ALL_DEF_AUDIT_OPTS -- 对象创建时默认的对象审计选项DBA_STMT_AUDIT_OPTS -- 当前数据库系统审计选项DBA_PRIV_AUDIT_OPTS -- 权限审计选项DBA_OBJ_AUDIT_OPTSUSER_O...

weixin_35836574的博客 313

Oracle JDBC驱动程序:ojdbc14-10.2.0.4.0.jar实战指南

JDBC(Java Database Connectivity)驱动是Java开发者访问数据库的核心组件。Oracle作为企业级数据库管理系统的领导者,其JDBC驱动更是广泛应用于Java应用程序中。本章将概述Oracle JDBC驱动的分类与特点,为读者提供一个全面的概览。Oracle JDBC驱动分为Type 2、Type 3、Type 4三种,每种驱动都有其特定的使用场景和优势。Type 4驱动(Thin Driver)是纯Java实现,不依赖于操作系统的本地库,易于跨平台;

weixin_31860973的博客 994

oracle 用户与安全管理

查询当前数据库系统中的用户信息:用户名、默认表空间、临时表空间、用户创建时间、用户状态select username,default_tablespace,temporary_tablespace,created,account_status from dba_users;   创建一个用户:u1 密码为:oracle,不指定默认表空间与临时表空间,在创建的时候讲用户锁住create user ...

yigongye 1215

Xilinx-复旦微-FPGA-眼图BlockDesign系统制作-针对PCIE系统

XIlinx-复旦微电子-FPGA-眼图BlockDesign系统制作-针对PCIE系统,手把手教你如何建立眼图测试

weixin_43444334的博客 2596

电拖笔记1电磁学基本知识与定律

电拖学习

qq458629839的博客 1133

北大青鸟oracle学习笔记14 15

oracle安全 用户管理DBA授予不同用户不同权利,每个用户可以在授权范围内活动,任何超越权限范围的操作都视为非法。 sys用户  网络管理员 拥有最高权限conn sys/口令 as sysdba;system用户 本地管理员scott用户  示例数据库 建立用户:(必须拥有dba权限)Create User 用户名 Identified by 口令

pfpfpfpfpf的专栏 656

2019年数学建模美赛经验总结

北京时间2019年1月29号上午9时,数模美赛结束。美赛结束已经10多天了,我在这次竞赛中负责建模和编程,趁现在记忆还比较清晰,写下这篇博客记录第一次参加数学建模美赛的经历。 补更:2019年4月20日公布成绩,笔者最终获得了美赛一等奖 目录 1、基本情况 2、选题 3、分工合作 4、论文写作 5、建模 6、编程 7、入门资源 ...

Smallactive 7万+

ORACLE期末复习笔记

本篇包涵ORACLE的基础知识

进一步有一步的欢喜 782

移远EC21/EC200模组休眠功耗从13mA降到6mA,我排查了这3个坑(附完整AT指令流程)

本文详细介绍了移远EC21/EC200模组休眠功耗从13mA优化至6mA的完整解决方案,涵盖硬件设计检查、AT指令配置、RTOS调度优化和固件兼容性验证等关键步骤。通过系统性的低功耗问题诊断框架,帮助IoT设备开发者有效提升电池续航能力,特别适合智能水表等电池供电场景应用。

weixin_30715523的博客 534

QuestaSim使用Xilinx库的设置

安装QuestaSim

miracle_eicont的专栏 3409

opentp1如何连接oracle,Oracle用户安全管理

一、创建和管理数据库用户帐户1、每个数据库用户帐户都具有以下项目:(1)唯一的用户名:不能超过30个字节,不能包含特珠字母,而且必须字母开头。(2)验证方法:口令、外部验证、全局验证(3)默认表空间:注意创建对象和设置空间限额要另外单独授权。www.2cto.com(4)临时表空间:用户可在其中创建临时对象(于排序和临时表)的表空间(5)用户概要文件:分配给用户的一组资源与口令的限制。(6)使用户...

weixin_39610488的博客 334

2026年全球VCSEL芯片竞争格局揭秘:美欧亚“三足鼎立”,中国军团强势崛起

全球VCSEL芯片市场迎来爆发期,预计2032年规模将达110亿元。美国Lumentum、Coherent等巨头主导消费电子和光通信领域,欧洲ams-OSRAM、TRUMPF则在车规级高功率VCSEL占据优势。中国企业如长光华芯、纵慧芯光加速追赶,实现从3D传感向激光雷达的技术跨越。行业未来聚焦高功率、多结阵列化发展,自动驾驶和AI算力需求将推动市场持续增长,但面临技术壁垒、供应链依赖等挑战。国际巨头与中国厂商将在这一光芯片赛道展开激烈竞争。

致力于lidar应用开发 782

Oracle 语句大全

1. Oracle安装完成后的初始口令?  internal/oracle   sys/change_on_install   system/manager   scott/tiger   sysman/oem_temp 2. ORACLE9IAS WEB CACHE的初始默认用户和密码? administrator/administrator 3. oracle 8.0.5怎么创建数...

yanguz的专栏 349

无迹卡尔曼滤波 (UKF, Unscented Kalman Filter) 算法详解及案例分析

无迹卡尔曼滤波是一种用于估计非线性系统状态的递归算法。其目标是通过结合系统模型和观测数据,估计系统的最优状态。

闲人编程的博客 2627

Win7 x64位系统下几乎完美使用安装RTX3050 6G显卡驱动详细教程

RTX3050 6G显卡驱动安装指南:由于该显卡发布时间晚于驱动,需手动修改安装文件。首先在NVIDIA官网下载驱动并解压,通过设备管理器获取硬件ID(PCI\VEN_10DE&DEV_2584),然后在解压目录的.inf文件中添加对应的设备标识。安装完成后可能出现设备管理器感叹号问题,推荐通过命令提示符启用测试模式(bcdedit /set testsigning on)解决,此方法无需每次启动按F8,但会显示测试模式水印。文中提供了详细的图文操作步骤和两种解决方案。

m0_67194883的博客 2888

oracle用存储返回老师人数,ORACLE复习选编.ppt

ORACLE复习选编ORACLE;ORACLE数据库基础知识;3、根据下列叙述,设计该数据库的E-R图。学校有若干个系,每个系有若干个班级和教研室,每个教研室有若干个老师,每个老师带若干个教学班。每个班有若干个学生,每个学生选修若千门课程,每门课程可由若干学生选修。;;4、根据下列描述,设计数据库E-R图,并转换为关系模式。 授课选课系统有如下的实体、属性及语义描述: 每名学生可以学习...

weixin_33903769的博客 143

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

oracle9i 学习笔记及心得

n1z0_031_01.avi Oracle Architectural Components1z0_031_02.avi:管理工具1z0_031_03.avi:Managing an oracle instance1z0_031_04.avi:Create a database1z0_031_05.avi:Data Dictionary Contents and Usagelz0_031_06:

yown的专栏 2457

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

重磅!JDK 17 发布,Oracle 宣布从 JDK 17 开始正式免费。。

点击关注公众号,Java干货及时送达上一版:JDK 16 正式发布,一次性发布 17 个新特性…不服不行!JDK 17 正式发布+免费牛逼啊,JDK 16 刚发布半年(2021/03/16...

Java技术栈,分享最主流的Java技术 5565

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OCP学习笔记

OCP学习笔记 第一部份 SQL 第二部份 DBA_1 常用操作: 1、启动em emctl start | stop dbconsole http://192.168.5.18:1158/em/ 2、启动listener   lsnrctl start | stop 3、为了使某个用户以 SYSDBA或 SYSOPER 身份登录 iSQL*Plus 必须通过执行以下步骤在 O

放飞的心灵-记录学习的点点滴滴 2482

Oracle 第2章:安装与配置Oracle

通过上述步骤,你应该能够顺利完成Oracle数据库的安装与配置,并初步具备管理数据库的能力。记住,Oracle数据库的管理是一个持续的过程,涉及到监控、优化、备份等多个方面。随着时间的推移,你将积累更多的经验,并能够更加熟练地应对各种数据库管理挑战。如果你遇到任何具体的问题,都可以进一步寻求帮助或查阅Oracle官方文档。我们继续深入探讨Oracle数据库的安装与配置,特别是在安装后的管理与维护方面。以下是一些更详细的管理和优化措施,以及一些常见的管理任务。

hummhumm的专栏 1938
上一篇: oracle学习笔记(13)——数据库的启动与关闭
下一篇: Struts2的自定义类型转换和简单的输入校验
hackerain
博客等级 码龄16年 753粉丝 220原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值