Server Utilities :: Estimate Tablespace Growth While Loading Data Using Sqlldr?
Jun 1, 2011
We load large amount of data into multiple tables using sqlldr. Amount of data that we need to load varies according to the situation. We want to estimate the tablespace usage growth due to this data load, so we can verify/extend the tablespaces before the data load. Though, setting to autoextend will work in this case, We want to avoid extending the tablespace during sqlldr executing due to performance.
Our initial attempt was to note the tablespace size before and after executing the sqlldr and use the delta. But this delta was not consistent in different environments for the same amount of data. Different environments mean different oracle servers, different existing sizes of tablespaces, One data file Vs multiple data files etc.
How do we reliably estimate how much tablespace we need for the given amount of data?
SQL> desc stg_query_overflow Name Null? Type ----------------------------------------- -------- ---------------------------- HOSTNAME VARCHAR2(50) NPSID NUMBER NPSINSTANCEID NUMBER OPID NUMBER
[code]....
Here's my controlfile:
load data infile '/u01/tony/server_name/query_overflow.dat' badfile '/opt/oracle/tony/sql_dir/bad/server_name_query_overflow.bad' discardfile '/opt/oracle/tony/sql_dir/discard/server_name_query_overflow.dsc' append into table stg_query_overflow
[code]....
Here's a sample of data that I can't load into the table via sqlldr:
Record 272: Rejected - Error on table STG_QUERY_OVERFLOW, column NPSID. ORA-01722: invalid number Record 273: Rejected - Error on table STG_QUERY_OVERFLOW, column NPSID. ORA-01722: invalid number
As you can see, sqlldr is interpreting this vertical sql code as the npsid column, when in fact it is the querytext column. How can I insert each record when some of my data is in this vertical format?
using SQLLDR: Looking for a control file solution to move past or bypass extra data fields which are not on destination table. Basically if you have 8 tab delimited fields(terminated by ' ') on a data record; but only need to load 5 of the values from the delimited record; is there a way to ignore/bypass the not needed data. Obviously, the answer would be to massage the data at the OS and removed the 3 unnecessary fields.
However my hands are tied by volume,time, and compliancy. I am familiar with using 'FILLER' for the reverse scenario; but not where you have more data available on the record then exists on the table.
We completed creating a replicate of dB_01 to dB_02 (housed in a single DEV server). But dB_02 had only table structures (no records). What would be our fastest option (tools, commands, etc.) to load more than a thousand new records for each of the 20 tables of dB_02?
I'm not sure if this is so much a SQL Loader problem as it is a database understanding problem, but here it is. I am having trouble loading data into a table (using SQL Loader) due to the fact that I am trying to load data row by row, into corresponding columns.
TestFile.csv
testvalue1, 123445 testvalue2, test testvalue3, 455321 testvalue4, 65742 testvalue5, 5719
So, using the above data, I am trying to load the value for 'testvalue1' into a column defined as 'testvalue1'; the value for 'testvalue2' into a column defined as 'testvalue2' and so on. From my understanding, SQL loader loads by column not by row, so I am not even sure if this is possible.
How to load the CLOB data into table..in the attached file 18 column has clob data it's appear like new line..Using external table how to load. i tried it's not working..
I have to load a fixed width file using sql loader utility. But the records have multiple special characters. writing / modifying the loader utility to load the data.
--Script to create the table create table t1 ( ip1 varchar2(2), ip2 number, ip3 number);
--loader utility LOAD DATA INFILE 'c:inputfile.dat' BADFILE 'c:adfile.bad' REPLACE INTO TABLE t1 FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '°' ( ip1POSITION(1:2) CHAR, ip2POSITION(3:17) INTEGER EXTERNAL ":ip2/100", ip3POSITION(18:32) INTEGER EXTERNAL ":ip3/100", )
--sql version i am using SQL*Loader: Release 9.2.0.1.0 - Production on Wed Mar 7 18:32:33 2012 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
In the above mentioned data file, records has multiple special characters like '°','¶' ,'-'. All these special characters have some meaning. eg: '°' specifies the above column needs to be multiplied by -1 '¶' specifies the above column needs to be multiplied by -0.1
what changes need to be made in loader utility for the same? Also, will there be any change in the utility if I am using higher version of oracle?
Sl#Emp_noNameAddress 00101Tom1/B-XYZ street 00202Jon1/C-XYZ Street
Employee Datafile 001, 01, Tom, 1/B-XYZ street 002,02,Jon, 1/C-XYZ Street
Above is a sample data file. Now I would like to import the data into an Oracle table called employee using Oracle 9i SQL Loader utility. But the table has only 3 fields (Emp_no,Name & Address), so I would like to skip Sl# while loading data. I do not want to manually modify data file. How should I write .ctl file.
Sample .ctl file.
load data INFILE 'dataEmployee' BADFILE 'Employee.bad' DISCARDFILE 'Employee.dis' into table Employee fields terminated by ',' TRAILING NULLCOLS (Emp_no NULLIF Emp_no = BLANKS, Name NULLIF Name = BLANKS, Address NULLIF Address = BLANKS )
After exporting some data to excel, I noticed that on one row all the columns shifted over some. So I queried this record in the database and noticed that the ADDRESS field has some unknown characters at the end of it. They are little squares. I think they are TABS.
2630 LINDEN BLVD, APT. #8G(2 squares are in here)
ADDRESS_1 "TRIM(:ADDRESS_1)",
Besides trimming the data, is there some other function I can use to clean up the address further?
While importing dump to the new database, error occurred. Below are the errors -
ORA-02374: conversion error loading table "INS"."GENMST_FINANCIER_BRANCH" ORA-12899: value too large for column TXT_IFSC_CODE (actual: 19, maximum: 15) ORA-02372: data for row: TXT_IFSC_CODE : 0X'4644524C30303031353739A0A0A0A0' [code]...
I would like to know, why such error occurred during the import.
I want to load lakhs of records into a table. My problem is when after loading the ¼ of records my process is abend due to the size of my rollback segment area. I don't have an option to increase it. So, Is there any way to go for intermediate commits when I am using the imp or sqlldr utilities to load the entire data without abend?
I have taken an export using expdp of schema, data of the schema spread across different tablespaces , now i want to import the data to only one tablespace.
I am executing sqlldr from a UNIX shell script (HP box). The data I am loading is coming from a fixed length flat file. I also want to be able to pass a variable from the shell to the loader job to be loaded with the rest of the data into the oracle table. The value being passed will change with each execution of the shell script which is run on a daily basis.
I just want to insert only date without timestamp from the first field TXN_DATE. i.e., i just want 2010-05-18 in my table column.
my table desc is Name Null? Type ----------------------------------------- -------- --------- SEQID NUMBER(5) TXN_DATE NOT NULL DATE TXN_HOUR NOT NULL NUMBER(2) VID NOT NULL NUMBER(5) HID NOT NULL NUMBER(5)
i tried many combination but i couldn't achieve. right now i am able to get only the complete date with timestamp using the following control file.
APPEND INTO PERF_STATS FIELDS TERMINATED BY ',' optionally ENCLOSED BY '"' TRAILING NULLCOLS
I have a CSV file with 100 records and one of the column as FILE_ID. I want to load one unique number for all 100 recs not for every records.
suppose my sequence returns 3 as next val i want to load 3 for all 100 records. How to implement this in control file or sh file . I am using shell script to call sqlldr.
SQLLDR userid=userid/passwd@vpl01 control=OtherType.ctl log=OtherType.log bad=OtherType.bad SQL*Loader: Release 11.2.0.1.0 - Production on Sat Aug 25 13:32:42 2012 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. SQL*Loader-704: Internal error: ulconnect: OCIEnvCreate [-1]
If I provide full connection string, it gives syntax error:
sqlldr userid/passwd@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=orasrv)(PORT=1526))(CONNECT_DATA=(SID=vpl01))) control=OtherType.ctl log=OtherType.log bad=OtherType.bad LRM-00116: Message 116 not found; No message file for product=ORACORE, facility=LRM
[code]...
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
but it doesn't work if supplied following command:sqlplus userid/passwd@vpl01
SQL*Plus: Release 11.2.0.3.0 Production on Sat Aug 25 13:32:14 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. ERROR: ORA-12154: TNS:could not resolve the connect identifier specified
Enter user-name:
Even tnsping vpl01 gives error: TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 25-AUG-2012 09:14:40 Copyright (c) 1997, 2010, Oracle. All rights reserved. Used parameter files: