达内Oracle笔记.docx
- 文档编号:5614336
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:48
- 大小:3.28MB
达内Oracle笔记.docx
《达内Oracle笔记.docx》由会员分享,可在线阅读,更多相关《达内Oracle笔记.docx(48页珍藏版)》请在冰点文库上搜索。
达内Oracle笔记
达内Oracle
引言-->
1淘宝网,天涯网,校友网,都有各自的功能,那么当我们关闭系统的时候,下次访问这些网站时,为什么他们各自的信息还在?
2比如c/s软件比如网游qq他们是如何保存数据的
解决之道-->
file去保存文件会有缺点
1文件的安全性问题
2文件不利于查询对数据的管理
3文件不利于存放海量数据
4文件在程序中控制不方便
所谓安装数据库服务器,只是在机器装了一个数据库管理程序,这个管理程序可以管理多个数据库一般开发人员会针对一个应用创建一个数据库
为了保存应用中的实体数据,一般会在数据库创建多个表以保存程序中的实体数据
Oracle开发工具
Sqlplusw和sqlplus工具
Sqlplus是oracle自带的工具软件,主要用于执行sql语句,pl/sql块
如何使用:
1在开始-->程序-->oracle_oradb_home10g-->applicationdevelopment-->sql*plus
2在运行栏输入:
sqlplusw即可
在运行窗口输入sql*plus即可实际上调用了oracle安装目录下的/bin
/sqlplusw.exe
Pl/sqldeveloper属于第三方软件主要用于开发测试优化oraclepl/sql
的存储过程比如:
触发器,此软件oracle不带,需要单独安装
Oracle常用命令
连接命令
1conn
用法:
conn用户名/密码@网络服务器名[assysdba/sysoper]
当用特权用户身份连接时,必须带上assysdba或者是assysoper
该命令经常会切换当前用户使用(建议登陆时为普通用户)
2disc
说明:
这个命令是断开与当前数据库的连接但是不会退出sqlplus窗口
3pass
说明:
该命令用于修改用户的密码如果想要修改其他用户的密码,需要
Sys/system登陆(如果给自己修改密码则不需要带用户名如果给别人修改密码则需要带用户名)
4showuser
说明:
显示当前用户名
5exit
说明:
该命令会断开与数据库的连接,同时会退出sql*plus窗口
交互式命令
1&
说明:
可以替换变量,而该变量在执行时,需要用户输入
Sql->select*fromempwherejob='&job';
2edit
说明:
该命令可以编辑指定的sql脚本
案例->sql->editd:
\a,sql
3spool
说明:
该命令可以将sql*plus屏幕上的内容输出到指定文件中去
案例:
sql>spoold:
\b.sql并输入sql>spooloff
Spoolon;
Spoold:
\b.sql;
Spooloff;
控制输出格式
Linesize默认每行显示80个字符
可以在dos窗口自定义设置逐行显示的字符个数
Setlinesize
Pagesize默认每页显示多少行默认是14行
可以在dos窗口自定义设置每页显示的行数
Setpagesize
创建用户
在oracle中要创建一个新的用户使用createuser语句,一般是具有dba(数据库管理员)的权限才可以使用
基本语法:
createuser用户名identifiedby密码
修改密码
如果用户给自己修改密码可直接使用
Password用户名
如果给别人修改密码则需要具有dba的权限,或是拥有alteruser的系统权限,也可以用password用户名
Alteruser用户名identifiedby新密码
Oracle用户管理
创建用户(普通用户)->(需要具有DBA、system才能操作)
Createuserscottidentifiedbyni215429;
(oracle要求用户密码不能用数字开始)
因为所创建的用户为普通用户在oracle里面任何普通用户由sys/system用户创建,创建后没有任何权限,所以必须由sys/system用户分配相应的权限
创建用户(细节)
CreateuserMyOracleidentifiedbyni215429
Defaulttablespaceuserstemporarytablespacetempquota3monusers;
Identifiedby表明用户MyOracle将用数据库的验证方式
Defaulttablespaceusers用户的表空间在users上
Temporarytablespacetemp用户MyOracle的临时表建在temp空间上
Quota3monusers;表明用户MyOracle建立在对象(表,索引,视图,pl/sql块)最大只能时3m刚刚创建出来的用户是没有任何权限的因此,需要dba给用户授权
☎GrantresourcetoMyOracle;(如果你希望用户建表没有空间的限制)
☎GrantconnecttoMyOracle;(给用户连接oracle数据库的权限)
☎GrantdbatoMyOracle;(把dba权限赋予某一个用户)
☎GrantsessiontoMyOracle;
Oracle用户管理机制
㊣对象权限?
不同的对象具有不同的对象权限
对象的拥有者拥有所有权限
对象的拥有者可以向外分配权限
Oracle-->对象权限(表,视图,序列,过程)
修改(alter)★
删除(delete)★
执行(execute)★
索引(index)★
插入(insert)★
关联(reference)★
选择(select)★
更新(update)★
Grantobject_priv|All[(columns)]ONobject
TO{user|role|PUBLIC}[WITHGRANTOPTION];
All:
所有对象权限
PUBLIC:
授给所有的用户
WITHGRANTOPTION:
允许用户再次给其他用户授权
授权系统权限与授权对象权限的语法差别:
授予对象权限时需要对象权限的语法差异:
授予对象权限时需要制定关键字ON从而能够确定权限所应用的对象,对于表和视图可以制定特定的列来授权
对象授权实例-->
Showuser;
USERis"SCOTT";
GTANTSELECTONempTOrobinson;
Grantsucceeded.
GRANTUPDATE(sal,mgr)ONempTOrobinsonWITHGRANTOPTION;
Grantsucceeded;
新创建一个用户JOHN使用robinson账户授予更新scott.emp(sal,mgr)的权限
CREATEUSERjohnIDENTIFIEDBYjohn;
CONNROBINSON/LION;
GRANTUPDATE(sal,mgr)ONscott.empTOjohn;
(授予scott.emp(sal,mgr)更新权限)
UPDATEscottempSETsal=sal+100WHEREename='SCOTT';成功更新
---向数据库所有用户分配权限
Grantselectondepttopublic;
允许scott用户向其他普通用户授权
查询权限分配情况
数据字典视图描述
ROLE_SYS_PRIVS角色拥有的系统权限
ROLE_TAB_PRIVS角色拥有的对象权限
USER_TAB_PRIVS_MADE查询授出去的对象权限
USER_TAB_PRIVS_RECD用户拥有的对象权限
USER_COL_PRIVS_MADE用户分配出去的列的对象权限
USER_COL_PRIVS_RECD用户拥有的关于列的对象权限
USER_SYS_PRIVS用户拥有的系统权限
USER_TAB_PRIVS用户拥有的对象权限
USER_ROLE_PRIVS用户拥有的角色--查询已授予的对象权限(即某个用户哪些用户开放了对象权限)
SELECT*FROMuser_tab_privs_made;下面是scott用户开放的对象权限
GRANTEETABLE_NAMEGRANTORPRIVILEGEGRAHIE
PUBLICDEPTSCOTTSELECTNONOROBINSONEMPSCOTTSELECTNONO
总结
1使用createuser语句创建用户,alteruser语句修改用户
其语法大致相同dropuserusername[cascade]会删除用户所拥有的所有对象及其数据
2系统权限允许用户在数据库中执行特定的操作,如执行DDL语句
Withadminoption使得该用户具有将自身获得的权限授予其他用户的功能
但收回系统权限时不会从其他账户级连取消曾被授予相同的权限
3对象权限允许用户对数据库对象执行特定的操作,如执行DML语句
Withgrantoption使得该用户具有将自身获得的对象权限授予其他用户功能时,但收回对象权限时,会从其他账户级联取消曾被授予相同的权限
4系统权限与对象的权限时的语法差异为对象权限使用了ONobject_name子句
5PUBLIC为所有的用户
6ALL:
对象权限中的所有对象权限
系统权限?
?
用户与模式————>
用户:
对数据库的访问,需要以适当用户身份证验证,并具有相关权限来完成一系列动作
Sys用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象
SYSTEM用户:
缺省值始终创建,且未被锁定,可以访问数据库内的所有对象模式(schema):
是某个用户所有所以对象的集合,具有创建对象权限并创建了对象的用户称为拥有某个模式
注意-->创建数据库对象(视图,表等)的任一用户都拥有一个以用户名称开头的模式,且被视为模式用户.
☀总结
超过100多种的有效权限
Select*fromsystem_privilege_map查数据库管理员具有的最高权限
以完成管理任务
创建新用户
删除用户
删除表
备份表
常用系统权限
Createsession创建会话
Createsequence创建序列
Createsynonym创建同名对象
Createtable在当前用户模式下创建表
Createanytable在任何模式中创建表
Droptable在用户模式中删除表
Dropanytable在任一模式中删除表
Createprocedure创建存储过程
Executeanyprocedure执行任何模式的存储过程
Createuser创建用户
Dropuser删除用户
Createview创建视图
㈠Oralce权限设置①权限分类:
系统权限:
系统规定用户使用数据库的权限
(系统权限是对用户而言)
实体权限:
某种权限用户对其他用户的表或者视图的存取权限
㈡系统权限管理:
①系统权限分类:
DBA:
拥有全部特权,是系统最高权限
只有DBA才可以创建数据库结构
Resource:
拥有resource权限的用户只可以创建实体,不可以创建数据库结构
Connect:
拥有connect权限的用户只可以登录oracle不可以创建实体
不可创建数据库的结构
对于普通用户:
授予connect,resource权限对于DBA管理用户:
授予
Connectresourcedba权限
②系统权限授予命令
系统权限只能用于DBA用户授出
Sys,system(最开始只有两个用户)
授权命令grantconnectresource,dbato用户名1,用户名2
普通用户通过授权可以达到和sys用户相同的权限但是永远不可以达到sys一样的权限system用户的权限也可以被sys用户收回
例如:
Connectsystem/manager;
CreateuserMyOracleidentifiedbyni215429;
Grantconnect,resourcetoMyOracle;
查询用户所拥有的所有的权限
Select*fromdba_role_privs;
Select*fromdba_sys_privs;
Select*fromrole_sys_privs;
删除用户:
dropuser用户名
Cascade(加上cascade则将用户连同其创建的对象一起删除)
③系统权限传递
增加withadminoption选项则得到的权限可以传递
Grantconnect,resourcetoMyOraclewithadminoption;
可以传递所获得的权限
④系统权限的回收:
系统只能由DBA用户回收命令
Revokeconnect,resource,fromMyOracle;
说明:
⑴如果使用withadminoption为某个用户授予系统权限
那么对于被这个用户授予相同的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限
⑵系统权限无极联,即A授予B权限,B授予C权限如果A收回B的权限C的权限不受影响,系统权限可以跨用户回收,即A可以直接收回C用户的权限
㈢实体权限管理①实体权限分类:
Select,update,insert,alter,index,delete,all
(all包括所有权限)
Excute执行存储过程权限
User01:
Grantselect,update,insertonproducttouser02;
Garntallonproducttouser02;
User02:
Select*fromuser01.product;
此时user02查user_table,不包括user01.product这个表但如果
查all_tables则可以查到,因为他可以访问
⒉将表的操作权限授予全体用户:
Grantallonproducttopublic;
Public表示是所有用户这里的all权限不包括drop
实体权限数据字典
Selectowner,table_namefromall_tables;
用户可以查询的表
Selecttable_namefromuser_tables;
用户创建的表
Selectgrantor,table_schema,table_name,privilegefromall_tab_privs;
获取可以存取的表(被授权的)
Selectgrantee,owner,table_name,privilegefromuser_tab_privs;
授出权限的表(授出的权限)
⒊DBA用户可以操作全体用户的任意基表(无需授权,包括删除)
DBA用户:
createtableMyOracle.product(idnumeber(10),
Namevarchar2(20));
DroptableMyOracle.emp;
CreatetableMyOracle.employeeasselect*fromscott.emp;
⒋实体授权传递(withgrantoption)user01:
Revokeselect,updateonproductformuser02;
传递权限将全部丢失
说明:
如果取消某一个用户的对象权限,那么对于这个用户使用withgrantoption授予权限的用户来说,同样还会取消这些用户相同的权限,也就是说取消授权时级联的
Oracle用户管理㈠创建用户的profile文件
使用profile管理用户口令
概述:
profile是口令限制,资源限制的命令的集合,当建立数据时,oracle会自动生成建立名称为default的profile当建立用户没有指定profile选项,那oracle就会将default分配给用户
①账户锁定
概述:
指定该账户(用户)登陆时最多可以输入的密码次数,也可以指定用户锁定的时间(天)一般用DBA的身份去执行的命令
例如:
指定scott这个用户最多可以尝试3次登陆,锁定时间为2天,让我们看看怎么实现
创建profile文件
Createprofilelock_accountlimitfailed_login_attempts3password_locktime2;(创建配置文件)
AlteruserMyOracleprofilelock_account;(分配文件)
Createprofilestudentlimit(student为资源文件名FAILED_LOGIN_ATTEMPTS3)指定锁定用户的登录失败次数
用户解锁
Alteruser用户名account_unlock;
注意事项:
如果使用alteruser(scott)accoutlock;将scott用户锁定那么oracle作为DBA依然可以调用scott对象数据,但是作为scott用户的账户将被冻结,无法登陆。
也就是说account_lock命令只能将用户锁定,但是用户所创建的数据对象依然是对DBA开发。
终止口令
为了让用户定期修改密码,可以使用终止口令来完成,同样的命令也需要DBA身份来操作
例子:
给前面创建的用户MyOracle常见一个profile要求用户每隔10天,要修改自家的登录密码,宽限期为2天
Createprofilemyprofilelimitpassword_life_time10password_grace_time(延迟)2;
AlteruserMyOracleprofilemyprofile;
口令历史
概述:
如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一致时,就会提示用户重新输入密码
①建立profile
Createprofilepassword_histotylimitpassword_life_time10
Password_grace_time2password_reuse_time1.
Password_reuse_time指定口令可重用的时间即10天后就需要修改
②分配给某个用户
AlteruserMyOracleprofilemyprofile;
删除profile
当不需要某个profile文件时,可以将其删除
Dropprofileprofile文件名
如果把某个用户的所分配的profile文件删除了,那么该用户也不再受到口令的约束
Oracle登录认证方式
①windows操作系统认证
如果当前用户属于本地操作系统的ora_dba组,即可通过系统认证的方式
②oracle数据库验证(密码文件验证)
对于普通用户,oracle默认为数据库验证
对于特权用户(比如sys用户)oracle使用操作系统认证,如果验证不通过,再到数据库验证,通过配置sqlnet.ora文件,可以修改oracle登录认证方式
SQLNET.AUTHENTICATION_SERVICES=(NTS)是基于操作系统验证
SQLNET.AUTHENTICATION_SERVICES=(NONE)是基于oracle验证
SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)是两者共存
普通用户登录
Connscott/xx;
特权用户登录
①默认是以操作系统认证(即当前用户是在ora_dba组中,则可以通过)比如:
connsystem/orclassysdba
Bdms看到assysdba则认为是以特权用户登录,前面的用户名和密码缺省了
登陆后自动切换成sys用户。
等同于<=>connsys/orcl;
②如果当前用户不在ora_dba组,这时再使用数据库验证方式
如果说administrator不在ora_dba组中,用户还是想以原有用户的方式进行登录--->connsys/oraclassysdba;dbms将会自动把当前用户作为
DBA登录
丢失管理员密码怎么办?
?
?
恢复方法:
把原有密码文件删除,生成新的密码文件
①搜索名为PWD数据库实例名.ora文件
②删除该文件,建议提前备份
③生成新的密码文件,在dos控制台输入命令:
Orawdfile=原来的密码文件的绝对路径\密码文件名.orapassword=新密码entres=10允许有几个特权的用户
(密码文件名一定要和原来的密码文件名一样)
Oracle角色管理
㈠何为角色角色:
是一组权限的集合,将角色赋给某一个用户,这个用户就拥有了这个角色中的所有权限
㈡系统预定义角色
预定义角色是在数据库安装后,系统会自动创建一些常用的角色角色所包含的权限可以用以下语句查询
Select*fromrole_sys_privswhererole='角色名';
⑴connectresourcedba
这些预定义角色主要是为了向后兼容其主要用于数据库的管理,oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定义角色
将来的版本中这些角色可能不会作为预定义角色
⑵DELETE_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
SELECT_CATALOG_ROLE
这些角色主要用于访问数据字典视图和包
⑶EXP_FULL_DATABASE,IMP_FULL_DATABASE
这两个角色用于数据导入导出工具的使用
⑷AQ_USER_ROLE,
AQ_ADMINSTRATOR_ROLE
这两个角色主要用于oracle高级查询
①建立一个角色
Createrolerole1;
②授权给角色
Grantcreateanytable,createproceduretorole1;
③授予角色给用户
Grantrole1touser1;
④查看角色所包含的权限
Select*fromrole_sys_privs;
⑤创建带有口令的角色
Createrolerole1identifiedbypassword1;
⑥修改角色是否需要口令
Alterrolerole1notidentified;(不带口令)
Alterolerole1identifiedbypassword1;(带口令)
⑦设置当前的用户要生效的角色
(假如用户a有b1,b2,b3三个角
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 笔记