• oracle基礎知識2


    64. 如何查出一条记录的最后更新时间?
    可以用logminer 察看
    65. 如何在PL/SQL中读写文件?
    UTL_FILE包允许用户通过PL/SQL读写操作系统文件。
    66. 怎样把“&”放入一条记录中?
    insert into a values (translate ('at{&}t','at{}','at'));
    67. EXP 如何加QUERY 参数?
    EXP USER/PASS FILE=A.DMP TABLES(BSEMPMS)
    QUERY='"WHERE EMP_NO=\'S09394\'\"﹔
    68. 关于oracle8i 支持简体和繁体的字符集问题?
    ZHS16GBK可以支持
    69. Data Guard 是什么软件?
    就是Standby的换代产品
    70. 如何创建SPFILE?
    SQL> connect / as sysdba
    SQL> select * from v$version;
    SQL> create pfile from spfile;
    SQL> CREATE SPFILE FROM PFILE='E:\ora9i\admin\eygle\pfile\init.ora';
    文件已创建。
    SQL> CREATE SPFILE='E : \ora9i\database\SPFILEEYGLE.ORA' FROM PFILE='E :
    \ora9i\admin\eygle\pfile\init.ora';
    文件已创建。
    71. 内核参数的应用?
    shmmax
    含义:这个设置并不决定究竟Oracle 数据库或者操作系统使用多少物理内存,只决定
    了最多可以使用的内存数目。这个设置也不影响操作系统的内核资源。
    设置方法:0.5*物理内存
    例子:Set shmsys:shminfo_shmmax=10485760
    shmmin
    含义:共享内存的最小大小。
    设置方法:一般都设置成为1。
    例子:Set shmsys:shminfo_shmmin=1:
    shmmni
    含义:系统中共享内存段的最大个数。
    例子:Set shmsys:shminfo_shmmni=100
    shmseg
    含义:每个用户进程可以使用的最多的共享内存段的数目。
    例子:Set shmsys:shminfo_shmseg=20:
    semmni
    含义:系统中semaphore identifierer的最大个数。
    设置方法:把这个变量的值设置为这个系统上的所有Oracle 的实例的init.ora 中的最大
    的那个processes 的那个值加10。
    例子:Set semsys:seminfo_semmni=100
    semmns
    含义:系统中emaphores的最大个数。
    设置方法:这个值可以通过以下方式计算得到:各个Oracle 实例的initSID.ora 里边的
    processes 的值的总和(除去最大的Processes 参数)+最大的那个Processes×2+10×
    Oracle 实例的个数。
    例子:Set semsys:seminfo_semmns=200
    semmsl
    含义:一个set 中semaphore 的最大个数。
    设置方法:设置成为10+所有Oracle 实例的InitSID.ora 中最大的Processes的值。
    例子:Set semsys:seminfo_semmsl=-200
    72. 怎样查看哪些用户拥有SYSDBA、SYSOPER 权限?
    SQL>conn sys/change_on_install
    SQL>select * from V_$PWFILE_USERS;
    73. 如何单独备份一个或多个表?
    exp 用户/密码 tables=(表1,…,表2)
    74. 如何单独备份一个或多个用户?
    exp system/manager owner=(用户1,用户2,…,用户n) file=导出文件
    75. 如何对CLOB 字段进行全文检索?
    SELECT * FROM A WHERE dbms_lob.instr(a.a,'K',1,1)>0;
    76. 如何显示当前连接用户?
    SHOW USER
    77. 如何查看数据文件放置的路径?
    col file_name format a50
    SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files
    order by file_id;
    78. 如何查看现有回滚段及其状态?
    SQL> col segment format a30
    SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,
    STATUS FROM DBA_ROLLBACK_SEGS
    79. 如何改变一个字段初始定义的Check范围?
    SQL> alter table xxx drop constraint constraint_name;
    之后再创建新约束:
    SQL> alter table xxx add constraint constraint_name check();
    80. Oracle 常用系统文件有哪些?
    通过以下视图显示这些文件信息:v$database,v$datafile,v$logfile v$controlfile
    v$parameter;
    81. 内连接INNER JOIN?
    select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;
    82. 如何外连接?
    select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);
    select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;
    83. 如何执行脚本SQL文件?
    SQL>@$PATH/filename.sql;
    84. 如何快速清空一个大表?
    SQL>truncate table table_name;
    85. 如何查有多少个数据库实例?
    SQL>SELECT * FROM V$INSTANCE;
    86. 如何查询数据库有多少表?
    SQL>select * from all_tables;
    87. 如何测试SQL语句执行所用的时间?
    SQL>set timing on;
    SQL>select * from tablename;
    88. CHR()的反函数?
    ASCII()
    SELECT CHAR(65) FROM DUAL;
    SELECT ASCII('A') FROM DUAL;
    89. 字符串的连接
    SELECT CONCAT(COL1,COL2) FROM TABLE;
    SELECT COL1||COL2 FROM TABLE;
    90. 怎么把select出来的结果导到一个文本文件中?
    SQL>SPOOL C:\ABCD.TXT;
    SQL>select * from table;
    SQL >spool off;
    91. 怎样估算SQL执行的I/O 数 ?
    SQL>SET AUTOTRACE ON ;
    SQL>SELECT * FROM TABLE;

    SQL>SELECT * FROM v$filestat;可以查看IO 数
    92. 如何在sqlplus下改变字段大小?
    alter table table_name modify (field_name varchar2(100));
    改大行,改小不行(除非都是空的)
    93. 如何查询某天的数据?
    select * from table_name where trunc( 日期字段)=to_date('2003-05-02' ,
    'yyyy-mm-dd');
    94. sql 语句如何插入全年日期?
    create table BSYEAR (d date);
    insert into BSYEAR
    select to_date('20030101','yyyymmdd')+rownum-1
    from all_objects
    where rownum <= to_char(to_date('20031231','yyyymmdd'),'ddd');
    95. 如果修改表名?
    alter table old_table_name rename to new_table_name;
    96. 如何取得命令的返回状态值?
    sqlcode=0
    97. 如何知道用户拥有的权限?
    SELECT * FROM dba_sys_privs ;
    98. 从网上下载的ORACLE9I与市场上卖的标准版有什么区别?
    从功能上说没有区别,只不过oracle 公司有明文规定;从网站上下载的oracle 产品
    不得用于商业用途,否则侵权。
    99. 怎样判断数据库是运行在归档模式下还是运行在非归档模式下?
    进入dbastudio,历程--〉数据库---〉归档查看。
    100. sql>startup pfile 和ifile,spfile有什么区别?
    pfile就是Oracle 传统的初始化参数文件,文本格式的;
    ifile 类似于c语言里的include,用于把另一个文件引入;
    spfile 是9i里新增的并且是默认的参数文件,二进制格式;
    startup 后应该只可接pfile。
    101. 如何搜索出前N 条记录?
    SELECT * FROM empLOYEE WHERE ROWNUM < n
    ORDER BY empno;
    102. 如何知道机器上的Oracle 支持多少并发用户数?
    SQL>conn internal ;
    SQL>show parameter processes ;
    103. db_block_size 可以修改吗?
    一般不可以﹐不建议这样做的。
    104. 如何统计两个表的记录总数?
    select (select count(id) from aa)+(select count(id) from bb) 总数 from dual;
    105. 怎样用Sql 语句实现查找一列中第N 大值?
    select * from
    (select t.*,dense_rank() over (order by sal) rank from employee)
    where rank = N;
    106. 如何在给现有的日期加上2年?(
    select add_months(sysdate,24) from dual;
    107. USED_UBLK 为负值表示什么意思?
    It is "harmless"。
    108. Connect string是指什么?
    应该是tnsnames.ora 中的服务名后面的内容
    109. 怎样扩大REDO LOG的大小?
    建立一个临时的redolog 组,然后切换日志,删除以前的日志,建立新的日志。
    110. tablespace 是否不能大于4G?
    没有限制。
    111. 返回大于等于N 的最小整数值?
    SELECT CEIL(N) FROM DUAL;
    112. 返回小于等于N 的最小整数值?
    SELECT FLOOR(N) FROM DUAL;
    113. 返回当前月的最后一天?
    SELECT LAST_DAY(SYSDATE) FROM DUAL;
    114. 如何不同用户间数据导入?
    IMP SYSTEM/MANAGER FILE=AA.DMP FROMUSER=USER_OLD TOUSER=USER_
    NEW ROWS=Y INDEXES=Y ;
    115. 如何找数据库表的主键字段的名称?
    SQL>SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P'
    and table_name='TABLE_NAME';
    116. 两个结果集互加的函数?
    SQL>SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW;
    SQL>SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW
    SQL>SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW;
    117. 两个结果集互减的函数?
    SQL>SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW;
    118. 如何配置Sequence?
    建sequence seq_custid
    create sequence seq_custid start 1 incrememt by 1;
    建表时:
    create table cust
    { cust_id smallint not null,
    ...}
    insert 时:
    insert into table cust
    values( seq_cust.nextval,...)
    日期的各部分的常用的的写法
    119. 取时间点的年份的写法:
    SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;
    120. 取时间点的月份的写法:
    SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL;
    121. 取时间点的日的写法:
    SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
    122. 取时间点的时的写法:
    SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;
    123. 取时间点的分的写法:
    SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;
    124. 取时间点的秒的写法:
    SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;
    125. 取时间点的日期的写法:
    SELECT TRUNC(SYSDATE) FROM DUAL;
    126. 取时间点的时间的写法:
    SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;
    127. 日期,时间形态变为字符形态:
    SELECT TO_CHAR(SYSDATE) FROM DUAL;
    128. 将字符串转换成日期或时间形态:
    SELECT TO_DATE('2003/08/01') FROM DUAL;
    129. 返回参数的星期几的写法:
    SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
    130. 返回参数一年中的第几天的写法:
    SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
    131. 返回午夜和参数中指定的时间值之间的秒数的写法:
    SELECT TO_CHAR(SYSDATE,'SSSSS') FROM DUAL;
    132. 返回参数中一年的第几周的写法:
    SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
    虚拟字段
    133. CURRVAL 和 nextval
    为表创建序列
    CREATE SEQUENCE EMPSEQ ... ;
    SELECT empseq.currval FROM DUAL ;
    自动插入序列的数值
    INSERT INTO emp
    VALUES (empseq.nextval, 'LEWIS', 'CLERK',
    7902, SYSDATE, 1200, NULL, 20) ;
    134. ROWNUM
    按设定排序的行的序号
    SELECT * FROM emp WHERE ROWNUM < 10 ;
    135. ROWID
    返回行的物理地址
    SELECT ROWID, ename FROM emp WHERE deptno = 20 ;
    136. 将N 秒转换为时分秒格式?
    set serverout on
    declare
    N number := 1000000;
    ret varchar2(100);
    begin
    ret := trunc(n/3600) || '小时' || to_char(to_date(mod(n,3600),'sssss'),'fmmi"
    分 "ss"秒"') ;
    dbms_output.put_line(ret);
    end;
    137. 如何查询做比较大的排序的进程?
    SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#, a.username,
    a.osuser, a.status
    FROM v$session a,v$sort_usage b
    WHERE a.saddr = b.session_addr
    ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks ;
    138. 如何查询做比较大的排序的进程的SQL语句?
    select /*+ ORDERED */ sql_text from v$sqltext a
    where a.hash_value = (
    select sql_hash_value from v$session b
    where b.sid = &sid and b.serial# = &serial)
    order by piece asc ;
    139. 如何查找重复记录?
    SELECT * FROM TABLE_NAME
    WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D
    WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);
    140. 如何删除重复记录?
    DELETE FROM TABLE_NAME
    WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D
    WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);
  • 相关阅读:
    winform
    winform窗口应用程序回顾
    API OpengGL属性函数
    API OpengGL几何变换函数
    API OpenGL输出土元函数及相关子程序
    glut进行显示窗口管理(基本API)
    BLL层
    新闻表存贮过程
    重构的数据库助手类
    新闻表操作类
  • 原文地址:https://www.cnblogs.com/jimeper/p/725095.html
Copyright © 2020-2023  润新知