zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    构建之法读书笔记 第4章 两人合作
    ASE19 团队项目 alpha 阶段 Frontend 组 scrum9 记录
    ASE —— 第二次结对作业
    ASE —— 第一次结对作业
    高级软件工程 —— 第一周博客作业
    软工个人总结
    六月上团队项目心得
    团队项目心得
    结对编程收获
    结对作业——随机生成四则运算(Core 第7组)
  • 原文地址:https://www.cnblogs.com/wang3680/p/10056958.html
Copyright © 2011-2022 走看看