Jdbc连接的方式
-- 1.SID
-- jdbc:oracle:thin:@localhost:1521:SID
-- 2.url
-- jdbc:oracle:thin:@//host:port/service_name
-- tns
-- jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.16.91)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))
-- tns名
-- jdbc:oracle:thin:@tnsname
/*
方法一:在启动VM 时添加如下参数:
-Doracle.net.tns_admin=D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
方法二:在java 代码里添加:
System.setProperty("oracle.net.tns_admin","D:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\NETWORK\\ADMIN");
*/
表空间占用
select a.tablespace_name "表空间",
total "总量",
free "剩余大小",
(total - free) "已用",
total / 1024 / 1024 / 1024 "总量GB",
free / 1024 / 1024 / 1024 "剩余GB",
(total - free) / 1024 / 1024 / 1024 "已用GB",
round((total - free) / total, 4) * 100 "使用率%"
from (select tablespace_name, sum(bytes) free
from dba_free_space
group by tablespace_name) a,
(select tablespace_name, sum(bytes) total
from dba_data_files
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name;
表空间内表排序
select segment_name as 表名,
sum(bytes) / 1024 / 1024 "size(MB)",
sum(bytes) / 1024 / 1024 / 1024 "size(GB)"
from user_segments
where tablespace_name = 'CORE_DATA'
group by segment_name
order by "size(GB)" desc;
查询表字段
select * from user_tab_cols q where q.TABLE_NAME=upper('Table_name')
导出
--客户端
exp username/passowrd@ip:port/sid file=/test.dmp tables=tablename1,tablename2,......
--服务端 oracle10g及之后版本
expdp username/passowrd@ip:port/sid directory=/path dumpfile=filename.dp logfile=filename.dp.log schema= \
Full=y \-- 备份全表
tables='table1','table2','table3' \ --指定表
导入
--客户端
imp username/passowrd@ip:port/sid file=/test.dmp from user1 to user2 full=y ignore=y
--服务端 oracle10g及之后版本
impdp username/passowrd@ip:port/sid directory=/path dumpfile=filename.dp logfile=filename.dp.log remap_schema=
sql查询
填充函数
Lpad(str , len, padstr); --左填充 str 字段 len 填充长度,padstr 填充字符
Rpad(str , len, padstr); --右填充
eg:左边补0 select Lpad('test', 10, '0') from dual ; -- out: 0000000000test
树查询 start with
select * from table
where 1=1
and connect_by_isleaf=1 -- 是否叶子节点(0否/1是)
start with 树起始条件
connect by prior (父字段=子字段)(子字段-=父字段)
常用分析函数
分析函数形式 xxxx(….) over( [partittion by colom1,colom2….] [order by colom1,colom2…. ] )
1.排序
--1.遇到相同记录数据 按排名递增
row_number() over(
[partittion by colom1,colom2....]
[order by colom1,colom2.... ]
)
--2.遇到相同记录数据 按排名相同
dense-rank() over(
[partittion by colom1,colom2....]
[order by colom1,colom2.... ]
)
--3.遇到相同记录数据 按排名相同 同时会在最后一条相同记录和下一个不同记录之间空出排名
rank() over(
[partittion by colom1,colom2....]
[order by colom1,colom2.... ]
)
2.求之前之后的第N行
-- comlm 指定字段 offset 偏移量 即N 默认为1,defval 默认返回值 (默认为null)
lag(colom ,offset,defval) over() -- 前N行
lead(colom ,offset,defval) over()-- 后N行
3.排列组合
-- 1.rollup()
--eg:
group by rollup( a ,b,c)
-- 按照 abc ab a 依次进行分组
-- 2.cube()
--eg:
group by cube( a ,b,c)
-- 按照 abc ab ac a bc b c 依次进行分组