ora2
Oracle在命令窗口ORA错误提示相关说明(下)
Oracle 使用PLSQL或sqlplus中脚本窗口和sql窗口提示ORA错误相关说明(下) 前言:在Oracle 使用PLSQL或sqlplus中脚本窗口和sql窗口等时候,我们需要输入sql语句或者Oracle自带的程序设置、脚本命令时候,一旦出现错误或者命令未结束,都会弹出相关提示,根据提示我在这里进行汇总。
我是HadesZ 相关计算机类学习可联系1107712415以下为ORA提示的相关记录,主要是从网站上收集汇总:ORA-20005:对象的统计数据都是锁着的说明:统计信息锁着,无法导入报错,大多由不同Oracle版本间EXP\IMP引起。
解决:待imp结束后,先执行DBMS_STATS.UNLOCK_TABLE_STATS('MID_SC','DM_OLD_FEATURE_VALUE');再analyze table即可。
ORA-22992: 无法使用从远程表选择的LOB 定位器说明:当通过DBLINK连接数据库,select的表有CLOB字段的时候,就会报这个错。
解决办法在数据库新建一张临时表把数据插进去。
ORA-22813:操作数值超出系统的限制说明:select wm_concat(TECH_OBJECT_NAME) TECH_OBJECT_NAME from PROD_EXPERIMENT_OBJECT@zwsc_gz,合并完之后TECH_OBJECT_NAME字段长度超过4000ORA-27101:shared memory realm does not existORA-25156:旧样式的外部联接(+)不能与ANSI联接一起使用说明:当新式外部联接(例如left join)和旧式外部联接(例如 a.g3e_fid = b.g3e_fid(+))一起使用,就会报此类错误。
解决:全部改为新式外部联接。
ORA-27486:权限不足ORA-28000:账号已被锁定解决1:alter profile default limit FAILED_LOGIN_ATTEMPTS 20;--设置为错误20次才锁定ORA-28002:the password will expire within 10 days.密码将在10天内到期。
ora2pg简单使用
ora2pg简单使⽤ora2pg是⼀款免费迁移⼯具,能将oracle迁移到pg,简单使⽤并记录过程如下环境:虚拟机 oracle linux 7.7oracle 11GR2 11.2.0.4pg 13.1Ora2Pg v21.01.安装ora2pg1.1ora2pg是Perl语⾔编写的,所以需要先安装相关环境依赖[root@localhost ~]$ yum install -y perl perl-ExtUtils-CBuilder perl-ExtUtils-MakeMakerLoaded plugins: langpacks, ulninfoResolving Dependencies--> Running transaction check---> Package perl.x86_64 4:5.16.3-294.el7_6 will be updated---> Package perl.x86_64 4:5.16.3-297.el7 will be an update(省略中间...)Dependency Installed:gdbm-devel.x86_64 0:1.10-8.el7 libdb-devel.x86_64 0:5.3.21-25.el7 perl-ExtUtils-Install.noarch 0:1.58-297.el7 perl-ExtUtils-Manifest.noarch 0:1.61-244.el7perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7 perl-IPC-Cmd.noarch 1:0.80-4.el7 perl-Locale-Maketext.noarch 0:1.23-3.el7 perl-Locale-Maketext-Simple.noarch 1:0.21-297.el7perl-Module-CoreList.noarch 1:2.76.02-297.el7 perl-Module-Load.noarch 1:0.24-3.el7 perl-Module-Load-Conditional.noarch 0:0.54-3.el7 perl-Module-Metadata.noarch 0:1.000018-2.el7 perl-Params-Check.noarch 1:0.38-2.el7 perl-Perl-OSType.noarch 0:1.003-3.el7 perl-Test-Harness.noarch 0:3.28-3.el7 perl-devel.x86_64 4:5.16.3-297.el7perl-version.x86_64 3:0.99.07-6.el7 pyparsing.noarch 0:1.5.6-9.el7 systemtap-sdt-devel.x86_64 0:4.0-13.0.1.el7Updated:perl.x86_64 4:5.16.3-297.el7Dependency Updated:perl-libs.x86_64 4:5.16.3-297.el7Complete![root@localhost ~]$1.2DBI,Database Independent Interface,是Perl语⾔连接数据库的接⼝然后解压安装[root@localhost /usr/local]$ tar -xzvf DBI-1.643.tar.gz[root@localhost /usr/local/DBI-1.643]$ cd DBI-1.643/[root@localhost /usr/local/DBI-1.643]$ perl Makefile.PL[root@localhost /usr/local/DBI-1.643]$ make[root@localhost /usr/local/DBI-1.643]$ make install1.3添加环境变量export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1export PATH=$PATH:$ORACLE_HOME/binexport LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/dbhome_1/lib[root@localhost /usr/local/DBD-Oracle-1.74]$ tar -zxvf DBD-Oracle-1.74.tar.gz[root@localhost /usr/local/DBD-Oracle-1.74]$ cd DBD-Oracle-1.74/[root@localhost /usr/local/DBD-Oracle-1.74]$ perl Makefile.PL[root@localhost /usr/local/DBD-Oracle-1.74]$ make[root@localhost /usr/local/DBD-Oracle-1.74]$ make install1.4[root@localhost /usr/local]$ cd DBD-Pg-3.14.2/[root@localhost /usr/local]$ perl Makefile.PL[root@localhost /usr/local]$ make[root@localhost /usr/local]$ make install1.5[root@localhost /usr/local]$ cd ora2pg-21.0/[root@localhost /usr/local/ora2pg-21.0]$ lschangelog doc INSTALL lib LICENSE Makefile.PL MANIFEST packaging README scripts[root@localhost /usr/local/ora2pg-21.0]$ perl Makefile.PLChecking if your kit is complete...Looks goodWriting Makefile for Ora2PgDone...------------------------------------------------------------------------------Please read documentation at / before asking for help------------------------------------------------------------------------------Now type: make && make install[root@localhost /usr/local/ora2pg-21.0]$ makecp lib/Ora2Pg.pm blib/lib/Ora2Pg.pmcp lib/Ora2Pg/GEOM.pm blib/lib/Ora2Pg/GEOM.pmcp lib/Ora2Pg/PLSQL.pm blib/lib/Ora2Pg/PLSQL.pmcp lib/Ora2Pg/MySQL.pm blib/lib/Ora2Pg/MySQL.pmcp scripts/ora2pg blib/script/ora2pg/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ora2pgcp scripts/ora2pg_scanner blib/script/ora2pg_scanner/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ora2pg_scannerManifying blib/man3/ora2pg.3[root@localhost /usr/local/ora2pg-21.0]$ make installInstalling /usr/local/share/perl5/Ora2Pg.pmInstalling /usr/local/share/perl5/Ora2Pg/GEOM.pmInstalling /usr/local/share/perl5/Ora2Pg/PLSQL.pmInstalling /usr/local/share/perl5/Ora2Pg/MySQL.pmInstalling /usr/local/share/man/man3/ora2pg.3Installing /usr/local/bin/ora2pgInstalling /usr/local/bin/ora2pg_scannerInstalling default configuration file (ora2pg.conf.dist) to /etc/ora2pgAppending installation info to /usr/lib64/perl5/perllocal.pod[root@localhost /usr/local/ora2pg-21.0]$1.6[root@localhost ~]$ cat check.pl#!/usr/bin/perluse strict;use ExtUtils::Installed;my $inst=ExtUtils::Installed->new();my @modules = $inst->modules();foreach(@modules){my $ver = $inst->version($_) || "";printf("%-12s -- %s\n",$_,$ver);}exit;[root@localhost ~]$ perl check.plDBD::Oracle -- 1.74DBD::Pg -- 3.14.2DBI -- 1.643Ora2Pg -- 21.0Perl -- 5.16.3测试⼀下[root@localhost ~]$ cat ora2pg_table.confORACLE_HOME /u01/app/oracle/product/11.2.0/dbhome_1ORACLE_DSN dbi:Oracle:host=192.168.168.3;sid=orclORACLE_USER sysORACLE_PWD oracleSCHEMA scottTYPE TABLEPG_NUMERIC_TYPE 0PG_INTEGER_TYPE 1DEFAULT_NUMERIC floatSKIP fkeys pkeys ukeys indexes checksNLS_LANG AMERICAN_AMERICA.UTF8OUTPUT /root/ora2pg/table.sql[root@localhost ~]$ ora2pg -t SHOW_VERSION -c ora2pg_table.confWARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0[root@localhost ~]$2. 简单使⽤oracle以scott这个schema为例,做迁移2.12.1.1 编写配置⽂件创建ora2pg_table.conf,导出表结构的配置⽂件,内容见测试部分创建ora2pg_data.conf,导出数据,内容如下[root@localhost ~]$ cat ora2pg_data.confORACLE_HOME /u01/app/oracle/product/11.2.0/dbhome_1ORACLE_DSN dbi:Oracle:host=192.168.168.3;sid=orclORACLE_USER systemORACLE_PWD oracleSCHEMA scottTYPE COPYPG_NUMERIC_TYPE 0PG_INTEGER_TYPE 1DEFAULT_NUMERIC floatSKIP fkeys pkeys ukeys indexes checksNLS_LANG AMERICAN_AMERICA.UTF8OUTPUT /root/ora2pg/data.sql[root@localhost ~]$2.1.2 导出数据执⾏导出命令,导出表结构和数据[root@localhost ~]$ ora2pg -c ora2pg_table.confWARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11 [========================>] 4/4 tables (100.0%) end of scanning.[========================>] 4/4 tables (100.0%) end of table export.Fixing function calls in output files...[root@localhost ~]$ ora2pg -c ora2pg_data.confWARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11 [========================>] 4/4 tables (100.0%) end of scanning.[========================>] 0/0 rows (100.0%) Table BONUS (0 recs/sec)[> ] 0/23 total rows (0.0%) - (0 sec., avg: 0 recs/sec).[========================>] 4/4 rows (100.0%) Table DEPT (4 recs/sec)[====> ] 4/23 total rows (17.4%) - (0 sec., avg: 4 recs/sec).[========================>] 14/14 rows (100.0%) Table EMP (14 recs/sec)[==================> ] 18/23 total rows (78.3%) - (0 sec., avg: 18 recs/sec).[========================>] 5/5 rows (100.0%) Table SALGRADE (5 recs/sec)[========================>] 23/23 total rows (100.0%) - (0 sec., avg: 23 recs/sec).[========================>] 23/23 rows (100.0%) on total estimated data (1 sec., avg: 23 recs/sec) Fixing function calls in output files...查看导出的sql[root@localhost ~]$ cd ora2pg/[root@localhost ~/ora2pg]$ lsdata.sql table.sql[root@localhost ~/ora2pg]$ cat table.sql-- Generated by Ora2Pg, the Oracle database Schema converter, version 21.0-- Copyright 2000-2020 Gilles DAROLD. All rights reserved.-- DATASOURCE: dbi:Oracle:host=192.168.168.3;sid=orclSET client_encoding TO 'UTF8';\set ON_ERROR_STOP ONSET check_function_bodies = false;CREATE TABLE bonus (ename varchar(10),job varchar(9),sal float,comm float) ;CREATE TABLE dept (deptno smallint NOT NULL,dname varchar(14),loc varchar(13)) ;CREATE TABLE emp (empno smallint NOT NULL,ename varchar(10),job varchar(9),mgr smallint,hiredate timestamp,sal decimal(7,2),comm decimal(7,2),deptno smallint) ;CREATE TABLE salgrade (grade float,losal float,hisal float) ;[root@localhost ~/ora2pg]$ cat data.sqlBEGIN;COPY bonus (ename,job,sal,comm) FROM STDIN;\.COPY dept (deptno,dname,loc) FROM STDIN;10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON\.COPY emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) FROM STDIN; 7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 \N 207499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 \N 207654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30 7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 \N 307782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 \N 107788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 \N 207839 KING PRESIDENT \N 1981-11-17 00:00:00 5000 \N 10 7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 \N 207900 JAMES CLERK 7698 1981-12-03 00:00:00 950 \N 307902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 \N 207934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 \N 10\.COPY salgrade (grade,losal,hisal) FROM STDIN;1 700 12002 1201 14003 1401 20004 2001 30005 3001 9999\.COMMIT;[root@localhost ~/ora2pg]$2.1.3 导⼊到pg[root@localhost ~/ora2pg]$ psql postgres postgres -f table.sqlSETSETCREATE TABLECREATE TABLECREATE TABLECREATE TABLE[root@localhost ~/ora2pg]$ psql postgres postgres -f data.sqlBEGINCOPY 0COPY 4COPY 14COPY 5COMMIT⽤navicat查看表和表中数据是否已经在pg中存在表结构和表数据迁移过去了2.2oracle建⽴测试视图类似迁移表,配置⽂件的type改为VIEW即可oracle的scott⽤户下没有视图,我创建个测试视图[oracle@localhost ~]$ sqlplus scott/tigerSQL*Plus: Release 11.2.0.4.0 Production on Tue Dec 22 11:10:06 2020 Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 11:10:06 SCOTT@orcl> create or replace view view_test as11:10:16 2 select b.dname,sum(a.sal) sal11:10:16 3 from emp a11:10:16 4 join dept b on a.deptno=b.deptno11:10:16 5 group by b.dname;View created.Elapsed: 00:00:00.0111:10:18 SCOTT@orcl> select * from view_test;DNAME SAL-------------- ----------ACCOUNTING 8750RESEARCH 10875SALES 9400Elapsed: 00:00:00.0011:10:28 SCOTT@orcl>编辑配置⽂件并迁移过程如下[root@localhost ~]$ cat ora2pg_view.confORACLE_HOME /u01/app/oracle/product/11.2.0/dbhome_1ORACLE_DSN dbi:Oracle:host=192.168.168.3;sid=orclORACLE_USER sysORACLE_PWD oracleSCHEMA scottTYPE VIEWPG_NUMERIC_TYPE 0PG_INTEGER_TYPE 1DEFAULT_NUMERIC floatSKIP fkeys pkeys ukeys indexes checksNLS_LANG AMERICAN_AMERICA.UTF8OUTPUT /root/ora2pg/view.sql[root@localhost ~]$ ora2pg -c ora2pg_view.confWARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11 [========================>] 1/1 views (100.0%) end of output.Fixing function calls in output files...[root@localhost ~]$ cd ora2pg/[root@localhost ~/ora2pg]$ lsdata.sql table.sql view.sql[root@localhost ~/ora2pg]$ cat view.sql-- Generated by Ora2Pg, the Oracle database Schema converter, version 21.0-- Copyright 2000-2020 Gilles DAROLD. All rights reserved.-- DATASOURCE: dbi:Oracle:host=192.168.168.3;sid=orclSET client_encoding TO 'UTF8';\set ON_ERROR_STOP ONSET check_function_bodies = false;CREATE OR REPLACE VIEW view_test (dname, sal) AS SELECT b.dname,sum(a.sal) salFROM emp ajoin dept b on a.deptno=b.deptnogroup by b.dname;[root@localhost ~/ora2pg]$ psql postgres postgres -f view.sqlSETSETCREATE VIEW到pg中查看已经有了这个视图了2.32.3.1 oracle建⽴测试存储过程14:15:29 SYS@orcl> conn scott/tiger;Connected.14:15:37 SCOTT@orcl> CREATE OR REPLACE PROCEDURE p_jsq_test as14:15:39 2 begin14:15:39 3 insert into emp(empno,ename) values ('1','king');14:15:39 4 commit;14:15:39 5 end;14:15:45 6 /Procedure created.Elapsed: 00:00:00.0214:15:46 SCOTT@orcl>2.3.2 迁移过程[root@localhost ~]$ cat ora2pg_procedure.confORACLE_HOME /u01/app/oracle/product/11.2.0/dbhome_1ORACLE_DSN dbi:Oracle:host=192.168.168.3;sid=orclORACLE_USER sysORACLE_PWD oracleSCHEMA scottTYPE PROCEDUREPG_NUMERIC_TYPE 0PG_INTEGER_TYPE 1DEFAULT_NUMERIC floatSKIP fkeys pkeys ukeys indexes checksNLS_LANG AMERICAN_AMERICA.UTF8OUTPUT /root/ora2pg/procedure.sql[root@localhost ~]$ ora2pg -c ora2pg_procedure.confWARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11 [========================>] 1/1 procedures (100.0%) end of procedures export.Fixing function calls in output files...[root@localhost ~]$ cd ora2pg/[root@localhost ~/ora2pg]$ lsdata.sql procedure.sql table.sql view.sql[root@localhost ~/ora2pg]$ cat procedure.sql-- Generated by Ora2Pg, the Oracle database Schema converter, version 21.0-- Copyright 2000-2020 Gilles DAROLD. All rights reserved.-- DATASOURCE: dbi:Oracle:host=192.168.168.3;sid=orclSET client_encoding TO 'UTF8';\set ON_ERROR_STOP ONSET check_function_bodies = false;CREATE OR REPLACE PROCEDURE p_jsq_test () AS $body$BEGINinsert into emp(empno,ename) values ('1','king');commit;end;$body$LANGUAGE PLPGSQLSECURITY DEFINER;-- REVOKE ALL ON PROCEDURE p_jsq_test () FROM PUBLIC;[root@localhost ~/ora2pg]$ psql postgres postgres -f procedure.sqlSETSETCREATE PROCEDURE[root@localhost ~/ora2pg]$迁移到pg就变成函数了其他object迁移⽅法类似,就不⼀⼀体验了2.4ora2pg将检查所有object来估算迁移成本和难易程度[root@localhost ~]$ ora2pg -t SHOW_REPORT --estimate_cost -c ora2pg_data.confWARNING: target PostgreSQL version must be set in PG_VERSION configuration directive. Using default: 11[========================>] 4/4 tables (100.0%) end of scanning.[========================>] 8/8 objects types (100.0%) end of objects auditing.-------------------------------------------------------------------------------Ora2Pg v21.0 - Database Migration Report-------------------------------------------------------------------------------Version Oracle Database 11g Enterprise Edition Release 11.2.0.4.0Schema SCOTTSize 0.31 MB-------------------------------------------------------------------------------Object Number Invalid Estimated cost Comments Details-------------------------------------------------------------------------------DATABASE LINK 0 0 0.00 Database links will be exported as SQL/MED PostgreSQL's Foreign Data Wrapper (FDW) extensions using oracle_fdw.GLOBAL TEMPORARY TABLE 0 0 0.00 Global temporary table are not supported by PostgreSQL and will not be exported. You will have to rewrite some application code to match the PostgreSQL temporary table INDEX 2 0 1.20 2 index(es) are concerned by the export, others are automatically generated and will do so on PostgreSQL. Bitmap will be exported as btree_gin index(es). Domain index are exported as b-tree bu JOB 0 0 0.00 Job are not exported. You may set external cron job with them.PROCEDURE 1 0 4.00 Total size of procedure code: 96 bytes. p_jsq_test: 3.SYNONYM 0 0 0.00 SYNONYMs will be exported as views. SYNONYMs do not exists with PostgreSQL but a common workaround is to use views or set the PostgreSQL search_path in your session to access objec TABLE 4 0 1.00 Total number of rows: 23. Top 10 of tables sorted by number of rows:. emp has 14 rows. salgrade has 5 rows. dept has 4 rows. bonus has 0 rows. Top 10 of largest tables:.VIEW 1 0 1.00 Views are fully supported but can use specific functions.-------------------------------------------------------------------------------Total 8 0 7.20 7.20 cost migration units means approximatively 1 man-day(s). The migration unit was set to 5 minute(s)-------------------------------------------------------------------------------Migration level : A-3-------------------------------------------------------------------------------Migration levels:A - Migration that might be run automaticallyB - Migration with code rewrite and a human-days cost up to 5 daysC - Migration with code rewrite and a human-days cost above 5 daysTechnical levels:1 = trivial: no stored functions and no triggers2 = easy: no stored functions but with triggers, no manual rewriting3 = simple: stored functions and/or triggers, no manual rewriting4 = manual: no stored functions but with triggers or views with code rewriting5 = difficult: stored functions and/or triggers with code rewriting-------------------------------------------------------------------------------Details of cost assessment per functionFunction p_jsq_test total estimated cost: 3TEST => 2SIZE => 1-------------------------------------------------------------------------------[root@localhost ~]$从上述结果看出来scott这个schema迁移到pg属于⽐较简单,迁移成本低的。
oracle操作常见错误
1.[Err] ORA-02438: Column check constraint cannot reference other columnsORA-02438: 列检查约束条件无法引用其它列--通常可能是constraint 拼写错误2. [Err] ORA-02250: missing or invalid constraint name约束条件名缺失或者无效。
比如:alter table tbl_schooladd s_level number(7) constraint unique; //错误的====add s_level number(7) unique; 正确的4. [Err] ORA-01861: literal does not match format stringORA-01861: 文字与格式字符串不匹配比如:insert into tbl_school(id,s_name,address,establish_time,style)values(1,'清华','北京','1976-05-05','理');日期的输入,要有固定的格式=====values(1,'清华','北京',to_date('1976-05-01','rrrr-mm-dd'),'理');5:select index_name,table_name from user_indexesWhere table_name=’s_emp’;提示错误:为选定行。
‘’里面的就变成了字符串,是区分大小写的,select index_name,table_name from user_indexesWhere table_name=’S_EMP’;6:Ora-02290【】违反检查约束条件可能原因:check里面出错,在传值的时候,出现乱码了,只能重建表7.A.number类型如果是后面带小数点的呢,最好在实体类里面做一下转化。
oracle数据库中ora-报错原因及处理
ORA-00214 控制文件''版本与文件''版本不一致 ORA-00215 必须至少存在一个控制文件 ORA-00216 无法重新调整从8.0.2移植的控制文件大小 ORA-00217 从9.0.1进行移植无法重新调整控制文件的大小 ORA-00218 控制文件的块大小与DB_BLOCK_SIZE()不匹配 ORA-00219 要求的控制文件大小超出了允许的最大值 ORA-00220 第一个例程未安装控制文件,有关详情,请检查警告日志 ORA-00221 写入控制文件出错 ORA-00222 操作将重新使用当前已安装控制文件的名称 ORA-00223 转换文件无效或版本不正确 ORA-00224 控制文件重设大小尝试使用非法记录类型() ORA-00225 控制文件的预期大小与实际大小不同 ORA-00226 备用控制文件打开时不允许进行操作 ORA-00227 控制文件中检测到损坏的块:(块,#块) ORA-00228 备用控制文件名长度超出了最大长度 ORA-00229 操作不允许:已挂起快照控制文件入队 ORA-00230 操作不允许:无法使用快照控制文件入队 ORA-00231 快照控制文件未命名 ORA-00232 快照控制文件不存在,已损坏或无法读取 ORA-00233 控制文件副本已损坏或无法读取 ORA-00234 标识或打开快照或复制控制文件时出错 ORA-00235 控制文件固定表因并发更新而不一致 ORA-00236 快照操作不允许:挂上的控制文件为备份文件 ORA-00237 快照操作不允许:控制文件新近创建 ORA-00238 操作将重用属于数据库一部分的文件名 ORA-00250 未启动存档器 ORA-00251 LOG_ARCHIVE_DUPLEX_DEST不能是与字符串相同的目的地 ORA-00252 日志在线程上为空,无法存档 ORA-00253 字符限制在以内,归档目的字符串超出此限制 ORA-00254 存档控制字符串''时出错 ORA-00255 存档日志(线程,序列#)时出错 ORA-00256 无法翻译归档目的字符串 ORA-00257 存档器错误。在释放之前仅限于内部连接 ORA-00258 NOARCHIVELOG模式下的人工存档必须标识日志 ORA-00259 日志(打开线程)为当前日志,无法存档 ORA-00260 无法找到联机日志序列(线程) ORA-00261 正在存档或修改日志(线程)
ORA_常见错误
ORA-00001: 违反唯一约束条件(.)ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数ORA-00019: 超出最大会话许可数ORA-00020: 超出最大进程数()ORA-00021: 会话附属于其它某些进程;无法转换会话ORA-00022: 无效的会话ID;访问被拒绝ORA-00023: 会话引用进程私用内存;无法分离会话ORA-00024: 单一进程模式下不允许从多个进程注册ORA-00025: 无法分配ORA-00026: 丢失或无效的会话IDORA-00027: 无法删去当前会话ORA-00028: 您的会话己被删去ORA-00029: 会话不是用户会话ORA-00030: 用户会话ID 不存在。
ORA-00031: 标记要删去的会话ORA-00032: 无效的会话移植口令ORA-00033: 当前的会话具有空的移植口令ORA-00034: 无法在当前PL/SQL 会话中ORA-00035: LICENSE_MAX_USERS 不能小于当前用户数ORA-00036: 超过递归SQL () 级的最大值ORA-00037: 无法转换到属于不同服务器组的会话ORA-00038: 无法创建会话: 服务器组属于其它用户ORA-00050: 获取入队时操作系统出错ORA-00051: 等待资源超时ORA-00052: 超出最大入队资源数()ORA-00053: 超出最大入队数ORA-00054: 资源正忙,要求指定NOWAITORA-00055: 超出DML 锁的最大数ORA-00056: 对象'.' 上的DDL 锁以不兼容模式挂起ORA-00057: 超出临时表锁的最大数ORA-00058: DB_BLOCK_SIZE 必须为才可安装此数据库(非) ORA-00059: 超出DB_FILES 的最大值ORA-00060: 等待资源时检测到死锁ORA-00061: 另一个例程设置了不同的DML_LOCKSORA-00062: 无法获得DML 全表锁定;DML_LOCKS 为0 ORA-00063: 超出LOG_FILES 的最大数ORA-00064: 对象过大以至无法分配在此O/S (,)ORA-00065: FIXED_DATE 的初始化失败ORA-00066: LOG_FILES 为但需要成为才可兼容ORA-00067: 值对参数无效;至少必须为ORA-00068: 值对参数无效,必须在和之间ORA-00069: 无法获得锁定-- 禁用了表锁定ORA-00070: 命令无效ORA-00071: 进程号必须介于1 和之间ORA-00072: 进程""不活动ORA-00073: 命令介于和个参数之间时使用ORA-00074: 未指定进程ORA-00075: 在此例程未找到进程""ORA-00076: 未找到转储ORA-00077: 转储无效ORA-00078: 无法按名称转储变量ORA-00079: 未找到变量ORA-00080: 层次指定的全局区域无效ORA-00081: 地址范围[,) 不可读ORA-00082: 的内存大小不在有效集合[1], [2], [4] 之内ORA-00083: 警告: 可能损坏映射的SGAORA-00084: 全局区域必须为PGA, SGA 或UGAORA-00085: 当前调用不存在ORA-00086: 用户调用不存在ORA-00087: 命令无法在远程例程上执行ORA-00088: 共享服务器无法执行命令ORA-00089: ORADEBUG 命令中无效的例程号ORA-00090: 未能将内存分配给群集数据库ORADEBUG 命令ORA-00091: LARGE_POOL_SIZE 至少必须为ORA-00092: LARGE_POOL_SIZE 必须大于LARGE_POOL_MIN_ALLOC ORA-00093: 必须介于和之间ORA-00094: 要求整数值ORA-00096: 值对参数无效,它必须来自之间ORA-00097: 使用Oracle SQL 特性不在SQL92 级中ORA-00099: 等待资源时发生超时,可能是PDML 死锁所致ORA-00100: 未找到数据ORA-00101: 系统参数DISPATCHERS 的说明无效ORA-00102: 调度程序无法使用网络协议ORA-00103: 无效的网络协议;供调度程序备用ORA-00104: 检测到死锁;全部公用服务器已锁定等待资源ORA-00105: 未配置网络协议的调度机制ORA-00106: 无法在连接到调度程序时启动/关闭数据库ORA-00107: 无法连接到ORACLE 监听器进程ORA-00108: 无法设置调度程序以同步进行连接ORA-00111: 由于服务器数目限制在, 所以没有启动所有服务器ORA-00112: 仅能创建多达(最多指定) 个调度程序ORA-00113: 协议名过长ORA-00114: 缺少系统参数SERVICE_NAMES 的值ORA-00115: 连接被拒绝;调度程序连接表已满ORA-00116: SERVICE_NAMES 名过长ORA-00117: 系统参数SERVICE_NAMES 的值超出范围ORA-00118: 系统参数DISPATCHERS 的值超出范围ORA-00119: 系统参数的说明无效ORA-00120: 未启用或安装调度机制ORA-00121: 在缺少DISPATCHERS 的情况下指定了SHARED_SERVERS ORA-00122: 无法初始化网络配置ORA-00123: 空闲公用服务器终止ORA-00124: 在缺少MAX_SHARED_SERVERS 的情况下指定了DISPATCHERS ORA-00125: 连接被拒绝;无效的演示文稿ORA-00126: 连接被拒绝;无效的重复ORA-00127: 调度进程不存在ORA-00128: 此命令需要调度进程名ORA-00129: 监听程序地址验证失败''ORA-00130: 监听程序地址'' 无效ORA-00131: 网络协议不支持注册''ORA-00132: 语法错误或无法解析的网络名称''ORA-00150: 重复的事务处理IDORA-00151: 无效的事务处理IDORA-00152: 当前会话与请求的会话不匹配ORA-00153: XA 库中的内部错误ORA-00154: 事务处理监视器中的协议错误ORA-00155: 无法在全局事务处理之外执行工作ORA-00160: 全局事务处理长度超出了最大值()ORA-00161: 事务处理的分支长度非法(允许的最大长度为)ORA-00162: 外部dbid 的长度超出了最大值()ORA-00163: 内部数据库名长度超出了最大值()ORA-00164: 在分布式事务处理中不允许独立的事务处理ORA-00165: 不允许对远程操作进行可移植分布式自治转换ORA-00200: 无法创建控制文件ORA-00201: 控制文件版本与ORACLE 版本不兼容ORA-00202: 控制文件: ''ORA-00203: 使用错误的控制文件ORA-00204: 读控制文件时出错(块,# 块)ORA-00205: 标识控制文件出错,有关详情,请检查警告日志ORA-00206: 写控制文件时出错(块,# 块)ORA-00207: 控制文件不能用于同一数据库ORA-00208: 控制文件的名称数超出限制ORA-00209: 控制文件块大小不匹配,有关详情,请检查警告日志ORA-00210: 无法打开指定的控制文件ORA-00211: 控制文件与先前的控制文件不匹配ORA-00212: 块大小低于要求的最小大小( 字节)ORA-00213: 不能重新使用控制文件;原文件大小为,还需ORA-00214: 控制文件'' 版本与文件'' 版本不一致ORA-00215: 必须至少存在一个控制文件ORA-00216: 无法重新调整从8.0.2 移植的控制文件大小ORA-00217: 从9.0.1 进行移植无法重新调整控制文件的大小ORA-00218: 控制文件的块大小与DB_BLOCK_SIZE () 不匹配ORA-00219: 要求的控制文件大小超出了允许的最大值ORA-00220: 第一个例程未安装控制文件,有关详情,请检查警告日志ORA-00221: 写入控制文件出错ORA-00222: 操作将重新使用当前已安装控制文件的名称ORA-00223: 转换文件无效或版本不正确ORA-00224: 控制文件重设大小尝试使用非法记录类型()ORA-00225: 控制文件的预期大小与实际大小不同ORA-00226: 备用控制文件打开时不允许进行操作ORA-00227: 控制文件中检测到损坏的块: (块,# 块)ORA-00228: 备用控制文件名长度超出了最大长度ORA-00229: 操作不允许: 已挂起快照控制文件入队ORA-00230: 操作不允许: 无法使用快照控制文件入队ORA-00231: 快照控制文件未命名ORA-00232: 快照控制文件不存在, 已损坏或无法读取ORA-00233: 控制文件副本已损坏或无法读取ORA-00234: 标识或打开快照或复制控制文件时出错ORA-00235: 控制文件固定表因并发更新而不一致ORA-00236: 快照操作不允许: 挂上的控制文件为备份文件ORA-00237: 快照操作不允许: 控制文件新近创建ORA-00238: 操作将重用属于数据库一部分的文件名ORA-00250: 未启动存档器ORA-00251: LOG_ARCHIVE_DUPLEX_DEST 不能是与字符串相同的目的地ORA-00252: 日志在线程上为空,无法存档ORA-00253: 字符限制在以内,归档目的字符串超出此限制ORA-00254: 存档控制字符串'' 时出错ORA-00255: 存档日志(线程, 序列# ) 时出错ORA-00256: 无法翻译归档目的字符串ORA-00257: 存档器错误。
ORA-02290:违反检查约束条件
ORA-02290:违反检查约束条件最近在执⾏数据归档的存储过程的时候,总是抛出以下异常信息:ORA-02290: check constraint (BZFZ_YC_IA.SYS_C0091946) violated。
这个异常很奇怪,之前没遇到过,⽽且SYS_C0091946在plsql developer中也找不到,猜测可能是有字段不能为空造成的。
但是根据经验字段不能为空应该抛出ORA-01400: cannot insert NULL into ("BZFZ_YC_IA"."HIS_CASE_INFO"."BILLING_STATUS")的异常,⽽且在plsql developer中查看,该字段确实是可为空的,⽽且也没有任何约束。
⼀直纠结了半天,才在⽹上找到⼀些相关信息。
⾸先,oracle数据库的约束有五种类型: 1、主键约束( Primary key, 简称 PK)、 2、⾮空约束( not null , 简称 NN ) 、 3、唯⼀约束( Unique , 简称 UK ) 、4、检查约束( Check , 简称 CK ) 、 5、外键( Foreign key, 简称 FK )。
这⾥的check应该是检查约束。
要确定约束在哪⼀字段上,使⽤sql:select * from user_constraints where table_name='TABLENAME';SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME='TABLENAME';找到SYS_C0091946,删掉即可:ALTER TABLE TABLENAME DROP CONSTRAINT SYS_C0091946。
Oracle错误一览表2
ORA-02201: 此处不允许序列(号)ORA-02202: 此群集中不允许添加其它表ORA-02203: 不允许的INITIAL 存储选项ORA-02204: 不允许ALTER, INDEX 和EXECUTE 用于视图ORA-02205: 只有SELECT 和ALTER 权限对序列有效ORA-02206: 重复的INITRANG 选项说明ORA-02207: 无效的INITRANS 选项值ORA-02208: 重复的MAXTRANS 选项说明ORA-02209: 无效的MAXTRANS 选项值ORA-02210: 未指定ALTER TABLE 的选项ORA-02211: 无效的PCTFREE 或PCTUSED 值ORA-02212: 重复的PCTFREE 选项说明ORA-02213: 重复的PCTUSED 选项说明ORA-02214: 重复的BACKUP 选项说明ORA-02215: 重复的表空间名子句ORA-02216: 需要表空间名ORA-02217: 重复的存储选项说明ORA-02218: 无效的INITIAL 存储选项值ORA-02219: 无效的NEXT 存储选项值ORA-02220: 无效的MINEXTENTS 存储选项值ORA-02221: 无效的MAXEXTENTS 存储选项值ORA-02222: 无效的PCTINCREASE 存储选项值ORA-02223: 无效的OPTIMAL 存储选项值ORA-02224: EXECUTE 权限对于表不允许ORA-02225: 只有EXECUTE 和DEBUG 权限对过程有效ORA-02226: 无效的MAXEXTENTS 值(最大允许为: )ORA-02227: 无效的群集名ORA-02228: 重复的SIZE 说明ORA-02229: 无效的SIZE 选项值ORA-02230: 无效的ALTER CLUSTER 选项ORA-02231: 缺少或无效的ALTER DA TABASE 选项ORA-02232: 无效的MOUNT 模式ORA-02233: 无效的CLOSE 模式ORA-02234: 已经记录对此表的更改ORA-02235: 此表已将更改记录在另一表中ORA-02236: 无效的文件名ORA-02237: 无效的文件大小ORA-02238: 文件名列表具有不同的文件数ORA-02239: 存在引用此序列的对象ORA-02240: 无效的OBJNO 或TABNO 值ORA-02241: 必须是EXTENTS (FILE <n> BLOCK <n> SIZE <n>,...) 格式ORA-02242: 未指定ALTER INDEX 的选项ORA-02243: ALTER INDEX 或ALTER MATERIALIZED VIEW 选项无效ORA-02244: 无效的ALTER ROLLBACK SEGMENT 选项ORA-02245: 无效的ROLLBACK SEGMENT 名ORA-02246: 缺少EVENTS 文本ORA-02247: 未指定ALTER SESSION 的选项ORA-02248: 无效的ALTER SESSION 选项ORA-02249: 缺少或无效的MAXLOGMEMBERS 值ORA-02250: 缺少或无效的约束条件名ORA-02251: 此处不允许子查询ORA-02252: 检查未正确结束的约束条件ORA-02253: 此处不允许约束条件说明ORA-02254: 此处不允许DEFAULT <表达式>ORA-02255: obsolete 7.1.5ORA-02256: 要引用的列数必须与已引用道感数匹配ORA-02257: 超出最大列数ORA-02258: 重复或冲突的NULL 和(或)NOT NULL 说明ORA-02259: 重复的UNIQUE/PRIMARY KEY 说明ORA-02260: 表只能具有一个主键ORA-02261: 表中已存在这样的唯一关键字或主键ORA-02262: 对列默认值表达式进行类型检查时, 出现ORA- ORA-02263: 需要指定此列的数据类型ORA-02264: 名称已被一现有约束条件占用ORA-02265: 无法推导引用列的数据类型ORA-02266: 表中的唯一/主键被启用的外部关键字引用ORA-02267: 列类型与引用的列类型不兼容ORA-02268: 引用的表不具有主键ORA-02269: 关键字列不能是LONG 数据类型ORA-02270: 此列列表的唯一或主键不匹配ORA-02271: 表没有这样的约束条件ORA-02272: 约束条件列不能是LONG 数据类型ORA-02273: 此唯一/主键已被某些外部关键字引用ORA-02274: 重复的引用约束条件说明ORA-02275: 此表中已经存在这样的引用约束条件ORA-02276: 默认值类型与列类型不兼容ORA-02277: 无效的序列名ORA-02278: 重复或冲突的ORDER/NOORDER 说明ORA-02279: 重复或冲突的ORDER/NOORDER 说明ORA-02280: 重复或冲突的ORDER/NOORDER 说明ORA-02281: 重复或冲突的ORDER/NOORDER 说明ORA-02282: 重复或冲突的ORDER/NOORDER 说明ORA-02283: 无法改变起始序号ORA-02284: 重复的INCREMENT BY 说明ORA-02285: 重复的START WITH 说明ORA-02286: 未指定ALTER SEQUENCE 的选项ORA-02287: 此处不允许序号ORA-02288: 无效的OPEN 模式ORA-02289: 序列(号)不存在ORA-02290: 违反检查约束条件(.)ORA-02291: 违反完整约束条件(.) - 未找到父项关键字ORA-02292: 违反完整约束条件(.) - 已找到子记录日志ORA-02293: 无法验证(.) - 违反检查约束条件ORA-02294: 无法启用(.) - 约束条件在验证过程中更改ORA-02295: 找到约束条件的多个启用/禁用子句ORA-02296: 无法启用(.) - 找到空值ORA-02297: 无法禁用约束条件(.) - 存在依赖关系ORA-02298: 无法验证(.) - 未找到父项关键字ORA-02299: 无法验证(.) - 未找到重复关键字ORA-02300: 无效的OIDGENERA TORS 值ORA-02301: OIDGENERA TORS 的最大数为255ORA-02302: 无效或缺少类型名ORA-02303: 无法使用类型或表的相关性来删除或取代一个类型ORA-02304: 无效的对象标识文字ORA-02305: 只有EXECUTE, DEBUG 和UNDER权限对类型有效ORA-02306: 无法创建已具有有效相关性的类型ORA-02307: 无法使用REPLACE 选项改变无效类型ORA-02308: 无效的对象类型列选项ORA-02309: 违反原子NULLORA-02310: 超出表中允许的最大列数ORA-02311: 无法使用COMPILE 选项改变具有类型或表相关性的有效类型ORA-02313: 对象类型包含不可查询的类型属性ORA-02315: 默认构造符的参数个数错误ORA-02320: 无法创建嵌套表列的存储表ORA-02322: 无法访问嵌套表列的访问表ORA-02324: THE 子查询的SELECT 列表中存在多列ORA-02327: 无法以数据类型的表达式创建索引ORA-02329: 数据类型的列不能是唯一关键字或主键ORA-02330: 不允许的数据类型说明ORA-02331: 无法创建数据类型为的列的约束条件ORA-02332: 无法对此列的属性创建索引ORA-02333: 无法对此列的属性创建约束条件ORA-02334: 无法推断列类型ORA-02335: 无效的群集列数据类型ORA-02336: 无法访问列属性ORA-02337: 不是对象类型列ORA-02338: 缺少或无效的列约束条件说明ORA-02339: 无效的列说明ORA-02340: 无效的列说明ORA-02342: 取代类型具有编译错误ORA-02344: 无法撤消执行具有表相关性的类型ORA-02345: 无法创建具有基于CURSOR 运算符的列的视图ORA-02347: 无法授权给对象表列ORA-02348: 无法创建具有嵌入LOB 的VARRAY 列ORA-02349: 无效的用户自定义类型- 类型不完整ORA-02351: 记录: 被拒绝- 表, 列上出错ORA-02352: 直接路径连接必须在同类间进行ORA-02353: 多字节字符错误ORA-02354: 字段中出现转换初始化错误ORA-02355: CONSTANT 字段中出现转换错误ORA-02356: 数据库空间耗尽。
oracle2pg用法详解
oracle2pg用法詳解Oracle2pg是一个用于将Oracle数据库的数据和结构迁移到PostgreSQL的工具。
以下是Oracle2pg的用法详解:1.安装Oracle2pg:首先,确保已安装Oracle2pg工具。
可以从官方网站或存储库中下载适用于您的操作系统的适当版本,并按照说明进行安装。
2.创建配置文件:在开始迁移之前,需要创建一个配置文件(通常为`ora2pg_table.conf`)。
配置文件包含有关源Oracle数据库和目标PostgreSQL数据库的连接详细信息以及其他相关设置。
3.配置Oracle连接:在配置文件中,提供有关源Oracle 数据库的连接详细信息,包括Oracle数据库的TNS名称、用户名、密码等。
4.配置PostgreSQL连接:在配置文件中,提供有关目标PostgreSQL数据库的连接详细信息,包括主机名、端口、用户名、密码等。
5.定义迁移规则:根据需要,可以在配置文件中定义自定义的迁移规则,例如更改数据类型、重命名列或表等。
这有助于在迁移过程中进行更细粒度的控制。
6.执行迁移:一旦配置文件准备就绪,可以使用以下命令执行迁移:```css./ora2pg-c<配置文件路径>```7.检查迁移结果:迁移完成后,可以登录到目标PostgreSQL数据库,检查已迁移的数据和结构是否符合预期。
确保所有数据都已成功迁移,并且表结构已正确转换。
8.优化和调整:根据需要对目标PostgreSQL数据库进行优化和调整,以确保性能和兼容性。
这可能包括创建索引、调整配置参数或重新定义触发器等。
注意事项:*在执行迁移之前,务必备份源Oracle数据库和目标PostgreSQL数据库,以防数据丢失。
*根据数据量和复杂性,迁移过程可能需要一些时间来完成。
确保在执行迁移时监视进度并处理任何中断或错误。
*Oracle2pg工具不断更新和改进,建议查看官方文档或GitHub存储库以获取最新的功能和用法说明。
ORA-00257错误的解决办法
ORA-00257错误的解决办法author: headsen chendate: 2018-04-17 11:12:39notice:个⼈原创,转载请注明作者和出处,否则依法追击法律责任。
1,oracle数据库正常使⽤中,突然报ora-00257的错误,原因是归档⽇志满了,达到了oracle设置的满值的状态了,所以会⽆法连接了。
2,system登录数据库查看使⽤率和归档⽂件⽬录SQL> show parameter log_archive_dest;NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_dest stringlog_archive_dest_1 stringlog_archive_dest_10 stringlog_archive_dest_2 stringlog_archive_dest_3 stringlog_archive_dest_4 stringlog_archive_dest_5 stringlog_archive_dest_6 stringlog_archive_dest_7 stringlog_archive_dest_8 stringlog_archive_dest_9 stringNAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_dest_state_1 string enablelog_archive_dest_state_10 string enablelog_archive_dest_state_2 string enablelog_archive_dest_state_3 string enablelog_archive_dest_state_4 string enablelog_archive_dest_state_5 string enablelog_archive_dest_state_6 string enablelog_archive_dest_state_7 string enablelog_archive_dest_state_8 string enablelog_archive_dest_state_9 string enableSQL>3, archive log list;检查⼀下归档⽬录和log sequence ,此时在序号512之前的都可以删除。
oracle错误代码大全(超详细)
oracle错误代码⼤全(超详细)ORA-00001: 违反唯⼀约束条件 (.)ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最⼤会话数ORA-00019: 超出最⼤会话许可数ORA-00020: 超出最⼤进程数 ()ORA-00021: 会话附属于其它某些进程;⽆法转换会话ORA-00022: ⽆效的会话 ID;访问被拒绝ORA-00023: 会话引⽤进程私⽤内存;⽆法分离会话ORA-00024: 单⼀进程模式下不允许从多个进程注册ORA-00025: ⽆法分配ORA-00026: 丢失或⽆效的会话 IDORA-00027: ⽆法删去当前会话ORA-00028: 您的会话⼰被删去ORA-00029: 会话不是⽤户会话ORA-00030: ⽤户会话 ID 不存在。
ORA-00031: 标记要删去的会话ORA-00032: ⽆效的会话移植⼝令ORA- 00033: 当前的会话具有空的移植⼝令ORA-00034: ⽆法在当前 PL/SQL 会话中ORA-00035: LICENSE_MAX_USERS 不能⼩于当前⽤户数ORA-00036: 超过递归SQL() 级的最⼤值ORA-00037: ⽆法转换到属于不同服务器组的会话ORA-00038: ⽆法创建会话: 服务器组属于其它⽤户ORA-00050: 获取⼊队时操作系统出错ORA-00051: 等待资源超时ORA-00052: 超出最⼤⼊队资源数 ()ORA-00053: 超出最⼤⼊队数ORA-00054: 资源正忙,要求指定 NOWAITORA-00055: 超出 DML 锁的最⼤数ORA-00056: 对象 '.' 上的 DDL 锁以不兼容模式挂起ORA-00057: 超出临时表锁的最⼤数ORA-00058: DB_BLOCK_SIZE 必须为才可安装此数据库(⾮ )ORA-00059: 超出 DB_FILES 的最⼤值ORA-00060: 等待资源时检测到死锁ORA-00061: 另⼀个例程设置了不同的 DML_LOCKSORA-00062: ⽆法获得 DML 全表锁定;DML_LOCKS 为 0ORA-00063: 超出 LOG_FILES 的最⼤数ORA-00064: 对象过⼤以⾄⽆法分配在此 O/S (,)ORA-00065: FIXED_DATE 的初始化失败ORA-00066: LOG_FILES 为但需要成为才可兼容ORA-00067: 值对参数⽆效;⾄少必须为ORA-00068: 值对参数⽆效,必须在和之间ORA-00069: ⽆法获得锁定 -- 禁⽤了表锁定ORA-00070: 命令⽆效ORA-00071: 进程号必须介于 1 和之间ORA-00072: 进程""不活动ORA-00073: 命令介于和个参数之间时使⽤ORA-00074: 未指定进程ORA-00075: 在此例程未找到进程 ""ORA-00076: 未找到转储ORA-00077: 转储⽆效ORA-00078: ⽆法按名称转储变量ORA-00079: 未找到变量ORA-00080: 层次指定的全局区域⽆效ORA-00081: 地址范围 [,) 不可读ORA-00082: 的内存⼤⼩不在有效集合 [1], [2], [4] 之内ORA-00083: 警告: 可能损坏映射的 SGAORA-00084: 全局区域必须为 PGA, SGA 或 UGAORA-00085: 当前调⽤不存在ORA-00086: ⽤户调⽤不存在ORA-00087: 命令⽆法在远程例程上执⾏ORA-00088: 共享服务器⽆法执⾏命令ORA-00089: ORADEBUG 命令中⽆效的例程号ORA-00090: 未能将内存分配给群集数据库 ORADEBUG 命令ORA-00091: LARGE_POOL_SIZE ⾄少必须为ORA-00092: LARGE_POOL_SIZE 必须⼤于 LARGE_POOL_MIN_ALLOCORA-00093: 必须介于和之间ORA-00094: 要求整数值ORA-00096: 值对参数⽆效,它必须来⾃之间ORA-00097: 使⽤ Oracle SQL 特性不在 SQL92 级中ORA-00099: 等待资源时发⽣超时,可能是 PDML 死锁所致ORA-00100: 未找到数据ORA-00101: 系统参数 DISPATCHERS 的说明⽆效ORA-00102: 调度程序⽆法使⽤⽹络协议ORA-00103: ⽆效的⽹络协议;供调度程序备⽤ORA-00104: 检测到死锁;全部公⽤服务器已锁定等待资源ORA-00105: 未配置⽹络协议的调度机制ORA-00106: ⽆法在连接到调度程序时启动/关闭数据库ORA-00107: ⽆法连接到 ORACLE 监听器进程ORA-00108: ⽆法设置调度程序以同步进⾏连接ORA-00111: 由于服务器数⽬限制在 , 所以没有启动所有服务器ORA-00112: 仅能创建多达 (最多指定) 个调度程序ORA-00113: 协议名过长ORA-00114: 缺少系统参数 SERVICE_NAMES 的值ORA-00115: 连接被拒绝;调度程序连接表已满ORA-00116: SERVICE_NAMES 名过长ORA-00117: 系统参数 SERVICE_NAMES 的值超出范围ORA-00118: 系统参数 DISPATCHERS 的值超出范围ORA-00119: 系统参数的说明⽆效ORA-00120: 未启⽤或安装调度机制ORA-00121: 在缺少 DISPATCHERS 的情况下指定了 SHARED_SERVERS ORA-00122: ⽆法初始化⽹络配置ORA-00123: 空闲公⽤服务器终⽌ORA-00124: 在缺少 MAX_SHARED_SERVERS 的情况下指定了 DISPATCHERS ORA-00125: 连接被拒绝;⽆效的演⽰⽂稿ORA-00126: 连接被拒绝;⽆效的重复ORA-00127: 调度进程不存在ORA-00128: 此命令需要调度进程名ORA-00129: 监听程序地址验证失败 ''ORA-00130: 监听程序地址 '' ⽆效ORA-00131: ⽹络协议不⽀持注册 ''ORA-00132: 语法错误或⽆法解析的⽹络名称 ''ORA-00150: 重复的事务处理 IDORA-00151: ⽆效的事务处理 IDORA-00152: 当前会话与请求的会话不匹配ORA-00153: XA 库中的内部错误ORA-00154: 事务处理监视器中的协议错误ORA-00155: ⽆法在全局事务处理之外执⾏⼯作ORA-00160: 全局事务处理长度超出了最⼤值 ()ORA-00161: 事务处理的分⽀长度⾮法 (允许的最⼤长度为 )ORA-00162: 外部 dbid 的长度超出了最⼤值 ()ORA-00163: 内部数据库名长度超出了最⼤值 ()ORA-00164: 在分布式事务处理中不允许独⽴的事务处理ORA-00165: 不允许对远程操作进⾏可移植分布式⾃治转换ORA-00200: ⽆法创建控制⽂件ORA-00201: 控制⽂件版本与 ORACLE 版本不兼容ORA-00202: 控制⽂件: ''ORA-00203: 使⽤错误的控制⽂件ORA-00204: 读控制⽂件时出错 (块,# 块 )ORA-00205: 标识控制⽂件出错,有关详情,请检查警告⽇志ORA-00206: 写控制⽂件时出错 (块,# 块 )ORA-00207: 控制⽂件不能⽤于同⼀数据库ORA-00208: 控制⽂件的名称数超出限制ORA-00209: 控制⽂件块⼤⼩不匹配,有关详情,请检查警告⽇志ORA-00210: ⽆法打开指定的控制⽂件ORA-00211: 控制⽂件与先前的控制⽂件不匹配ORA-00212: 块⼤⼩低于要求的最⼩⼤⼩ ( 字节)ORA-00213: 不能重新使⽤控制⽂件;原⽂件⼤⼩为,还需ORA-00214: 控制⽂件 '' 版本与⽂件 '' 版本不⼀致ORA-00215: 必须⾄少存在⼀个控制⽂件ORA-00216: ⽆法重新调整从 8.0.2 移植的控制⽂件⼤⼩ORA-00217: 从 9.0.1 进⾏移植⽆法重新调整控制⽂件的⼤⼩ORA-00218: 控制⽂件的块⼤⼩与 DB_BLOCK_SIZE () 不匹配ORA-00219: 要求的控制⽂件⼤⼩超出了允许的最⼤值ORA-00220: 第⼀个例程未安装控制⽂件,有关详情,请检查警告⽇志ORA-00221: 写⼊控制⽂件出错ORA-00222: 操作将重新使⽤当前已安装控制⽂件的名称ORA-00223: 转换⽂件⽆效或版本不正确ORA-00224: 控制⽂件重设⼤⼩尝试使⽤⾮法记录类型 ()ORA-00225: 控制⽂件的预期⼤⼩与实际⼤⼩不同ORA-00226: 备⽤控制⽂件打开时不允许进⾏操作ORA-00227: 控制⽂件中检测到损坏的块: (块,# 块 )ORA-00228: 备⽤控制⽂件名长度超出了最⼤长度ORA-00229: 操作不允许: 已挂起快照控制⽂件⼊队ORA-00230: 操作不允许: ⽆法使⽤快照控制⽂件⼊队ORA-00231: 快照控制⽂件未命名ORA-00232: 快照控制⽂件不存在, 已损坏或⽆法读取ORA-00233: 控制⽂件副本已损坏或⽆法读取ORA-00234: 标识或打开快照或复制控制⽂件时出错ORA-00235: 控制⽂件固定表因并发更新⽽不⼀致ORA-00236: 快照操作不允许: 挂上的控制⽂件为备份⽂件ORA-00237: 快照操作不允许: 控制⽂件新近创建ORA-00238: 操作将重⽤属于数据库⼀部分的⽂件名ORA-00250: 未启动存档器ORA-00251: LOG_ARCHIVE_DUPLEX_DEST 不能是与字符串相同的⽬的地ORA-00252: ⽇志在线程上为空,⽆法存档ORA-00253: 字符限制在以内,归档⽬的字符串超出此限制ORA-00254: 存档控制字符串 '' 时出错ORA-00255: 存档⽇志 (线程 , 序列 # ) 时出错ORA-00256: ⽆法翻译归档⽬的字符串ORA-00257: 存档器错误。
ORACLE 错误一览表(2)
ORA-02247: 未指定 ALTER SESSION 的选项
ORA-02248: 无效的 ALTER SESSION 选项
ORA-02249: 缺少或无效的 MAXLOGMEMBERS 值
ORA-02250: 缺少或无效的约束条件名
ORA-02315: 默认构造符的参数个数错误
ORA-02320: 无法创建嵌套表列的存储表
ORA-02322: 无法访问嵌套表列的访问表
ORA-02324: THE 子查询的 SELECT 列表中存在多列
ORA-02327: 无法以数据类型的表达式创建索引
ORA-02329: 数据类型的列不能是唯一关键字或主键
ORA-02371: 直接路径的加载程序必须为 .... 以上的版本
ORA-02372: 相对起始位置 > 绝对字段终止位置
ORA-02373: 表的插入语句语法分析错误
ORA-02374: 没有其它可用于读取缓冲区队列的插槽
ORA-02375: 记录: 已拒绝 - 表中出错
ORA-02376: 无效或冗余的资源
ORA-02347: 无法授权给对象表列
ORA-02348: 无法创建具有嵌入 LOB 的 VARRAY 列
ORA-02349: 无效的用户自定义类型 - 类型不完整
ORA-02351: 记录: 被拒绝 - 表, 列上出错
ORA-02352: 直接路径连接必须在同类间进行
ORA-02353: 多字节字符错误
ORA-02286: 未指定 ALTER SEQUENCE 的选项
ORA-02287: 此处不允许序号
ORA-02298:无法验证(约束)提示未找到父项关键字的解决办法
ORA-02298:⽆法验证(约束)提⽰未找到⽗项关键字的解决办法--在⽤PL/SQL导⼊表数据的时候报错 ORA-02298: ⽆法验证 (PNET.POST_CLOB_FK) - 未找到⽗项关键字--发现是启⽤外键约束时报的错alter table DM_VOLREV enable constraint VR_VOLID_FK;/*原因分析:你要插⼊的表A⾥,有外键连接到另⼀个表B的主键,你在表A的外键列插⼊的值,在表B的主键列找不到就不能插⼊。
主要看两表中的数据是否⼀致,从表中要关联外键的字段中的数据必须包含在主表相关字段的数据内。
处理的⽅法有:1> 先不验证已有数据的CONSTRANT,加上参数NOVALIDATE.*/ALTER TABLE PN_POST ADD CONSTRAINT POST_CLOB_FK FOREIGN KEY (POST_BODY_ID) REFERENCES PN_POST_BODY_CLOB (OBJECT_ID) NOVALIDATE; --2>⾸先查看两个表对应起来的数据有多少select count(*) from dm_volrev t,DM_VOLID k where t.vr_volid = k.vi_volid;--再分别查看单独的数据,发现外键表多了⼀⾏select count(*) from dm_volrev t;select count(*) from DM_VOLID k;-找到多的⾏并删除select t.vr_volid from dm_volrev t where t.vr_volid not in (select k.vi_volid from DM_VOLID k);delete from dm_volrev t where t.vr_volid = 479908;--直接重新执⾏启⽤外键的语句,或者删除之前的外键创建新的外键alter table DM_VOLREV drop constraint VR_VOLID_FK;ALTER TABLE DM_VOLREV ADD CONSTRAINT VR_VOLID_FK foreign KEY (VR_VOLID) references DM_VOLID(VI_VOLID) VALIDATE;/*启⽤约束:enable( validate) :启⽤约束,创建索引,对已有及新加⼊的数据执⾏约束.enable novalidate :启⽤约束,创建索引,仅对新加⼊的数据强制执⾏约束,⽽不管表中的现有数据.禁⽤约束:disable( novalidate):关闭约束,删除索引,可以对约束列的数据进⾏修改等操作.disable validate :关闭约束,删除索引,不能对表进⾏插⼊/更新/删除等操作.*/以上所述是⼩编给⼤家介绍的ORA-02298: ⽆法验证 (约束)提⽰未找到⽗项关键字的解决办法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
winndows ora2pg使用方法
winndows ora2pg使用方法摘要:一、Winndows Ora2pg简介二、安装Winndows Ora2pg三、使用Winndows Ora2pg迁移数据库四、Winndows Ora2pg功能特性五、常见问题与解决方法六、总结与建议正文:一、Winndows Ora2pg简介Winndows Ora2pg是一款功能强大的数据库迁移工具,主要用于将Oracle数据库迁移到PostgreSQL数据库。
它可以在Windows操作系统上运行,为用户提供便捷的数据库迁移服务。
通过Winndows Ora2pg,用户可以轻松地将Oracle数据库中的数据、表结构、索引等迁移至PostgreSQL,从而降低数据迁移的难度和风险。
二、安装Winndows Ora2pg1.下载Winndows Ora2pg:访问Winndows Ora2pg官方网站或GitHub页面,下载适用于Windows操作系统的最新版本。
2.安装程序:运行下载好的安装文件,按照提示完成安装过程。
3.配置环境:安装完成后,需要配置环境变量,以便在命令行中使用Winndows Ora2pg。
4.启动Winndows Ora2pg:完成安装和配置后,通过命令行或桌面快捷方式启动Winndows Ora2pg。
三、使用Winndows Ora2pg迁移数据库1.创建迁移项目:在Winndows Ora2pg主界面中,点击“新建项目”创建一个迁移任务。
2.配置源数据库:填写源数据库的连接信息,包括主机名、端口号、用户名、密码等。
3.配置目标数据库:填写目标数据库的连接信息,确保与源数据库的信息对应。
4.选择迁移内容:在迁移内容中,选择需要迁移的数据库对象,如表、视图、索引等。
5.设置迁移选项:根据需求,设置迁移过程中的相关选项,如数据类型转换、字符集转换等。
6.执行迁移:确认无误后,点击“开始迁移”按钮,启动迁移任务。
四、Winndows Ora2pg功能特性1.支持多种数据库:除了Oracle和PostgreSQL,Winndows Ora2pg还支持其他主流数据库,如MySQL、SQL Server等。
Oracle错误信息浏览表_2
ORA-02201: 此处不允许序列(号)ORA-02202: 此群集中不允许添加其它表ORA-02203: 不允许的INITIAL 存储选项ORA-02204: 不允许ALTER, INDEX 和EXECUTE 用于视图ORA-02205: 只有SELECT 和ALTER 权限对序列有效ORA-02206: 重复的INITRANG 选项说明ORA-02207: 无效的INITRANS 选项值ORA-02208: 重复的MAXTRANS 选项说明ORA-02209: 无效的MAXTRANS 选项值ORA-02210: 未指定ALTER TABLE 的选项ORA-02211: 无效的PCTFREE 或PCTUSED 值ORA-02212: 重复的PCTFREE 选项说明ORA-02213: 重复的PCTUSED 选项说明ORA-02214: 重复的BACKUP 选项说明ORA-02215: 重复的表空间名子句ORA-02216: 需要表空间名ORA-02217: 重复的存储选项说明ORA-02218: 无效的INITIAL 存储选项值ORA-02219: 无效的NEXT 存储选项值ORA-02220: 无效的MINEXTENTS 存储选项值ORA-02221: 无效的MAXEXTENTS 存储选项值ORA-02222: 无效的PCTINCREASE 存储选项值ORA-02223: 无效的OPTIMAL 存储选项值ORA-02224: EXECUTE 权限对于表不允许ORA-02225: 只有EXECUTE 和DEBUG 权限对过程有效ORA-02226: 无效的MAXEXTENTS 值(最大允许为: )ORA-02227: 无效的群集名ORA-02228: 重复的SIZE 说明ORA-02229: 无效的SIZE 选项值ORA-02230: 无效的ALTER CLUSTER 选项ORA-02231: 缺少或无效的ALTER DA TABASE 选项ORA-02232: 无效的MOUNT 模式ORA-02233: 无效的CLOSE 模式ORA-02234: 已经记录对此表的更改ORA-02235: 此表已将更改记录在另一表中ORA-02236: 无效的文件名ORA-02237: 无效的文件大小ORA-02238: 文件名列表具有不同的文件数ORA-02239: 存在引用此序列的对象ORA-02240: 无效的OBJNO 或TABNO 值ORA-02241: 必须是EXTENTS (FILE <n> BLOCK <n> SIZE <n>,...) 格式ORA-02242: 未指定ALTER INDEX 的选项ORA-02243: ALTER INDEX 或ALTER MATERIALIZED VIEW 选项无效ORA-02244: 无效的ALTER ROLLBACK SEGMENT 选项ORA-02245: 无效的ROLLBACK SEGMENT 名ORA-02246: 缺少EVENTS 文本ORA-02247: 未指定ALTER SESSION 的选项ORA-02248: 无效的ALTER SESSION 选项ORA-02249: 缺少或无效的MAXLOGMEMBERS 值ORA-02250: 缺少或无效的约束条件名ORA-02251: 此处不允许子查询ORA-02252: 检查未正确结束的约束条件ORA-02253: 此处不允许约束条件说明ORA-02254: 此处不允许DEFAULT <表达式>ORA-02255: obsolete 7.1.5ORA-02256: 要引用的列数必须与已引用道感数匹配ORA-02257: 超出最大列数ORA-02258: 重复或冲突的NULL 和(或)NOT NULL 说明ORA-02259: 重复的UNIQUE/PRIMARY KEY 说明ORA-02260: 表只能具有一个主键ORA-02261: 表中已存在这样的唯一关键字或主键ORA-02262: 对列默认值表达式进行类型检查时, 出现ORA- ORA-02263: 需要指定此列的数据类型ORA-02264: 名称已被一现有约束条件占用ORA-02265: 无法推导引用列的数据类型ORA-02266: 表中的唯一/主键被启用的外部关键字引用ORA-02267: 列类型与引用的列类型不兼容ORA-02268: 引用的表不具有主键ORA-02269: 关键字列不能是LONG 数据类型ORA-02270: 此列列表的唯一或主键不匹配ORA-02271: 表没有这样的约束条件ORA-02272: 约束条件列不能是LONG 数据类型ORA-02273: 此唯一/主键已被某些外部关键字引用ORA-02274: 重复的引用约束条件说明ORA-02275: 此表中已经存在这样的引用约束条件ORA-02276: 默认值类型与列类型不兼容ORA-02277: 无效的序列名ORA-02278: 重复或冲突的ORDER/NOORDER 说明ORA-02279: 重复或冲突的ORDER/NOORDER 说明ORA-02280: 重复或冲突的ORDER/NOORDER 说明ORA-02281: 重复或冲突的ORDER/NOORDER 说明ORA-02282: 重复或冲突的ORDER/NOORDER 说明ORA-02283: 无法改变起始序号ORA-02284: 重复的INCREMENT BY 说明ORA-02285: 重复的START WITH 说明ORA-02286: 未指定ALTER SEQUENCE 的选项ORA-02287: 此处不允许序号ORA-02288: 无效的OPEN 模式ORA-02289: 序列(号)不存在ORA-02290: 违反检查约束条件(.)ORA-02291: 违反完整约束条件(.) - 未找到父项关键字ORA-02292: 违反完整约束条件(.) - 已找到子记录日志ORA-02293: 无法验证(.) - 违反检查约束条件ORA-02294: 无法启用(.) - 约束条件在验证过程中更改ORA-02295: 找到约束条件的多个启用/禁用子句ORA-02296: 无法启用(.) - 找到空值ORA-02297: 无法禁用约束条件(.) - 存在依赖关系ORA-02298: 无法验证(.) - 未找到父项关键字ORA-02299: 无法验证(.) - 未找到重复关键字ORA-02300: 无效的OIDGENERA TORS 值ORA-02301: OIDGENERA TORS 的最大数为255ORA-02302: 无效或缺少类型名ORA-02303: 无法使用类型或表的相关性来删除或取代一个类型ORA-02304: 无效的对象标识文字ORA-02305: 只有EXECUTE, DEBUG 和UNDER权限对类型有效ORA-02306: 无法创建已具有有效相关性的类型ORA-02307: 无法使用REPLACE 选项改变无效类型ORA-02308: 无效的对象类型列选项ORA-02309: 违反原子NULLORA-02310: 超出表中允许的最大列数ORA-02311: 无法使用COMPILE 选项改变具有类型或表相关性的有效类型ORA-02313: 对象类型包含不可查询的类型属性ORA-02315: 默认构造符的参数个数错误ORA-02320: 无法创建嵌套表列的存储表ORA-02322: 无法访问嵌套表列的访问表ORA-02324: THE 子查询的SELECT 列表中存在多列ORA-02327: 无法以数据类型的表达式创建索引ORA-02329: 数据类型的列不能是唯一关键字或主键ORA-02330: 不允许的数据类型说明ORA-02331: 无法创建数据类型为的列的约束条件ORA-02332: 无法对此列的属性创建索引ORA-02333: 无法对此列的属性创建约束条件ORA-02334: 无法推断列类型ORA-02335: 无效的群集列数据类型ORA-02336: 无法访问列属性ORA-02337: 不是对象类型列ORA-02338: 缺少或无效的列约束条件说明ORA-02339: 无效的列说明ORA-02340: 无效的列说明ORA-02342: 取代类型具有编译错误ORA-02344: 无法撤消执行具有表相关性的类型ORA-02345: 无法创建具有基于CURSOR 运算符的列的视图ORA-02347: 无法授权给对象表列ORA-02348: 无法创建具有嵌入LOB 的VARRAY 列ORA-02349: 无效的用户自定义类型- 类型不完整ORA-02351: 记录: 被拒绝- 表, 列上出错ORA-02352: 直接路径连接必须在同类间进行ORA-02353: 多字节字符错误ORA-02354: 字段中出现转换初始化错误ORA-02355: CONSTANT 字段中出现转换错误ORA-02356: 数据库空间耗尽。
oracle2pg用法详解 -回复
oracle2pg用法詳解-回复『oracle2pg用法詳解』简介:oracle2pg是一个开源工具,用于将Oracle数据库迁移到PostgreSQL数据库。
它提供了一个简单直观的方法,帮助用户快速高效地完成数据库迁移的过程。
本文将一步一步详细解释如何使用oracle2pg 工具进行数据库迁移。
1. 安装oracle2pg工具:首先,我们需要下载并安装oracle2pg工具。
可以通过在终端窗口中输入以下命令来下载工具的压缩文件:wget下载完成后,解压缩文件,并进入解压后的目录:unzip stable.zipcd ora2pg-stable接下来,运行以下命令来安装oracle2pg工具:perl Makefile.PLmake && make install完成安装后,我们已准备好使用oracle2pg工具进行数据库迁移。
2. 配置源和目标数据库:在进行数据库迁移之前,我们需要配置源和目标数据库的连接信息。
打开一个文本编辑器,创建一个名为"config.txt"的文件,并添加以下内容:[oracle]dbi:Oracle:host=源数据库主机地址;sid=源数据库SID源数据库用户名源数据库密码[pg]dbi:Pg:dbname=目标数据库名称;host=目标数据库主机地址;port=目标数据库端口号目标数据库用户名目标数据库密码根据实际情况,替换上述内容中的信息,并保存文件。
3. 导出Oracle数据库结构和数据:运行以下命令来导出Oracle数据库的结构和数据:ora2pg -c config.txt -t SHOW_STRUCTURE,EXPORT -o schema.sqlora2pg -c config.txt -t SHOW_DATA,EXPORT -o data.sql上述命令中,"-c"参数用于指定配置文件的路径,"-t"参数用于指定导出数据的类型,"-o"参数用于指定导出文件的名称。
ORA-00205错误解决方案1
作为一个Oracle的初学者,少不了实验和试验,今天遇到了ORA-00205的错误,把解决方法记录下来:出错前的动作:(DB处在open状态)<1>SQL>alter system set control_files='E:\ORACLE\ORADATA\ORCL\CONTROL01.CTL', 'E:\ORACLE\ORADATA\ORCL\CONTROL03.CTL','E:\ORACLE\flash_recovery_area\CONTROL02.CTL' scope=spfile;注:执行上述命令是为了增加控制文件E:\ORACLE\ORADATA\ORCL\CONTROL03.CTL已实现使用SPFILE多路复用控制文件。
<2>SQL>shutdown immediate<3>C:\Users\Administrator> copyE:\ORACLE\ORADATA\ORCL\CONTROL01.CTL E:\ORACLE\ORADATA\ORCL\CO NTROL03.CTL然后修改了E:\ORACLE\admin\orcl\pfile\下的初始化参数文件,把control_files修改如下:control_files=("E:\ORACLE\oradata\orcl\control01.ctl")<4>SQL>startupORACLE 例程已经启动。
Total System Global Area 753278976 bytesFixed Size 1374724 bytesVariable Size 343934460 bytesDatabase Buffers 402653184 bytesRedo Buffers 5316608 bytesORA-00205: ?????????, ??????, ???????解决过程:SQL> shutdown immediateORA-01507: ??????ORACLE 例程已经关闭。
Oraclenvarchar2存储特殊字符乱码问题
Oraclenvarchar2存储特殊字符乱码问题Oracle nvarchar2存储特殊字符乱码问题这个问题研究了⼀天多,终于搞定了。
起因是业务需要存特殊字符'ø'到varchar2的字段中出现乱码,因为数据库字符集是ZHS16GBK。
简单测试了下,像'ø'之类的特殊。
由于国家字符集是AL16UTF16,准备⽤nvarchar2(nvarchar2⽤的是国家字符集)存储特殊字符。
但是测试环境测试结果是就算⽤nvarchar2存,还是有乱码的情况。
重现如下:[oracle@zkm ~]$ localeLANG=en_US.UTF-8LC_CTYPE="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_PAPER="en_US.UTF-8"LC_NAME="en_US.UTF-8"LC_ADDRESS="en_US.UTF-8"LC_TELEPHONE="en_US.UTF-8"LC_MEASUREMENT="en_US.UTF-8"LC_IDENTIFICATION="en_US.UTF-8"LC_ALL=[oracle@zkm ~]$ echo $NLS_LANGAMERICAN_AMERICA.AL32UTF811:22:28 SYS@zkm(451)>select userenv('language') from dual;USERENV('LANGUAGE')--------------------------------------------------------------------------------AMERICAN_AMERICA.ZHS16GBKElapsed: 00:00:00.0111:22:06 SYS@zkm(451)>create table zkm ( name1 varchar2(20),name2 nvarchar2(20));Table created.Elapsed: 00:00:01.3911:30:12 SYS@zkm(451)>select*from NLS_DATABASE_PARAMETERS;PARAMETER VALUE-------------------------------------------------- --------------------------------------------------NLS_LANGUAGE AMERICANNLS_TERRITORY AMERICANLS_CURRENCY $NLS_ISO_CURRENCY AMERICANLS_NUMERIC_CHARACTERS .,NLS_CHARACTERSET ZHS16GBKNLS_CALENDAR GREGORIANNLS_DATE_FORMAT DD-MON-RRNLS_DATE_LANGUAGE AMERICANNLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY $NLS_COMP BINARYNLS_LENGTH_SEMANTICS BYTENLS_NCHAR_CONV_EXCP FALSENLS_NCHAR_CHARACTERSET AL16UTF16NLS_RDBMS_VERSION 11.2.0.4.020 rows selected.Elapsed: 00:00:00.0011:31:18 SYS@zkm(451)>insert into zkm values ('ø','ø');1 row created.Elapsed: 00:00:00.0011:31:21 SYS@zkm(451)>commit;Commit complete.Elapsed: 00:00:00.0011:31:26 SYS@zkm(451)>select*from zkm;NAME1 NAME2---------- ----------?(这⾥是中⽂问号)Elapsed: 00:00:00.00⽐对中⽂问号和英⽂问号:14:19:01 SYS@zkm(451)>select dump('?',1016) from dual union all select dump('?',1016) from dual union all select dump('ø',1016) from dual;DUMP('?',1016)---------------------------------------------------------------------------------------------------------------------------Typ=96Len=1 CharacterSet=ZHS16GBK: 3fTyp=96Len=2 CharacterSet=ZHS16GBK: a3,bfTyp=96Len=2 CharacterSet=ZHS16GBK: a3,bfElapsed: 00:00:00.01也就是说,在ZHS16GBK下,中⽂"?"和"ø"最后成了⼀样的效果,也就是"ø"乱码了。
ORA-00257:archivererror解决办法
ORA-00257:archivererror解决办法出现ORA-00257错误(空间不⾜错误),通过查找资料,绝⼤部分说这是由于归档⽇志太多,占⽤了全部的硬盘剩余空间导致的,通过简单删除⽇志或加⼤存储空间就能够解决。
(⼀)、oralce 11g更改归档模式、⽬录、⽇志⼤⼩(本⼈采⽤的这种做法)⼀、更改Oracle为归档模式1.关闭oracleSQL> ;Database closed.Database dismounted.ORACLE instance shut down.2.启动为mount状态SQL> startup mountORACLE instance started.Total System Global Area 2572144640 bytesFixed Size 2283984 bytesVariable Size 738199088 bytesDatabase Buffers 1828716544 bytesRedo Buffers 2945024 bytesDatabase mounted.3.更改为归档模式SQL> alter database archivelogDatabase altered.备注:‘archivelog’为归档模式;‘noarchivelog’为⾮归档模式。
4.更改数据库为‘打开’状态SQL> alter database open5.查看归档模式信息SQL> archvie log list它会提⽰归档的模式、是否启⽤、参数Database log mode Archive ModeAutomatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 88Next log sequence to archive 90Current log sequence 90⼆、更改归档⽬录1.查看参数db_recovery_file_dest(1)“db_recovery_file_dest”是⽤于定义存储归档⽇志的⽬录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
行触发器例
Create or replace trigger generateid Before insert on students For each row Begin Select student_seq.nextval into :new.id from dual; End;
记录-多域单行结构
Declare
type time_type is record
(second integer(2) :=0 , minute integer(2) :=0, hour integer(2) :=0 ) ; time_rec time_type ;
PL/SQL表(数组)-多行单列结构
建立数据库对象-触发器
Create trigger emp_t before update of sal on emp for each row when (old.dno is not null) begin if (:new.sal < = :old.sal) then raise_application_error(… ); end if ; end ;
例三
Declare cursor c1 is select distinct kno from clog; cursor c2 (kindno char(3)) is select * from clog where kno=kindno order by day desc ; i number ; l_d date ; begin
触发器——类型
语句级触发器 行级触发器(for each row)
:old :new
Instead-of触发器
触发器——触发顺序
Before 语句级 Before 行级 DML After 行级 After 语句级
触发器——限制
不能有事务控制语句 调用的过程和函数也不能有事务控制语 句 不能声明long, long raw列 语句级触发器不能使用:old, :new 行级触发器存取变化表与限制例一
DECLARE
tin_rec tin % rowtype ;
v_passwd userlog.passwd % type ; errps EXCEPTION ; BEGIN select * into tin_rec from tin ; select passwd into v_passwd from userlog where userid = tin_rec.ud ;
光标
Oracle 使用Private SQL Area的工作区 执行SQL语句,并保存语句执行结果和 相关的状态信息。 光标是一个PL/SQL结构,利用光标可以 命名这些工作区,并通过光标访问工作 区中的信息。
隐式光标
隐式光标名:SQL
访问:
SQL%ROWCOUNT
SQL%FOUND
SQL%NOTFOUND
PL/SQL块中特殊的例外转移
Declare段发生例外
V_Number NUMBER(3) :=‘ABC’;
立刻传播到包含块
Exception段发生例外
Excepion when a then raise b; when b then 立刻传播到包含块
利用PL/SQL块中特殊的例外转移 Declare a exception; Begin raise a; Exception when a then insert into log_able…..; raise; End;
例二
Begin open c1; select sum(sal) into s_sal from emp ; while s_sal<500000 loop fetch c1 into e_eno,e_sal ; exit when c1%notfound ; update emp set sal=sal*1.1 where current of c1 ;; where eno=e_eno s_sal:=s_sal + e_sal*0.1; emp_num:=emp_num+1 ; end loop ;
Declare type ename_type is table of char(10) index by binary_integer ; ename_array ename_type ; I binary_integer :=0 ; begin for rec in (select ename from emp) loop I:=I+1 ; ename_array(I):=rec.ename ; end loop ;
PL/SQL表——属性
student_array.count student_array.delete(I); student_array.delete(I , j ); student_array.exists student_array.first student_st student_array.next student_array.prior
[for each row]
on emp [when …]
begin … end ;
建立数据库对象-触发器
Create trigger emp_check before/after/instead of insert or update or delete on emp begin if to_char(sysdate,`dy`)=`星期日` then raise_application_error(-20000, ‘ today is holiday ') ; end if ; end ; /
dup_val_on_index no_data_found too_many_rows
Select * into …
用户自定义例外
例外名定义 ex1 exception ; 引起例外 raise ex1 ;
例一
用户注册检查
tin :
Ud msg
ps
tout :
userlog :
触发器
存储在数据库里的带名的PL/SQL块,当 表被修改时,如果满足条件,自动执行 主要用处
维护复杂的完整性约束 审计修改 表被修改时,给其他需运行的程序发信号
触发器——创建语法
Create or Replace trigger emp_check
before/after insert or update or delete
例二
Close c1;
insert into msg values(emp_num , s_sal) ;
commit ; end;
光标for循环
For r in c1
loop
r.sal
end loop;
如何打开光标 如何读光标区 如何判断读完 如何关闭光标
带参数光标
cursor c1 (depno char(3)) is select * from emp where dno=depno ;
例外信息捕获
Exception when others then err_msg:=substr(sqlerrm,1,50); err_code:=sqlcode; insert into tout values(err_code,err_msg) ; end ;
PL/SQL块的嵌套及例外转移 D01部门没有职工属正常情况… begin select eno into v_eno from emp where dno=`d01` ; if sql%found then raise too_many_rows ; end if ; exception when no_data_found then null ; end ;
变量赋值 an_sal :=mon_sal *12 + nvl(comm,0) ;
Select ename INTO v_ename from emp where eno=` e01 ` ;
程序控制结构
IF e1 THEN ELSIF e2 THEN END LOOP ; WHILE LOOP e
例一
if tin_rec.ps = v_passwd then insert into tout values(`login ok` ); else raise errps ; end if ; exception when errps then insert into tout values(`password error`〕; when no_data_found then insert into tout values(`userid error’〕; end;
open c1(v_depno) ;
例三
例题: 收发室收文件。文件分类,每类中文件依收到 日期先后顺序编号。值班人员收到文件后,要 在系统中登录文件类别,编号,收到日期。 (注:一天中收到的文件可能不止一份) 编一PL/SQL 程序,查询每一类中最后一天收 到的文件) 表clog(kno 类别 , pno 编号 , pdate 收发日期) 练习要点: 光标FOR循环,带参数的光标
显式光标
定义 delcare cursor c1 is select … 打开 open c1 读 fetch c1 into 变量/记录 close c1
显式光标
读取状态信息 c1%found c1%rowcount
用光标定义记录 temp c1%rowtype
例二
问题:
为职工长工资。从最低工资长,工资总额限 制在50万元。 Declare cursor c1 is select eno,sal from emp order by sal for update ; emp_num number :=0 ; s_sal number ; e_sal number ; e_eno char(3);