ORACLE 用户、Profile 及权限
用户管理 一、创建用户 :创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。 SQL Create User username Identified by password Default Tablespace tablespace Temporary Tablespace tablespace Profile profile Qu
用户管理
一、创建用户:创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。
SQL> Create User username
Identified by password
Default Tablespace tablespace
Temporary Tablespace tablespace
Profile profile
Quota integer/unlimited on tablespace;
例:
SQL> Create user acc01
identified by acc01 // 如果密码是数字,请用双引号括起来
default tablespace account
temporary tablespace temp
profile default
quota 50m on account;
SQL> grant connect, resource to acc01;
[*] 查询用户缺省表空间、临时表空间
SQL> select username, default_tablespace, temporary_tablespace from dba_users;
[*] 查询系统资源文件名:
SQL> select * from dba_profiles;
资源文件类似表,一旦创建就会保存在数据库中。
SQL> select username, profile, default_tablespace, temporary_tablespace from dba_users;
SQL> create profile common limit
failed_login_attempts 5
idle_time 5;
SQL> Alter user acc01 profile common;
二、修改用户:
SQL> Alter User 用户名
Identified 口令
Default Tablespace tablespace
Temporary Tablespace tablespace
Profile profile
Quota integer/unlimited on tablespace;
1、修改口令字:Alter user acc01 identified by "12345";
2、修改用户缺省表空间:Alter user acc01 default tablespace users;
3、修改用户临时表空间:Alter user acc01 temporary tablespace temp_data;
4、强制用户修改口令字:Alter user acc01 password expire;
5、将用户加锁:Alter user acc01 account lock; // 加锁
Alter user acc01 account unlock; // 解锁
三、删除用户
SQL>drop user 用户名; //用户没有建任何实体
SQL>drop user 用户名 CASCADE; // 将用户及其所建实体全部删除
*1. 当前正连接的用户不得删除。
四、监视用户:
1、查询用户会话信息:select username, sid, serial#, machine from v$session;
2、删除用户会话信息:Alter system kill session 'sid, serial#';
3、查询用户SQL语句: select user_name, sql_text from v$open_cursor;
用户Profile
一、Profile目的:
Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。具体管理内容有:CPU的时间、I/O的使用、IDLE TIME(空闲时间)、CONNECT TIME(连接时间)、并发会话数量、口令机制等。
二、条件:
创建profile必须要有CREATE PROFILE的系统权限。为用户指定资源限制,必须:
1.动态地使用alter system或使用初始化参数resource_limit使资源限制生效。该改变对密码资源无效,密码资源总是可用。
SQL> show parameter resource_limit
SQL> alter system set resource_limit=true;
2.使用create profile创建一个定义对数据库资源进行限制的profile。
3.使用create user 或alter user命令把profile分配给用户。
三、查看系统的默认PROFILE
1、通过dba_profiles视图查看一下系统中默认都有哪些PROFILE
数据库创建以后,系统中只会存在一个名为DEFAULT的默认PROFILE,在用户创建之后,如果不做特殊指定,每个用户的PROFILE都会默认的使用个默认的PROFILE。
sys@oral> select distinct profile from dba_profiles;
2、全面查看这个 PROFILE 包含哪些限制定义
sys@oral> col PROFILE for a12
sys@oral> col RESOURCE_NAME for a25
sys@oral> col LIMIT for a15
sys@oral> select * from dba_profiles order by 1,2;
3、结论:DEFAULT PROFILE 只对密码的错误尝试次数做了限制(最多可以错误输错10次密码)。如想改变限制条件,有两种方法:第一种方法是对默认的PROFILE做个性化调整;第二种方法是重新定制一个新的PROFILE。
四、创建 profile 的语法如下:
CREATE PROFILE profile
LIMIT { resource_parameters 对资源的限制
| password_parameters 对密码的限制
}... ;
{{ SESSIONS_PER_USER 每个用户名并行会话数
| CPU_PER_SESSION 每会话可用的CPU时间,单位0.01秒
| CPU_PER_CALL 一次SQL调用(解析、执行和获取)允许的CPU时间
| CONNECT_TIME 会话连接时间(分钟)
| IDLE_TIME 会话空闲时间(分钟),超出将断开
| LOGICAL_READS_PER_SESSION
| LOGICAL_READS_PER_CALL
| COMPOSITE_LIMIT “组合打法”
}
{ integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA
{ integer [ K | M ] | UNLIMITED | DEFAULT }
}
{{ FAILED_LOGIN_ATTEMPTS 被锁定前的试错次数
| PASSWORD_LIFE_TIME 密码使用天数,默认180天
| PASSWORD_REUSE_TIME 密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)
| PASSWORD_REUSE_MAX 密码最大改变次数(结合PASSWORD_REUSE_TIME)
| PASSWORD_LOCK_TIME 超过试错次数后,被锁定的天数,默认1天
| PASSWORD_GRACE_TIME 密码过期后还可使用原密码的天数
}
{ expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION
{ function | NULL | DEFAULT }
}
五、部分解释:
profile:配置文件的名称。Oracle数据库以以下方式强迫资源限制:
1.如果用户超过了connect_time或idle_time的会话资源限制,数据库就回滚当前事务,并结束会话。用户再次执行命令,数据库则返回一个错误
2.如果用户试图执行超过其他的会话资源限制的操作,数据库放弃操作,回滚当前事务并立即返回错误。用户之后可以提交或回滚当前事务,必须结束会话。
提示:可以将一条分成多个段,如1小时(1/24天)来限制时间,可以为用户指定资源限制,但是数据库只有在参数生效后才会执行限制。
Unlimited:分配该profile的用户对资源使用无限制,当使用密码参数时,unlimited意味着没有对参数加限制。
Default:指定为default意味着忽略对profile中的一些资源限制,Default profile初始定义对资源不限制,可以通过alter profile命令来改变。
Resource_parameter部分
Logical_reads_per_session:每会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。
Logical_read_per_call:一次执行SQL(解析、执行和提取)调用允许读的数据块最大数目。
Private_sga:指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位。(该限制只在使用共享服务器结构时才有效,会话在SGA中的私有空间包括私有的SQL和PL/SQL,但不包括共享的SQL和PL/SQL)。
Composite_limit:指定一个会话的总的资源消耗,以service units单位表示。Oracle数据库以有利的方式计算cpu_per_session,connect_time,logical_reads_per_session和private-sga总的service units
Password_parameter部分:
Password_life_time:指定同一密码所允许使用的天数。如果同时指定了password_grace_time参数,如果在grace period内没有改变密码,则密码会失效,连接数据库被拒绝。如果没有设置password_grace_time参数,默认值unlimited将引发一个数据库警告,但是允许用户继续连接。
Password_reuse_time和password_reuse_max:这两个参数必须互相关联设置,password_reuse_time指定了密码不能重用前的天数,而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参数都必须被设置为整数。
1.如果为这两个参数指定了整数,则用户不能重用密码直到密码被改变了password_reuse_max指定的次数以后在password_reuse_time指定的时间内。
如:password_reuse_time=30,password_reuse_max=10,用户可以在30天以后重用该密码,要求密码必须被改变超过10次。
2.如果指定了其中的一个为整数,而另一个为unlimited,则用户永远不能重用一个密码。
3.如果指定了其中的一个为default,Oracle数据库使用定义在profile中的默认值,默认情况下,所有的参数在profile中都被设置为unlimited,如果没有改变profile默认值,数据库对该值总是默认为unlimited。
4.如果两个参数都设置为unlimited,则数据库忽略他们。
Password_grace_time:指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。
Password_verify_function:该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据库提供了一个默认的脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。如果为密码参数指定表达式,则该表达式可以是任意格式,除了数据库标量子查询。
六、尝试创建一个混合型的PROFILE(包含资源限制和密码限制):
sys@oral> CREATE PROFILE sec_profile LIMIT
2 SESSIONS_PER_USER UNLIMITED
3 CPU_PER_SESSION UNLIMITED
4 CPU_PER_CALL 6000
5 CONNECT_TIME 60
6 LOGICAL_READS_PER_SESSION DEFAULT
7 LOGICAL_READS_PER_CALL 6000
8 COMPOSITE_LIMIT 6000000
9 PRIVATE_SGA 66K
10 FAILED_LOGIN_ATTEMPTS 6
11 PASSWORD_LIFE_TIME 60
12 PASSWORD_REUSE_TIME 60
13 PASSWORD_REUSE_MAX 5
14 PASSWORD_LOCK_TIME 1/24
15 PASSWORD_GRACE_TIME 10
16 PASSWORD_VERIFY_FUNCTION verify_function
17 /
CREATE PROFILE sec_profile LIMIT
*
ERROR at line 1:
ORA-07443: function VERIFY_FUNCTION not found
出错原因:VERIFY_FUNCTION函数不存在,要事先创建该函数,VERIFY_FUNCTION函数是通过utlpwdmg.sql脚本创建的,该脚本所在的目录是$ORACLE_HOME/rdbms/admin/
使用utlpwdmg.sql脚本创建 VERIFY_FUNCTION 密码复杂度校验函数:
sys@oral> @?/rdbms/admin/utlpwdmg.sql
Function created.
Profile altered.
脚本中,verify_function 函数的密码复杂性校验规则如下:
1)密码最小长度为4个字符
2)密码不能和用户名相同
3)密码要包含至少一个字符、一个数字和一个特殊字符
4)密码需要至少有3个字符与之前的口令不相同
实验中使用了几乎所有参数,惟一没有包含的是IDLE_TIME,它将继承 DEFALT 中的定义
对上面创建的PROFILE逐行做一下诠释,以便加深理解:
第 2行:对用户的并发连接会话数不做限制
第 3行:对于连接到用户的每一个session的CPU时间的使用不做限制
第 4行:一次调用消耗的CPU时间不能超过60秒(不超过一分钟)
第 5行:连接到用户的每次会话时间不能超过60分钟(不超过一个小时)
第 6行:一次会话使用的物理读与逻辑读数据块总量与DEFAULT profile中定义保持一致
第 7行:一次调用使用的物理读与逻辑读数据块总量不超过6000个数据块
第 8行:一次会话总的资源消耗不超过6000000个服务单元(service units)
第 9行:一次会话在SGA中不能分配超过66K的空间
第10行:帐户被锁定之前允许6次的错误尝试
第11行:超过此生命周期后密码作废
第12行:密码重用时间60天
第13行:密码重用之前密码需要完成5次改变
第14行:超过错误尝试次数后,用户将被锁定1小时
第15行:当密码过期之后原密码还可以使用10天
第16行:使用密码复杂度校验函数verify_function对密码做检查
第12行和第13行,两个策略搭配使用后,只有完成 5 次密码修改且已超过60天后,之前的密码才能被再次使用
删除 PROFILE 很简单,语法:DROP PROFILE profile [CASCADE];
如果创建的PROFILE已经授权给了具体的用户,则需用CASCADE选项级联的收回相应限制,在收回这些限制信息后将以系统默认的PROFILE对该用户进行限制。
七、PROFILE 何时生效
PROFILE中有关密码的限制永远生效,不受限制。
PROFILE中有关资源的限制与resource_limit参数的设置有关,为TRUE时生效,为FALSE时(默认)无效。
八、将配置文件分配给用户:
SQL> alter user dinya profile sec_profile;
SQL> alter user dinya profile default;
SQL> select USERNAME,PROFILE from dba_users where USERNAME = 'dinya';
九、11g oracle 用户密码过期问题
11g之前版本,默认用户没有密码过期限制,在Oracle 11g 中默认 profile 密码过期时间是180天
检查:select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
过期的密码可用 alter user userXXX identified by xxx; 解决,可修改为和以前一样
如果想设置密码不过期,可用管理员登陆,执行下面命令:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
其他相关参数:
select * from dba_profiles where profile='DEFAULT' and RESOURCE_NAME like 'PASSWORD%';
用户权限
一、权限分类:
系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
二、系统权限管理:
1、系统权限分类:
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
2、系统权限授权命令:
[系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)]
授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...;
[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]
例:
SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect, resource to user50;
查询用户拥有哪里权限:
SQL> select * from dba_role_privs; --where grantee='SYS';
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs; --where role='DBA';
删除用户:SQL> drop user 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除
3、系统权限传递:
增加WITH ADMIN OPTION选项,则得到的权限可以传递。
SQL> grant connect, resorce to user50 with admin option; //可以传递所获权限。
4、系统权限回收:系统权限只能由DBA用户回收
命令:SQL> Revoke connect, resource from user50;
系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;
系统权限可以跨用户回收,即A可以直接收回C用户的权限。
三、实体权限管理
1、实体权限分类:select, update, insert, alter, index, delete, all //all包括所有权限
execute //执行存储过程权限
user01:
SQL> grant select, update, insert on product to user02;
SQL> grant all on product to user02;
user02:
SQL> select * from user01.product;
// 此时user02查user_tables,不包括user01.product这个表,但如果查all_tables则可以查到,因为他可以访问。
3. 将表的操作权限授予全体用户:
SQL> grant all on product to public; // public表示是所有的用户,这里的all权限不包括drop。
[实体权限数据字典]:
SQL> select owner, table_name from all_tables; // 用户可以查询的表
SQL> select table_name from user_tables; // 用户创建的表
SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 获权可以存取的表(被授权的)
SQL> select grantee, owner, table_name, privilege from user_tab_privs; // 授出权限的表(授出的权限)
4. DBA用户可以操作全体用户的任意基表(无需授权,包括删除):
DBA用户:
SQL> Create table stud02.product(
id number(10),
name varchar2(20));
SQL> drop table stud02.emp;
SQL> create table stud02.employee
as
select * from scott.emp;
5. 实体权限传递(with grant option):
user01:
SQL> grant select, update on product to user02 with grant option; // user02得到权限,并可以传递。
6. 实体权限回收:
user01:
SQL>Revoke select, update on product from user02; //传递的权限将全部丢失。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Il permet aux utilisateurs d'effectuer des opérations plus approfondies et de personnaliser le système. L'autorisation root est une autorisation d'administrateur dans le système Android. L'obtention des privilèges root nécessite généralement une série d'étapes fastidieuses, qui peuvent toutefois ne pas être très conviviales pour les utilisateurs ordinaires. En activant les autorisations root en un seul clic, cet article présentera une méthode simple et efficace pour aider les utilisateurs à obtenir facilement les autorisations système. Comprenez l'importance et les risques des autorisations root et disposez d'une plus grande liberté. Les autorisations root permettent aux utilisateurs de contrôler entièrement le système de téléphonie mobile. Renforcez les contrôles de sécurité, personnalisez les thèmes et les utilisateurs peuvent supprimer les applications préinstallées. Par exemple, la suppression accidentelle de fichiers système provoquant des pannes du système, une utilisation excessive des privilèges root et l'installation par inadvertance de logiciels malveillants sont également risquées. Avant d'utiliser les privilèges root

La durée de conservation des journaux de la base de données Oracle dépend du type de journal et de la configuration, notamment : Redo logs : déterminé par la taille maximale configurée avec le paramètre "LOG_ARCHIVE_DEST". Redo logs archivés : Déterminé par la taille maximale configurée par le paramètre "DB_RECOVERY_FILE_DEST_SIZE". Redo logs en ligne : non archivés, perdus au redémarrage de la base de données et la durée de conservation est cohérente avec la durée d'exécution de l'instance. Journal d'audit : Configuré par le paramètre "AUDIT_TRAIL", conservé 30 jours par défaut.

La fonction dans Oracle pour calculer le nombre de jours entre deux dates est DATEDIFF(). L'utilisation spécifique est la suivante : Spécifiez l'unité d'intervalle de temps : intervalle (tel que jour, mois, année) Spécifiez deux valeurs de date : date1 et date2DATEDIFF(interval, date1, date2) Renvoie la différence en jours

La séquence de démarrage de la base de données Oracle est la suivante : 1. Vérifiez les conditions préalables ; 2. Démarrez l'écouteur ; 3. Démarrez l'instance de base de données ; 4. Attendez que la base de données s'ouvre ; 6. Vérifiez l'état de la base de données ; . Activez le service (si nécessaire) ; 8. Testez la connexion.

Le type de données INTERVAL dans Oracle est utilisé pour représenter les intervalles de temps. La syntaxe est INTERVAL <precision> <unit> Vous pouvez utiliser des opérations d'addition, de soustraction, de multiplication et de division pour utiliser INTERVAL, ce qui convient aux scénarios tels que le stockage de données temporelles et. calculer les différences de dates.

La quantité de mémoire requise par Oracle dépend de la taille de la base de données, du niveau d'activité et du niveau de performances requis : pour le stockage des tampons de données, des tampons d'index, l'exécution d'instructions SQL et la gestion du cache du dictionnaire de données. Le montant exact dépend de la taille de la base de données, du niveau d'activité et du niveau de performances requis. Les meilleures pratiques incluent la définition de la taille SGA appropriée, le dimensionnement des composants SGA, l'utilisation d'AMM et la surveillance de l'utilisation de la mémoire.

Pour trouver le nombre d'occurrences d'un caractère dans Oracle, effectuez les étapes suivantes : Obtenez la longueur totale d'une chaîne ; Obtenez la longueur de la sous-chaîne dans laquelle un caractère apparaît. Comptez le nombre d'occurrences d'un caractère en soustrayant la longueur de la sous-chaîne ; de la longueur totale.

Exigences de configuration matérielle du serveur de base de données Oracle : Processeur : multicœur, avec une fréquence principale d'au moins 2,5 GHz Pour les grandes bases de données, 32 cœurs ou plus sont recommandés. Mémoire : au moins 8 Go pour les petites bases de données, 16 à 64 Go pour les tailles moyennes, jusqu'à 512 Go ou plus pour les grandes bases de données ou les charges de travail lourdes. Stockage : disques SSD ou NVMe, matrices RAID pour la redondance et les performances. Réseau : réseau haut débit (10GbE ou supérieur), carte réseau dédiée, réseau à faible latence. Autres : alimentation stable, composants redondants, système d'exploitation et logiciels compatibles, dissipation thermique et système de refroidissement.
