DML Error Logging in Oracle 10g
DML Error Logging in Oracle 10g
主要在于使用DBMS_ERRLOG.create_error_log 这个包来跟踪dml错误信息
SQL> CREATE TABLE source (
2 id NUMBER(10) NOT NULL,
3 code VARCHAR2(10),
4 description VARCHAR2(50),
5 CONSTRAINT source_pk PRIMARY KEY (id)
6 );
表已创建。
SQL> DECLARE
2 TYPE t_tab IS TABLE OF source%ROWTYPE;
3 l_tab t_tab := t_tab();
4 BEGIN
5 FOR i IN 1 .. 100000 LOOP
6 l_tab.extend;
7 l_tab(l_tab.last).id := i;
8 l_tab(l_tab.last).code := TO_CHAR(i);
9 l_tab(l_tab.last).description := 'Description for ' || TO_CHAR(i);
10 END LOOP;
11
12 -- For a possible error condition.
13 l_tab(1000).code := NULL;
14 l_tab(10000).code := NULL;
15
16 FORALL i IN l_tab.first .. l_tab.last
17 INSERT INTO source VALUES l_tab(i);
18
19 COMMIT;
20 END;
21 /
PL/SQL 过程已成功完成。
SQL> EXEC DBMS_STATS.gather_table_stats(USER, 'source', cascade => TRUE);
PL/SQL 过程已成功完成。
SQL> CREATE TABLE dest (
2 id NUMBER(10) NOT NULL,
3 code VARCHAR2(10) NOT NULL,
4 description VARCHAR2(50),
5 CONSTRAINT dest_pk PRIMARY KEY (id)
6 );
表已创建。
SQL> CREATE TABLE dest_child (
2 id NUMBER,
3 dest_id NUMBER,
4 CONSTRAINT child_pk PRIMARY KEY (id),
5 CONSTRAINT dest_child_dest_fk FOREIGN KEY (dest_id) REFERENCES dest(id)
6 );
表已创建。
SQL> BEGIN
2 DBMS_ERRLOG.create_error_log (dml_table_name => 'dest');
3 END;
4 /
PL/SQL 过程已成功完成。
SQL> SELECT owner, table_name, tablespace_name
2 from all_tables
3 WHERE owner = 'TEST';
OWNER TABLE_NAME
------------------------------ ------------------------------
TABLESPACE_NAME
------------------------------
TEST TEST
USERS
SQL> DESC err$_dest
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ORA_ERR_NUMBER$ NUMBER
ORA_ERR_MESG$ VARCHAR2(2000)
ORA_ERR_ROWID$ ROWID
ORA_ERR_OPTYP$ VARCHAR2(2)
ORA_ERR_TAG$ VARCHAR2(2000)
ID VARCHAR2(4000)
CODE VARCHAR2(4000)
DESCRIPTION VARCHAR2(4000)
SQL> INSERT
相关文档:
自从学ORACLE以来就从来没有发生过什么故障,比较幸运。其实也不能算幸运,因为这样就少了锻炼的机会了,呵呵,怎么觉得自己有点求虐的倾向……
即便是在学习backup and recovery basics的时候,也只是做做备份的实验,没做过恢复,因为身边没有人指导,也没其他同学在学ORACLE,所以怕一出问题肯定很麻烦,解 ......
近日在学习Oracle 10G的过程中遇到一个问题,关闭数据库(shutdown immediate)后,再重启数据库(startup),启动失败,12514的错误,如果通过sqlplus /nolog进入数据库以后,用conn连接,一样不行。重新打开一个cmd窗口,输入:
sqlplus
用户名:sys@sim as sysdba,密码输入完成后,仍然出现如下错误:
ORA ......
1、序列定义
ORACLE:
CREATE SEQUENCE <sequence_name>
INCREMENT BY <integer>
&n ......
CREATE OR REPLACE PROCEDURE sendemailtest
(mailmsg IN Varchar2)
IS
--using mail server to send email.
mailconn UTL_SMTP.connection;
mailhost & ......
1.得到一个表的ddl语句:
SET SERVEROUTPUT ON
SET LINESIZE 1000
SET FEEDBACK OFF
set long 999999 ------显示不完整
SET PAGESIZE 1000 ----分页
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.S ......