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.连接字符串:||