Truncate table: space related issue

Hi Experts,
recently i have truncated one log table in production server and we could release 100gb from the tablespace which has more than 100 datafiles
My query is do we have any way so that we can release space from the filesystem.
we are using 0racle 9i in solaris server
regards

You can reduce the size of the datafiles, but you cannot 'drop the datafile'. You can reduce the size of the datafile only if your data occupies the lower part of the datafile, otherwise you will have a lot of 'lakes' that will prevent you from reducing the size of the database files.
If that huge table was the only one living on these datafiles you are very likely to reduce the file size. On the other hand, if you have tables still living on this tablespace or indexes you can move them to a 'scratch' tablespace, by this procedure you can defragment the tablespace wich will allow you to reduce the datafile size, or even more, if possible, move the remaining data to a new tablespace and drop the old tablespace, (look out for long columns, there are several restrictions you should consider).
~ Madrid
http://hrivera99.blogspot.com/

Similar Messages

  • TRUNCATE TABLE NOT WORKING AFTER DROPPING CONSTRAINTS

    Hi,
    I have a table with a foreign key constraint. I know you can't truncate tables when there are foreign key constraints. So I drop the constraints before running the TRUNCATE TABLE command. But SQL Server is still stating there are foreign key constraints
    even after they have just been dropped.
    When I use SQL Server Management Studio to generate a drop & create script on this table or any other table with an FK consttaint, the generated script fails stating that there are still foreign key constraints??
    I have the same problem for every table that has FK constraints, for those without FK, TRUNCATE table works without issues.
    The end goal is to reset the identity value of the primary key. Since DBCC does not work on Azure, TRUNCATE TABLE is the only way left, especially if you can't even drop and recreate tables with FK constraints.
    What am I missing here?
    Peter

    Hi,
    Thanks for posting here.
    TRUNCATE TABLE is similar to the DELETE statement with no WHERE clause; however, TRUNCATE TABLE is faster and uses fewer system and transaction log resources.
    TRUNCATE TABLE removes all rows from a table, but the table structure and its columns, constraints, indexes, and so on remain. To remove the table definition in addition to its data, use the DROP TABLE statement.
    If the table contains an identity column, the counter for that column is reset to the seed value defined for the column. If no seed was defined, the default value 1 is used. To retain the identity counter, use DELETE instead.
    Restrictions
    You cannot use TRUNCATE TABLE on tables that:
    •Are referenced by a FOREIGN KEY constraint. (You can truncate a table that has a foreign key that references itself.)
    •Participate in an indexed view.
    •Are published by using transactional replication or merge replication.
    For tables with one or more of these characteristics, use the DELETE statement instead.
    TRUNCATE TABLE cannot activate a trigger because the operation does not log individual row deletions. For more information, see CREATE TRIGGER (Transact-SQL).
    Truncating Large Tables
    Microsoft SQL Server has the ability to drop or truncate tables that have more than 128 extents without holding simultaneous locks on all the extents required for the drop.
    Permissions--------------------------------------------------------------------------------
     The minimum permission required is ALTER on table_name. TRUNCATE TABLE permissions default to the table owner, members of the sysadmin fixed server role, and the db_owner and db_ddladmin fixed database roles, and are not transferable. However, you
    can incorporate the TRUNCATE TABLE statement within a module, such as a stored procedure, and grant appropriate permissions to the module using the EXECUTE AS clause.
    You cannot truncate a table which has an FK constraint on it.
    Typically my process for this is:
    Drop the constraints
    Trunc the table
    Recreate the constraints.
    Hope this helps you.
    Girish Prajwal

  • Release of space after delete/truncate table

    Hello,
    How does release of space after delete/truncate table works? Is the space used before deletion released once delete is complete or not? Will I see the space occupied by deleted table as free in dba_segments or will I need to reorganize the table (drop and recreate again?). Reason why I am asking is that I can see table with 0 rows, but in dba_segment I can see it is occupying few gigabytes....
    Thank you

    Here is a little illustration for you;
    SQL> conn ogan/password
    Connected.
    SQL> create table ogan_deneme as select * from all_objects;
    Table created.
    SQL> select count(*) from ogan_deneme;
      COUNT(*)
        228470
    SQL> set line 1000
    SQL> set pagesize 1000
    SQL> select * from dba_segments where owner='OGAN';
    OWNER    SEGMENT_NAME        PARTITION_NAME           SEGMENT_TYPE       TABLESPACE_NAME                HEADER_FILE HEADER_BLOCK      BYTES     BLOCKS    EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE  FREELISTS FREELIST_GROUPS RELATIVE_FNO BUFFER_
    OGAN      OGAN_DENEME          TABLE              SYSTEM                                 854       319981   *30408704*       *1856*         *44*          65536                       1  2147483645                       1               1          854 DEFAULT
    SQL> truncate table ogan_deneme;
    Table truncated.
    SQL> select * from dba_segments where owner='OGAN';
    OWNER    SEGMENT_NAME        PARTITION_NAME           SEGMENT_TYPE       TABLESPACE_NAME                HEADER_FILE HEADER_BLOCK      BYTES     BLOCKS    EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE  FREELISTS FREELIST_GROUPS RELATIVE_FNO BUFFER_
    OGAN      OGAN_DENEME           TABLE              SYSTEM                                 854       319981      *65536*          *4*          *1*          65536                       1  2147483645                       1               1          854 DEFAULT
    SQL>Hope it Helps,
    Ogan

  • I want to know when we issue truncate table statement in oracle .

    i want to know when we issue truncate table statement in oracle .No log will be write in redo log .But we can recover data using flashback or scn.I want to know where is the actually truncate table statement log is stored in oracle database.Please explain me in detail step by step .

    Hi,
    I have truncated table after that i have restored that data.See below the example.I want to know from where it's restored.
    From which log file it's restored.
    create table mytab (n number, x varchar2(90), d date);
    alter table mytab enable row movement;
    Table altered.
    SQL> insert into mytab values (1,'Monsters of Folk',sysdate);
    1 row created.
    SQL> insert into mytab values (2,'The Frames',sysdate-1/24);
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> select CURRENT_SCN from v$database;
    CURRENT_SCN
    972383
    SQL> select * from mytab;
    N
    X
    D
    1
    Monsters of Folk
    30-DEC-12
    2
    The Frames
    30-DEC-12
    N
    X
    D
    SQL> set lines 10000
    SQL> /
    N X D
    1 Monsters of Folk 30-DEC-12
    2 The Frames 30-DEC-12
    SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual;
    TO_CHAR(SYSDATE,'
    20121230 09:29:24
    SQL> set timing on
    SQL> truncate table mytab;
    Table truncated.
    Elapsed: 00:00:15.75
    SQL> select * from mytab as of timestamp TO_TIMESTAMP('20121230 09:29:24','yyyymmdd hh24:mi:ss');
    N X D
    1 Monsters of Folk 30-DEC-12
    2 The Frames 30-DEC-12
    Elapsed: 00:00:00.28
    SQL> insert into mytab select * from mytab as of timestamp TO_TIMESTAMP('20121230 09:29:24','yyyymmdd hh24:mi:ss');
    2 rows created.
    Elapsed: 00:00:00.01
    SQL>

  • Truncate table related questions

    Hi Folks,
    Environment: 10g Rel 2
    I am trying to prove the following two points by way of experimentation
    a, The truncate table operation will reset the high water mark (HWM) to the first usable data block in the table segment
    # Take a HWM snap shot before the truncate operation
    select a.BLOCKS - b.EMPTY_BLOCKS -1 HWM
    from
      (SELECT BLOCKS
       FROM   DBA_SEGMENTS
       WHERE  OWNER=UPPER('JIM') AND SEGMENT_NAME = UPPER('EMPLOYEES')) a,
       (SELECT EMPTY_BLOCKS
        FROM   DBA_TABLES
        WHERE  OWNER=UPPER('JIM') AND TABLE_NAME = UPPER('EMPLOYEES')) b;Output: 7
    truncate table JIM.EMPLOYEES;
    Re ran the above code and got the same result (i.e. 7 blocks). I was expecting to see 0 blocks instead? Is the above query the right method of
    finding the HWM?
    b, The truncate operation will also truncate the corresponding indexes for the table
    Q, Is there a view that will show all the index values of the table? These values will probably be meaningless, but I would like to see them before
    and after the truncate operation.
    Thanks
    rogers42

    a) If you would have read on the empty_blocks column in dba_tables, you would have known it is populated by dbms_stats.
    Did you run dbms_stats.analyze_table?
    b)
    There is no such view.
    All dictionary views are documented in the view DICT and the online documentation.
    Sybrand Bakker

  • Truncate table lock issue

    Hi,
        In my SQL2000 stored procedure, there are 9 truncate table commands.
         But the the stored procedure is take above 15 minutes to execute.
         In this stored procedure, truncate table command has no problem.
         But an insert query into that table is very slow.
         In the insert query, select some views output and insert into the table. But these select output is very slow.
         I search some forums. They said that lock problem for the object. Query execution delayed for a exclusively accessed object.
        How can I remove the lock for my strored procedure running faster ? 

    Here are the bad news: you need to have some understanding of indexing to get some results out of it. But since we don't know anything about your queries, we cannot really give much better advice. What we can say is that TRUNACTE TABLE has nothing to
    do with it. Probably not locking either. Locking would come from concurrent activity in the database. Is there any?
    Normally, we ask people to submit the code they have problem with. In this case we would also need see the view definitions. (Else we would still be in the dark.) And if the views are built on views, we need to see these as well. This may result in more
    code that is practic to handle here, but I leave that up to you. As a hint: in the next step we are much likely to ask for the table and index definitions.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • Table space not getting cleaned after using free method (permanent delete)

    Hi ,
    We are using the free method of the LIB OBJ, to permanently delete the objects. As per documentation, the ContentGarbageCollectionAgent will be cleaning the database which runs in a scheduled mode. But the log of that ContentGargabageCollectionAsgent shows, all zero for objects without reference, objects cleared,etc. I.e the table space remains the same before and after deleteing all the contents in the cmsdk database. But the agent is running as per the schedule but just comes out doing nothing.
    Can anbody put some light on this issue.
    thanks
    Raj.

    Hi Matt,
    Thanks for replying. It's been a very long time waiting for you ;)
    ---"Are you running the 9.2.0.1, 9.2.0.2, or 9.2.0.3 version of the Database?"
    we are using 9.2.0.1
    ---"If you installed the CM SDK schema in the "users" tablespace ......."
    Yes we are using USERS tablespace for our Development.
    I ran the query. The result is:
    SYSTEM MANUAL NOT AFFECTED
    USERS MANUAL NOT AFFECTED
    CTXSYS_DATA MANUAL NOT AFFECTED
    CMSDK1_DATA MANUAL NOT AFFECTED
    (USERS belongs to develpoment cmsdk schema. And CMSDK1 for Prod CMSDK schema)
    From the results I see only "Manual", but still I don't see the tablespace size being coming down. Both table space sizes (USER and CMSDK1) always grows higher and higher.
    Also to let you know, We use ORACLE EM Console (Standalone) application to see the oracle databse information online. Will there be any thing to do with the tool we use to see the table space sizes. We make sure we always refresh it before making a note.
    So is there anything else I can see. Once I saw the ContentGarbageCollection agent to free 1025 objects and deleted 0 objects. But I don't see any change in the table space size. I am little confused b/w freed and deleted.
    thanks once again for your response Matt.
    -Raj.

  • Full Load: Error while executing :TRUNCATE TABLE: S_ETL_PARAM

    Hi All,
    We are using Bi Apps 7.9.6.1. Full Load was running fine. But Now we are facing a problem with truncating a table "S_ETL_PARAM".
    I have restart informatica Server And also DAC Srever. But still I am getting the same in the DAC Log as, *"NOMALY INFO::: Error while executing : TRUNCATE TABLE:S_ETL_PARAM*
    *MESSAGE:::com.siebel.etl.database.IllegalSQLQueryException: DBConnection_OLTP:SIEBTRUN ('siebel.S_ETL_PARAM')*
    *Values :*
    *Null Map*
    *EXCEPTION CLASS::: java.lang.Exception"*
    Any Suggestion.....
    Thanks in Advance,
    Deepak

    are you trying to run incremental load when you get this truncate error? can you re-run full load and see that still runs ok? pls also check your DW side database logs like alert lor any DB level issue. such errors do not throw friendly messages in DAC/Informatica side.

  • Truncate Table before Insert--Performance

    HI All,
    This post is in focus of special requirement where a table is truncated before inserting records in the table.
    Now, when a table is truncated the High Water Mark(HWK) is reset to lowest memory allocated for table in tablespace. After this, would insert with append can boost the performance of the insert query?
    In simple insert query, the oracle engine consults the free list to look for free spaces.
    But in insert with apppend, the engine starts above the HWM. And the argument is when truncate has been executes on table, would the freelist be used in simple insert.
    I just need to know if there are any benefits of using append insert on truncated table or simple insert would be same in term of performance with respect to insert with append.
    Regards
    Nits

    Hi,
    if you don't need the data truncate the table. There is no negativ impact whether you are using an conventional path or a direct path insert.
    If you use append less redo is written for the table if the table is in NOLOGGING mode, but redo is written for all indexes. I would recommand to create a full backup after that (if needed), because your table will not be recoverable after that (no REDO Information).
    Dim

  • Truncate table loses privs on table...

    Oracle11g/RHEL5
    Hi,
    We have a table that is inserted into a then deleted every so often. The current method that was being used to remove the rows was the TRUNCATE TABLE ption. However, we found out that when that statement is issued, that any user that had privs on that table, no longer work even after it is re-created. So it looks like the next option is to used the DELETE * from table_name. However, that is not good for performance and undo. This table is about 300,000 rows and will grow in the future. How could we get around this issue?
    Thanks.

    Hi,
    JrOraDBA wrote:
    Oracle11g/RHEL5
    We have a table that is inserted into a then deleted every so often. The current method that was being used to remove the rows was the TRUNCATE TABLE ption. However, we found out that when that statement is issued, that any user that had privs on that table, no longer work even after it is re-created. You must have done something else. TRUNCATE TABLE does change privileges.
    What do you mean by "after it is re-created"? You don't have to issue another CREATE statement after TRUNCATE TABLE.
    Do you mean after re-populating the table? Do you mean that other users, who did have privileges, can still DESCRIBE the table right after it is TRUNCATEd, but they can't do anything with it after an INSERTs have been done?
    I suspect you DROPped the table at some point.
    Double-check that the problem exists when all you do is TRUNCATE TABLE.
    Post a script that re-creates the problem. There's no need to include lots of data: one column and one row will show the problem just fine.

  • TRUNCATE TABLE  does not work in procedure

    Hi Friends,
    I create a procedure that have a command TRUNCATE TABLE errdbg;
    It use to record data processing information. It iworks in SQLPLUS by manually.
    I put it in procedure and get message as
    Warning: Package Body created with compilation errors.
    SQL> show error;
    Errors for PACKAGE BODY DATALOAD:
    LINE/COL ERROR
    172/10 PLS-00103: Encountered the symbol "TABLE" when expecting one of
    the following:
    := . ( @ % ;
    The symbol ":= was inserted before "TABLE" to continue.
    How to use TRUNCATE command in procedure?
    I can use delete. but it is not good for table space resused based on book.
    Thanks
    JIm

    You can't use DDL in pl/sql unless you use it with execute immediate
    e.g.,
    execute immediate 'truncate table errdbg' ;

  • Truncate table will delete the corresponding LOB segment of table or not ?

    Hi All,
    I have few table with LOB segments, if i fire the truncate table on those table will it purge the LOB segment as well ?
    Approximately how much time will take to truncate 100gb LOB segments.
    Thanks

    903787 wrote:
    Hi ,
    1.Truncate will delete the LOB segment or not ?It won't delete the LOB segments but it should release most of the allocated space.
    >
    2.To reclaim space we need to run the below command, is it correct ?
    ALTER TABLE <table_name> MODIFY LOB (LOB_COLUMN) (SHRINK SPACE);
    Should not be needed in 11.2:
    SQL> select * from v$version;
    BANNER
    Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE    11.2.0.2.0      Production
    TNS for 32-bit Windows: Version 11.2.0.2.0 - Production
    NLSRTL Version 11.2.0.2.0 - Production
    SQL> select count(*) from user_segments;
      COUNT(*)
             0
    SQL>
    SQL> create table t(x clob);
    Table created.
    SQL> select segment_name, segment_type, bytes
      2  from user_segments;
    SEGMENT_NAME                             SEGMENT_TYPE            BYTES
    T                                        TABLE                   65536
    SYS_IL0000030908C00001$$                 LOBINDEX                65536
    SYS_LOB0000030908C00001$$                LOBSEGMENT              65536
    SQL>
    SQL> insert into t select lpad(segment_name,8192) from dba_segments;
    6312 rows created.
    SQL> commit;
    Commit complete.
    SQL>
    SQL> select segment_name, segment_type, bytes
      2  from user_segments;
    SEGMENT_NAME                             SEGMENT_TYPE            BYTES
    T                                        TABLE                  393216
    SYS_IL0000030908C00001$$                 LOBINDEX                65536
    SYS_LOB0000030908C00001$$                LOBSEGMENT           53477376
    SQL>
    SQL> truncate table t;
    Table truncated.
    SQL>
    SQL> select segment_name, segment_type, bytes
      2  from user_segments;
    SEGMENT_NAME                             SEGMENT_TYPE            BYTES
    T                                        TABLE                   65536
    SYS_IL0000030908C00001$$                 LOBINDEX                65536
    SYS_LOB0000030908C00001$$                LOBSEGMENT              65536
    SQL>
    SQL> alter table t modify lob(x) (shrink space);
    Table altered.
    SQL>
    SQL> select segment_name, segment_type, bytes
      2  from user_segments;
    SEGMENT_NAME                             SEGMENT_TYPE            BYTES
    T                                        TABLE                   65536
    SYS_IL0000030908C00001$$                 LOBINDEX                65536
    SYS_LOB0000030908C00001$$                LOBSEGMENT              65536
    SQL>

  • Table space need to be increased in every week..

    Dear Experts,
    We are facing a new problem .
    The problem is like , Last 6 months back we had done the Hard-ware migration. After
    migration we need to increase the table space in every 10 days.   But before migration , the table
    space was getting ing increased in every 45 days.
    In this way , we dont have much space left with us..
    I am not able to analyse the issue ...
    Please suggest .. What to check and necessary action ...
    Thanks,
    Sanjana

    Hi,
    Thank you for the response. Yes , the hord-ware migration is not linked with this issue. But this is happening after migration . So I was thinking , if any setting might have changed or something like that .
    Deleting all the redundant data in system means , it should run regaularly. And Now new developments have gone to production.
    And the data loads are carrying almost same amount of data. Only 2 changes, Material Master was coming on DELTA , Now its Coming on FULL Load.  Rest all loads are same as before migration.
    Kindly suggest.
    Thanks,
    Sanjana

  • Table space got filled up, cannot goto RSA1 transaction also

    Hi ,
    We used to take backup of Planning Area every night, due to that Table Space got filled up. Even we could not login to RSA1 transaction to delete PSA requests.
    We cannot delete data from Oracle database also, so is there anyway that we can delete data from Tablespace without going to RSA1 & not deleting from Back end.
    Can anybody help........
    Thanks in advance.
    Regards,
    Jagadeesh.

    Hi,
    Thanks for your answers, we have trying to increase the tablespace through DB02, and also cleared the log backup.
    I think it will take some time, mean while can do any thing to overcome this issue.
    Thanks in advance.
    Regards,
    Jagadeesh.

  • ORA-01502: Index or Partition is in unusable status. while truncating table

    Hi All,
    One of our Devlopers compalined that he is getting ORA-01502 : Index or partition is unusable status while truncating the a table in our Dataware house production database. He is using the following commands.
    Alter index <index_name> unusable;
    Truncate table <table_name> ;
    He is running a scripts to truncate each table and ecah time he is passing the table name as an input parameter to script. He is using same method to truncate four tables each having a BITMAP and a REGULAR index. For two tables every thing is working fine, but for other two tables the he is getting ORA-01502 for BITMAP indexes. It a weekly process and every week he is getting the same issue. I checkd the Index status, they are in valid status only.
    For a work around I have created a table with BITMAP and regular index in our dev database. made the indexes unusable, checked their status. I truncated the table. Importent thing here is the Indexes are becoming vaild when I truncate the table.
    I suspect that my devloper's Indexes were already in unusable status (before he use the command ALTER INDEX), when he truncated the table, oracle trying to validate the index and throwing the error ORA-01502 because the Indexes are in unusabel statsu for a while.
    I tried searching for the mechanism of truncate table command and its effect on Indexes. But I did not find any luck, no one is speaking about index when truncating the table. Can any one please help me????
    Sorry for lengthy post. Any help is greatly appriciated and I thank every one in advance.

    DDL for Indexes getting ORA-01502 error
    CREATE BITMAP INDEX DWHMGR.ACT_TXN_LN_STG_01_XN3 ON DWHMGR.ACCT_TXN_LINE_TERM_BAL_STG_01 (TERM_BAL_CD ASC) TABLESPACE "BALFD_INX_04" NOLOGGING PCTFREE 1 INITRANS 2 MAXTRANS 255 STORAGE
    ( INITIAL 8M NEXT 8M MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT );
    CREATE BITMAP INDEX DWHMGR.ACCT_TERM_BAL_STG_01_XN3 ON DWHMGR.ACCT_TERM_BAL_STG_01 TERM_BAL_CD ASC) TABLESPACE "BALFD_INX_04" NOLOGGING PCTFREE 1 INITRANS 2 MAXTRANS 255 STORAGE
    ( INITIAL 8M NEXT 8M MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT );
    Indexes that have no issues.
    CREATE INDEX DWHMGR.ACCT_TERM_BAL_STG_01_XN2 ON DWHMGR.ACCT_TERM_BAL_STG_01 (ACCT_REF_NB ASC) TABLESPACE "BALFD_INX_04" NOLOGGING PCTFREE 1 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 8M
    NEXT 8M MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT );
    CREATE BITMAP INDEX DWHMGR.ACCT_PRC_STG_01_XN1 ON DWHMGR.ACCT_PRC_STG_01 (ACCT_ORG_CD ASC) TABLESPACE "BALFD_INX_04" NOLOGGING PCTFREE 1 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 8M
    NEXT 8M MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT );
    Please look at the DDL of the indexes and let me know if you need any other information.

Maybe you are looking for

  • RBAC configuration in Solaris 10

    Hello All, I am trying to implement a script for resetting the users password without allowing user management (usrmgr group) to have direct access to password command by added this script in "usrmgr RBAC profile". Kindly let me know the syntax that

  • HTTP UPLOAD using HTTP receiver adapter

    Hello Experts, I am facing a problem where i have to upload a file to webserver using POST , I am using a file adapter to pick the file and http or soap adapter to post the file to webserver. Here the request structure expected by the webserver is a

  • Iphone 5c time and date not working right

    hi guys I would really appreciate your help if you have any information or similarities on this. I have an iPhone 5c and the date and time are both lacking, I don't know what is wrong and can I fix it? its also messing with my 3g and wifi thanks, gem

  • PaintComponent: inner class / method?

    Hi, I am doing a lot of painting in my paintComponent method and would like to ask whether it's possible to use e.g. inner classes or methods within paintComponent? I think I am confronted with the problem that my paintComponent method gets too unstr

  • Copy values in ALV reports (cmd+Y/ctrl+Y) in SAPGUI for Java 7.00 rev.4?

    Hi all, I'm using SAPGUI for Java 7.00 rev.4 in Mac OSX. I use intensively ALV GRID reports. I do frequently need to copy multiple cells values from one column. In Windows GUI I do ctrl+Y, than select the area containing the cells and the values are