oracle数据库学习
- trunc(number[,decimals])--number 待做截取处理的数值;decimals 指明需保留小数点后面的位数
CREATE PUBLIC DATABASE LINK CopydbToTransLink CONNECT TO hs_user IDENTIFIED BY hundsun USING 'COPYDB1';
DROP [PUBLIC] DATABASE LINK dblink;
注意:你必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的权限(可用sys身份去分配),另外,在你要连接的数据库上的权限.
grant CREATE DATABASE LINK to hr;
参数说明:
dblink: 你所创建的database link的名字,
user和password:要连接的数据库的用户名和密码
connect_string:可以是经过Net Manager配置的(tnsnames.ora)且经测试可以连接的服务名,不过也更直接用tnsnames里的字符串:(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = even.oracle.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME =orcl) )
通过SHOW PARAMETER GLOBAL_NAMES,可以查看到其值是FALSE或者TRUE。
一、oracle数据库
1.linux查看oracle服务启动 ps -ef|grep pmon 其中pmon(process monitor)进程监器
关闭数据库 sqlplus / as sysdba
shutdown immediate
启动数据库 sqlplus / as sysdba
startup
启动监听 lsnrctl start
2.查询登录用户名 select * from dba_users;
连接数据 conn hs_user/hundsun@UF20
二、oracle数据库函数说明
nvl(字段名,0),就是当你选出来的时候,这个字段虽然为空,但是显示的是0,当然这个0也可以换成其他东西,如:1,2,3……
DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
三、max函数 查询出当前数据中最大的数据
四、备份讲解
rows=n在exp中就是表示只导出表结构,而不导出数据,其中rows为行的意思,n为no的意思。
如果加上"full=y",将整个数据库全部导出,需要特殊的权限(具体什么权限没研究过),一般用system用户就足够了,普通用户是不可以的。
查看表空间大小及相关的sql
1、查看表空间的名称及大小
SQl > SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name;
2、查看表空间物理文件的名称及大小
SQl > SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name;
3、查看回滚段名称及大小
SQl > SELECT segment_name, tablespace_name, r.status, (initial_extent / 1024) initialextent, (next_extent / 1024) nextextent, max_extents, v.curext curextent FROM dba_rollback_segs r, v$rollstat v WHERE r.segment_id = v.usn(+) ORDER BY segment_name;
4、查看控制文件
SQl > SELECT NAME FROM v$controlfile;
5、查看日志文件
SELECT MEMBER FROM v$logfile;
6、查看表空间的使用情况
SQl > SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name FROM dba_free_space GROUP BY tablespace_name;
SQl > SELECT a.tablespace_name, a.bytes total, b.bytes used, c.bytes free,(b.bytes * 100) / a.bytes "% USED ", (c.bytes * 100) / a.bytes "% FREE " FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c WHERE a.tablespace_name = b.tablespace_name AND a.tablespace_name = c.tablespace_name;
7、查看数据库库对象
SQl > SELECT owner, object_type, status, COUNT(*) count# FROM all_objects GROUP BY owner, object_type, status;
8、查看数据库的版本
SQl > SELECT version FROM product_component_version WHERE substr(product, 1, 6) = 'Oracle';
9、查看数据库的创建日期和归档方式
SQl > SELECT created, log_mode, log_mode FROM v$database;
备份表 使用create table xxx as select xxxxx...
创建表空间时候,查看之前创建的路径 select * from dba_data_files;
查看oracle的版本 select * from v$version;
查询一个表中重复的数据
比方说
在A表中存在一个字段"name",
而且不同记录之间的"name"值有可能会相同,
现在就是需要查询出在该表中的各记录之间,"name"值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
查询前多少条数目使用
select...where rownum <=N order by rownum asc
oracle 变更某个字段的值为当前值加上其它值
update A表 set a=a||'其他值';
将多条行的值,显示成为一行,并使用逗号分隔 wm_concat(字段)
使用replace(字段,'要修改的字符','修改后的字符') 修改查询字段中的字符为想要的字符
查询oracle用户具有的权限 select * from dba_sys_privs;
作者:少帅
出处:少帅的博客--http://www.cnblogs.com/wang3680
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但请保留该声明。
支付宝 微信