Oracle学习笔记
oracle认证:
oca(初级认证)oracle certified associate
ocp(中级认证)oracle certified professional
ocm(高级认证)oracle certified master
sqlplus常用命令:
conn[ect] 用户名/密码@网络服务名[as sysdba/sysoper]
连接数据库,特权用户身份连接需要sysdba或者sysoper
disc[onnect] 断开与当前数据库的连接
passw[ord] 修改密码,修改其他用户密码需要加上其他用户的用户名并且当前用户拥有相应dba权限
show user 显示当前用户名
exit 断开与当前数据库的连接并退出
交互命令:
&变量名 替代变量,变量执行时需要用户输入
edit 文件路径及名称 编辑指定的sql脚本
spool on
数据库语句
spool 文件路径及名称 将数据库语句结果输出到指定文件
spool off
显示设置环境变量:控制输出的格式
oracle除了sql语句外的其他sqlplus语句可以省略最后的“;”号
set linesize 字符数 设置每行显示字符的数量,默认20个字符
set pagesize 行数 设置每页显示行的数量,默认14行
create user 用户名 identified by 密码
[default tablespace 默认表空间名(设置用户默认属于表空间)
temporary tablespace 临时表空间名(设置用户临时属于表空间)
quota 大小 on 表空间名(设置用户在该表空间)]
拥有dba权限的用户创建新用户,密码不能用数字开头,创建的新用户无任何权限
alter user 用户名 identified by 新密码 修改其他用户的密码,当前用户拥有相应dba权限
grant权限/角色 to 用户名 拥有相应权限/角色的用户可以给其他用户授权相应权限/角色
oracle权限分为系统权限和对象权限
角色分为预定义角色和自定义角色,角色含有多种权限是权限的集合
revoke 权限/角色 from 用户名 拥有更高权限的用户回收权限/角色
drop user 用户名 [cascade] 删除用户,cascade表示删除用户把该用户下的所有数据一起删除
oracle新创建的用户在创建第一个数据对象时创建对应用户的方案(schema),用户创建的所有数据对象会放在用户对应的方案中
oracle访问其他方案中的数据对象:
grant 权限[all(所有权限)] on 数据对象 to 用户名 [with admin/grant option]登录要访问的方案对应的用户授权相应数据对象权限给相应用户,with admin/grant option表示用户可以将得到的系统权限/对象权限授权给其他用户
create profile 限制名 limit failed_login attempts/password_life_time 失败登录次数/密码使用天数 password_lock_time/password_grace_time 密码锁定天数/密码使用宽限天数
拥有dba权限用户创建用户登录失败相应次数后锁定相应天数/用户密码使用天数的限制
alter user 用户名 profile 限制名 拥有dba权限的用户给其他用户设置限制
alter user 用户名 account unlock 拥有dba权限的用户给其他用户解锁限制
drop profile profile文件名,删除profile文件限制
查看计算机信息:命令行窗口输入systeminfo
Windows命令行窗口启动oracle:
lsnrctl start 启动监听
oradim –startup –sid 数据库实例名 启动数据库实例
Linux命令启动oracle:
lsnrctl start 启动监听
sqlplus sys/change_on_install as sysdba 以sysdba身份登录,oracle10g以后版本可以使用(
sqlplus /nolog
conn sys/change_on_install as sysdba )
startup
oracle在windows系统下的登录认证方式:
操作系统认证:当前windows用户属于ora_dba组成员,可以使用conn 任意用户名/任意密码 as sysdba 验证登录oracle数据库
oracle数据库验证(密码文件验证):
普通用户默认使用数据库密码验证
特权用户(sys用户)默认使用操作系统认证,验证不通过使用数据库密码验证
配置sqlnet.ora文件可以修改oracle默认登录认证方式
SQLNET.AUTHENTICATION_SERVICES=(NTS/NONE/(NONE,NTS))基于操作系统/oracle数据库密码文件/两者共存验证
Linux下oracle登录认证方式
默认Linux下的oracle数据库基于操作系统oracle数据库密码文件共存验证,默认sqlnet.ora文件中没有SQLNET.AUTHENTICATION_SERVICES=(NTS/NONE/(NONE,NTS))参数,添加参数NONE与NTS都是基于oracle数据库密码验证
oracle管理员密码恢复:
删除oracle数据库安装目录下PWD数据库实例名.ora文件(建议删除前备份)
在命令行窗口输入orapwd file=PWD数据库实例名.ora文件全路径 password=新密码 entries=特权用户最大数量 运行后重启oracle数据库
oracle数据库数据类型:
char(字符量) 定长,最大2000字符,一个字符长度是一个字节
函数dump(列名) 显示该列的详细信息(数据类型,使用字符量长度)
varchar2(字符量) 变长,最大可以存放4000字符
nchar(字符量) 定长,编码方式为unicode,一个字符长度是两个字节,最大2000字符
nvarchar2(字符量) 变长,编码方式unicode,最大4000字符
clob(character large object) 字符型大对象 变长,最大8tb
blob(binary large object) 二进制文件 变长,最大8tb
number(p,s) 变长,整数小数,p为有效位数(1<=p<=38),s为小数位数(-38<=s<=127)
默认数据保存范围:-1.0*e^(-130)<=value<=1.0*e^126(-1.0*10^(-130)<=value<=1.0*10^126)
默认保存在机器中范围:1~22byte
date 包含年月日时分秒,默认格式“日-月-年”,合法日期范围公元前4712年1月1日到公元4712年12月31日
TIMESTAMP(n) n取值0~9表示秒数的小数位,n可选,n为0是与date等价,日期随数据更新而自动更新
alter table 表名 add/modify (列名 数据类型); 添加/修改表中列
alter table 表名 drop column 列名; 删除表中列
rename 表名 to 新表名; 修改表名称
drop table 表名; 删除表
desc 表名; 查看表结构
crud(create/retrieve/update/delete)增删改查
oracle数据库插入表数据时会尝试将输入的类型转换成相应字段类型
truncate table 表名; 删除表中所有记录,保留表结构,速度快,不记录日志
savepoint 时间点名 设置保存点
rollback to 时间点名 撤销操作到保存的时间点
select [distinct],表示查询结果是否显示重复数据
oracle的sql语句不区分大小写,内容参数区分大小写
nvl(列名,0)函数 0替换null返回
select 列名(单引号的字符串) || 列名(单引号的字符串) from 表名; 查询时将多列拼成一列返回
alter user 用户名 account lock; 锁定用户
like操作符属性:%表示匹配任意0到多个字符,_表示匹配任意单个字符
order by属性默认asc升序排列,desc降序排列
oracle支持使用列的别名进行排序
avg()函数会忽略值为null的记录,去平均值的时候不会计算值为null的记录
sql语句默认是从右向左执行
oracle高效率分页查询:
select 表的别名.字段 from (select 表别名.字段,rownum 行别名 from (select 字段 from 表名 where 条件) 表别名 where 条件(rownum<=结束行)) 表的别名 where 条件(行别名>=开始行);
oracle合并查询:
union 查询结果取并集
union all 查询结果不去除重复项取全集,不排序
intersect 查询结果取交集
minus 查询结果取差集,取在第一个数据集合中不在第二个数据集合中的数据
cube(字段,字段) 先分别对两个字段操作,再对两个字段的组合操作,返回所有结果
连接查询:
select 字段 from 表名 inner join 表的名 on 表名.字段=表的名.字段; 内连接查询
select 字段 from 表名 left join 表的名 on 表名.字段=表的名.字段;或者select 字段 from 表名,表的名 where 表名.字段=表的名.字段(+); 左外连接查询
select 字段 from 表名 right join 表的名 on 表名.字段=表的名.字段;或者select 字段 from 表名,表的名 where 表名.字段(+)=表的名.字段; 右外连接查询
select 字段 from 表名 full outer join 表的名 on 表名.字段=表的名.字段; 完全外连接查询
distinct 取唯一值
java连接oracle jdbc连接:
1.//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
2.//得到连接(数据库用户名和数据库登录密码根据数据库验证方式选择是否传入)localhost是本机IP地址,也可以是其他主机IP地址,1433是sql server的默认端口号
Connection connection=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:数据库实例名","数据库用户名","数据库登录密码");
sql语句分类:
dml语句 数据操作语句,需要手动提交,当退出控制台时oracle会自动提交
ddl语句 数据定义语言,oracle会自动提交
dql语句 数据查询语句
dtl语句 数据控制语言
oracle数据库看到的数据有可能和java程序看到的数据不一致,是因为事务控制原因,需要commit提交
to_date(日期字符串,格式) 将日期字符串转成指定格式
oracle行迁移
create table 表名 as 查询语句
使用子查询完成更新
update 表名 set 字段=查询语句 where 条件
oracle数据库强大体现在用户管理,pl/sql编程,函数等方面丰富全面
oracle函数分类:
单行函数:对每行操作每行对应结果
单行函数分类:
字符函数:
replace(字段,需要替换的字符串,替换成的字符串) 替换返回结果,不改变数据库原本数据
instr(需要搜索的字符串,匹配的字符串,搜索的开始位置默认为1,到第几个匹配的字符串结束) 返回匹配的字符串在搜索的字符串中指定的位置
ascii(‘字符’) 返回指定的字符对应的十进制数
chr(整数) 返回整数对应的字符
oracle数据库虚表dual
concat(‘字符串’,’字符串’) 连接两个字符串
initcap(字符串) 将字符串首字母大写,其他字母小写返回
length(字符串) 返回字符串长度,汉字字母都为一个字符长度
lower(字符串) 返回字符串所有字符小写
upper(字符串) 返回字符串所有字符大写
lpad(字符串,填充后总长度,填充的字符串) 字符串左边填充字符串达到指定长度
rpad(字符串,填充后总长度,填充的字符串) 字符串右边填充字符串达到指定长度
ltrim(字符串,删除字符串) 字符串左边删除指定字符串
rtrim(字符串,删除字符串) 字符串右边删除指定字符串
substr(字符串,开始位置,取值个数) 从开始位置取字符串指定个数字符串
soundex(字符串) 返回字符串的发音规则
trim(指定字符串 from 字符串) 从字符串左右两边中去除指定字符串
数字函数:
abs(数值) 返回数值的绝对值
acos(数值) 返回数值反余弦的值
asin(数值) 返回数值的反正弦的值
atan(数值) 返回数值的反正切的值
ceil(数值) 返回数值的向上取整,返回大于或者等于数值的最小整数
floor(数值) 返回数值的向下取整,返回小于或者等于数值的最小整数
cos(数值) 返回数值的余弦值
cosh(数值) 返回数值的双曲余弦值
exp(数值) 返回e的数值次方值
ln(数值) 返回数值的对数值
log(数值,指定数值) 返回以数值为底指定数为指数的对数
mod(被除数,除数) 返回取模的值即被除数除以除数的余数
power(底数,指数) 返回底数的指数次幂的值
round(数值) 返回数值四舍五入后的值
trunc(数值,指定数值) 返回截取数值到小数指定数值位数部分,默认指定数值为0(即截取数值整数部分)
sign(数值) 返回正数(1),0(0),负数(-1)
sin(数值) 返回数值的正弦值
sinh(数值) 返回数值的双曲正弦值
sqrt(数值) 返回数值的2次方根
tan(数值) 返回数值的正切值
tanh(数值) 返回数值的双曲正切值
日期函数:
add_months(日期,数值) 返回日期加减数值月份后的日期值
last_day(日期) 返回日期月份的最后一天的日期值
months_between(结束日期,开始日期) 返回开始日期到结束相差月份数
new_time(日期,当地时区,转换时区) 返回日期从当地时区转换成指定时区的日期
next_day(日期,’星期几’) 返回距离日期最近的下一个星期几的日期
sysdate 返回当前日期,默认不显示时间
转换函数:
chartorowid(字段) 将字符类型数据转换成rowid类型
rowidtochar(字段) 将rowid类型数据转换成字符类型
convert(字符串,字符集,指定字符集) 返回字符串从字符集转换到指定字符集
hextoraw(字段) 将十六进制转换成二进制
rowtohext(字段) 将二进制转换成十六进制
to_char(列名,’格式’) 列转换成指定格式
to_char(字符串/日期/数值,’格式’) 将数据转换成指定格式
时间格式:
yy:两位数字的年份
yyyy:四位数字的年份
mm:两位数字的月份
dd:两位数字的天
hh24:24小时制时间
hh12:12小时制时间
mi:分钟
ss:秒数
day:星期几
货币格式
9:显示数字,忽略0
0:显示数字,位数不足补0
.:在指定位置显示小数点.
,:在指定位置显示逗号,
$:在数值前加美元符号$
L:在数值前加本地货币符号
C:在数值前加国际货币符号
G:在指定位置显示分隔符
D:在指定位置显示小数点符号
to_multi_byte(字符串) 将字符串中单字节字符转换成多字节字符
to_number(字符串) 字符串转数值
bfilename(文件名,指定文件) 将指定文件以文件名存入数据库
decode(字段,[字段对应值,返回对应字符串结果]) 根据字段的对应值返回相应的字符串结果
conuert(字段,指定内容,源) 将字段或者源转换成指定内容
dump(字符串,指定格式,开始位置,长度) 将字符串从指定开始位置到指定长度的字符串转换成指定格式
empty_blob(),empty_clob() 对大文件类型初始化操作
greatest(数据表达式[,数据表达式]) 返回数据表达式中最大的值,字符串比较对应编码大小
least(数据表达式[,数据表达式]) 返回数据表达式中最小的值,字符串比较对应编码大小
uid 返回当前用户的唯一标识用户id号
user 返回当前用户名
多行函数:对多行操作返回一行对应结果
avg([distinct|all],字段) 返回平均值,distinct忽略字段内重复值,默认all不忽略
max([distinct|all],字段) 返回最大值,distinct忽略字段内重复值,all不忽略
min([distinct|all],字段) 返回最小值,distinct忽略字段内重复值,all不忽略
stddev([distinct|all],字段) 返回标准差,distinct忽略字段内重复值,all不忽略
variance([distinct|all],字段) 返回协方差,distinct忽略字段内重复值,all不忽略
系统函数:
userenv() 返回当前用户环境信息
sys_context(‘userenv’,指定信息) 返回用户指定信息
指定信息:
terminal:当前会话用户对应终端的唯一标识符
language:当前语言格式
db_name:当前数据库名称
nls_date_format:当前会话用户对应的日期格式
session_user:当前会话用户对应的数据库用户名
current_schema:当前会话对应的默认方案名
host:数据库所在主机名称
oracle会在用户操作数据时加锁,防止其他用户也同时操作同一数据
提交事务commit后oracle会确认事务的变化,结束事务,删除保存点,释放锁,其他会话可以查看事务(transaction)变化后的数据
savepoint 保存点名 设置保存点
rollback to 保存点名 事务回滚到保存点,保存点只能回滚一次
rollback 取消所有事务
脏读:一个事务读取到另一事务未提交的操作后的数据
不可重复读:一个事务在不同时间由于其他事务提交更新删除操作造成读取数据不一致
幻读:一个事务在不同时间由于其他事务提交插入操作造成读取数据不一致
oracle数据库实现了国际标准中的read committed和serializable两个事务隔离级别,还有另外一个事务隔离级别read only
set transaction isolation level read committed(默认)/serializable;设置事务隔离级别
set transaction read only;级别与serializable一样,但只允许读操作
事务隔离级别国际标准化组织定义的事务处理级别ANSI/ISO SQL92标准
alter session set isolation level read committed/serializable;设置会话的隔离级别
java中设置事务隔离级别:
Connection.setTransactionIsolation(Connection.隔离级别名)
约束:
not null 指定列的值不能是null
unique(字段) 指定列的值是唯一的,不能重复,可以为null
primary key(字段) 主键,唯一标识一条记录,不能为null,不能重复
foreign key(字段) references 表名(字段) 外键,关联另一张表的主键
check(列名约束条件) 指定列名需要符合约束条件
alter table 表名 modify 字段名 not null; 修改表名的字段名约束不能为null
alter table 表名 add constraint 约束名 约束种类(字段); 为表添加约束
alter table 表名 drop constraint 约束名 [cascade]; 删除约束,cascade表示级联删除,忽略表之间的关系直接删除
字段后定义的约束是列级约束,所有字段后定义的约束是表级约束
表级约束定义:constraint 约束名 约束类型(字段)
oracle数据库创建自增长序列
create sequence 序列名
start with 开始的序列号
increment by 每次自动增长长度
minvalue 最小值
maxvalue 最大值(nomaxvalue 没有最大值,最大能多大就多大)
cycle 循环,自增到最大值后再重新从最小值增加(nocycle 没有循环)
nocache 没有缓存(cache 数值:表示一次产生数值个缓存序列号,可以提高效率,但是可能出现跳号问题)
;
insert into 表名 values(序列名.nextval(主键字段或者unique字段)[,字段]); 使用序列
多个用户可以使用同一序列,但序列号是接着增加不是从最小值增加
select 用户名.序列名.currval(nextval) from dual; 查看当前序列值(自增后的序列值)
drop 数据对象类型 数据对象名; 删除数据对象
序列刚创建完成需要nextval操作(第一次为初始化)后currval(当前值)才存在
oracle索引:
单列索引:基于单个列创建的索引
复合索引:基于两列或者多列的索引
create index 索引名 on 表名(字段[,字段])
索引一般建立在数据量大的表经常查询使用的列上,一般索引层次不超过4层,一般不建立在逻辑型字段或者固定值字段上,建立索引后表的空间大小一般是原来表的1.2倍
select * from system_privilege_map order by name; 查看所有系统权限
grant 权限名称 to 用户名 [with admin option]; 授予用户权限,with admin option表示用户可以将获得的权限授予其他用户
revoke 权限名称 from 用户名; 回收系统权限,不会级联回收
select distinct privilege from dba_tab_privs; 查看所有对象权限
grant 权限名称 on 数据库对象 to 角色名/(用户名 [with grant option]); 授予用户权限,with grant option表示用户可以将获得的权限授予其他用户
revoke 权限名称 on 数据库对象 from 用户名[,角色名]; 回收对象权限,级联回收
select * from dba_roles; 查看所有角色
grant 角色名 to 用户名 [with admin option]; 授权用户担任角色,with admin option表示用户可以将担任的角色授予其他用户
select * from role_sys_privs where role='角色名(字母大写)'; 查看角色的系统权限
select * from dba_sys_privs where grantee='角色名(字母大写)'; 查看角色的对象权限
resource角色有个unlimited tablespace隐藏系统权限是查不到的,unlimited tablespace系统权限表示可以无限制使用表空间
select * from dba_role_privs where grantee='用户名(字母大写)'; 查看用户担任的角色
dba角色不能启动和关闭数据库
create role 角色名 (not identified)/(identified by 密码); 创建不需要/需要验证的角色
unlimited tablespace系统权限不能授予角色
drop role 角色名; 删除角色,级联删除
pl/sql(procedural language/sql)oracle在标准sql语言上的扩展
create [or replace] procedure 存储过程名(输入/输出参数名 in/out(默认输入参数) 输入/输出参数类型[,输入/输出参数名 in/out 输入/输出参数类型]) is/as
begin
执行语句;
end[/存储过程名];
/
创建存储过程,or replace表示当存储过程名重复替换原存储过程
exec/call 存储过程名(参数); 控制台执行存储过程
java程序执行存储过程:
CallableStatement=Connection.prepareCall("{控制台执行存储过程语句}");
CallableStatement.registerOutParameter(存储过程语句输出参数号, oracle.jdbc.OracleTypes.输出参数类型); 注册输出参数
CallableStatement.execute();
CallableStatement.getString(存储过程语句输出参数号); 取出输出参数的输出值
pl/sql编程规范:
单行注释—
多行注释/**/
定义变量v_作为前缀
定义常量c_作为前缀
定义游标_cursor作为后缀
定义例外e_作为前缀
块(block)是pl/sql的基本程序单元
pl/sql块由定义部分、执行部分、例外处理部分组成:
declare
/*定义部分,可选,定义常量、变量、游标、例外、复杂数据类型*/
begin
/*执行部分,必选,需要执行的pl/sql语句和sql语句*/
exception
/*例外部分,可选,处理运行的错误*/
end;
dbms_output是oracle提供的包,put_line是dbms_output包的一个存储过程
dbms_output. put_line(‘字符串’||变量名); 输出显示字符串与变量值的内容
set serveroutput on; 设置显示输出,默认情况下,oracle不显示输出
定义变量的格式是:变量名称 变量类型
异常的基本语法:
exception
when 异常名称 then
异常处理代码,可以是多行
[when 异常名称 then
异常处理代码,可以是多行]
end;
show error; 显示异常具体错误信息,默认不显示
函数基本语法:
create [or replace] function 函数名(参数名 参数类型[,参数名 参数类型])
return 数据类型 is
定义变量;
begin
执行语句;
return 数据类型;
end;
包的基本语法:
create [or replace] package 包名 is
procedure 过程名(变量名 变量类型);
function 函数名(变量名 变量类型) return 数据类型;
end;
包内的过程与函数只是声明并未实现,在包体中实现过程与函数
exec 包名.过程名/函数名(参数); 控制台调用包内的过程或者函数
exec 用户名.包名.过程名/函数名(参数); java程序调用包内的过程或者函数
包体的基本语法,包体与包是互相对应的
create [or replace] package body 包名 is
procedure 过程名(变量名 变量类型) is
begin
执行语句;
end;
function 函数名(变量名 变量类型) return 数据类型 is
定义变量
begin
执行语句;
return 数据类型;
end;
end;
pl/sql的数据类型分类:
标量类型(scalar):
变量和常量定义:
名称 [constant] 数据类型 [not null] [:=初始值/(pl/sql表达式)];
constant:指定是否为常量
not null:指定变量值能否为null
:= 表示赋值,= 表示判断是否相等
变量名 表名.列名%type; 定义%type类型变量,自适应变量
复合类型(composite):
pl/sql记录:
type 记录名 is record(
变量名 变量类型,
变量名 变量类型
);
记录名.变量名 调用记录名里的变量
pl/sql表:
type 记录表名 is table of 表名.列名%type
index by binary_integer;
记录名(数值) 下标为数值的元素
参照类型(reference):
type 游标名 is ref cursor;
变量名 游标名; 定义游标
open 游标变量名 for 查询语句; 打开游标
close游标变量名; 关闭游标
fetch 游标变量名 into 其他变量; 去除当前游标指向的行
游标变量名%notfound 判断游标是否指向记录末尾
lob(large object)
pl/sql条件控制语句:
判断语句:
if 条件表达式 then
执行语句;
[elsif 条件表达式 then
执行语句;]
[else
执行语句;]
end if;
case
when 条件 then 执行语句;
[when 条件 then 执行语句;]
end case;
循环语句:
loop
执行语句;
exit when 条件表达式;
end loop;
while 条件表达式 loop
执行语句;
end loop;
for 变量 in reverse 开始数值..结束数值 loop
执行语句;
end loop;
在定义部分定义变量只能赋初始值操作,不能进行变量赋值操作
输入变量不能进行赋值操作
pl/sql顺序控制语句:
<<标号名>> 创建标号
goto 标号名; 跳转到指定标号,继续执行语句
null; 空操作语句,无操作,增加代码可读性
存储过程返回多个值:
创建一个包,在包中定义游标
create [or replace] package 包名 is
type 游标名 is ref cursor;
end;
创建存储过程
create [or replace] procedure 过程名(输入/输出参数名 in/out(默认输入参数) 输入/输出参数类型,游标变量名 out 包名.游标名) is
begin
open 游标变量名 for 查询语句;
[close 游标变量名] 关闭游标,使用java程序时在java程序中关闭
end;
java中使用存储过程
CallableStatement.registerOutParameter(存储过程语句输出参数号, oracle.jdbc.OracleTypes.输出参数类型); 注册输出参数
CallableStatement.execute();
ResultSet=(ResultSet) callableStatement.getObject(存储过程语句输出参数号);取出输出参数的输出值
create [or replace] view 视图名 as 查询语句 [with read only]; 创建或修改视图,or replace表示替换,with read only表示不能通过视图对数据进行读以外的操作
drop view 视图名; 删除视图
视图不占用空间,不能添加索引
create [or replace] trigger 触发器名
before/after
insert/delete/update [of 列名] on 表名
[for each row]
[when 条件]
begin
执行语句
end;
创建触发器,for each row表示行级触发器,默认列级触发器,:old.列名表示修改修改前对应列的值,:new.列名表示修改修改后对应列的值
procedure raise_application_error(自定义错误编号(-2000到-20999,其他已经被oracle占用 ) in number,自定义错误提示信息 in varchar2(长度不超过2k,超过部分忽略)); 自定义错误,强制终止操作
ora_client_ip_address 返回客户端的IP地址
ora_database_name 返回数据库的名称
ora_login_user 返回登录的用户名
ora_sysevent 返回触发触发器的系统事件名
ora_des_encrypted_password 返回用户des(MD5)加密后的密码
系统触发器:
create [or replace] trigger 触发器名
before/after logon/logoff on database
begin
执行语句
end;
ddl触发器
create [or replace] trigger 触发器名
after ddl on 方案名.schema
begin
执行语句
end;
alter trigger 触发器名 disable/enable; 暂时禁止/激活触发器
alter table 表名disable/enable all triggers;暂时禁止/激活表的所有触发器
drop trigger 触发器名; 删除触发器
begin
exception
[when 异常情况名 then
异常处理代码;]
[when others then
异常处理代码;]
end;
捕获异常,others表示默认出列出的情况外剩下所有情况
show parameter; 显示初始化参数
修改初始化参数在安装目录oracle\admin\orcl\pfile\init.ora文件中修改
oracle数据库导出分类:导出表,导出方案,导出数据库
导出命令需要在系统命令行窗口执行,一般导出的备份文件后缀是.dmp
exp userid=用户名/密码@数据库实例名 tables=(表名[,表名]) file=备份路径; 导出数据库表
exp userid=用户名/密码@数据库实例名 tables=(方案名.表名[,方案名.表名]) file=备份路径; 导出其他方案的表,需要dba权限或者exp_full_database
exp userid=用户名/密码@数据库实例名 tables=(表名[,表名]) file=备份路径 rows=n; 导出数据库表的结构
exp userid=用户名/密码@数据库实例名 tables=(表名[,表名]) file=备份路径 direct=y; 直接导出方式,导出速度快但数据库字符集要与客户端字符集一致,否则出错
exp userid=用户名/密码@数据库实例名 owner=用户名 file=备份路径; 导出数据库方案
exp userid=用户名/密码@数据库实例名 owner=(用户名[,用户名]) file=备份路径; 导出其他方案,需要dba权限或者exp_full_database
userid:指定执行导出操作的用户名,口令,连接字符串
tables:指定执行导出操作的表
owner:指定执行导出操作的方案
full=y:指定执行导出操作的数据库
inctype:指定执行导出操作的增量类型
rows:指定执行导出操作是否导出表中数据
file:指定导出文件名
本文地址:https://blog.csdn.net/kaku812814843/article/details/85909946
下一篇: 历届试题 小朋友排队(树状数组求逆序对)