I am trying to change port of oracle xe 11g, as I am not able to open the link using default port 8080. I am getting below error.
SQL> Exec DBMS_XDB.SETHTTPPORT(3010);
BEGIN DBMS_XDB.SETHTTPPORT(3010); END;
*
ERROR at line 1:
ORA-31024: Parser initialization failed with LPX-54 error
while parsing a stream to XOB
ORA-06512: at "XDB.DBMS_XDB", line 516
ORA-06512: at "XDB.DBMS_XDB", line 645
ORA-06512: at line 1
Please help.
You should have run it connected as SYS or SYSTEM.
Related
I am trying to import a datapump dump file into a remote server via SQLPlus.
So, local machine -> remote oracle Server
Dump file is on local machine on a SMB share.
I have written a little script for that operation, however it fails with errors.
The Datapump Directory exists (SMB share on local machine, DIRECTORY is pointing to said share)
My script:
DECLARE
ind NUMBER; -- Loop index
h1 NUMBER; -- Data Pump job handle
percent_done NUMBER; -- Percentage of job complete
logfileName VARCHAR2(30);-- Name of the Logfile
job_state VARCHAR2(30); -- To keep track of job state
le ku$_LogEntry; -- For WIP and error messages
js ku$_JobStatus; -- The job status from get_status
jd ku$_JobDesc; -- The job description from get_status
sts ku$_Status; -- The status object returned by get_status
BEGIN
h1 := DBMS_DATAPUMP.OPEN('IMPORT','FULL',NULL,'IMPORT_XYDESCRIPTOR');
DBMS_DATAPUMP.ADD_FILE(h1,'dump.dmp','DPIMP_REMOTE',NULL,DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE,1);
DBMS_DATAPUMP.SET_PARAMETER(h1,'TABLE_EXISTS_ACTION','APPEND');
DBMS_DATAPUMP.START_JOB(h1);
[... more stuff...]
However I get the following error, when I execute that script as SYSDBA:
DECLARE
*
ERROR at line 1:
ORA-39001: invalid argument value
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4056
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4307
ORA-06512: at line 15
line 15 is this line:
DBMS_DATAPUMP.ADD_FILE(h1,'dump.dmp','DPIMP_REMOTE',NULL,DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE,1);
I don't really get why I get an invalid argument value error, the command is exactly as the Oracle wiki dictates.
Can someone help me on what I am doing wrong?
Maybe the thing I try isn't even possible?
I 'am trying to read and write files using utl_file package remotely but the oracle server cant read and write on other pc ,so i make a shared path on '\\adel-pc\test', and i want to read and write on that path but i get this error when reading :
SQL Error [29283] [99999]: ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 8
java.sql.SQLException: ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 8
and this error when writing :
SQL Error [29283] [99999]: ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 7
java.sql.SQLException: ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 7
and this is my code :
CREATE OR REPLACE DIRECTORY utl_test AS '\\10.10.60.11\test';
-- reading the file
DECLARE
p_dir varchar2(2000):='UTL_TEST';
p_file_name varchar2(2000):='IFD18021801IFEEDTL'; --file name
l_file UTL_FILE.file_type;
l_text varchar2(32767);
begin
l_file := UTL_FILE.fopen(p_dir,p_file_name,'r');
LOOP
UTL_FILE.get_line(l_file,l_text);
DBMS_OUTPUT.put_line(l_text);
END LOOP;
UTL_FILE.fclose(l_file);
EXCEPTION
WHEN UTL_FILE.invalid_operation THEN dbms_output.PUT_LINE('cannot open file invalid name');
WHEN UTL_FILE.read_error THEN dbms_output.PUT_LINE('cannot be read');
WHEN no_data_found THEN dbms_output.PUT_LINE('end of file');
UTL_FILE.fclose(l_file);
END;
--writing the file
declare
l_file UTL_FILE.file_type;
l_location varchar2(100) := 'UTL_TEST'; -- capital latter
l_filename varchar2(100) := 'am';
begin
l_file := UTL_FILE.fopen(l_location,l_filename,'w');
FOR i IN (SELECT * FROM hr.EMPLOYEES)
LOOP
UTL_FILE.PUT_LINE(l_file,i.EMPLOYEE_ID||' '||i.FIRST_NAME);
END LOOP;
UTL_FILE.fclose(l_file);
l_file := UTL_FILE.fopen(l_location,l_filename,'A');
UTL_FILE.PUT_LINE(l_file,'Additonal lines');
UTL_FILE.fclose(l_file);
END;
so my questions are:
could I write and read on the shared path or it cant be done using utl_file ?
why I am getting this error , knowing that I gave read & write permissions to that path.
I'd suggest you not to do it that way.
First of all, you're creating that procedure in SYS schema, which is - generally speaking - a bad idea. Leave SYS (and SYSTEM) alone; create your own user, grant it required privileges (CREATE SESSION, CREATE PROCEDURE and any other you might require), connect to it and then write code you want.
Why are you creating directories dynamically? That is a one-time job and should be done once, connected as SYS. Although you might have created those directories (it is a good idea to first DBMS_OUTPUT.PUT_LINE command you're about to execute, make sure it is correctly written and then actually run it), you did not grant READ nor WRITE privileges on them to anyone, so - nobody can use them but SYS and - as I've said above - don't use SYS for that.
Note that I'm not talking about operating system privileges, but Oracle ones, e.g.
grant read, write on directory some_dir to scott;
Finally, as of creating a directory on a computer that is not the database server: you should use UNC (Universal Naming Convention) and create a directory literally as \\adel-pc\test; it won't work if you map that directory on the server and use its drive letter.
As of the error itself, huh ... you posted several hundreds lines of code, it is little bit too much to debug just by looking at it, and we miss other objects you use. No idea, sorry.
finally the problem is solved ,the problem was in windows system privileges , I had to give full control permissions to the files ,so yes i can write and read on the shared path using utl_file .
I am trying to see if this file exists. But I'm getting this error message. I have already checked the privileges I got them. But this file is on the server side so is there something I am missing
DECLARE
vInHandle utl_file.file_type;
BEGIN
vInHandle := utl_file.fopen('IMG_UTL_DIR', 'image-file.csv', 'R');
IF utl_file.is_open(vInHandle) THEN
dbms_output.put_line('The File exists');
Else
dbms_output.put_line('The File not exists');
END IF;
END fopen;
Errors:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 5
If the file does not exist then you will get that error. With your code, when the file exists you will get:
anonymous block completed
The File exists
But when the file does not exist you will get:
Error report -
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 6
29283. 00000 - "invalid file operation"
*Cause: An attempt was made to read from a file or directory that does
not exist, or file or directory access was denied by the
operating system.
*Action: Verify file and directory access privileges on the file system,
and if reading, verify that the file exists.
Note the 'a file or directory that does not exist' part of the error description. You cannot test for the file's existence like this. As far as I'm aware there is no direct way to test for a file being there; you would have to attempt to open the file and catch the exception. For example:
DECLARE
vInHandle utl_file.file_type;
eNoFile exception;
PRAGMA exception_init(eNoFile, -29283);
BEGIN
BEGIN
vInHandle := utl_file.fopen('IMG_UTL_DIR', 'image-file.csv', 'R');
dbms_output.put_line('The File exists');
EXCEPTION
WHEN eNoFile THEN
dbms_output.put_line('The File not exists');
END;
END fopen;
/
anonymous block completed
The File not exists
But the ORA-29283 exception can mean other things as well, as the description says, so it doesn't necessarily mean the file is not there - it could be there but not accessible for some other (permission-related) reason. You would also be masking the location of the actual error to some extent, and if you had multiple file operations in the block then you'd either have to wrap each one in its own begin/exception/end sub-block to specify the error, or lose the actual error point.
You're probably better off just letting the exception be raised and reported naturally, rather than catching it and replacing it with a dbms_output message which might not be retrieved and displayed by the client anyway.
I'm having a MySQL dump from Version 4.0.21. I converted it to UTF-8 to fit with the special characters such as (Ü, ü, Ä, ä, Ö, ö, ß). Now I have to import it into the latest MySQL Version 5.5.36. All data have been imported but an error occurred at the end.
ERROR 1064 (42000) at line 80769: You have an error in your SQL syntax...use near '' at line 1
The empty string and the line numbers are confusing me. Importing with phpMyAdmin results the same as command line does, with the command:
mysql -u root -p bugtracker < E:\mantisUTF.dump
The import with the original dump from Version 4.0.21 is working perfect but without the above mentioned special characters.
First Lines of the dump file:
-- MySQL dump 9.11
--
-- Host: localhost Database: Mantis
-- ------------------------------------------------------
-- Server version 4.0.21-debug
--
-- Table structure for table `mantis_bug_file_table`
--
Last Lines (80768 & 80769):
INSERT INTO mantis_user_table VALUES (57,'fullName','firstName lastName','emailAdress','dd1875c93e8f17a24ebaf9c902b7165a','2014-01-29 13:43:21','2014-03-26 13:22:47',1,0,55,14,0,0,'1b886436b0c62598ab66e40ae89f0c016dc5777ebb601a73f2a07536281113ae'
Thanks in advance.
Relax
By rechecking my question i found the problem. The problem was a missing ')' at the end of the dump file.
Last line:
INSERT INTO mantis_user_table VALUES (57,'fullName','firstName lastName','emailAdress','dd1875c93e8f17a24ebaf9c902b7165a','2014-01-29 13:43:21','2014-03-26 13:22:47',1,0,55,14,0,0,'1b886436b0c62598ab66e40ae89f0c016dc5777ebb601a73f2a07536281113ae')
We are migrating a 10 years old JRun app to JBoss and are struggling with strange JDBC errors
for all of our stored procedure calls that are using SQL local temp table.
All stored procedures are working correctly in the JRun Server with micromedia jdbc driver.
Here is the one of our stack traces:
Invalid object name '#msgs'. -- a temp table inside the called stored procedure
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(): Line 216
com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(): Line 1515
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(): Line 404
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(): Line 350
com.microsoft.sqlserver.jdbc.TDSCommand.execute(): Line 5696
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(): Line 1715
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(): Line 180
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(): Line 155
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(): Line 285
org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(): Line 462
gov.ocda.cms2.control.violation.FormServlet.violationApproval(): Line 839
gov.ocda.cms2.control.violation.FormServlet.doPost(): Line 72
gov.ocda.cms2.core.CMSServlet.service(): Line 46
javax.servlet.http.HttpServlet.service(): Line 847
My question is why does Connection.prepareCall() return a org.jboss.jca.adapters.jdbc.WrappedPreparedStatement?
Is it related to the SQL exception being thrown from JDBC?
You are using the connection pooling / JCA resource adapter from JBoss. Connection pools and resource adapters wrap the Connection and other derived JDBC objects (like Statement) so it can control, restrict and monitor some of the normal JDBC behavior to ensure integrity of the connection pool, distributed transactions etc
This has nothing to do with the error you see.