Server Administration :: Auditing Lob Column Changes When Working With Dbms_lob
Oct 26, 2010
It seems that dml trigger doesn't fire when lob field is being updated using dbms_lob package. As it stated in Oracle documentation:
Quote:Using OCI functions or the DBMS_LOB package to update LOB values or LOB attributes of object columns does not cause Oracle to fire triggers defined on the table containing the columns or the attributes.
I need to know that table was updated (or is about to be updated), how can I do that in case it is lob field that is being updated?
It seems that dml trigger doesn't fire when lob field is being updated using dbms_lob package.
As it stated in Oracle documentation:
QUOTE Using OCI functions or the DBMS_LOB package to update LOB values or LOB attributes of object columns does not cause Oracle to fire triggers defined on the table containing the columns or the attributes.
I need to know that table was updated (or is about to be updated), how can I do that in case it is lob field that is being updated?
We are using oracle 10g in linux machine which runs as server. And there are around 25 clients which run at the same time parallel to each other. I am new to oracle 10g and also for client-server version of database. I faced some problems when i first put the server into actual use.
-> Users have been created and tablespace is USERS and temporary space is TEMP. RESOURCE privilege is given. -> Some times login fails for some clients. -> Some times all the client login will be successful. -> Query execution will be sometimes fast, but some times it takes too much time. -> Some times the connection will be lost and again I have bring UP the server.
to maintain the oracle server.
-> Should I have to make any configuration settings in the server. -> Should I change any values in the server. -> Is there any way to properly maintain the server.
With the same settings it successfully connects from my 9i client to the 9i database (DB01, below)
C:Documents and SettingsCLASS_user>sqlplus
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Apr 20 10:18:58 2011
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Enter user-name: /@DB01
Connected to: Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.6.0 - Production
SQL> exit Disconnected from Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.6.0 - Production
However it fails to connect to 11G database (DB02, below)
C:Documents and SettingsCLASS_user>sqlplus
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Apr 20 10:19:29 2011
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Enter user-name: /@DB02 ERROR: ORA-01017: invalid username/password; logon denied
I applied the Jan 09 CPU to my database this past Saturday and now my daily schema export is not running properly:
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsExport done in WE8MSWIN1252 character set and UTF8 NCHAR character set server uses UTF8 character set (possible charset conversion)
About to export specified users ... . exporting pre-schema procedural objects and actions . exporting foreign function library names for user TEST . exporting PUBLIC type synonyms . exporting private type synonyms
if there are any problems with updating statistics? My manager told me that they had big performance issue when they updated the statistics of whole database. Is this a rare case?
I know the advantages of updating statistics,but are there any dis-advantages?
Data Base Configuration assistant for create new database not working in oracle 8.1.7 in windows server 2000 / server 2003 how can i create new database
i am installing oracle database 8.1.7 on dell server power edge 2650 first time database successfully installed but when i want to crate new database by Database Configuration Assistant it is not working for new database creation.
I am importing some data from Oracle into another database on a regular basis. It works fine for most of the queries but couple of queries don't work sometimes (random). I don't get any errors or any data.
We switched on the Oracle auditing to find out the queries being sent to oracle db. We can see all the queries in the Audit log. Is it possible to configure Auditing to get the "Number of Rows" returned by Select statements so that we can be sure that some data was returned.
I was trying to insert some data in a table from a file. I am using DBMS_LOB for that.
My code looks like below -
--Create table t ( a number(10), b number(20), c varchar2(30), d varchar2(30), e varchar2(60));
set serveroutput on declare l_bfile bfile;
[Code]....
But getting error, after first row insertion. Error is -
ERROR at line 1: ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at line 20
It insert the first row successfully, but in the event of second row formatting, its returning error. I found the next time while its picking up the column "A", its adding some new line charecter in it. I tried to replace before assigning it to rec.a, but didn't work.
I would like to create some PL/SQL procedures that return XML as CLOB parameters. I want to just do this (which works fine with simple tests):
create or replace procedure p_xml_test_1( p_xml out nocopy clob ) is begin p_xml := '<?xml version="1.0" encoding="utf8" ?>' || '<test><something>some value</something></test>'; end p_xml_test_1;
But I have access to some other source code that basically does this:
create or replace procedure p_xml_test_2( p_xml out nocopy clob ) is lv_xml clob; begin dbms_lob.createtemporary( [code]......
I'm wondering if the first method will cause any problems for me down the road. Is it ok to do it that way? What is the advantage, if any, to the second method?
I want to drop a column in a huge table which contain about 420,000,000 rows,i use the alter table drop coumn command to execute,and found it takes a long time and generate huge redo.
Is there any quickly way to drop a column in a huge table?
I'm trying to get size of CLOB column but not getting any output.
SQL> desc TABLE_STEP_INST234 Name Null? Type ----------------------------------------- -------- ---------------------------- NUM_PENDING_PREREQS NOT NULL NUMBER(10) OBJID NOT NULL VARCHAR2(31) OUTFLOW_BITS NUMBER(19) PARAMS CLOB PARENT2PROC_INST NOT NULL VARCHAR2(31) ROOT2PROC_INST NOT NULL VARCHAR2(31) START_TIME DATE STATUS NOT NULL NUMBER(2) [code]...
Question 1: What is the no of column limits in a single table? Is it same for all type of tables. Question 2: How to estimate the size for a table in advance with "undo generation amount, index size, redo log size"? Question 3: What is the real time scenario for creating a table on another schema? Question 4:I read the below line in a document, but I'm not able to understand it
"we can't move types and extent tables to a different schema when the original data still exists in the database"?
DECLARE var VARCHAR2(4000); BEGIN SELECT DBMS_LOB.SUBSTR(v_clob,4000,1) INTO var FROM test_clob; END; ** v_clob is a CLOB column in test_clob table.
I get the below error:
wrong number or types of arguments in call to 'SUBSTR'"SYS"."DBMS_LOB"."SUBSTR": invalid identifier...I have execute privileges to DBMS_LOB.SUBSTR function.
I have a table with two clob columns and need to manually allocate space to the table and to its lob segment. Is the following command correct?
--to allocate extent to the table alter table emp allocate extent; --the table has columns named col1 and col2 which are clob --to allocate extents to the columns alter table emp modify lob (col1) (allocate extent (size 10m)) / alter table emp modify lob (col2) (allocate extent (size 10m)) /
I am trying to reoarganise a tablespace with Enterprise Manager from manual to automatic, but script generation gives the following warnng :
Quote:Reorganization includes a table with a LONG column. To support reorganization of tables with LONG columns that are greater than 32Kbytes the external procedure MGMT$REORG_MOVELONGCOMMAND must be configured properly. It has been determined this external procedure is not currently configured as expected. Configure SQL*Net appropriately to allow it to call the external procedure service process.
I made changes suggested by [URL] ..... in the section Using Reorganize Objects with LONG Columns but the warning persists. I noticed however that $ORACLE_HOME/lib/libnmuc.so is an empty file (0 bytes).
Oracle Database 10g 10.1.0.2.0 Solaris (SunOS 5.9 Generic_117171-07 (64-bit)) Oracle home /data/lun1/oracle/product/10.1.0/db_1 {ORACLE_HOME}/network/admin/tnsnames.ora # tnsnames.ora Network Configuration File: /usr/oracle/product/10.1.0/db_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. [code]....
Using below script i run stats gather job..But LAST_ANALYZED column is not updated for the table.. Why it was not updated.. My DB version is 11.1.0.7.0
I am passing the column name for a rowtype dynamically and it is considered as a string by oracle and not giving the value of rowtype.column.i have ANONY 1 where i am passing value to attribute1 and ANONY 2 i am passing value as NULL.
IF l_comp_column IS NOT NULL AND l_mand_column = 'Y' THEN dbms_output.put_line(l_comp_column ||' IS NOT NULL');
l_flag := 'Y'; ELSIF l_comp_column IS NOT NULL AND l_mand_column = 'N' THEN l_flag := 'N'; END IF; [code]....
Example: I want to search 'Hello world' for the first instance of the letter 'o' starting from the end, backwards.As you can see, result for DBMS_LOB.instr is null when entered -1 for offset.
select DBMS_LOB.instr('Hello world','o',-1,1) lob_i, instr('Hello world','o',-1,1) std_i from dual;
I have a database in which DB extended auditing is enabled but there are no audit specifications in privileges or statements or objects. So what will be audited in that case.
I have enabled auditing in my oracle9i DB, it is running fine, generating trails and I can capture those. Recently I checked in dba_audit_session table and found os_username, userhost, terminal showing null value whereas username is captured as my own (having dba prvis). Strange thing is that it doesn't occurs everyday.
One of the possibility of running batch files may occurs such issues, but I ran this batch everyday then why it is occurring some days only.
Attached File(s)
dba_audit_session.txt ( 2.71K ) Number of downloads: 4
I'm working on a Java-based web application and we have unit tests that we use to test all our all code that interacts with the database or code that interacts with our DB code. The Spring framework allows us to perform some DML within a transaction before each test and then rollback the changes. For the most part, this works, however when I run the full suite of unit tests, it will randomly commit data to the database causing the rest of the tests to fail.
will Oracle's auditing let me see where this odd-ball commit is occurring? Is there another way for me to see when data is being committed?
This does not appear to be happening on any of the systems we've deployed, however this is a bit unsettling and would like to know why this is occurring so that we can prevent it from happening in production.
I am trying to maintain data audit in the database using triggers where i want to write the row level trigger in an generic way using the following concept .Using USER_TAB_COLUMNS table inside the trigger i want to bind all column values of the row into a single string in the following format
COLUMN_NAME = Value(:new/:old.COLUMN_NAME)=> this value would be bound dynamically is it possible to create a string for each row instance in the trigger at run time using the above mentioned format and user_tab_column table
In PL/SQL Plus, i can enable/disable auditing when i connect as sysdba by using these command:
SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE SQL> shutdown SQL> startup
I've done it successfully with PL/SQL Plus command line. But in PHP, how can i do that?How to execute "shutdown" and "startup" from PHP? I've found this code for connect to oracle as sysdba:
I would like to be aware of all select statements that are run against the schema I am responsible for (for performance analysis reasons) My privileges are restricted and I think I won't get access to any dba views.
So is there a recomondation how I can solve this requirement?