使用数据泵:
导入:
IMPDP FJK/salis@ORCL DIRECTORY=dmpdir01 DUMPFILE=FJK.DMP
导出:
EXPDP FJK/salis@ORCL DIRECTORY=dmpdir01 DUMPFILE=FJK.DMP
原始版:
导入:
IMP FJK/salis@ORCL FILE=F:\ORACLEDB\ORCL\FJK.DMP FULL=Y IGNORE=Y
导出:
能用新导出,不用旧导出。
只导出表结构:
EXPDP FJK/salis@ORCL CONTENT=METADATA_ONLY DIRECTORY=dmpdir01 DUMPFILE=FJK.DMP
删除非空表空间 FJK
DROP TABLESPACE FJK INCLUDING CONTENTS;
创建表空间
--BDCK
CREATE TABLESPACE BDCK
DATAFILE 'F:\OracleDB\ORCLPY\BDCK.ORA' SIZE 1M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
PERMANENT
DEFAULT STORAGE(INITIAL 64K MINEXTENTS 1 MAXEXTENTS 2147483645)
MINIMUM EXTENT 64K
LOGGING
ONLINE
/
CREATE USER BDCK
IDENTIFIED BY salis
DEFAULT TABLESPACE BDCK
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
/
GRANT CONNECT TO BDCK WITH ADMIN OPTION
/
GRANT DBA TO BDCK WITH ADMIN OPTION
/
GRANT RESOURCE TO BDCK WITH ADMIN OPTION
/
创建临时目录
create directory dmpdir01 as 'F:\OracleDB\ORCLSJZ';
oracle数据库获取uuid函数 sys_guid()
简单使用:
select sys_guid() from dual;
oracle数据库给表加索引
1.创建索引
create index 索引名称 on 表名 (字段名称);
2.删除索引
drop index 索引名;
3.创建组合索引
create index 索引名 on 表名(列名1,,列名2);
4.在数据库中查找表名
select * from user_tables where table_name like 'tablename%';
5.查看该表的所有索引
select * from all_indexes where table_name = 'tablename';
6.查看该表的所有索引列
select* from all_ind_columns where table_name = 'tablename';
oracle 修改数据库某字段名
/*修改原字段名name为name_tmp*/
alter table ANALYSIS_LOG.T_LOG rename column DJDYID to DJDYIDtmp;
/*增加一个和原字段名同名的字段name*/
alter table ANALYSIS_LOG.T_LOG add DJDYID CLOB;
/*将原字段name_tmp数据更新到增加的字段name*/
update ANALYSIS_LOG.T_LOG set DJDYID=trim(DJDYIDtmp);
/*更新完,删除原字段name_tmp*/
alter table ANALYSIS_LOG.T_LOG drop column DJDYIDtmp;
ORACLE 查询某张表的所有字段
快速编写ORACLE中insert select 语句
- ORACLE 查询某张表的所有字段
SELECT COLUMN_NAME FROM ALL_COL_COMMENTS WHERE OWNER ='SMPRESALE_STO' AND TABLE_NAME='T_COMPACT'
- ORACLE 查询某张表的所有字段,列转行,用逗号隔开
SELECT WM_CONCAT(COLUMN_NAME ) FROM ALL_COL_COMMENTS WHERE OWNER ='SMPRESALE_STO' AND TABLE_NAME='T_COMPACT'
- 拼出insert select 语句
SELECT 'INSERT INTO SMPRESALE_HIS.T_COMPACT (' || WM_CONCAT(COLUMN_NAME)
|| ') SELECT '|| WM_CONCAT(COLUMN_NAME ) || ' FROM SMPRESALE_STO.T_COMPACT WHERE COMPACT_ID=''051206bc44fa40b19b31a08fc494b5fa'' '
FROM ALL_COL_COMMENTS WHERE OWNER ='SMPRESALE_STO' AND TABLE_NAME='T_COMPACT'
create table as select
create table SMWB_SUPPORT.T_XZQ AS
select * from SMWB_SUPPORT.t_division where division_level = 1 ;
create table SMWB_SUPPORT.T_XJXZQ AS
select * from SMWB_SUPPORT.t_division where division_level = 2 ;
create table SMWB_SUPPORT.T_DJQ AS
select * from SMWB_SUPPORT.t_division where division_level = 3 ;
create table SMWB_SUPPORT.T_DJZQ AS
select * from SMWB_SUPPORT.t_division where division_level = 4 ;
Oracle drop删表后的数据恢复
- 如果管理员此时可以明确原表的名称或者原表只DROP过一次表,执行如下sql:
flashback table 原表名 to before drop;
- 如果不知道原表名称或者曾经DROP过多次表,可以直接按照回收站中的表名称将数据恢复,执行如下sql:
flashback table “回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)” to before
drop rename to 新表名;
可以通过以上两种方式恢复数据。
Oracle数据库锁表查询
https://blog.youkuaiyun.com/boos_zhao/article/details/121745093
Oracle查看 修改 最大连接数
select count(*) from v$session; -- 查看当前连接数
SELECT COUNT(*) FROM v$process; -- 查看当前的连接数,包含oracle服务进程
Select count(*) from v$session where status='ACTIVE'; -- 并发连接数
select value from v$parameter where name = 'processes'; -- 数据库允许的最大连接数
-- 或者使用命令查看最大连接
show parameter processes
select username,count(username) from v$session where username is not null group by username; --查看不同用户的连接数
ALTER SYSTEM SET processes=666 SCOPE = SPFILE; -- 修改最大连接数,修改后需要重启数据库
oracle数据库查询某个用户某个机器登录当前实例情况语句
SELECT USERNAME, USERHOST, TERMINAL, TIMESTAMP, RETURNCODE, OS_USERNAME
FROM DBA_AUDIT_TRAIL
WHERE RETURNCODE != 0 AND USERNAME = 'SMRIGHT_STO';
oracle查询所有表里有没有主键
SELECT a.OWNER, a.TABLE_NAME
FROM ALL_TABLES a
LEFT JOIN ALL_CONSTRAINTS c ON a.OWNER = c.OWNER AND a.TABLE_NAME = c.TABLE_NAME AND c.CONSTRAINT_TYPE = 'P'
WHERE c.CONSTRAINT_NAME IS NULL
AND a.OWNER NOT IN ('SYS', 'SYSTEM') -- 排除系统表
ORDER BY a.OWNER, a.TABLE_NAME;
要查询一个Oracle数据库中某个表空间下所有表的数据条数,可以使用以下SQL查询语句:
SELECT table_name, num_rows
FROM all_tables
WHERE tablespace_name = '你的表空间名称';
这个查询将从Oracle系统视图all_tables
中检索在指定表空间中的所有表的数据条数。你需要将你的表空间名称
替换为你要查询的实际表空间名称。
导出oracle数据库awrrpt报告步骤
https://blog.youkuaiyun.com/dyyshb/article/details/111356800
oracle监听日志位置
E:\app\Administrator\diag\tnslsnr\WIN-L8VF29MORCR\listener\trace
获取oracle数据库中的所有数据表
在Oracle数据库中,您可以使用以下SQL查询来获取所有用户表的名称:
SELECT table_name FROM user_tables;
如果您想要获取数据库中所有用户可访问的表(包括其他用户的表),可以使用:
SELECT table_name FROM all_tables;
如果您有足够的权限并想要获取数据库中所有的系统表,可以使用:
SELECT table_name FROM dba_tables;
请注意,user_tables、all_tables 和 dba_tables 是动态性能视图(Dynamic Performance Views),这意味着它们提供了关于数据库运行状态的实时数据。这些查询应在具有相应权限的用户下执行。