Oracle命令行中启动服务创建用户,权限,密码丢失

1.windows下在启动服务

启动监听:lsnrctl start

启动服务:oradim -startup -sid orcl

2.以sys身份进入 sqlplus /[@orcl] as sysdba 通过此方式就是以sys登陆

3.show users

显示为"sys"

4.创建用户与授权

SQL> create user lisi identified by lisi;

用户已创建。

SQL> grant create session to lisi;

授权成功。

SQL> grant unlimited tablespace to lisi;

授权成功。

SQL> grant create table to lisi;

授权成功。

用户就可以进行最基本的操作了,用户有创建表的权限,这表就是用户自己的,用户有对这个表操作的所有权限。

create user lisi identified by lisi default tablespace 表空间名 tempory tablespace [临时] quota 50M on 空间;

SQL> create user lisi
2 identified by lisi
3 default tablespace Users
4 temporary tablespace temp
5 Quota 50M on users
6 Quota unlimited on Temp
7 /
create user lisi
*
第 1 行出现错误:
ORA-30041: 无法在表空间上授予限额

临时表空间不能使用限额。临时表空间主要支持排序。
SQL> create user lisi
2 identified by lisi
3 default tablespace Users
4 temporary tablespace temp
5 Quota 50M on users
6 /

用户已创建。

修改用户alter user lisi identified by lisi default tablespace ...

5.撤销权限

SQL> revoke create table from lisi;

撤销成功。

6.当前用户当前有哪些权限,Oracle有一些视图(数据字典)对外提供信息。

SQL> select * from user_sys_privs;(还有user_tab_privs等)

7.对象权限

一个用户访问另一个用户创建的表

select * from wangwu.mytable权限不够

sys有权限访问所有用户的表。

在wangwu下:

SQL> grant select on mytable to lisi;

授权成功。

则lisi可以查询。

SQL> grant insert on mytable to lisi;

授权成功。

所有对表的权限都赋予lisi:

SQL> grant all on mytable to lisi;

授权成功。

 对象权限可以细化到列

grant insert(id) on mytable to lisi;

8.public

所有用户都拥有此权限

grant create any table to public;

9.权限传递

系统权限:grant alter any table to lisi with admin option; 

此时lisi就能把这个得到的权限授予给其他用户了。

对象权限:grant select on A to lisi with grant option;

有drop any table和update any table的权限,但没有drop table等权限。

create any table的权限可以为其他用户创建表

10.角色管理

create role myrole;

grant create session to myrole;

grant create table to myrole;

grant myrole to zhangsan;

drop role myrole;

grant unlimited tablespace to myrole;是不行的,该权限太大,不能分配给角色。

有一些已经定义好的角色,如dba,resource

SQL> grant resource to lisi;

授权成功。

SQL> revoke resource from lisi;

撤销成功。

11.密码丢了怎么办?

普通用户,可以用sys登入修改密码

alter user lisi identified by 123;

12.数据库的三种验证机制:

操作系统、密码文件、数据库验证。

sys可以在数据库还没有启动的时候就能连接进入。sys的权限大到可以启动和关闭数据库。

所以sys用户是使用前两种验证。

拥有SYSOPER和SYSDBA这两个权限的用户是采用操作系统验证和文件系统验证的。

原因是:

启动Oracle时至少启动两个服务,监听服务和Oracle实例的服务。

监听程序为数据库实例服务,这是在服务器端。

当客户连接时,先连接监听,监听把请求发给数据库,验证通过后,不需要通过监听,客户端直接和数据库通信。

在启动Oracle服务的过程中,Unix/Linux上应该先启动监听,任何用户都可以。紧接着是不能随便启动实例的,因为这需要一定权限。

在linux下,输入如下命令

lsnrctl start

sqlplus sys/[密码] as sysdba; 此命令发给监听器,它看到是sysdba,就使用操作系统验证和密码文件验证后,若密码正确,然后使用start命令启动数据库。

如果sys密码丢了,可以删除密码文件,让它重新生成一个。

原有文件在F:\oracle\Tazi\product\11.2.0\dbhome_1\database下的Pwdorcl.ora删除前先备份,删除后

orapwd回车后看帮助

orapwd file=F:\oracle\Tazi\product\11.2.0\dbhome_1\database\Pwdorcl.ora password=123456 entries=10

然后ok.

去掉oracle的操作系统验证的方法,在

F:\oracle\Tazi\product\11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora中加入

SQLNET.AUTHENTICATION_SERVICES=(NONE)就好了。

查看当前拥有sysdba这类最高权限的用户

select * from v$pwfile_users;

13.删除用户

drop user lisi cascade;若lisi下没有什么资源,可以不用cascade

14.其它命令

start 脚本或者@ 脚本

修改本用户密码passw 退出exit

15.使用Profile管理用户

默认情况下创建用户后Oracle把名为default的profile分配给用户.

profile是一种规则,是口令限制,资源限制的集合。

先创建profile文件:create profile [名称] limit failed_login_attempts [次数] password_lock_time [天数]

修改用户的profile:alter user lisi profile [profile名称]

SQL> create profile lock_account limit failed_login_attempts 3 password_lock_tim
e 2;

配置文件已创建

SQL> alter user lisi profile lock_account;

用户已更改。

SQL> conn lisi/dd@orcl
ERROR:
ORA-01017: invalid username/password; logon denied


SQL> conn lisi/dde@orcl
ERROR:
ORA-01017: invalid username/password; logon denied


SQL> conn lisi/ee@orcl
ERROR:
ORA-01017: invalid username/password; logon denied


SQL> conn lisi/er@orcl
ERROR:
ORA-28000: the account is locked


SQL> conn lisi/lisi@orcl
ERROR:
ORA-28000: the account is locked

16.解锁

alter user lisi account unlock;

17.终止口令和口令历史

create profile myprofile limit password_life_time [到第几天开始警告 ]password_grace_time [宽限天数] password_reuse_time [几天后口令可以重用];

18.删除profile

SQL> drop profile myprofile cascade;

配置文件已删除。

19.插入日期型数据

SQL> alter session set nls_date_format='yyyy-mm';

会话已更改。

SQL> insert into stu(sno,name,birthday) values(123,'tazi','2000-05');

已创建 1 行。

SQL> commit;

提交完成。

SQL>

20.插入空值

insert into stu(sno,name,birthday) values(124,'tazi2',null);

21.保存点与回退

SQL> savepoint a;

保存点已创建。

SQL> rollback to a;

回退已完成。

22.空值在算术表达式中的处理

select sal*12+nvl(comm,0) "年工资",ename,sal,comm from emp;

23.连接字符串:||




原文地址:https://www.cnblogs.com/tazi/p/2306605.html