ITPub博客

首页 > 数据库 > Oracle > [20190225]ORA-07217错误.txt

[20190225]ORA-07217错误.txt

原创 Oracle 作者:lfree 时间:2019-02-25 10:01:26 0 删除 编辑

[20190225]ORA-07217错误.txt


--//昨天看链接: ,里面提到一个情况,就是如果建立的

--//数据文件包含$,会导致dg启动到mount报ORA-07217:sltln: environment variable cannot be evaluated.错误.

--//自己测试看看:


1.环境:

SCOTT@book> @ ver1

PORT_STRING         VERSION    BANNER

------------------- ---------- ----------------------------------------------------------------------------

x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production


SYS@book> show parameter db_file_name_convert

NAME                 TYPE   VALUE

-------------------- ------ ------------------------------------

db_file_name_convert string /mnt/ramdisk/book, /mnt/ramdisk/book


--//检查备库日志是否应用正常.

SYS@bookdg> @ dg/dg

PROCESS       PID STATUS       CLIENT_P GROUP# THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS

--------- ------- ------------ -------- ------ ------- ---------- ---------- ---------- ----------

ARCH        24128 CONNECTED    ARCH     N/A          0          0          0          0          0

ARCH        24130 CONNECTED    ARCH     N/A          0          0          0          0          0

RFS         24163 IDLE         ARCH     N/A          0          0          0          0          0

RFS         24149 IDLE         LGWR     1            1        698        122          1          0

ARCH        24126 CLOSING      ARCH     4            1        695          1        154          0

ARCH        24132 CLOSING      ARCH     5            1        697          1         25          0

MRP0        24151 APPLYING_LOG N/A      N/A          1        698        122     102400          0

7 rows selected.


2.在主库建立数据文件,数据文件包含$:

$ cat sugar.txt

CREATE TABLESPACE SUGAR DATAFILE

  '/mnt/ramdisk/book/su$ar01.dbf' SIZE 10M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED

LOGGING

ONLINE

EXTENT MANAGEMENT LOCAL AUTOALLOCATE

BLOCKSIZE 8K

SEGMENT SPACE MANAGEMENT AUTO

FLASHBACK ON;


SYS@book> @ sugar.txt

CREATE TABLESPACE SUGAR DATAFILE

*

ERROR at line 1:

ORA-07217: sltln: environment variable cannot be evaluated.


$ oerr ora 07217

07217, 00000, "sltln: environment variable cannot be evaluated."

// *Cause:  getenv call returned a null pointer.

// *Action: Set the environment variable and try again.


--//实际上建立时就保ORA-07217: sltln: environment variable cannot be evaluated.错误.

--//在toad下建立看看,走菜单建立也是报错.修改如下:


CREATE TABLESPACE SUGAR DATAFILE

  '/mnt/ramdisk/book/su\$ar01.dbf' SIZE 10M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED

LOGGING

ONLINE

EXTENT MANAGEMENT LOCAL AUTOALLOCATE

BLOCKSIZE 8K

SEGMENT SPACE MANAGEMENT AUTO

FLASHBACK ON;


--//报错如下:

*

ERROR at line 1:

ORA-00600: internal error code, arguments: [ksfd_odmcrt2], [Invalid argument], [], [], [], [], [], [], [], [], [], []


--//奇怪,我在主库根本无法建立数据文件包含$的文件.取消db_file_name_convert参数再测试看看.


SYS@book> alter system reset db_file_name_convert;

System altered.


--//依旧包ORA-07217: sltln: environment variable cannot be evaluated.,或者

--//ORA-00600: internal error code, arguments: [ksfd_odmcrt2], [Invalid argument], [], [], [], [], [], [], [], [], [], []

--//真不知道如何建立这样数据文件.


3.继续测试:

--//建立环境变量看看:

$ export ar01='$ar01'

SYS@book> alter system set db_file_name_convert='/mnt/ramdisk/book','/mnt/ramdisk/book' scope=spfile;

System altered.


--//重启数据库:

SYS@book> @ sugar.txt

Tablespace created.


--//OK.这样建立成功.

$ ls -l /mnt/ramdisk/book/su\$ar01.dbf

-rw-r----- 1 oracle oinstall 10493952 2019-02-25 09:14:13 /mnt/ramdisk/book/su$ar01.dbf


--//不会链接巧合也建立环境变量吧.真不知道源链接数据文件如何建立的.


4.到dg查看,日志是否应用正常,数据文件是否建立.

SYS@bookdg> @ dg/dg

PROCESS       PID STATUS       CLIENT_P GROUP# THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS

--------- ------- ------------ -------- ------ ------- ---------- ---------- ---------- ----------

ARCH        24130 CONNECTED    ARCH     N/A          0          0          0          0          0

RFS         24193 IDLE         UNKNOWN  N/A          0          0          0          0          0

RFS         24195 IDLE         LGWR     3            1        700          3          1          0

ARCH        24126 CLOSING      ARCH     4            1        695          1        154          0

ARCH        24128 CLOSING      ARCH     4            1        699          1       1909          0

ARCH        24132 CLOSING      ARCH     6            1        698       4096        384          0

MRP0        24151 APPLYING_LOG N/A      N/A          1        699        898       1909          0

7 rows selected.


SYS@bookdg> @ dg/dg

PROCESS       PID STATUS       CLIENT_P GROUP# THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS

--------- ------- ------------ -------- ------ ------- ---------- ---------- ---------- ----------

ARCH        24130 CONNECTED    ARCH     N/A          0          0          0          0          0

RFS         24193 IDLE         UNKNOWN  N/A          0          0          0          0          0

RFS         24195 IDLE         LGWR     3            1        700          4          1          0

ARCH        24128 CLOSING      ARCH     4            1        699          1       1909          0

ARCH        24126 CLOSING      ARCH     4            1        695          1        154          0

ARCH        24132 CLOSING      ARCH     6            1        698       4096        384          0

6 rows selected.

--//可以发现dg日志应用已经停止.

--//检查alert文件发现如下:


Mon Feb 25 09:17:46 2019

Archived Log entry 7 added for thread 1 sequence 699 ID 0x4fb7d86e dest 1:

Media Recovery Log /u01/app/oracle/archivelog/book/1_699_896605872.dbf

Errors with log /u01/app/oracle/archivelog/book/1_699_896605872.dbf

MRP0: Background Media Recovery terminated with error 7217

Errors in file /u01/app/oracle/diag/rdbms/bookdg/bookdg/trace/bookdg_pr00_24153.trc:

ORA-07217: sltln: environment variable cannot be evaluated.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Managed Standby Recovery not using Real Time Apply

Recovery interrupted!

Recovered data files to a consistent state at change 13276937052

Mon Feb 25 09:17:47 2019

MRP0: Background Media Recovery process shutdown (bookdg)


--//注:注意看下划线内容,MRP0进程shutdown.实际上正如惜分飞说的那样,不要在建立文件包含特殊符号.

--//你可以发现在rman备份时如果没有定义环境变量ar01.报错如下:

$ export ar01=


RMAN> backup as copy datafile 7 format '/tmp/%b';

Starting backup at 2019-02-25 09:21:05

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=54 device type=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: SID=67 device type=DISK

allocated channel: ORA_DISK_3

channel ORA_DISK_3: SID=80 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00007 name=/mnt/ramdisk/book/su$ar01.dbf

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03009: failure of backup command on ORA_DISK_1 channel at 02/25/2019 09:21:06

ORA-07217: sltln: environment variable cannot be evaluated.


$ export ar01='$ar01'


RMAN> backup as copy datafile 7 format '/tmp/%b';

Starting backup at 2019-02-25 09:25:08

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=41 device type=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: SID=54 device type=DISK

allocated channel: ORA_DISK_3

channel ORA_DISK_3: SID=67 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00007 name=/mnt/ramdisk/book/su$ar01.dbf

output file name=/tmp/su$ar01.dbf tag=TAG20190225T092509 RECID=13 STAMP=1001150709

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 2019-02-25 09:25:10

Starting Control File and SPFILE Autobackup at 2019-02-25 09:25:10

piece handle=/u01/app/oracle/fast_recovery_area/BOOK/autobackup/2019_02_25/o1_mf_s_1001150710_g76jzq0x_.bkp comment=NONE

Finished Control File and SPFILE Autobackup at 2019-02-25 09:25:11

--//环境变量正确,备份ok.


$ export ar01='$xxxx'


RMAN> backup as copy datafile 7 format '/tmp/aa%b';

Starting backup at 2019-02-25 09:25:42

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=41 device type=DISK

allocated channel: ORA_DISK_2

channel ORA_DISK_2: SID=54 device type=DISK

allocated channel: ORA_DISK_3

channel ORA_DISK_3: SID=67 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00007 name=/mnt/ramdisk/book/su$ar01.dbf

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03009: failure of backup command on ORA_DISK_1 channel at 02/25/2019 09:25:45

ORA-07217: sltln: environment variable cannot be evaluated.


4.解决方法就是改名:

--//主库:

SYS@book> alter tablespace sugar offline;

Tablespace altered.


$ mv /mnt/ramdisk/book/su\$ar01.dbf /mnt/ramdisk/book/sugar01.dbf

`/mnt/ramdisk/book/su$ar01.dbf' -> `/mnt/ramdisk/book/sugar01.dbf'


--//顺便测试环境变量不存在的情况:

$ export ar01=


SYS@book> alter database rename file '/mnt/ramdisk/book/su\$ar01.dbf' to '/mnt/ramdisk/book/sugar01.dbf';

alter database rename file '/mnt/ramdisk/book/su\$ar01.dbf' to '/mnt/ramdisk/book/sugar01.dbf'

*

ERROR at line 1:

ORA-01511: error in renaming log/data files

ORA-07217: sltln: environment variable cannot be evaluated.


SYS@book> alter database rename file '/mnt/ramdisk/book/su$ar01.dbf' to '/mnt/ramdisk/book/sugar01.dbf';

alter database rename file '/mnt/ramdisk/book/su$ar01.dbf' to '/mnt/ramdisk/book/sugar01.dbf'

*

ERROR at line 1:

ORA-01511: error in renaming log/data files

ORA-07217: sltln: environment variable cannot be evaluated.

--//2种方式都不行!简直就是给自己下坑...


$ export ar01='$ar01'

SYS@book> alter database rename file '/mnt/ramdisk/book/su$ar01.dbf' to '/mnt/ramdisk/book/sugar01.dbf';

Database altered.


SYS@book> alter tablespace sugar online;

Tablespace altered.


5.备库:

$ export ar01='$ar01'


SYS@bookdg> alter database recover managed standby database using current logfile disconnect ;

Database altered.


SYS@bookdg> @ dg/dg

PROCESS       PID STATUS       CLIENT_P GROUP# THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS

--------- ------- ------------ -------- ------ ------- ---------- ---------- ---------- ----------

ARCH        24130 CONNECTED    ARCH     N/A          0          0          0          0          0

RFS         24197 IDLE         ARCH     N/A          0          0          0          0          0

RFS         24195 IDLE         LGWR     3            1        700       1533          1          0

ARCH        24128 CLOSING      ARCH     4            1        699          1       1909          0

ARCH        24126 CLOSING      ARCH     4            1        695          1        154          0

ARCH        24132 CLOSING      ARCH     6            1        698       4096        384          0

6 rows selected.

--//mrp0进程无法启动,重启再测试,问题依旧.报 ORA-07217: sltln: environment variable cannot be evaluated.


SYS@bookdg> alter system reset db_file_name_convert;

System altered.


--//再次重启

SYS@bookdg> shutdown immediate ;

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@bookdg> startup

ORACLE instance started.

Total System Global Area  634732544 bytes

Fixed Size                  2255792 bytes

Variable Size             197133392 bytes

Database Buffers          427819008 bytes

Redo Buffers                7524352 bytes

Database mounted.

Database opened.

SYS@bookdg> alter database recover managed standby database using current logfile disconnect ;

Database altered.


SYS@bookdg> @ dg/dg

PROCESS       PID STATUS       CLIENT_P GROUP# THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS

--------- ------- ------------ -------- ------ ------- ---------- ---------- ---------- ----------

ARCH        24427 CONNECTED    ARCH     N/A          0          0          0          0          0

ARCH        24429 CONNECTED    ARCH     N/A          0          0          0          0          0

ARCH        24431 CONNECTED    ARCH     N/A          0          0          0          0          0

RFS         24438 IDLE         UNKNOWN  N/A          0          0          0          0          0

RFS         24440 IDLE         LGWR     1            1        707         35          1          0

ARCH        24433 CLOSING      ARCH     4            1        706          1         35          0

MRP0        24442 APPLYING_LOG N/A      N/A          1        701      41954      88976          0

7 rows selected.


--//取消db_file_name_convert定义,确实可以ok,备库上数据文件也建立.

$ ls -l /mnt/ramdisk/book/su\$ar01.dbf

-rw-r-----  1 oracle oinstall 10493952 2019-02-25 09:45:54 /mnt/ramdisk/book/su$ar01.dbf


--//dg下数据文件改名比较特殊,必须在mount下进行.我不知道有什么好方法.注意一定要先定义环境变量$ export ar01='$ar01'才ok.不然一样报ora-07217


$ export ar01='$ar01'

SYS@bookdg> startup mount;

ORACLE instance started.

Total System Global Area  634732544 bytes

Fixed Size                  2255792 bytes

Variable Size             197133392 bytes

Database Buffers          427819008 bytes

Redo Buffers                7524352 bytes

Database mounted.


$ mv /mnt/ramdisk/book/su\$ar01.dbf /mnt/ramdisk/book/sugar01.dbf


SYS@bookdg> alter database rename file '/mnt/ramdisk/book/su$ar01.dbf' to '/mnt/ramdisk/book/sugar01.dbf';

alter database rename file '/mnt/ramdisk/book/su$ar01.dbf' to '/mnt/ramdisk/book/sugar01.dbf'

*

ERROR at line 1:

ORA-01511: error in renaming log/data files

ORA-01275: Operation RENAME is not allowed if standby file management is automatic.


--//要修改参数standby_file_management=manual.

SYS@bookdg> alter system set standby_file_management=manual scope=memory;

System altered.


SYS@bookdg> alter database rename file '/mnt/ramdisk/book/su$ar01.dbf' to '/mnt/ramdisk/book/sugar01.dbf';

Database altered.


SYS@bookdg> alter database open read only ;

Database altered.


SYS@bookdg> alter database recover managed standby database using current logfile disconnect ;

Database altered.


SYS@bookdg> @ dg/dg

PROCESS       PID STATUS       CLIENT_P GROUP# THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS

--------- ------- ------------ -------- ------ ------- ---------- ---------- ---------- ----------

ARCH        24514 CONNECTED    ARCH     N/A          0          0          0          0          0

ARCH        24516 CONNECTED    ARCH     N/A          0          0          0          0          0

ARCH        24518 CONNECTED    ARCH     N/A          0          0          0          0          0

RFS         24530 IDLE         ARCH     N/A          0          0          0          0          0

ARCH        24520 CLOSING      ARCH     5            1        707          1        210          0

MRP0        24582 APPLYING_LOG N/A      N/A          1        708         42     102400          0

6 rows selected.


6.收尾:


SYS@bookdg> alter system set db_file_name_convert='/mnt/ramdisk/book','/mnt/ramdisk/book' scope=spfile;

System altered.


SYS@bookdg> alter system set standby_file_management=auto;

System altered.


--//总之规范管理很重要.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2636864/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2852
  • 访问量
    6641064