shutdown immediate
--1.创建表空间
create tablespace EAMP
datafile 'F:\tablespace\EAMP.dbf'
size 500M
autoextend on next 5M maxsize 1500M;
--删除表空间
drop tablespace EAMP including contents and datafiles;
/*用户权限
授予用户使用表空间的权限:*/
alter user eam2 quota unlimited on EAMP;
--2.建用户
create user workflow identified by workflow default tablespace EAMP;
--3.赋权
grant connect,resource,create any sequence,create any view,
create any table,delete any table,insert any table,update any table,
select any table, unlimited tablespace,execute any procedure,dba to workflow;
--解锁被锁的用户
alter user workflow account unlock;
--设定连接数
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 10;
--不限制连接数
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED;
--4.导入导出命令
ip导出方式: exp WMSM/[email protected]:1521/orcl file=f:/f.dmp full=y
exp WMSM/WMSM@ORCL file=f:\f.dmp full=y
imp WMSM/WMSM@ORCL file=f:\f.dmp full=y ignore=y
imp sdrend/sdrend2011@ORCL file=f:\data.dmp full=y ignore=y;
--spool D:\log\eam2.log; sql命令行
imp eam2/eam2@ORCL file=f:\eam2_4.dmp full=y ignore=y;
--spool off;
exp eam2/eam2@ORCL file=f:\eam2.dmp full=y ;
--===========================================================================================================
删除SQL外键 删除索引 删除表 修改表添加字段
--1.删除外键
ALTER TABLE WMSM.SEC_EMP_T DROP CONSTRAINT FK_SEC_EMP_REF7 ;
ALTER TABLE WMSM.Sec_Org_t DROP CONSTRAINT FK_SEC_EMP_REF7 ;
--查询某表的所有主外键
select * from user_constraints e where e.table_name = 'SEC_EMP_T'
--查询所有引用到该主键的记录
select b.table_name,b.column_name from user_constraints a
inner join user_cons_columns b
on a.constraint_name = b.constraint_name
where a.r_constraint_name='PK_SEC_EMP_T' --此处输入刚才查询出来的表主键的约束名
--2.删除索引
DROP INDEX IND_SEC_EMP_T_02;
DROP INDEX IND_SEC_EMP_T_03;
DROP INDEX IND_SEC_EMP_T_CDE;
DROP INDEX IND_T_SEC_EMP_T_01;
--3.删除主键
ALTER TABLE WMSM.SEC_EMP_T DROP CONSTRAINT PK_SEC_EMP_T;
--4.删除表
truncate table WMSM.SEC_EMP_T;
-----------------------------------------------------------------
--oracle备份恢复
alter system set "_ALLOW_RESETLOGS_CORRUPTION"=true scope=spfile;
shutdown immediate
startup mount
alter database datafile 'D:\tablespace\WMSDATA.dbf' offline drop;
alter database open;
Sqlplus /nolog
Conn sys/password@ORCL as sysdba
drop user WMSM cascade;
----------------------闪回-------------
/*undo_management,参数需要是“AUTO”,保证回滚段使用模式是SMU mode
undo_retention,单位是秒,调整可回滚的时间范围
确认系统的相关参数
命令窗口> show parameter undo
来源一:
专用模式和共享模式的本质区别就是:用户进程对ORACLE服务器所在的计算机的内存区里”服务器进程“是专用还是共享。
具体表现在:
1、在共享模式下,多个用户进程共享一个服务器进程;在专用模式下,ORACLE为每一个用户进程准备一个服务器进程。
2、在实际情况中,应用系统与数据库的连接请求总是很多,导致用户进程也很多,如果你的内存和CPU是有限的,同时,用户进程对数据库的操作占用空间不多,那你就把数据库连接模式设置为共享模式,这样,ORACLE内存区的服务器进程只是有限的几个,这几个服务器进程会通过一个调度程序来应付若干用户进程的请求。
3、如果你的硬件资源比较好,就设置成专用模式,每一个用户进程都有一个服务器进程对应,这样,你的用户进程对数据的处理会非常快!
简单的说,连接客户数少,需要长时间占用数据库的,建议用专有模式,如果连接客户数众多,使用共享模式。
*/
show parameter shared_server; 1为专用模式,0为共享模式(一般用不着)
--允许表闪回
alter table AAA enable row movement;
/*方法1:
查询最新的系统变更number*/
select dbms_flashback.get_system_change_number from dual;
--查看此次变更后的表记录
select * from AAA as of scn 2071711;
FLASHBACK TABLE AAA TO SCN 2071711;
/*方法2:*/
select * from flashback_transaction_query where table_name='AAA';
--根据scn号恢复
select * from AAA as of scn 2051279
FLASHBACK TABLE AAA TO SCN 2051279;
select current_scn from v$database;
select dbid,checkpoint_change# from v$database;
select dbms_flashback.get_system_change_number from dual;
FLASHBACK database to scn
--drop表后的恢复
DROP TABLE AAA;
SELECT * FROM AAA ;
SELECT * FROM RECYCLEBIN;
SELECT * FROM USER_RECYCLEBIN;
FLASHBACK TABLE AAA TO BEFORE DROP;
--闪回 根据时间点
FLASHBACK TABLE AAA TO TIMESTAMP TO_TIMESTAMP('2014/4/26 16:51:23','YYYY/MM/DD HH24:MI:SS');
--/*------闪回数据库到某一天---*/
Sqlplus /nolog
Conn sys/password@ORCL as sysdba
shutdown immediate;
startup mount ;
FLASHBACK database TO TIMESTAMP TO_TIMESTAMP('2014/7/16 16:51:23','YYYY/MM/DD HH24:MI:SS');
alter database open resetlogs;
--/*------闪回数据库到某一天---*/
select TO_TIMESTAMP('2014/4/26 16:51:23','YYYY/MM/DD HH24:MI:SS') from dual;
----------------------------------------------------------------------------------------------------------
--冷备 非归档模式
select * from v$database; --其log_mode会显示数据库是否归档模式
select name from v$controlfile; --列出所有 控制文件 CTL
select name from v$datafile; --列出所有数据文件 DBF
select member from v$logfile; --列出所有redo日志文件 LOG
select sequence#,first_time from v$loghist; --列出所有归档redo日志文件的顺序号和产生时间
select * from v$archived_log;
select name,log_mode from V$database; --查看是否归档模式
----------------------------------------------------
--热备 启用归档模式
/*--D:\oracle\srvm\admin目录下init.ora
命令行下,进到oracle目录
sqlplus /nolog
connect sys/password as sysdba
shutdown immediate;
startup mount exclusive;
alter database archivelog;
alter database open;
alter system archive log start;
shutdown immediate;
exit;
*/
--备份表空间
a,首先,修改表空间文件为备份模式 ALTER TABLESPACE WMSDATA BEGIN BACKUP;
b,然后,拷贝表空间文件到安全区域 !CP WMSDATA D_PATH;
c,最后,将表空间的备份模式关闭 ALTER TABLESPACE WMSDATA END BACKUP;
-- 备份日志文件
(1)通过在sqlplus上执行archive log list命令获取当前的日志顺序号,从oldest online log sequence开始到current log sequence的联机redo日志应该是热备份的一部分。
(2)在sqlplus上执行alter system switch logfile;命令来强迫日志切换,以便所有的日志都被归档。
--备份 控制文件
alter database backup controlfile to 'controlfile_back_2014-6-6' reuse;
-----------------------------------------------------------------------------
恢复步骤:LOG_ARCHIVE_DEST_1
shutdown数据库。
将全备份的数据文件放到原来系统的目录中。
将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置。
利用sqlplus登陆到空实例。(connect / as sysdba)
然后 startup mount
set autorecovery on
recover database;
alter database open;
--查看数据库是否开启闪回
select flashback_on from V$database;
select to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') from dual;
select current_scn from v$database;
如果已经开启了闪回,无须执行下面的操作。
--cmd 命令下
alter system set db_recovery_file_dest_size=30G scope=both;
alter system set db_recovery_file_dest='D:\oracle\flash_recovery_area' scope=both;
shutdown immediate
startup mount
alter database archivelog;
alter database flashback on;
alter database open;
再进行确认:
select flashback_on from V$database;
---------------------------------------------------------------------------------------------------------------
wangyajun jiceam926
--查看每个表空间的大小
Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name ;
select num_rows * avg_row_len
from user_tables
where table_name = 'JBPM4_LOB';
SELECT TABLESPACE_NAME,
TO_CHAR(SUM(BYTES) / (1024 * 1024), '999G999D999') CNT_MB
FROM DBA_EXTENTS
WHERE OWNER = 'eam2'
-- AND SEGMENT_NAME = '&TABLE_NAME'
-- AND SEGMENT_TYPE LIKE 'TABLE%'
GROUP BY TABLESPACE_NAME;
select b.name, sum(a.bytes / 1000000) 总空间
from v$datafile a, v$tablespace b
where a.ts# = b.ts#
group by b.name;
--1、数据库管理员可以执行下述语句来查看SQL语句的解析情况:
SELECT *
FROM V$SYSSTAT
WHERE NAME IN ('parse time cpu', 'parse time elapsed', 'parse count (hard)');
--发现是什么SQL语句解析效率比较低。
SELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS
FROM V$SQLAREA
ORDER BY PARSE_CALLS;
--2、查看低效率的SQL语句,优化这些语句也有助于提高CPU的利用率。
SELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA;
-- 共享池由两部分构成:共享SQL区和数据字典缓冲区,共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。数据库管理员通过执行下述语句:
--来查看共享SQL区的使用率。这个使用率应该在90%以上,否则需要增加共享池的大小
select (sum(pins - reloads)) / sum(pins) "Lib Cache" from v$librarycache;
--查看数据字典缓冲区的使用率,这个使用率也应该在90%以上,否则需要增加共享池的大小。
select (sum(gets - getmisses - usage - fixed)) / sum(gets) "Row Cache" from v$rowcache;
--查看数据库数据缓冲区的使用情况
SELECT name, value FROM v$sysstat WHERE name IN ('db block gets', 'consistent gets','physical reads');
--查看日志缓冲区的使用情况。
select name,value from v$sysstat where name in ('redo entries','redo log space requests');
alter system set sga_target=1024m scope=spfile;
alter system set sga_max_size=1024m scope=spfile;
--(如果spfile文件不存在,需先创建create spfile from pfile;)
alter system set sga_target=12g scope=spfile;
alter system set sga_max_size=12g scope=spfile;
--===========分页===========--------
select * from(
select t.*,row_number() over (order by t.seq_org) rowno from sec_org_t t
)
where rowno between 1 and 10;
select * from
(select t.*,rownum as rowno from sec_org_t t )
where rowno between 1 and 10 ;