Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 exp\imp таблицы в другой тейблспейс  [new]
Fedortsov A.
Member

Откуда:
Сообщений: 832
Добрый день!

необходимо продублировать одну таблицу в одной и той же базе данных, но в другом тейблспейсе
шаг 0
делаю юзера user_name_test, назначаю ему табличное пространство в котором я бы хотел чтобы лежал дубль таблицы...

шаг 1

sql> exp userid='sys@base as sysdba"  tables=(shema.table_name) file=file_name.dmp log=log_file.log statistics=none
получился у меня дамп нужной мyе таблицы

шаг 2
sql> imp userid='sys@base as sysdba' file=file_name.dmp log=imp.log from user=user_name to user user_name_test

и, как все уже успели догадаться кто в этом разбирается, я получил дубль таблицы в том же табличном пространстве, в котором она уже существует....
задумался.... и понял, что что-то и вправду я затеял сомнительное мероприятие, а вот как сделать правильно не догоню....
скорее всего я должен ручками создать таблицу и назначить ей интересующее меня табличное пространство, а потом залить в нее данные при помощи imp из имеющегося у меня дампа....?!
подходит ли такой способ и, может, есть еще какие варианты?
вразумите, пожалуйста...

заранее благодарен!
4 май 08, 16:18    [5622226]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Proteus
Member

Откуда:
Сообщений: 1348
Зачем же извращаться с экспортом и импортом.
Создали пользователя, назначили ему новое табличное пространство ну и копируйте свою таблицу.

В SQLPLUS.
автор
COPY Command Syntax
COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)] USING query

where database has the following syntax:

username[/password]@connect_identifier

Copies data from a query to a table in the same or another database. COPY supports the following datatypes:

CHAR
DATE
LONG
NUMBER
VARCHAR2
Warning:

Including your password in plain text is a security risk. You can avoid this risk by omitting the password, and entering it only when the system prompts for it.
4 май 08, 16:28    [5622308]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
Fedortsov A.
как все уже успели догадаться , я получил дубль таблицы в том же табличном пространстве, в котором она уже существует..

Попробую догадаться - Oracle9 и юзер user_name_test имеет привилегию RESOURCE ...

P.S.
... И нафига делать импорт под SYS-ом ??
4 май 08, 16:35    [5622371]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
Пардон .... роль RESOURCE ...
4 май 08, 16:39    [5622405]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Fedortsov A.
Member

Откуда:
Сообщений: 832
Proteus
Зачем же извращаться с экспортом и импортом.
Создали пользователя, назначили ему новое табличное пространство ну и копируйте свою таблицу.

В SQLPLUS.
автор
COPY Command Syntax
COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)] USING query

where database has the following syntax:

username[/password]@connect_identifier

Copies data from a query to a table in the same or another database. COPY supports the following datatypes:

CHAR
DATE
LONG
NUMBER
VARCHAR2
Warning:

Including your password in plain text is a security risk. You can avoid this risk by omitting the password, and entering it only when the system prompts for it.



правильно получается?
sql> copy shema.table_name using query 
username/password@base

я так понимаю, что СУБД найдет эту таблицу и просто скопирует ее нужному пользователю, который указывается здесь как username/password@base и, соответственно, таблица ляжет в тот тейблспейс, который назначен этому пользователю, я все правильно понял?
4 май 08, 16:42    [5622427]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Fedortsov A.
Member

Откуда:
Сообщений: 832
Viewer
Fedortsov A.
как все уже успели догадаться , я получил дубль таблицы в том же табличном пространстве, в котором она уже существует..

Попробую догадаться - Oracle9 и юзер user_name_test имеет привилегию RESOURCE ...

P.S.
... И нафига делать импорт под SYS-ом ??


чорт подери...вы шаман)))
да, действтительно такую привилегию....а Oracle 10.2.0.1
4 май 08, 16:44    [5622439]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Proteus
Member

Откуда:
Сообщений: 1348
Да, правильно.

но если вы дадите право второму пользователю читать эту таблицу у первого, то можно и так:
create table ... as ... select ...
4 май 08, 16:48    [5622467]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
Fedortsov A.
[quot Viewer]
да, действтительно такую привилегию....а Oracle 10.2.0.1

Это элементарно. imp по умолчанию ломится в тот tablespace который прописан в файле.
Если не получается (нет resource и квоты на tablespace, его нельзя создать) то создает в default_tablespace юзера. Не работает с LOB (для них нет default - только прописанный в файле).

2 На 10 можно использовать expdp/impdp они позволяют переопределять tablespace. :)
4 май 08, 16:51    [5622488]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
REVOKE UNLIMITED TABLESPACE FROM user_name_test

RESOURCE содержит привилегию UNLIMITED TABLESPACE, потому и имеем то, что имеем ...

P.S
Мне казалосьчто в 10-ке этого уже нет, хотя возможно для версияй старше 10.2.0.1
4 май 08, 16:52    [5622503]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Fedortsov A.
Member

Откуда:
Сообщений: 832
Fedortsov A.
Proteus
Зачем же извращаться с экспортом и импортом.
Создали пользователя, назначили ему новое табличное пространство ну и копируйте свою таблицу.

В SQLPLUS.
автор
COPY Command Syntax
COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)] USING query

where database has the following syntax:

username[/password]@connect_identifier

Copies data from a query to a table in the same or another database. COPY supports the following datatypes:

CHAR
DATE
LONG
NUMBER
VARCHAR2
Warning:

Including your password in plain text is a security risk. You can avoid this risk by omitting the password, and entering it only when the system prompts for it.



правильно получается?
sql> copy shema.table_name using query 


username/password@base

я так понимаю, что СУБД найдет эту таблицу и просто скопирует ее нужному пользователю, который указывается здесь как username/password@base и, соответственно, таблица ляжет в тот тейблспейс, который назначен этому пользователю, я все правильно понял?




хм....вероятно, я сделал чего-то не правильно......?!
copy  opc.opc$profile_header using query  opc_test/opctest@wo
4 май 08, 17:08    [5622625]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Fedortsov A.
Member

Откуда:
Сообщений: 832
хотя нет....скорее всего правильно писать нужно так...

copy from 'sys/password@base as sysdba' to opc_test/password@base create opc.opc$profile_header using ......;

но не могу понять что писать после слова using как с этим разобраться?
4 май 08, 17:20    [5622681]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Консерва
Member

Откуда:
Сообщений: 2794
Fedortsov A.
и, как все уже успели догадаться кто в этом разбирается, я получил дубль таблицы в том же табличном пространстве, в котором она уже существует....


SQL>  create user dtest1 default tablespace dtest1 identified by vvv;
User created.
SQL> create user dtest2 default tablespace dtest2 identified by vvv;
User created.
SQL> grant connect to dtest1;
Grant succeeded.
SQL> grant connect to dtest2;
Grant succeeded.
SQL> alter user dtest1 quota unlimited on dtest1; 
User altered.
SQL> alter user dtest2 quota unlimited on dtest2; 
User altered.
SQL> create table dtest1.test (mmm number(10)); 
Table created.
SQL> insert into dtest1.test mmm values (1);         
1 row created.
SQL> commit;
Commit complete.
SQL> !exp userid=dtest1 file=/tmp/test1;
Export: Release 10.2.0.2.0 - Production on Sun May 4 17:07:46 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Password: 
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining Scoring Engine options
Export done in CL8ISO8859P5 character set and AL16UTF16 NCHAR character set
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user DTEST1 
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user DTEST1 
About to export DTEST1's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export DTEST1's tables via Conventional Path ...
. . exporting table                           TEST          1 rows exported
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
. exporting referential integrity constraints
. exporting triggers
. exporting indextypes
. exporting bitmap, functional and extensible indexes
. exporting posttables actions
. exporting materialized views
. exporting snapshot logs
. exporting job queues
. exporting refresh groups and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully without warnings.
SQL>  !imp userid=sys  fromuser=dtest1 touser=dtest2 file=/tmp/test1
Import: Release 10.2.0.2.0 - Production on Sun May 4 17:08:15 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Password: 
IMP-00058: ORACLE error 1017 encountered
ORA-01017: invalid username/password; logon deniedUsername: sys as sysdba
Password: 
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining Scoring Engine options
Export file created by EXPORT:V10.02.01 via conventional path
Warning: the objects were exported by DTEST1, not by you
import done in CL8ISO8859P5 character set and AL16UTF16 NCHAR character set
. importing DTEST1's objects into DTEST2
. . importing table                         "TEST"          1 rows imported
Import terminated successfully with warnings.

SQL> select * from dtest2.test;

       MMM
----------
         1

SQL> select table_name, tablespace_name from dba_tables where owner like ('DTEST2');
TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
TEST                           DTEST2

SQL> select table_name, tablespace_name from dba_tables where owner like ('DTEST1'); 
TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
TEST                           DTEST1
4 май 08, 17:20    [5622684]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Proteus
Member

Откуда:
Сообщений: 1348
Fedortsov A.
хотя нет....скорее всего правильно писать нужно так...

copy from 'sys/password@base as sysdba' to opc_test/password@base create opc.opc$profile_header using ......;

но не могу понять что писать после слова using как с этим разобраться?


copy from 'sys/password@base as sysdba' to opc_test/password@base create opc$profile_header using select * from opc$profile_header;
4 май 08, 17:30    [5622726]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Fedortsov A.
Member

Откуда:
Сообщений: 832
Proteus
Fedortsov A.
хотя нет....скорее всего правильно писать нужно так...

copy from 'sys/password@base as sysdba' to opc_test/password@base create opc.opc$profile_header using ......;

но не могу понять что писать после слова using как с этим разобраться?


copy from 'sys/password@base as sysdba' to opc_test/password@base create opc$profile_header using select * from opc$profile_header;


премного Вам благодарен, спасибо, все получилось!
4 май 08, 18:03    [5622854]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Fedortsov A.
Member

Откуда:
Сообщений: 832
есть еще маленький вопросик:
пока я с этим мучался, появилось в схеме две таблицы с названиями
BIN$glrbANeER7+glBauBui+JQ==$0
BIN$3nXZUz09QribmB1xQ+Xzg==$1

это что за невиданные такие звери? как они появляются. можно ли их удалять и если да. то как мне показалось обычным способом они ен удаляются.....
4 май 08, 18:03    [5622856]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Консерва
Member

Откуда:
Сообщений: 2794
Fedortsov A.
есть еще маленький вопросик:
пока я с этим мучался, появилось в схеме две таблицы с названиями
BIN$glrbANeER7+glBauBui+JQ==$0
BIN$3nXZUz09QribmB1xQ+Xzg==$1

это что за невиданные такие звери? как они появляются. можно ли их удалять и если да. то как мне показалось обычным способом они ен удаляются.....

https://www.sql.ru/forum/actualsearch.aspx?search=recyclebin&sin=0&a=&ma=0&bid=3&dt=-1&s=1&so=1
4 май 08, 18:04    [5622861]     Ответить | Цитировать Сообщить модератору
 Re: exp\imp таблицы в другой тейблспейс  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
2 Fedortsov A.
В качестве реплики.

Вы упорно для своих операций иcпользуете аккаунт SYS, что крайне не рекомендуется для действий, не требующих таких привилегий.
Что вам мешает для себя родного создать аккаунт с правами DBA и работать под ним ??
Не мешает помнить, что чем больше гранат на поясе - тем больше шансов зацепиться чекой, лазая по кустам.

All of the base tables and views for the database data dictionary are stored in the schema SYS. These base tables and views are critical for the operation of Oracle Database. To maintain the integrity of the data dictionary, tables in the SYS schema are manipulated only by the database. They should never be modified by any user or database administrator, and no one should create any tables in the schema of user SYS.

Ensure that most database users are never able to connect to Oracle Database using the SYS account.

Create at least one additional administrative user and grant to that user an appropriate administrative role to use when performing daily administrative tasks. Do not use SYS and SYSTEM for these purposes.


Invoking Export and Import As SYSDBA

SYSDBA is used internally and has specialized functions; its behavior is not the same as for generalized users. Therefore, you should not typically need to invoke Export or Import as SYSDBA, except in the following situations:

* At the request of Oracle technical support
* When importing a transportable tablespace set

Можно найти и больше, но еще хотя бы это
CONSISTENT=Y is unsupported for exports that are performed when you are connected as user SYS or you are using AS SYSDBA, or both.
5 май 08, 08:51    [5623926]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить