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;

你可能感兴趣的:(oracle数据库学习)