• Oracle SQLPlus的使用和管理Oracle


    昨天也没干什么,就是熟悉了一下Oracle数据库

    找了一些SQLPlus的资料 并练习

    用SQL Developer 连接上Oracle然后看了看

    这Oracle的表可真够多的,还有视图,同义词,等

    使用这些都可以用select * from xxx 这个xxx可以是同义词,也可以是视图,不一定是表的。

    新建立的表都会存储在 另一个表里(通过存储过程/触发器 来自动执行)

    所以管理表,查询表的信息,只需要从某一些表里查看就可以了。

    真是够复杂的,想要熟悉这么多得表(包括视图之类的,我估计大约有200个以上)。

    做一个Oracle  DBA 还真要花点功夫了。。

    还有就是PL/SQL编程,其实在SQLPLUS里就已经学习过了

    可以自己建立一些函数,存储过程,视图,触发器之类的。这些内容回来好好总结一下。

    下面就是SQL PLUS  的一些资料。

    View Code
    参考:http://psoug.org/reference/sqlplus.html



    sqlplus sys/password@192.168.1.8/password as sysdba
    ===================================

    SQL> archive log list
    =========================================================
    数据库日志模式 非存档模式
    自动存档 禁用
    存档终点 /opt/app/oracle/product/11.2.0/dbhome_1/dbs/arch
    最早的联机日志序列 38
    当前日志序列 40
    SQL> help archive

    ARCHIVE LOG
    -----------

    Displays information about redo log files.

    ARCHIVE LOG LIST







    help
    ======
    help index
    help variable
    help host
    help quite
    help password

    help execute




    host(! $ for short)
    ==========
    host
    >dir
    >move
    >exit
    show user

    exit/quit
    =========
    exit/quit

    password
    ========
    password sys



    show
    ===========================================
    show parameter instance_name
    show user




    SQL Prompt
    ========
    prompt 'How are you!';

    set sqlprompt "_user'@'_connect_identifier>"

    # SYS@192.168.1.8/password>


    SET SQLPROMPT '_CONNECT_IDENTIFIER> '
    set sqlprompt 'SQL> '


    Variable
    ===============================
    variable x varchar2(20);

    begin
    :x :='abc';
    End;
    /

    variable x
    print x

    undefine x
    print x

    genera
    ===================================
    SELECT COUNT(*)
    FROM all_objects
    WHERE SUBSTR(object_name,1,1) BETWEEN 'A' AND 'W';
    show lno


    SELECT object_name
    FROM all_objects
    WHERE SUBSTR(object_name,1,1) BETWEEN 'A' AND 'W';
    show pno

    show release
    show sqlcode #error code
    show user
    show all
    help show

    clear csr



    Column Formatting |Col <Column_name> Format a<Interger>
    ========================================================
    SELECT object_name, object_type
    FROM all_objects
    WHERE ROWNUM < 6;

    COL object_name FORMAT a30

    SELECT object_name, object_type
    FROM all_objects
    WHERE ROWNUM < 6;

    COL <column_name> FORMAT $99,999
    COL salary FORMAT $99,999


    COL test FORMAT 99.99
    SELECT 100/3 TEST FROM DUAL;

    COL test FORMAT 99.9999
    SELECT 100/3 TEST FROM DUAL;


    #Table Operation
    #==================================================================

    CREATE TABLE t (
    test NUMBER(10,4));

    INSERT INTO t VALUES (1234);
    INSERT INTO t VALUES (-234);
    INSERT INTO t VALUES (0);

    COL test FORMAT $9999
    SELECT * FROM t;

    COL test FORMAT B9999
    SELECT * FROM t;

    COL test FORMAT 9999MI
    SELECT * FROM t;

    COL test FORMAT S9999
    SELECT * FROM t;

    COL test FORMAT 9999PR
    SELECT * FROM t;

    COL test FORMAT 9999D99
    SELECT * FROM t;

    COL test FORMAT 9G999
    SELECT * FROM t;

    COL test FORMAT C9999
    SELECT * FROM t;

    COL test FORMAT L9999
    SELECT * FROM t;

    COL test FORMAT 9,999
    SELECT * FROM t;

    COL test FORMAT 9999.99
    SELECT * FROM t;

    COL test FORMAT 9999V99
    SELECT * FROM t;

    COL test FORMAT 9999.99EEEE
    SELECT * FROM t;

    COL test FORMAT RN
    SELECT * FROM t;

    COL test FORMAT DATE
    SELECT * FROM t;

    drop table t;





    ArraySizeDemo
    ==============

    CREATE TABLE t AS
    SELECT *
    FROM all_objects
    WHERE SUBSTR(object_name,1,1) BETWEEN 'A' AND 'W';

    SELECT COUNT(*)
    FROM t;

    CREATE INDEX t_idx
    ON t(object_id)
    PCTFREE 0;

    set autotrace traceonly
    show arraysize

    SELECT * FROM t;
    SELECT * FROM t;
    SELECT * FROM t;

    set arraysize 10
    SELECT * FROM t;

    set arraysize 100
    SELECT * FROM t;

    set arraysize 250
    SELECT * FROM t;



    define
    ==========
    define
    define _User

    define x='aaa'
    define x

    undefine x
    define x




    Describe
    =========
    CREATE OR REPLACE FUNCTION dayofweek (stringin VARCHAR2)
    RETURN VARCHAR2 IS

    BEGIN
    NULL;
    END dayofweek;
    /

    desc dayofweek

    SQLPLUS命令的使用大全

    View Code
    http://xsb.itpub.net/post/419/49511
    我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。
    除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。
    下面就介绍一下一些常用的sql*plus命令:

    1. 执行一个SQL脚本文件
    SQL>start file_name
    SQL>@ file_name
    我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。

    2. 对当前的输入进行编辑
    SQL>edit

    3. 重新运行上一次运行的sql语句
    SQL>/

    4. 将显示的内容输出到指定文件
    SQL> SPOOL file_name
    在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。

    5. 关闭spool输出
    SQL> SPOOL OFF
    只有关闭spool输出,才会在输出文件中看到输出的内容。

    6.显示一个表的结构
    SQL> desc table_name


    7. COL命令:
    主要格式化列的显示形式。
    该命令有许多选项,具体如下:
    COL[UMN] [{ column|expr} [ option ...]]
    Option选项可以是如下的子句:
    ALI[AS] alias
    CLE[AR]
    FOLD_A[FTER]
    FOLD_B[EFORE]
    FOR[MAT] format
    HEA[DING] text
    JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
    LIKE { expr|alias}
    NEWL[INE]
    NEW_V[ALUE] variable
    NOPRI[NT]|PRI[NT]
    NUL[L] text
    OLD_V[ALUE] variable
    ON|OFF
    WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]

    1). 改变缺省的列标题
    COLUMN column_name HEADING column_heading
    For example:
    Sql>select * from dept;
    DEPTNO DNAME LOC
    ---------- ---------------------------- ---------
    10 ACCOUNTING NEW YORK
    sql>col LOC heading location
    sql>select * from dept;
    DEPTNO DNAME location
    --------- ---------------------------- -----------
    10 ACCOUNTING NEW YORK

    2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:
    Sql>select * from emp
    Department name Salary
    ---------- ---------- ----------
    10 aaa 11
    SQL> COLUMN ENAME HEADING ’Employee|Name’
    Sql>select * from emp
    Employee
    Department name Salary
    ---------- ---------- ----------
    10 aaa 11
    note: the col heading turn into two lines from one line.

    3). 改变列的显示长度:
    FOR[MAT] format
    Sql>select empno,ename,job from emp;
    EMPNO ENAME JOB
    ---------- ---------- ---------
    7369 SMITH CLERK
    7499 ALLEN SALESMAN
    7521 WARD SALESMAN
    Sql> col ename format a40
    EMPNO ENAME JOB
    ---------- ---------------------------------------- ---------
    7369 SMITH CLERK
    7499 ALLEN SALESMAN
    7521 WARD SALESMAN

    4). 设置列标题的对齐方式
    JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
    SQL> col ename justify center
    SQL> /
    EMPNO ENAME JOB
    ---------- ---------------------------------------- ---------
    7369 SMITH CLERK
    7499 ALLEN SALESMAN
    7521 WARD SALESMAN
    对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边

    5). 不让一个列显示在屏幕上
    NOPRI[NT]|PRI[NT]
    SQL> col job noprint
    SQL> /
    EMPNO ENAME
    ---------- ----------------------------------------
    7369 SMITH
    7499 ALLEN
    7521 WARD

    6). 格式化NUMBER类型列的显示:
    SQL> COLUMN SAL FORMAT $99,990
    SQL> /
    Employee
    Department Name Salary Commission
    ---------- ---------- --------- ----------
    30 ALLEN $1,600 300

    7). 显示列值时,如果列值为NULL值,用text值代替NULL值
    COMM NUL[L] text
    SQL>COL COMM NUL[L] text

    . 设置一个列的回绕方式
    WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
    COL1
    --------------------
    HOW ARE YOU?

    SQL>COL COL1 FORMAT A5
    SQL>COL COL1 WRAPPED
    COL1
    -----
    HOW A
    RE YO
    U?

    SQL> COL COL1 WORD_WRAPPED
    COL1
    -----
    HOW
    ARE
    YOU?

    SQL> COL COL1 WORD_WRAPPED
    COL1
    -----
    HOW A

    9). 显示列的当前的显示属性值
    SQL> COLUMN column_name

    10). 将所有列的显示属性设为缺省值
    SQL> CLEAR COLUMNS

    8. 屏蔽掉一个列中显示的相同的值
    BREAK ON break_column
    SQL> BREAK ON DEPTNO
    SQL> SELECT DEPTNO, ENAME, SAL
    FROM EMP
    WHERE SAL < 2500
    ORDER BY DEPTNO;
    DEPTNO ENAME SAL
    ---------- ----------- ---------
    10 CLARK 2450
    MILLER 1300
    20 SMITH 800
    ADAMS 1100

    9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。
    BREAK ON break_column SKIP n

    SQL> BREAK ON DEPTNO SKIP 1
    SQL> /
    DEPTNO ENAME SAL
    ---------- ----------- ---------
    10 CLARK 2450
    MILLER 1300

    20 SMITH 800
    ADAMS 1100

    10. 显示对BREAK的设置
    SQL> BREAK

    11. 删除6、7的设置
    SQL> CLEAR BREAKS

    12. Set 命令:
    该命令包含许多子命令:
    SET system_variable value
    system_variable value 可以是如下的子句之一:
    APPI[NFO]{ON|OFF|text}
    ARRAY[SIZE] {15|n}
    AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}
    AUTOP[RINT] {ON|OFF}
    AUTORECOVERY [ON|OFF]
    AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
    BLO[CKTERMINATOR] {.|c}
    CMDS[EP] {;|c|ON|OFF}
    COLSEP {_|text}
    COM[PATIBILITY]{V7|V8|NATIVE}
    CON[CAT] {.|c|ON|OFF}
    COPYC[OMMIT] {0|n}
    COPYTYPECHECK {ON|OFF}
    DEF[INE] {&|c|ON|OFF}
    DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]
    ECHO {ON|OFF}
    EDITF[ILE] file_name[.ext]
    EMB[EDDED] {ON|OFF}
    ESC[APE] {|c|ON|OFF}
    FEED[BACK] {6|n|ON|OFF}
    FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}
    FLU[SH] {ON|OFF}
    HEA[DING] {ON|OFF}
    HEADS[EP] {||c|ON|OFF}
    INSTANCE [instance_path|LOCAL]
    LIN[ESIZE] {80|n}
    LOBOF[FSET] {n|1}
    LOGSOURCE [pathname]
    LONG {80|n}
    LONGC[HUNKSIZE] {80|n}
    MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL
    {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
    NEWP[AGE] {1|n|NONE}
    NULL text
    NUMF[ORMAT] format
    NUM[WIDTH] {10|n}
    PAGES[IZE] {24|n}
    PAU[SE] {ON|OFF|text}
    RECSEP {WR[APPED]|EA[CH]|OFF}
    RECSEPCHAR {_|c}
    SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_
    WRAPPED]|TRU[NCATED]}]
    SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}
    SHOW[MODE] {ON|OFF}
    SQLBL[ANKLINES] {ON|OFF}
    SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}
    SQLCO[NTINUE] {> |text}
    SQLN[UMBER] {ON|OFF}
    SQLPRE[FIX] {#|c}
    SQLP[ROMPT] {SQL>|text}
    SQLT[ERMINATOR] {;|c|ON|OFF}
    SUF[FIX] {SQL|text}
    TAB {ON|OFF}
    TERM[OUT] {ON|OFF}
    TI[ME] {ON|OFF}
    TIMI[NG] {ON|OFF}
    TRIM[OUT] {ON|OFF}
    TRIMS[POOL] {ON|OFF}
    UND[ERLINE] {-|c|ON|OFF}
    VER[IFY] {ON|OFF}
    WRA[P] {ON|OFF}

    1). 设置当前session是否对修改的数据进行自动提交
    SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}

    2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句
    SQL> SET ECHO {ON|OFF}

    3).是否显示当前sql语句查询或修改的行数
    SQL> SET FEED[BACK] {6|n|ON|OFF}
    默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数

    4).是否显示列标题
    SQL> SET HEA[DING] {ON|OFF}
    当set heading off 时,在每页的上面不显示列标题,而是以空白行代替

    5).设置一行可以容纳的字符数
    SQL> SET LIN[ESIZE] {80|n}
    如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。

    6).设置页与页之间的分隔
    SQL> SET NEWP[AGE] {1|n|NONE}
    当set newpage 0 时,会在每页的开头有一个小的黑方框。
    当set newpage n 时,会在页和页之间隔着n个空行。
    当set newpage none 时,会在页和页之间没有任何间隔。

    7).显示时,用text值代替NULL值
    SQL> SET NULL text

    .设置一页有多少行数
    SQL> SET PAGES[IZE] {24|n}
    如果设为0,则所有的输出内容为一页并且不显示列标题

    9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。
    SQL> SET SERVEROUT[PUT] {ON|OFF}
    在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。 dbms_output.put_line会"吃掉"最前面的空格?在set serveroutput on后加上format wrapped参数!

    10).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。
    SQL> SET WRA[P] {ON|OFF}
    当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。

    11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。
    SQL> SET TERM[OUT] {ON|OFF}
    在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。

    12).将SPOOL输出中每行后面多余的空格去掉
    SQL> SET TRIMS[OUT] {ON|OFF}

    13)显示每个sql语句花费的执行时间
    set TIMING {ON|OFF}

    14.修改sql buffer中的当前行中,第一个出现的字符串
    C[HANGE] /old_value/new_value
    SQL> l
    1* select * from dept
    SQL> c/dept/emp
    1* select * from emp

    15.编辑sql buffer中的sql语句
    EDI[T]

    16.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行
    L[IST] [n]

    17.在sql buffer的当前行下面加一行或多行
    I[NPUT]

    18.将指定的文本加到sql buffer的当前行后面
    A[PPEND]
    SQL> select deptno,
    2 dname
    3 from dept;
    DEPTNO DNAME
    ---------- --------------
    10 ACCOUNTING
    20 RESEARCH
    30 SALES
    40 OPERATIONS

    SQL> L 2
    2* dname
    SQL> a ,loc
    2* dname,loc
    SQL> L
    1 select deptno,
    2 dname,loc
    3* from dept
    SQL> /

    DEPTNO DNAME LOC
    ---------- -------------- -------------
    10 ACCOUNTING NEW YORK
    20 RESEARCH DALLAS
    30 SALES CHICAGO
    40 OPERATIONS BOSTON

    19.将sql buffer中的sql语句保存到一个文件中
    SAVE file_name

    20.将一个文件中的sql语句导入到sql buffer中
    GET file_name

    21.再次执行刚才已经执行的sql语句
    RUN
    or
    /

    22.执行一个存储过程
    EXECUTE procedure_name

    23.在sql*plus中连接到指定的数据库
    CONNECT user_name/passwd@db_alias

    24.设置每个报表的顶部标题
    TTITLE

    25.设置每个报表的尾部标题
    BTITLE

    26.写一个注释
    REMARK [text]

    27.将指定的信息或一个空行输出到屏幕上
    PROMPT [text]

    28.将执行的过程暂停,等待用户响应后继续执行
    PAUSE [text]

    Sql>PAUSE Adjust paper and press RETURN to continue.

    29.将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库)
    COPY {FROM database | TO database | FROM database TO database}
    {APPEND|CREATE|INSERT|REPLACE} destination_table
    [(column, column, column, ...)] USING query

    sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST
    create emp_temp
    USING SELECT * FROM EMP

    30.不退出sql*plus,在sql*plus中执行一个操作系统命令:
    HOST

    Sql> host hostname
    该命令在windows下可能被支持。

    31.在sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sql*plus:
    !

    sql>!
    $hostname
    $exit
    sql>

    该命令在windows下不被支持。

    32.显示sql*plus命令的帮助
    HELP
    如何安装帮助文件:
    Sql>@ ?sqlplusadminhelphlpbld.sql ?sqlplusadminhelphelpus.sql
    Sql>help index

    33.显示sql*plus系统变量的值或sql*plus环境变量的值
    Syntax
    SHO[W] option
    where option represents one of the following terms or clauses:
    system_variable
    ALL
    BTI[TLE]
    ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|
    TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name]
    LNO
    PARAMETERS [parameter_name]
    PNO
    REL[EASE]
    REPF[OOTER]
    REPH[EADER]
    SGA
    SPOO[L]
    SQLCODE
    TTI[TLE]
    USER

    1) . 显示当前环境变量的值:
    Show all

    2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息
    Show error
    当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译。

    3) . 显示初始化参数的值:
    show PARAMETERS [parameter_name]

    4) . 显示数据库的版本:
    show REL[EASE]

    5) . 显示SGA的大小
    show SGA

    6). 显示当前的用户名
    show user
    _________________

    xsb注:

    @2.sql与@@2.sql的区别:

    比如在e:下sqlplus @e:temp1.sql
    1.sql里的@2.sql调用的脚本位于e:目下
    @@2.sql调用的脚本位于e:temp目录下。

    Oracle系统表备注

    View Code
    Oracle系统表备注
    博客分类: oracle

    Oracle OS C C++ C#.




    数据字典dict总是属于Oracle用户sys的。
      1、用户:
       select username from dba_users;
      改口令
       alter user spgroup identified by spgtest;
      2、表空间:
       select * from dba_data_files;
       select * from dba_tablespaces;//表空间

       select tablespace_name,sum(bytes), sum(blocks)
        from dba_free_space group by tablespace_name;//空闲表空间

       select * from dba_data_files
        where tablespace_name='RBS';//表空间对应的数据文件

       select * from dba_segments
        where tablespace_name='INDEXS';
      3、数据库对象:
       select * from dba_objects;
       CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、
       PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW。
      4、表:
       select * from dba_tables;
       analyze my_table compute statistics;->dba_tables后6列
       select extent_id,bytes from dba_extents
       where segment_name='CUSTOMERS' and segment_type='TABLE'
       order by extent_id;//表使用的extent的信息。segment_type='ROLLBACK'查看回滚段的空间分配

    信息
       列信息:
        select distinct table_name
        from user_tab_columns
        where column_name='SO_TYPE_ID';
      5、索引: 
       select * from dba_indexes;//索引,包括主键索引
       select * from dba_ind_columns;//索引列
       select i.index_name,i.uniqueness,c.column_name
        from user_indexes i,user_ind_columns c
         where i.index_name=c.index_name
         and i.table_name ='ACC_NBR';//联接使用
      6、序列:
       select * from dba_sequences;
      7、视图:
       select * from dba_views;
       select * from all_views;
      text 可用于查询视图生成的脚本
      8、聚簇:
       select * from dba_clusters;
      9、快照:
       select * from dba_snapshots;
      快照、分区应存在相应的表空间。
      10、同义词:
       select * from dba_synonyms
        where table_owner='SPGROUP';
        //if owner is PUBLIC,then the synonyms is a public synonym.
         if owner is one of users,then the synonyms is a private synonym.
      11、数据库链:
       select * from dba_db_links;
      在spbase下建数据库链
       create database link dbl_spnew
       connect to spnew identified by spnew using 'jhhx';
       insert into acc_nbr@dbl_spnew
       select * from acc_nbr where nxx_nbr='237' and line_nbr='8888';
      12、触发器:
       select * from dba_trigers;
      存储过程,函数从dba_objects查找。
      其文本:select text from user_source where name='BOOK_SP_EXAMPLE';
      建立出错:select * from user_errors;
      oracle总是将存储过程,函数等软件放在SYSTEM表空间。
      13、约束:
      (1)约束是和表关联的,可在create table或alter table table_name add/drop/modify来建立、

    修改、删除约束。
      可以临时禁止约束,如:
       alter table book_example
       disable constraint book_example_1;
       alter table book_example
       enable constraint book_example_1;
      (2)主键和外键被称为表约束,而not null和unique之类的约束被称为列约束。通常将主键和外键

    作为单独的命名约束放在字段列表下面,而列约束可放在列定义的同一行,这样更具有可读性。
      (3)列约束可从表定义看出,即describe;表约束即主键和外键,可从dba_constraints和

    dba_cons_columns 查。
       select * from user_constraints
       where table_name='BOOK_EXAMPLE';
       select owner,CONSTRAINT_NAME,TABLE_NAME
        from user_constraints
        where constraint_type='R'
        order by table_name;
      (4)定义约束可以无名(系统自动生成约束名)和自己定义约束名(特别是主键、外键)
      如:create table book_example
        (identifier number not null);
        create table book_example
        (identifier number constranit book_example_1 not null);
      14、回滚段:
      在所有的修改结果存入磁盘前,回滚段中保持恢复该事务所需的全部信息,必须以数据库发生的事务

    来相应确定其大小(DML语句才可回滚,create,drop,truncate等DDL不能回滚)。
      回滚段数量=并发事务/4,但不能超过50;使每个回滚段大小足够处理一个完整的事务;
       create rollback segment r05
       tablespace rbs;
       create rollback segment rbs_cvt
       tablespace rbs
       storage(initial 1M next 500k);
      使回滚段在线
       alter rollback segment r04 online;
      用dba_extents,v$rollback_segs监测回滚段的大小和动态增长。
      回滚段的区间信息
       select * from dba_extents
       where segment_type='ROLLBACK' and segment_name='RB1';
      回滚段的段信息,其中bytes显示目前回滚段的字节数
       select * from dba_segments
        where segment_type='ROLLBACK' and segment_name='RB1';
      为事物指定回归段
       set transaction use rollback segment rbs_cvt
      针对bytes可以使用回滚段回缩。
       alter rollback segment rbs_cvt shrink;
       select bytes,extents,max_extents from dba_segments
        where segment_type='ROLLBACK' and segment_name='RBS_CVT';
      回滚段的当前状态信息:
       select * from dba_rollback_segs
        where segment_name='RB1';
      比多回滚段状态status,回滚段所属实例instance_num
      查优化值optimal
       select n.name,s.optsize
        from v$rollname n,v$rollstat s
         where n.usn=s.usn;
      回滚段中的数据
       set transaction use rollback segment rb1;/*回滚段名*/
       select n.name,s.writes
        from v$rollname n,v$rollstat s
         where n.usn=s.usn;
      当事务处理完毕,再次查询$rollstat,比较writes(回滚段条目字节数)差值,可确定事务的大小。
      查询回滚段中的事务
       column rr heading 'RB Segment' format a18
       column us heading 'Username' format a15
       column os heading 'Os User' format a10
       column te heading 'Terminal' format a10
       select r.name rr,nvl(s.username,'no transaction') us,s.osuser os,s.terminal te
        from v$lock l,v$session s,v$rollname r
         where l.sid=s.sid(+)
         and trunc(l.id1/65536)=R.USN
         and l.type='TX'
         and l.lmode=6
       order by r.name;
      15、作业
      查询作业信息
       select job,broken,next_date,interval,what from user_jobs;
       select job,broken,next_date,interval,what from dba_jobs;
      查询正在运行的作业
       select * from dba_jobs_running;
      使用包exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (10/(24*60*60))')加入作业。间

    隔10秒钟
    exec dbms_job.submit(:v_num,'a;',sysdate,'sysdate + (11/(24*60))')加入作业。间隔11分钟使用包

    exec dbms_job.remove(21)删除21号作业

    使用SQLDevelop连接Oracle




    转载请注明出处:http://www.cnblogs.com/ayanmw 多谢

    ------------------------------------------------------------------------------------------------

    一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。

  • 相关阅读:
    阿里代码检查工具
    SpringCloud 服务通信方法
    Apache ab简单使用
    H5 webSocket使用
    Java list去重 取重
    解决 spring boot Failed to decode downloaded font
    Pycharm设置快捷方式
    环境变量与文件的查找
    Linux基础
    VIM中文乱码解决
  • 原文地址:https://www.cnblogs.com/ayanmw/p/2234418.html
Copyright © 2020-2023  润新知