目录:4.数据库管理,配置和维护
5.数据库存储管理
6.数据库安全管理
7.数据库对象管理
8.备份和护肤
9.PL/SQL语言基础
10.游标,存储过程和触发器
1.cmd里:set oracle_unqname=orcl #设置当前服务
emctl start dbconsole #启动服务(orm)
2.DDL(date manage language 数据操纵语言):drop,alter
DML(date define language 数据定义语言) :insert,update,delete, 需要commit;
3.数据库逻辑结构:
六层:数据库》方案,表空间》表,索引,视图等逻辑对象》段(数据段,索引段,临时段,回滚段等)》区间》数据块
区间:是Oracle分配磁盘空间的最小单位
数据块:是oracle管理数据库存储空间的最小数据存储单位
4.数据库管理,配置和维护:
select name from v$database #查看登录的数据库名
disconn #断开连接
(1)创建/删除数据库“
create database 数据库名 [user 用户名 identified by 密码][][]...
删除数据库之前,需要用户以sysdba或sysoper身份登陆,并将数据库以mount模式启动:
connect sys/syspwd as sysdba; #使用sys用户登录,syspwd为密码
shutdown immediate; #立即关闭数据库
startuo mount; #启动并加载数据库
alter system enable restricted session; #将数据库切换至restricted状态
drop database; #删除数据库
select name from v$database; #查看当前使用的数据库名
(2)维护数据库实例”
数据库实例支持四种状态:打开(open),关闭(close),已装载(mount),已启动(nomount)
启动/关闭数据库实例:
startup mount #启动数据库实例,装载数据库
startup PFILE=初始化参数文件 # 以指定的初始化参数文件来启动实例
startup nomount #启动数据库实例,但不装载数据库
startup force #强制启动数据库实例
startup restrict #以限制模式启动数据库实例
**此时只有拥有restrict session权限的用户才可以访问数据库
startup recover #在数据库启动时开始介质恢复
关闭:
shutdown normal #正常关闭数据库实例 》等待
shutdown transactional #以事务处理方式关闭数据库实例 》拒新,处理正在进行的
shutdown immediate #立即关闭数据库实例 》拒新,未提交的回滚
shutdown abort #中止关闭数据库实例 》立即中止
alter database mount/open #改变启动模式 mount/open模式
5.数据库存储管理:
例1:创建本地管理表空间orcltbs01,数据文件为‘d:\app\orcltbs01.dbf,,大小为50mb,指定本地管理表空间:
create tablespace orcltbs01 datafile 'd:\app\orcltbs01.dbf' size 50M extent management autoallocate;
例2:创建表空间orcltbs02,指定其最小区间为128kb:
create tablespace orcltbs01 datafile 'd:\app\orcltbs01.dbf' size 30M extent management local uniform size 128K;
例3:创建本地管理表空间bigtbs,数据文件为‘d:\app\bigtbs.dbf’,大小为10GB:
create bigfile tablespace bigtbs datafile 'd:\app\bigtbs.dbf' size 10G;
重命名表空间:
alter database 原表空间名 rename to 新表空间名
本地管理表空间中增加数据文件:
alter tablespace 表空间名 add datafile 增加的数据文件 size 数据文件大小;
修改大文件表空间的属性:
alter tablespace 表空间名 resize 表空间大小;
向临时表空间中添加临时文件:
alter tablespace 临时表空间名 add tempfile 临时文件名 size 临时文件初始大小;
设置表空间状态:
alter tablespace 表空间名 online/offline; #设置为联机/脱机状态
设置为只读表空间:
alter tablespace 表空间名 read only;
删除表空间:
drop tablespace 表空间名
同时删除其中的段:
。。。 including contents;
同时删除其中的数据文件:
。。。including datafiles;
查看回滚段信息:
col 回滚段名 for A20
select segment_name 回滚段名,tablespace_name 所在表空间,bytes 大小 from dba_segments where segment_type='rollback'; #第一句用于指定‘回滚段名’的列宽为20
将回滚段管理方式设置为手动管理:
alter system set UNDO_MANAGEMENT=MANUAL SCOPE=SPFILE;
创建回滚段:
create [public] rollback segment 回滚段名称 tablespace 所属表空间名称 storage 存储选项
修改回滚段的属性:
alter rollback segment 回滚段名称 回滚段状态(online/offline)
手动收缩回滚段:
alter rollback segment 回滚段名称 shrink to 回滚段的初始大小
删除回滚段:
alter rollback segment 回滚段名 offline;
6.数据库安全管理:
(1)sqlplus / as SYSDBA;
sys @ orcl; #用户名@数据库名
(2)要使用密码文件认证方式,必须拥有密码文件。默认的密码文件为¥ORACLE_HOME\database\PWD数据库实例名.ora,例如D;\app\Administrator\product\11.2.0\dbhome_1\database\PWDorcl.ora
可以用ORAPWD命令创建密码文件:
ORAPWD FILE =密码文件的文件名 PASSWORD=SYS用户的密码 ENTRIES=SYSDBA和SYSOPER用户的最大数量 force=<y/n>
**force指定是否覆盖已有的密码文件
(3)忘记DBA口令的解决办法:
sqlplus "/as sysdba"; #以sysdba身份登录到sqlplus
alter user sys identified by newpwd;
commit;
conn sys /as sysdba;
(4)创建用户:
create user 用户名 identified by 口令 default tablespace 默认表空间 temporary tablespace 临时表空间;
(5)修改用户:
修改密码:
alter user 用户名 identified by 新密码;
设置用户userman的密码立即过期,在下一次登陆时必须修改密码:
alter user userman password expire;
锁定/解锁用户userman ,使其(无法)登录到数据库:
alter user userman account lock/unlock;
(6)为用户分配表空间配额:
alter user <用户名> QUOTA <表空间配额大小 >·on <表空间>;
(7)删除用户:
drop user 用户名;
(8)创建角色:
create role 角色名 identified by 验证口令;
select * from DBA_ROLES; #查看所有角色信息
(9)指定用户的角色:
grant/revoke 角色名 to 用户名 #指定/撤销
(10)修改角色:
alter role myrole not identified; #取消角色myrole的密码验证
(11)删除角色:“
drop role myrole; #删除角色myrole
(12)权限管理:
grant 系统权限 to 用户名或角色名
授予数据对象权限:
grant 数据对象权限 on 数据对象 to 用户名或角色名
撤销用户的角色和权限:
revoke 权限 from 用户名或角色名
7.数据库对象管理
(1)刚创建的用户没有任何权限,不能管理数据库对象,需要以sysdba身份执行下面的语句,对userman用户进行授权:
· grant connect,resource to userman;
grant select any dictionary to userman;
excute MGMT_USER.MAKE_EM_USER('USERMAN');
**grant SELECT_CATALOG_ROLE to userman;
(2)oracle数据类型包括:字符型,数值型,日期/时间型,大对象(LOB)型和Rowid型等
(3)创建表:
create table [方案名.] 表名
(列名1 数据类型,
列名2 数据类型,
。。。
);
(4)修改表:
1.添加列:
alter table users add (tmp number(5,2)); #在表users中添加一个列tmp,数据类型为number(5,2)
2.修改列名:
alter table users rename column tmp to tmpcol_1; #将表users中tmp列改名为tmpcol_1
3.删除列: