Oracle基础命令操作总结
1.1 重启数据库
1.1.1 启动数据库
su -root 切换到oracle安装用户下,我的是root
source .bash_profile 运行oracle的环境变量。以便输入相关命令
sqlplus / as sysdba; 是以DBA身份连接到oracle
startup 启动数据库
1.1.2 关闭数据库
1、shutdown immediate; 立即关闭
2、shutdown 正常关闭
3、shutdown transactional 关闭事务
4、shutdown abort 强行关闭
1.1.3 启动oracle数据库的三种形式
startup nomount (nomount模式)启动实例不加载数据库
startup mount (mount模式) 启动实例加载数据库但不打开数据库
startup (open模式) 启动实例加载数据库并打开数据库
1.2 修改oracle数据库密码
1、sqlplus / nolog;
2、connect / as sysdba;
3、select username from dba_users; 查看用户列表
4、alter user apps(用户) identified by 123321(密码) 修改用户密码
5、ALTER USER 用户名 ACCOUNT UNLOCK;
6、commit;
注意:
注意:如果没有5,6步的话,你的操作就会导致该用户名被锁定。
报错ORA-28000: the account is locked
如果只有第5步,没有第6步,在你退出SQLPlUS之前好用,
退出之后就会同样报错ORA-28000: the account is locked
只有确认提交之后才能生效。
1.3 创建oracle数据库
1.3.1 创建两个数据库的文件(monitor.dbf和monitor_temp.dbf)
CREATE TABLESPACE monitor LOGGING DATAFILE 'E:\app\owner\oradata\orcl\monitor.dbf'
SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 500M EXTENT MANAGEMENT LOCAL;
create temporary tablespace monitor_temp tempfile 'E:\app\owner\oradata\orcl\monitor_temp.dbf'
size 100m autoextend on next 32m maxsize 500m extent management local;
1.3.2 创建用户与上面创建的文件形成映射关系(用户、密码都是monitor)
CREATE USER monitor IDENTIFIED BY monitor DEFAULT TABLESPACE monitor TEMPORARY TABLESPACE monitor_temp;
1.3.3 添加权限
grant connect,resource,dba to monitor;
grant create session to monitor;
1.3.4 系统权限分类
DBA:拥有全部的特权,是系统最高权限,只有DBA才可以创建数据库结构。
resource:resource权限的用户可以创建实体,不能创建数据库结构。
connect:connect权限的用户只能登录数据库,不能创建实体,也不能创建数据库结构。
DBA管理用户:授予connect resource dba权限
普通用户:授予connect resource
1.3.5 删除数据库
DROP TABLESPACE monitor INCLUDING CONTENTS AND DATAFILES;
1.3.6 删除用户
drop user monitor cascade;
1.4 登录oracle数据库用户
1.4.1 运行SQLplus工具
C:\Users\wd-pc>sqlplus
1.4.2 直接进入SQLplus命令提示符
C:\Users\wd-pc>sqlplus / nolog
1.4.3 以OS身份连接
C:\Users\wd-pc>sqlplus / as sysdba
或者 connect / as sysdba
1.4.4 普通用户登录
C:\Users\wd-pc>sqlplus scott/123321
或者SQL> connect scott/123321
或者SQL>connect scott/123321@servername
1.4.5 以管理员登录
C:\Users\wd-pc>sqlplus sys/123321 as sysdba
或者SQL>connect sys/123321 as sysdba
1.4.6 切换用户
SQL>connect hr/1234456
1.4.7 退出
exit
1.5 查看当前用户拥有的角色和权限
selcet * from user_role_privs;
select * from session_privs;
1.5.1 当前登录的用户
select user from dual;
或者 select * from user_users;
或者 show user;
1.6 查看oracle数据库的字符集
SQL> select usrenv('language') from dual;
1.6.1 修改字符集
在oracle 8之前,可以用直接修改数据字典表props$来改变数据库的字符集。但oracle8之后,至少有三张系统表记录了数据库字符集的信息,只改props$表并不完全,可能引起严重的后果。正确的修改方法如下:
$sqlplus /nolog
SQL>conn / as sysdba; #若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP
注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的字符集必须是ORACLE支持,不然不能startup) 按上面的做法就可以,但是可能会出现‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists’ 这样的提示信息 要解决这个问题有两种方法,一个是,利用INTERNAL_USE 关键字修改区域设置, 还有一个是利用re-create,但是re-create有点复杂,所以请用internal_use。
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT EXCLUSIVE;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL>SHUTDOWN immediate;
SQL>startup;
如果按上面的做法做,National charset的区域设置就没有问题
第2章 基本的SQL语言
2.1 DDL数据定义语言
2.1.1 create创建
1、创建表
CREATE TABLE <table_name>(
column1 DATATYPE [NOT NULL] [PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...
[constraint <约束名> 约束类型 (要约束的字段)
... ] )
说明:
DATATYPE --是Oracle的数据类型,可以查看附录。
NUT NULL --可不可以允许资料有空的(尚未有资料填入)。
PRIMARY KEY --是本表的主键。
constraint --是对表里的字段添加约束.(约束类型有
Check,Unique,Primary key,not null,Foreign key)。
示例:
create table stu(
s_id number(8) PRIMARY KEY,
s_name varchar2(20) not null,
s_sex varchar2(8),
clsid number(8),
constraint u_1 unique(s_name),
constraint c_1 check (s_sex in ('MALE','FEMALE'))
);
2、 复制表
CREATE TABLE <table_name> as <SELECT 语句>
(需注意的是复制表不能复制表的约束);
示例:
create table test as select * from emp;
如果只复制表的结构不复制表的数据则:
create table test as select * from emp where 1=2;
3、 创建索引
CREATE [UNIQUE] INDEX <index_name> ON <table_name>(字段 [ASC|DESC]);
UNIQUE --确保所有的索引列中的值都是可以区分的。
[ASC|DESC] --在列上按指定排序创建索引。
(创建索引的准则:
1.如果表里有几百行记录则可以对其创建索引(表里的记录行数越多索引的效果就越明显)。
2.不要试图对表创建两个或三个以上的索引。
3.为频繁使用的行创建索引。
)
示例
create index i_1 on emp(empno asc);
4、创建同义词
CREATE SYNONYM <synonym_name> for
<tablename/viewname>
同义词即是给表或视图取一个别名。
示例:
create synonym mm(旧) for emp(新);
2.1.2 alter修改
1.向表中添加新字段
ALTER TABLE <table_name> ADD (字段1 类型 [NOT NULL],
字段2 类型 [NOT NULL]
.... );
2.修改表中字段
ALTER TABLE <table_name> modify(字段1 类型,
字段2 类型
.... );
3 .删除表中字段
ALTER TABLE <table_name> drop(字段1,
字段2
.... );
4 .修改表的名称
RENAME <table_name> to <new table_name>;
5 .对已经存在的表添加约束
ALTER TABLE <table_name> ADD CONSTRAINT <constraint_name> 约束类型 (针对的字段名);
示例:
Alter table emp add constraint S_F Foreign key (deptno) references dept(deptno);
6 .对表里的约束禁用;
ALTER TABLE <table_name> DISABLE CONSTRAINT <constraint_name>;
7 .对表里的约束重新启用;
ALTER TABLE <table_name> ENABLE CONSTRAINT <constraint_name>;
8 .删除表中约束
ALTER TABLE <table_name> DROP CONSTRAINT <constraint_name>;
示例:
ALTER TABLE emp drop CONSTRAINT <Primary key>;
2.1.3 drop删除
1、删除表
DROP TABLE <table_name>;
示例
drop table emp;
2、删除索引
DROP INDEX <index_name>;
示例
drop index i_1;
4、 删除同义词
DROP SYNONYM <synonym_name>;
示例
drop synonym mm;
2.2 DML数据操纵语言
2.2.1
插入记录
INSERT INTO table_name (column1,column2,...)
values ( value1,value2, ...);
示例
insert into emp (empno,ename) values(9500,'AA');
把 一个表中的数据插入另一个表中
INSERT INTO <table_name> <SELECT 语句>
示例
create table a as select * from emp where 1=2;
insert into a select * from emp where sal>2000;
2.2.2
查询记录
2.2.3
一般查询
SELECT [DISTINCT] <column1 [as
new name] ,columns2,...>
FROM <table1>
[WHERE <条件>]
[GROUP BY <column_list>]
[HAVING <条件>]
[ORDER BY <column_list> [ASC|DESC]]
DISTINCT --表示隐藏重复的行
WHERE --按照一定的条件查找记录
GROUP BY --分组查找(需要汇总时使用)
HAVING --分组的条件
ORDER BY --对查询结果排序
要显示全部的列可以用*表示
示例:
select * from emp;
WHERE 语句的运算符
where <条件1>AND<条件2> --两个条件都满足
示例:
select * from emp where deptno=10 and sal>1000;
where <条件1>OR<条件2> --两个条件中有一个满足即可
示例:
select * from emp where deptno=10 OR sal>2000;
where NOT <条件> --不满足条件的
示例:
select * from emp where not deptno=10;
where IN(条件列表) --所有满足在条件列表中的记录
示例:
select * from emp where empno in(7788,7369,7499);
where BETWEEN .. AND .. --按范围查找
示例:
select * from emp where sal between 1000 and 3000;
where 字段 LIKE --主要用与字符类型的字段
示例1:
select * from emp where ename like '_C%';
--查询姓名中第二个字母是'C'的人
'-' 表示任意字符;
'%' 表示多字符的序列;
2.2.4 where 字段 IS [NOT] NULL --查找该字段是[不是]空的记录
汇总数据是用的函数
SUM --求和
示例:
select deptno,sum(sal) as sumsal from emp GROUP BY
deptno;
AVG --求平均值
MAX --求最大值
MIN --求最小值
COUNT --求个数
2.2.5
子查询
SELECT <字段列表> from <table_name>
where 字段 运算符(<SELECT 语句>);
示例:
select * from emp where sal=(select max(sal) from
emp);
2.2.6
运算符
Any
示例:
select * from emp where sal>ANY(select sal from
emp where deptno=30) and deptno<>30;
--找出比deptno=30的员工最低工资高的其他部门的员工
ALL
select * from emp where sal>ALL(select sal from
emp where deptno=30) and deptno<>30;
--找出比deptno=30的员工最高工资高的其他部门的员工
2.2.7
连接查询
SELECT
<字段列表> from
<table1,table2> WHERE table1.字段[(+)]=table2.字段[(+)]
示例
select empno,ename,dname from emp,dept where
emp.deptno=dept.deptno;
2.2.8
查询指定行数的数据
SELECT
<字段列表> from
<table_name> WHERE ROWNUM<行数;
示例:
select * from emp where rownum<=10;--查询前10行记录
注意ROWNUM只能为1 因此不能写
select * from emp where rownum between 20 and 30;
2.2.9
要查第几行的数据可以使用以下方法:
select * from emp where rownum<=3 and empno not
in (select empno from emp where rownum<=3);
结果可以返回整个数据的3-6行;
不过这种方法的性能不高;如果有别的好方法请告诉我。
2.2.10 update更新数据
UPDATE table_name set column1=new
value,column2=new value,...
WHERE <条件>
示例
update emp set sal=1000,empno=8888 where
ename='SCOTT'
2.2.11
delete删除数据
DELETE FROM <table_name>
WHERE <条件>
示例
delete from emp where empno='7788'
2.3
DCL数据控制语言
2.3.1
.授权
GRANT <权限列表> to <user_name>;
2.3.2
收回权限
REVOKE <权限列表> from <user_name>
Oracle 的权限列表
connect 连接
resource 资源
unlimited tablespace 无限表空间
dba 管理员
session 会话
2.4
TCL事务控制语言
1.COMMIT 提交;
2.ROLLBACK [TO savepoint] 回滚;
3.SAVEPOINT <savepoint> 保存位置。
第3章 ORACLE其他对象
3.1
视图
3.1.1
创建视图
CREATE [OR REPLACE] VIEW <view_name>
AS
<SELECT 语句>;
OR REPLACE --表示替换以有的视图
3.1.2 删除视图
DROP VIEW <view_name>
3.2
序列
3.2.1
创建序列
CREATE SEQUENCE <sequencen_name>
INCREMENT BY n
START WITH n
[MAXVALUE n][MINVALUE n]
[CYCLE|NOCYCLE]
[CACHE n|NOCACHE];
INCREMENT BY n --表示序列每次增长的幅度;默认值为1.
START WITH n --表示序列开始时的序列号。默认值为1.
MAXVALUE n --表示序列可以生成的最大值(升序).
MINVALUE n --表示序列可以生成的最小值(降序).
CYCLE --表示序列到达最大值后,在重新开始生成序列.默认值为 NOCYCLE。
CACHE --允许更快的生成序列.
示例:
create sequence se_1
increment by 1
start with 100
maxvalue 999999
cycle;
3.2.2
修改序列
ALTER SEQUENCE <sequencen_name>
INCREMENT BY n
START WITH n
[MAXVALUE n][MINVALUE n]
[CYCLE|NOCYCLE]
[CACHE n|NOCACHE];
3.2.3 删除序列
DROP SEQUENCE <sequence_name>
3.2.4 使用序列
1.CURRVAL
返回序列的当前值.
注意在刚建立序列后,序列的CURRVAL值为NULL,所以不能直接使用。
可以先初始化序列:
方法:select <sequence_name>.nextval from dual;
示例:select se_1.nextval from dual;
之后就可以使用CURRVAL属性了
2.NEXTVAL
返回序列下一个值;
示例:
begin
for i in 1..5
loop
insert into emp(empno) values(se_1.nextval);
end loop;
end;
查看序列的当前值
select <sequence_name>.currval from dual;
示例:select se_1.currval from dual;
3.3
用户
3.3.1
创建用户
CREATE USER <user_name> [profile
"DEFAULT"]
identified by "<password>" [default tablespace
"USERS"]
3.3.2 删除用户
DROP USER <user_name> CASCADE
3.4
角色
3.4.1
创建角色
CREATE ROLE <role_name>
identified by "<password>"
3.4.2 删除角色
DROP ROLE <role_name>
第4章 附录
4.1
oracle的数据类型
数据类型 |
描述 |
VARCHAR2(size) |
可变长度的字符串,其最大长度为size个字节;size的最大值是4000,而最小值是1;你必须指定一个VARCHAR2的size; |
NVARCHAR2(size) |
可变长度的字符串,依据所选的国家字符集,其最大长度为size个字符或字节;size的最大值取决于储存每个字符所需的字节数,其上限为4000;你必须指定一个NVARCHAR2的size; |
NUMBER(p,s) |
精度为p并且数值范围为s的数值;精度p的范围从1到38;数值范围s的范围是从-84到127; |
LONG |
可变长度的字符数据,其长度可达2G个字节; |
DATE |
有效日期范围从公元前4712年1月1日到公元后4712年12月31日 |
RAW(size) |
长度为size字节的原始二进制数据,size的最大值为2000字节;你必须为RAW指定一个size; |
LONG RAW |
可变长度的原始二进制数据,其最长可达2G字节; |
CHAR(size) |
固定长度的字符数据,其长度为size个字节;size的最大值是2000字节,而最小值和默认值是1; |
NCHAR(size) |
也是固定长度。根据Unicode标准定义 |
CLOB |
一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节 |
NCLOB |
一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节;储存国家字符集 |
BLOB |
一个二进制大型对象;最大4G字节 |
BFILE |
包含一个大型二进制文件的定位器,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库服务器上的外部LOB;最大大小为4G字节. |
4.2
函数
4.2.1
字符函数
名称 |
描述 |
CONCAT(字符串1,字符串2) |
将字符串1和字符串2连接成一个新的字符串 |
LPAD(字段,总的大小,添充字符) |
左填充即向右对齐 |
RPAD(字段,总的大小,添充字符) |
右填充即向左对齐 |
LOWER(字符串) |
将字符串全部变成小写; |
UPPER(字符串) |
将字符串全部变成大写; |
INITCAP(字符串) |
将字符串变成第一个字母大写,其余都变成小写; |
LENGTH(字符串) |
求出字符串的长度; |
SUBSTR(字符串,开始位置,长度) |
从字符串中取子串; |
INSTR(字符串,字符) |
查看字符是否在字符串中存在;不存在返回0;存在则返回字符所在的的位置;如果有两个以上的字符则返回第一个的位置. |
TRIM(字符 FROM 字符串) |
去掉字符串首尾的字符; |
TO_CHAR() |
将不是其他类型转成字符类型; |
REPLACE(字符串,字符串1,字符串2) |
将字符串中的字符1替换成字符2; |
TRANSLATE(字符串,字符串1,字符串2) |
替换多的字符; |
ASCII(char) |
求字符的ascii码 |
NLSSORT(字符串) |
对字符串排序. |
4.2.2
数学函数
名称 |
描述 |
ABS(数字) |
一个数的绝对值 |
CEIL(数字) |
向上取整;不论小数后的书为多少都要向前进位; |
FLOOR(数字) |
向下取整;不论小数后的书为多少都删除;| |
MOD(被除数,除数) |
取余数; |
ROUND(数字,从第几为开始取) |
四舍五入; |
SIGN(数字) |
判断是正数还是负数;正数返回1,负数返回-1,0返回0; |
SQRT(数字) |
对数字开方; |
POWER(m,n) |
求m的n次方; |
TRUNC(数字,从第几位开始) |
切数字; |
GREATEST(数字列表) |
找出数字列表中最大的数; |
LEAST(数字列表) |
找出数字列表中最小的数; |
SIN(n) |
求n的正旋 |
COS(n) |
求n的余旋 |
TAN(n) |
求n的正切 |
ACos(n) |
求n的反正切 |
ATAN(n) |
求n的反正切 |
exp(n) |
求n的指数 |
LN(n) |
求n的自然对数,n必须大于0 |
LOG(m,n) |
求n以m为底的对数,m和n为正数,且m不能为0 |
4.2.3
日期函数
名称 |
描述 |
ADD_MONTHS(日期,数字) |
在以有的日期上加一定的月份; |
LAST_DAY(日期) |
求出该日期的最后一天. |
MONTHS_BETWEEN(日期1,日期2) |
求出两个月之间的天树(注意返回的天数为小数); |
NEW_TIME(时间,时区,'gmt') |
按照时区设定时间. |
NEXT_DAY(d,char) |
返回d指定的日期之后并满足char指定条件的第一个日期 |
4.2.4
其他函数
名称 |
描述 |
VSIZE(类型) |
求出数据类型的大小; |
NVL(字符串,替换字符) |
如果字符串为空则替换,否则不替换 |
4.3
常用命令
命令 |
描述 |
DESC 表名 |
查看表的信息. |
SET SERVEROUT [ON|OFF] |
设置系统输出的状态. |
SET PAGESIZE |
设置浏览中没页的大小 |
SET LINESIZE |
设置浏览中每行的长度 |
SET AUTOPRINT |
设置是否自动打印全局变量的值 |
SELECT SYSDATE |
查看当前系统时间 |
ALTER SESSION |
设置当前会话的日期格式 |
SELECT * FROM |
查看当前用户下的所有表 |
SHOW USER |
显示当前用户 |
HELP TOPIC |
显示有那些命令 |
SAVE |
将buf中的内容保存成一个文件 |
RUN |
执行已经保存的文件;也可以写成@<file_name> |
GET |
显示文件中的内容 |
LIST |
显示buf中的内容 |
ED |
用记事本打开buf,可以进行修改 |
DEL 行数 |
删除buf中的单行 |
DEL 开始行 结束行 |
删除buf中的多行 |
INPUT 字符串 |
向buf中插入一行 |
APPEND 字符串 |
将字符串追加到当前行 |
C/以前的字符串/替换的字符串 |
修改buf中当前行的内容 |
CONNECT |
连接 |
DISCONNECT |
断开连接 |
QUIT |
退出sql*plus |
EXP |
导出数据库(可以在DOS键入exp help=y 可以看到详细说明) |
IMP |
导入数据库(可以在DOS键入imp help=y 可以看到详细说明) |
可以通过help <命令>获得命令的帮助
4.4
异常类型
异常 |
描述 |
CURSOR_ALREADY_OPEN |
试图"OPEN"一个已经打开的游标 |
DUP_VAL_ON_INDEX |
试图向有"UNIQUE"中插入重复的值 |
INVALID_CURSOR |
试图对以关闭的游标进行操作 |
INVALID_NUMBER |
在SQL语句中将字符转换成数字失败 |
LOGIN_DENIED |
使用无效用户登陆 |
NO_DATA_FOUND |
没有找到数据时 |
NOT_LOGIN_ON |
没有登陆Oracle就发出命令时 |
PROGRAM_ERROR |
PL/SQL存在诸如某个函数没有"RETURN"语句等内部问题 |
STORAGE_ERROR |
PL/SQL耗尽内存或内存严重不足 |
TIMEOUT_ON_RESOURCE |
Oracle等待资源期间发生超时 |
TOO_MANY_ROWS |
"SELECT INTO"返回多行时 |
VALUE_ERROR |
当出现赋值错误 |
ZERO_DIVIDE |
除数为零 |
第5章 oracle数据库的备份与恢复
5.1 恢复oracle中update或delete的数据
5.1.1 如果在很短的时间内,可以查询数据库中的versions,记录短时间内的employee表中的update、delete、insert的操作。(时间多长取决于数据库中的相关设置参数)
select versions_xid, versions_operation,
versions_starttime, versions_endtime from employee versions between timestamp
minvalue and maxvalue;
5.1.2 找到update的语句,查出对应的version_xid的值,然后查询flashback_transaction_query闪回事务查询表。
例如:versions_xid的值为'000A0019000214C3'
select
* from flashback_transaction_query where xid ='000A0019000214C3'
5.1.3 想取消update操作,在数据库中执行查询出来的UNDO-SQL字段中的SQL语句即可时间条件的查询,如下:
select *
from flashback_transaction_query where
table_name like 'emp%'
where commit_timestamp< to_date ('2009-2-16 10:30:00','yyyy-mm-dd
hh24:mi:ss')
5.1.4 如果第二步没有查询出来,可以先查看目前的employee表的数据量是多少,以便和没有update之前的对比一下。
select count(*) from employee
5.1.5 可以产生一个表来备份update之前的闪回的数据(取决于数据库的闪回时间,updo的大小)
create table employee_copy
as
select * from employee as of timestamp to_timestamp('2009-02-16
10:00:00','yyyy-mm-dd hh24:mi:ss')
5.1.6 查看在update之前的employee表 在update语句中的条件是否一样
(比如原来更新语句中的条件是e.block='0300100011000000240',更新了10条),现在查出来也是10条数据,可以把下面10条数据的id查找出来,然后在更新回去。
select
* from employee_copy e
where e.block='0300100011000000240';
5.1.7 查看employee的id
select count(*) from employee where report_id in (
'8a8881a71c9e53f5011ca74049d7001b', '5F3BA0EA14890024E0437F0000010024',
'5A6F193A11A820D8E0430A08012120D8', '56F9DFC764E0101AE0430A3E3D64101A',
'8a8881a71cd6ea28011cdf6c372d00a3', '8a8881a71df71207011dfc3071730276',
'8a8881a71df71207011dfc38012b0277', '8a8881a71df71207011dfc3f2e50027b',
'8a8881a71df71207011dfc0d5ef9022b', '5DA7E2D9FA2AF06AE0430A080121F06A')
5.1.8 更新回来原来的数据
update employee set block='0300100011000000240'
where report_id in
( '8a8881a71c9e53f5011ca74049d7001b',
'5F3BA0EA14890024E0437F0000010024',
'5A6F193A11A820D8E0430A08012120D8',
'56F9DFC764E0101AE0430A3E3D64101A',
'8a8881a71cd6ea28011cdf6c372d00a3',
'8a8881a71df71207011dfc3071730276',
'8a8881a71df71207011dfc38012b0277',
'8a8881a71df71207011dfc3f2e50027b',
'8a8881a71df71207011dfc0d5ef9022b',
'5DA7E2D9FA2AF06AE0430A080121F06A')
5.1.9 最后把备份的表删掉
drop table employee_employee_copy
5.2 oracle数据库备份
Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。
https://www.cnblogs.com/ray-bk/p/7977873.html
5.2.1
导出/导入(Export/Import)
利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
1、 简单导出数据(Export)和导入数据(Import)
Oracle支持三种方式类型的输出:
(1)、表方式(T方式),将指定表的数据导出。
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
(3)、全库方式(Full方式),瘵数据库中的所有对象导出。
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。
5.2.2 增量导出/导入
增量导出/导入
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。
1、增量导出包括三种类型:
(1)、“完全”增量导出(Complete)
即备份三个数据库,比如:
exp system/manager inctype=complete
file=040731.dmp
(2)、“增量型”增量导出
备份上一次备份后改变的数据,比如:
exp system/manager inctype=incremental
file=040731.dmp
(3)、“累积型”增量导出
累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如:
exp system/manager inctype=cumulative
file=040731.dmp
如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:
2、增量导入三种类型
第一步:用命令CREATE
DATABASE重新生成数据库结构;
第二步:创建一个足够大的附加回滚。
第三步:完全增量导入A:
imp system/manager inctype=RESTORE FULL=y FILE=A
第四步:累计增量导入E:
imp system/manager inctype=RESTORE FULL=Y FILE=E
第五步:最近增量导入F:
imp system/manager inctype=RESTORE FULL=Y FILE=F
5.2.3 oracle数据库的冷备
1、oracle数据库冷备的优点:
是非常快速的备份方法(只需拷文件)
容易归档(简单拷贝即可)
容易恢复到某个时间点上(只需将文件再拷贝回去)
能与归档方法相结合,做数据库“最佳状态”的恢复。
低度维护,高度安全。
冷备案例:
(1) 关闭数据库
sqlplus /nolog
sql>connect /as sysdba
sql>shutdown normal;
(2) 用拷贝命令备份全部的数据文件、重做日志文件、控制文件、初始化参数文件
sql>cp
(3) 重启Oracle数据库
sql>startup
5.2.4 oracle数据库的热备
1、oracle数据库热备的优点:
可在表空间或数据库文件级备份,备份的时间短。
2.
备份时数据库仍可使用。
3.
可达到秒级恢复(恢复到某一时间点上)。
4.
可对几乎所有数据库实体做恢复 。
5.
恢复是快速的,在大多数情况下可以再数据库仍工作时恢复。
热备份的不足是:
1.
不能出错,否则后果严重。
2.
若热备份不成功,所得结果不可用于时间点的恢复。
3.
因难于维护,所以要特别仔细小心,不允许“以失败告终”。
Oracle基础命令操作总结的更多相关文章
- Zookeeper系列一:Zookeeper基础命令操作
有些事不是努力就可以改变的,五十块的人民币设计的再好看,也没有一百块的招人喜欢. 前言 由于公司年底要更换办公地点,所以最近投了一下简历,发现面试官现在很喜欢问dubbo.zookeeper和高并发等 ...
- Zookeeper基础命令操作
转载链接:https://blog.csdn.net/dandandeshangni/article/details/80558383 安装参考链接https://blog.csdn.net/qiun ...
- 认识Influxdb时序数据库及Influxdb基础命令操作
认识Influxdb时序数据库及Influxdb基础命令操作 一.什么是Influxdb,什么又是时序数据库 Influxdb是一个用于存储时间序列,事件和指标的开源数据库,由Go语言编写而成,无需外 ...
- Oracle基础--命令
====================== 基础命令====================== 1.su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界 ...
- linux基础的基础命令操作
一.开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 操作:su - root 二.使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 操作:ctrl ...
- Mysql常用基础命令操作
常见操作命令:1.连接Mysql (客户端工具NaviCat.phpMyAdmin.MySQL-Front)格式: mysql -h 主机地址 -u用户名 -p用户密码(1)连接到本机上的MYSQL. ...
- Linux基础命令操作
显示日期与时间:date date +%Y/%m/%d date +%H:%M 显示日历:cal 显示一整年(cal 2009) 显示一年中的某一个月 (cal [[month]] year) 例如 ...
- oracle基础命令
oracle使用步骤: 一.oracle安装 两个文件解压到同一文件夹,doc为说明/使用文档 二.oracle启动: 1.启动oracle:启动监听和自定义库 2.启动cmd->sqlplus ...
- Linux基础命令操作实例
1.开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 2.使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 使用快捷键Ctrl+Alt+F2切换到终 ...
随机推荐
- 并发控制--context篇
目录 1. 前言 2 Context 实现原理 2.1 接口定义 2.1 cancelCtx 2.1.1 Done()接口实现 2.1.2 Err()接口实现 2.1.3 cancel()接口实现 2 ...
- super的两个作用
super与实例没有什么关系,它本身有两个作用的,参考如下理解: 1.super可以当函数用.super作为函数调用时,表示父类的构造函数.示例: class Par { constructor() ...
- JavaSE基础之Java中的数据类型
基本数据类型:8个 整数类型(4):byte short int long 浮点类型(2):float double 字符类型:char 布尔类型:boolean 引用数据类型:3个 数组 类:cla ...
- Linux从头学10:三级跳过程详解-从 bootloader 到 操作系统,再到应用程序
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- Servlet学习笔记(一)之Servlet原理、初始化、生命周期、结构体系
Servlet是用java语言编写的应用到Web服务器端的扩展技术,与java对象的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持(以下会介绍原因, ...
- ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1122)
只需执行 /Applications/Python\ 3.9/Install\ Certificates.command
- vue 手机号码隐藏中间
template {{ phone | mobileFilter }} data export default { filters:{ mobileFilter(val){ ...
- MySQL——备份与恢复
MySQL数据库备份和恢复 --备份类型: 1.热备份(只有InnoDB支持)(不影响业务,最好的方式) 2.冷备份( 阻止用户访问) 3.温备份 --备份方式: 1.逻辑备份(文本表示:SQL语句) ...
- 20210713考试-2021noip14
T1 队长快跑 #include<bits/stdc++.h> using namespace std; const int N=1e6+5,INF=0x7fffffff; int n,a ...
- java:volatile关键字原理
volatile说明 在变量中声明后,能够在所有线程中共享改变量.并且volatile关键字能防止指令重排,即程序读取到volatile时,则不会将程序执行顺序修改. 先了解下内存模型 cpu内存模型 ...