联系:手机/微信(+86 17813235971) QQ(107644445)
标题:使用dbms_metadata.get_ddl出现ORA-31605错误
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
使用dbms_metadata.get_ddl出现ORA-31605错误
SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production PL/SQL Release 9.2.0.4.0 - Production CORE 9.2.0.3.0 Production TNS for Linux: Version 9.2.0.4.0 - Production NLSRTL Version 9.2.0.4.0 - Production SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "www.xifenfei.com" from dual; www.xifenfei.com ------------------- 2012-05-26 23:10:22 SQL> select dbms_metadata.get_ddl('TABLE','XFF_IOT','CHF1') from dual; ERROR: ORA-06502: PL/SQL: numeric or value error ORA-31605: the following was returned from LpxXSLResetAllVars in routine kuxslResetParams: LPX-1: NULL pointer ORA-06512: at "SYS.UTL_XML", line 0 ORA-06512: at "SYS.DBMS_METADATA_INT", line 3320 ORA-06512: at "SYS.DBMS_METADATA_INT", line 4148 ORA-06512: at "SYS.DBMS_METADATA", line 458 ORA-06512: at "SYS.DBMS_METADATA", line 615 ORA-06512: at "SYS.DBMS_METADATA", line 1221 ORA-06512: at line 1 no rows selected
错误原因
dbms_metadata.get_ddl需要调用Oracle dictionary table “sys.metastylesheet.”中的XSL stylesheets,但是由于某种原因,使得调用失败,出现上述错误.因为该错误可能有:
1.XSL stylesheets没有安装
2.使用alter database 修改数据库字符集(本库是因为昨天修改字符集导致)
解决办法(sys用户执行)
1.在10g及其以上版本中(不带参数)
SQL> exec dbms_metadata_util.load_stylesheets; PL/SQL procedure successfully completed.
2.在9i版本中(带dir参数)
SQL> exec dbms_metadata_util.load_stylesheets('/u01/oracle/9.2.0/db_1/rdbms/xml/xsl'); PL/SQL procedure successfully completed. SQL> select dbms_metadata.get_ddl('TABLE','XFF_IOT','CHF1') from dual; DBMS_METADATA.GET_DDL('TABLE','XFF_IOT','CHF1') -------------------------------------------------------------------------------- CREATE TABLE "CHF1"."XFF_IOT" ( "ID" NUMBER, "NAME" VARCHAR2(30), CONSTRAINT "CHF_IOT_ID#_PK" PRIMARY KEY ("ID") ENABLE ) ORGANIZATION INDEX NOCOMPRESS PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PCTTHRESHOLD 50 DBMS_METADATA.GET_DDL('TABLE','XFF_IOT','CHF1') --------------------------------------------------------------------------------